KtOrder.vue 104 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984
  1. <template>
  2. <div class="page">
  3. <el-form :inline="true" :model="pageRequest" class="demo-form-inline" size="small" label-width="130px">
  4. <el-row>
  5. <el-col :span="6">
  6. <el-form-item label="订单号">
  7. <el-input v-model="pageRequest.orderNo" placeholder="请输入订单号" class="widths" clearable></el-input>
  8. </el-form-item>
  9. </el-col>
  10. <el-col :span="6">
  11. <el-form-item label="车牌号">
  12. <el-input v-model="pageRequest.licenseNo" placeholder="请输入车牌号" class="widths" clearable></el-input>
  13. </el-form-item>
  14. </el-col>
  15. <el-col :span="6">
  16. <el-form-item label="车架号">
  17. <el-input v-model="pageRequest.frameNo" placeholder="请输入车架号" class="widths" clearable></el-input>
  18. </el-form-item>
  19. </el-col>
  20. <el-col :span="6">
  21. <el-form-item label="投保人姓名">
  22. <el-input v-model="pageRequest.insuredName" placeholder="请输入投保人姓名" class="widths" clearable></el-input>
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="6" v-if="isLetterOrder">
  26. <el-form-item label="机构名称">
  27. <el-cascader class="widths" :options="institutionOptions" v-model="pageRequest.deptId" :props="{
  28. checkStrictly: true,
  29. value: 'id',
  30. label: 'name',
  31. }" @change="handleChange" clearable></el-cascader>
  32. </el-form-item>
  33. </el-col>
  34. <el-col :span="6">
  35. <el-form-item label="录单日期">
  36. <el-date-picker v-model="value2" type="daterange" @change="monthChange" start-placeholder="开始日期"
  37. end-placeholder="结束日期" value-format="yyyy-MM-dd" clearable style="width: 200px"></el-date-picker>
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="6">
  41. <el-form-item label="保险公司">
  42. <el-select v-model="pageRequest.companyId" filterable class="widths" clearable>
  43. <el-option v-for="val in companyList" :key="val.id" :label="val.name" :value="val.id"></el-option>
  44. </el-select>
  45. </el-form-item>
  46. </el-col>
  47. <el-col :span="6">
  48. <el-form-item label="险种">
  49. <el-select v-model="pageRequest.productid" clearable filterable placeholder="选择险种" style="width: 100%">
  50. <el-option v-for="item in productsTypeoptions" :key="item.dictValue" :label="item.dictTag"
  51. :value="item.dictValue"></el-option>
  52. </el-select>
  53. </el-form-item>
  54. </el-col>
  55. <el-col :span="3">
  56. <el-button type="primary" size="small" @click="onSubmit">查询</el-button>
  57. </el-col>
  58. </el-row>
  59. <el-row v-if="isLetterOrder">
  60. <el-col :span="21">
  61. <el-form-item label="订单状态">
  62. <el-radio-group v-model="pageRequest.orderStatus">
  63. <el-radio label="888">全部</el-radio>
  64. <el-radio v-for="val in optionsStatus" :key="val.dictValue" :label="val.dictValue">{{ val.dictTag
  65. }}</el-radio>
  66. </el-radio-group>
  67. </el-form-item>
  68. </el-col>
  69. </el-row>
  70. </el-form>
  71. <el-table size="small" :data="pageResult" border v-loading="orderLoaing" highlight-current-row stripe
  72. @expand-change="handleRowChange" ref="expandTable" height="550" :header-cell-style="{
  73. background: '#F2F7FC',
  74. fontWeight: '700',
  75. color: '#606266',
  76. }">
  77. <el-table-column type="expand">
  78. <template slot-scope="scope">
  79. <div class="demo-table-expand flex a-c j-s" :style="{ width: width, flexWrap: 'wrap' }"
  80. v-for="(item, index) in scope.row.insAreaCompanyList" :key="index">
  81. <div style="width: 12%">
  82. {{ item.inscompany }}
  83. <span style="color: #d42426">({{ item.agreementName }})</span>
  84. </div>
  85. <div class="flex a-c j-s demo-table-expand-time">
  86. <div>
  87. 总价:
  88. <span style="color: #d42426">{{ item.sumpremium }}</span>
  89. </div>
  90. <div>
  91. 交强险:
  92. <span style="color: #d42426">{{ item.jqpremium }}</span>
  93. </div>
  94. <div>
  95. 商业险:
  96. <span style="color: #d42426">{{ item.sypremium }}</span>
  97. </div>
  98. <div>
  99. 车船税:
  100. <span style="color: #d42426">{{ item.taxamount }}</span>
  101. </div>
  102. <div v-if="item.jypremium">
  103. 驾意险:
  104. <span style="color: #d42426">{{ item.jypremium }}</span>
  105. </div>
  106. <div>{{ item.createtime }}</div>
  107. </div>
  108. <div slot="reference" class="name-wrapper flex a-c j-c">
  109. <el-tag style="
  110. color: #33a08d;
  111. border-color: #33a08d;
  112. background: rgba(51, 160, 141, 0.1);
  113. " v-if="item.orderstatus == '0' || item.orderstatus == '1'" size="small">{{ item.orderstatus | cap
  114. }}</el-tag>
  115. <el-tag style="border-color: #e75b5d" type="danger" v-else-if="item.orderstatus == '3'" size="small">{{
  116. item.orderstatus | cap }}</el-tag>
  117. <el-tag v-else style="
  118. color: #2d4d89;
  119. border-color: #2d4d89;
  120. background: rgba(45, 77, 137, 0.1);
  121. " size="small">{{ item.orderstatus | cap }}</el-tag>
  122. </div>
  123. <div class="flex a-c">
  124. <el-button size="mini" type="text" v-if="item.orderstatus == '1' &&
  125. [
  126. '中煤财险',
  127. '大家财险',
  128. '永诚财险',
  129. '国任财险',
  130. '太平财险',
  131. '华农财险',
  132. '恒邦财险',
  133. '众安财险',
  134. '中国人寿',
  135. '安盛天平',
  136. '紫金财险',
  137. '渤海财险',
  138. '泰康财险',
  139. '华泰财险',
  140. ].includes(item.inscompany)
  141. " @click="refreshStatus(item)" class="red_color">更新订单</el-button>
  142. <el-button size="mini" type="text" v-if="item.orderstatus == '4' && item.inscompany == '华泰财险'"
  143. @click="updateStatusHuatai(item)" class="red_color">更新订单</el-button>
  144. <el-button size="mini" type="text" v-if="(item.orderstatus == '1' ||
  145. item.orderstatus == '2' ||
  146. item.orderstatus == '4') &&
  147. ['紫金财险'].includes(item.inscompany)
  148. " @click="cancelorder(item)" class="red_color">撤单</el-button>
  149. <el-button size="mini" type="text" v-if="item.orderstatus == '2'" @click="carcode(item)"
  150. class="red_color">二维码</el-button>
  151. <el-button size="mini" type="text" class="green_color"
  152. @click="OrderDetails(scope.row, item)">查看详情</el-button>
  153. <el-button size="mini" type="text" :loading="querystatusLoaing" v-if="item.orderstatus == '2' &&
  154. [
  155. '太平财险',
  156. '华农财险',
  157. '恒邦财险',
  158. '众安财险',
  159. '中国人寿',
  160. '安盛天平',
  161. '紫金财险',
  162. '永诚财险',
  163. '大家财险',
  164. '华泰财险',
  165. '国任财险',
  166. '中煤财险',
  167. '渤海财险',
  168. '泰康财险',
  169. '平安财险',
  170. ].includes(item.inscompany)
  171. " class="blue_color" @click="querystatus(item, index)">状态更新</el-button>
  172. <el-button v-if="item.orderstatus !== '2'" size="mini" type="text" class="blue_color"
  173. @click="orderTrajectory(scope.row, item)">订单轨迹</el-button>
  174. <el-button size="mini" type="primary" @click="bjdpreview(item.id, scope.row.userid)">报价单</el-button>
  175. <!-- <el-button size="mini" type="text" @click="CloseEdit(scope.$index, scope.row)">编辑</el-button> -->
  176. <el-button type="text" size="mini" v-if="item.orderstatus == '2'">
  177. <el-dropdown trigger="click">
  178. <span class="el-dropdown-link blue_color">
  179. 更多
  180. <i class="el-icon-arrow-down el-icon--right"></i>
  181. </span>
  182. <el-dropdown-menu slot="dropdown">
  183. <el-dropdown-item>
  184. <el-button v-if="item.inscompany == '平安财险'" size="mini" type="text" style="color: #2d4d89"
  185. @click="signature(item)">生成签章</el-button>
  186. </el-dropdown-item>
  187. <el-dropdown-item>
  188. <el-button size="mini" type="text" style="color: #2d4d89"
  189. @click="orderTrajectory(scope.row, item)">订单轨迹</el-button>
  190. </el-dropdown-item>
  191. <el-dropdown-item>
  192. <el-button type="text" size="mini" style="color: #2d4d89"
  193. @click="revokeCode(item.id)">撤销二维码</el-button>
  194. </el-dropdown-item>
  195. </el-dropdown-menu>
  196. </el-dropdown>
  197. </el-button>
  198. </div>
  199. </div>
  200. </template>
  201. </el-table-column>
  202. <el-table-column prop="orderno" label="订单号" align="center" width="180"></el-table-column>
  203. <el-table-column prop="username" label="业务员" align="center" width="180">
  204. <template slot-scope="scope">
  205. <span>{{ scope.row.username }}</span>
  206. </template>
  207. </el-table-column>
  208. <el-table-column prop="username" label="业务员工号" align="center" width="180">
  209. <template slot-scope="scope">
  210. <span>{{ scope.row.userid }}</span>
  211. </template>
  212. </el-table-column>
  213. <el-table-column prop="insCompany" label="承保公司" width="100" align="center">
  214. <template slot-scope="scope">
  215. <span>{{ scope.row.insCompany ? scope.row.insCompany : "--" }}</span>
  216. </template>
  217. </el-table-column>
  218. <el-table-column prop="partnerCompaniesName" label="合作公司" width="100" align="center">
  219. <template slot-scope="scope">
  220. <span>{{ scope.row.partnerCompaniesName ? scope.row.partnerCompaniesName : "--" }}</span>
  221. </template>
  222. </el-table-column>
  223. <el-table-column prop="licenseno" label="车牌号" width="100" align="center"></el-table-column>
  224. <el-table-column prop="insuredname" label="投保人姓名" align="center" width="100"></el-table-column>
  225. <el-table-column prop="product" label="投保险种" align="center" width="100"></el-table-column>
  226. <el-table-column prop="orderstatus" label="状态" align="center" width="150">
  227. <template slot-scope="scope">
  228. <!-- <el-tag :type="capType(scope.row.orderstatus)" size="small">{{
  229. scope.row.orderstatus | cap
  230. }}</el-tag>-->
  231. <el-tag style="
  232. color: #33a08d;
  233. border-color: #33a08d;
  234. background: rgba(51, 160, 141, 0.1);
  235. " v-if="scope.row.orderstatus == '0' || scope.row.orderstatus == '1'" size="small">{{ scope.row.orderstatus
  236. | cap }}</el-tag>
  237. <el-tag type="danger" style="border-color: #e75b5d" v-else-if="scope.row.orderstatus == '3'" size="small">{{
  238. scope.row.orderstatus | cap }}</el-tag>
  239. <el-tag v-else style="
  240. color: #2d4d89;
  241. border-color: #2d4d89;
  242. background: rgba(45, 77, 137, 0.1);
  243. " size="small">{{ scope.row.orderstatus | cap }}</el-tag>
  244. </template>
  245. </el-table-column>
  246. <el-table-column prop="createtime" label="录单日期" align="center" width="200"></el-table-column>
  247. <el-table-column prop="insureTime" label="承保确认时间" align="center" width="200"></el-table-column>
  248. <el-table-column label="操作" align="center" fixed="right" min-width="200">
  249. <template slot-scope="scope">
  250. <el-button v-if="scope.row.orderstatus != '3'" size="mini" type="text" style="color: #2d4d89"
  251. @click="CloseEdit(scope.$index, scope.row)">重新报价</el-button>
  252. <el-button size="mini" style="color: #2d4d89" type="text"
  253. @click="onoffQuotationHistory(scope.row)">报价历史</el-button>
  254. <!-- <el-button size="mini" type="text" v-if="['0', '5'].includes(scope.row.orderstatus)"
  255. @click="CloseQoute(scope.$index, scope.row)" style="color:#f56c6c">关闭报价</el-button>-->
  256. <!-- <el-button size="mini" type="text" v-if="scope.row.orderstatus == '0'"
  257. @click="underwriting(scope.$index, scope.row)" style="color:#e6a23c">去核保</el-button>-->
  258. </template>
  259. </el-table-column>
  260. </el-table>
  261. <!-- 分页功能 -->
  262. <div class="block">
  263. <el-pagination @size-change="applyhandleSizeChange" @current-change="applyhandleCurrentChange"
  264. :current-page="pageNum" :page-size="pageSize" :page-sizes="[20, 30, 50, 100]"
  265. layout="total, sizes, prev, pager, next, jumper" :total="totalSize"></el-pagination>
  266. </div>
  267. <!--第一种 二维码 -->
  268. <el-dialog :visible.sync="codedialogVisible" width="430px" top="10vh" class="saomazhifucodeClass">
  269. <div class="ORcodebody" v-watermark="qrCodeId">
  270. <div slot="title" class="dialog-title">
  271. <span>扫码付款</span>
  272. </div>
  273. <div class="ORcode">
  274. <div style="padding: 13px; position: relative">
  275. <div v-if="['大家财险', '华泰财险'].includes(inscompany)">
  276. <div v-if="apiType == 1" id="qrcode" ref="qrcode"></div>
  277. <img v-else :src="paycodeimg" alt style="width: 100%" />
  278. </div>
  279. <div v-else>
  280. <img v-if="['太平财险'].includes(inscompany)" :src="paycodeimg" alt style="width: 100%" />
  281. <div v-else id="qrcode" ref="qrcode"></div>
  282. </div>
  283. </div>
  284. </div>
  285. <img style="margin-left: -16px" src="../../../assets/image/divider.png" alt />
  286. <div style="
  287. font-size: 32px;
  288. text-align: center;
  289. color: #d42426;
  290. margin-top: 20px;
  291. ">
  292. <span style="font-size: 24px; font-weight: bold">¥</span>
  293. {{ sumpremium }}
  294. </div>
  295. <div class="ORtitle">
  296. <div>
  297. <span>保险公司:</span>
  298. <span>{{ inscompany }}</span>
  299. </div>
  300. <div>
  301. <span>车牌号:</span>
  302. <span>{{ licenseNo }}</span>
  303. </div>
  304. <div>
  305. <span>投保人:</span>
  306. <span>{{ applyName }}</span>
  307. </div>
  308. <div v-show="jqpremium">
  309. <span>交强:</span>
  310. <span>{{ jqpremium }}</span>
  311. </div>
  312. <div v-show="sypremium">
  313. <span>商业:</span>
  314. <span>{{ sypremium }}</span>
  315. </div>
  316. <div v-show="taxamount">
  317. <span>车船税:</span>
  318. <span>{{ taxamount }}</span>
  319. </div>
  320. <div v-show="jqstartdate">
  321. <span>交强险起保日期:</span>
  322. <span>{{ jqstartdate }}</span>
  323. </div>
  324. <div v-show="systartdate">
  325. <span>商业险起保日期:</span>
  326. <span>{{ systartdate }}</span>
  327. </div>
  328. <div v-if="jypremium">
  329. <span>非车险:</span>
  330. <span>{{ jypremium }}</span>
  331. </div>
  332. </div>
  333. </div>
  334. <span slot="footer" class="dialog-footer display">
  335. <el-button size="small" style="width: 100px; border-color: #d42426; color: #d42426"
  336. @click="codedialogVisible = false">关闭</el-button>
  337. </span>
  338. </el-dialog>
  339. <!--第二种 二维码 -->
  340. <el-dialog :visible.sync="codedialogVisiblePro" width="660px" class="proSaomazhifucodeClass" top="10vh" title="扫码付款">
  341. <div class="flex j-s">
  342. <div class="scan-code">
  343. <div style="font-weight: bold">
  344. 总金额:
  345. <span style="color: #2d4d89">{{ sumpremium }}</span>
  346. </div>
  347. <div>交强险:{{ jqpremium }}</div>
  348. <div>车船税:{{ taxamount }}</div>
  349. <div>商业险:{{ sypremium }}</div>
  350. <div>非车险:{{ jypremium }}</div>
  351. </div>
  352. <div v-if="['大家财险', '华泰财险'].includes(inscompany)">
  353. <div v-if="apiType == 1" id="qrcode" ref="qrcode"></div>
  354. <img v-else :src="paycodeimg" alt style="width: 100%" />
  355. </div>
  356. <div v-else>
  357. <img v-if="['太平财险'].includes(inscompany)" :src="paycodeimg" alt style="width: 200px; height: 200px" />
  358. <div v-else id="qrcode" ref="qrcode"></div>
  359. </div>
  360. <div class="scan-code">
  361. <div>保险公司:{{ inscompany }}</div>
  362. <div>车牌号:{{ licenseNo }}</div>
  363. <div>投保人:{{ applyName }}</div>
  364. <div>交强险起保日期:{{ jqstartdate }}</div>
  365. <div>商业险起保日期:{{ systartdate }}</div>
  366. </div>
  367. </div>
  368. <span slot="footer" class="dialog-footer">
  369. <el-button size="small" style="
  370. width: 100px;
  371. background: #eaedf1;
  372. border-color: #eaedf1;
  373. color: #2d4d89;
  374. " @click="codedialogVisiblePro = false">关闭</el-button>
  375. </span>
  376. </el-dialog>
  377. <!-- 车辆报价新页面 -->
  378. <detailsDialog ref="detailsDialog" :orderInfo.sync="orderInfo" :Feepermissions="false"></detailsDialog>
  379. <!-- 订单轨迹 -->
  380. <el-dialog :visible.sync="ddgjdialogVisible" width="430px">
  381. <div slot="title" class="dialog-title">
  382. <span>订单轨迹</span>
  383. </div>
  384. <div style="height: 300px; overflow-y: auto">
  385. <el-steps direction="vertical" :active="trajectoryTable.length - 1">
  386. <el-step :title="item.orderStatus | cap" :key="item.id" v-for="item in trajectoryTable">
  387. <template slot="description">
  388. <span>保险公司:{{ item.insCompany }}</span>
  389. <span>提交人:{{ item.operator }}</span>
  390. <div>创建时间:{{ item.createTime }}</div>
  391. </template>
  392. </el-step>
  393. </el-steps>
  394. </div>
  395. </el-dialog>
  396. <!-- 报价历史 -->
  397. <el-dialog :visible.sync="quotationhistorydialogVisible" v-dialogDrag width="90%">
  398. <div slot="title" class="dialog-title">
  399. <img src="../../../../src/icon/报价历史.png" alt class="icon-img" />
  400. <span>报价历史</span>
  401. </div>
  402. <div style="padding: 20px">
  403. <el-table size="small" :data="HistoryList" height="400" border style="width: 100%" v-loading="loading"
  404. :header-cell-style="{
  405. background: '#F2F7FC',
  406. }" highlight-current-row>
  407. <el-table-column prop="inscompany" label="保险公司" align="center"></el-table-column>
  408. <el-table-column prop="username" label="业务员" align="center">
  409. <template slot-scope="scope">
  410. <span>{{ scope.row.userName }}({{ scope.row.userId }})</span>
  411. </template>
  412. </el-table-column>
  413. <el-table-column prop="licenseno" label="车牌号" align="center"></el-table-column>
  414. <el-table-column prop="createtime" label="报价时间" align="center"></el-table-column>
  415. <el-table-column prop="jqpremium" label="交强险" align="center"></el-table-column>
  416. <el-table-column prop="sypremium" label="商业险" align="center"></el-table-column>
  417. <el-table-column prop="taxamount" label="车船税" align="center"></el-table-column>
  418. <el-table-column prop="sumpremium" label="总保费" align="center"></el-table-column>
  419. <el-table-column prop="orderstatus" label="状态" align="center">
  420. <template slot-scope="scope">
  421. <el-tag style="
  422. color: #33a08d;
  423. border-color: #33a08d;
  424. background: rgba(51, 160, 141, 0.1);
  425. " v-if="scope.row.orderstatus == '0' || scope.row.orderstatus == '1'
  426. " size="small">{{ scope.row.orderstatus | cap }}</el-tag>
  427. <el-tag type="danger" style="border-color: #e75b5d" v-else-if="scope.row.orderstatus == '3'" size="small">{{
  428. scope.row.orderstatus | cap }}</el-tag>
  429. <el-tag v-else style="
  430. color: #2d4d89;
  431. border-color: #2d4d89;
  432. background: rgba(45, 77, 137, 0.1);
  433. " size="small">{{ scope.row.orderstatus | cap }}</el-tag>
  434. </template>
  435. </el-table-column>
  436. <el-table-column label="操作" align="center" min-width="180" fixed="right">
  437. <template slot-scope="scope">
  438. <el-button type="text" size="small" style="color: #2d4d89"
  439. @click="OrderDetails(quotationhistoryRow, scope.row)">查看详情</el-button>
  440. <el-button size="small" type="text" @click="bjdpreview(scope.row.id, scope.row.userId)">报价单</el-button>
  441. <el-button size="small" v-show="scope.row.orderstatus == '2'" type="text"
  442. @click="carcode(scope.row)">付款码</el-button>
  443. <el-button size="mini" type="text" v-if="(scope.row.orderstatus == '1' ||
  444. scope.row.orderstatus == '2' ||
  445. scope.row.orderstatus == '4') &&
  446. ['紫金财险'].includes(scope.row.inscompany)
  447. " @click="cancelorder(scope.row)">撤单</el-button>
  448. <el-button type="text" size="mini" style="color: #2d4d89" v-if="scope.row.orderstatus == '2'"
  449. @click="revokeCode(scope.row.id)">撤销二维码</el-button>
  450. <el-button type="text" size="mini" style="color: #2d4d89" v-if="scope.row.orderstatus == '2' &&
  451. [
  452. '太平财险',
  453. '华农财险',
  454. '恒邦财险',
  455. '众安财险',
  456. '中国人寿',
  457. '安盛天平',
  458. '紫金财险',
  459. '永诚财险',
  460. '大家财险',
  461. '华泰财险',
  462. '国任财险',
  463. '中煤财险',
  464. '渤海财险',
  465. '泰康财险',
  466. '平安财险',
  467. ].includes(scope.row.inscompany)
  468. " @click="querystatus(scope.row, 'history')">状态更新</el-button>
  469. </template>
  470. </el-table-column>
  471. </el-table>
  472. </div>
  473. </el-dialog>
  474. <el-dialog :visible.sync="signaturedialogVisible" title="生成签章" width="14%">
  475. <div style="padding:0 20px">
  476. <div id="signaturecode" ref="signaturecode"></div>
  477. </div>
  478. </el-dialog>
  479. <!-- 报价单 -->
  480. <quotationDialog ref="quotationDialog" :queryOrders="queryOrders"></quotationDialog>
  481. <quotationDialogPro ref="quotationDialogPro" :queryOrders="queryOrders"></quotationDialogPro>
  482. </div>
  483. </template>
  484. <script>
  485. let _self;
  486. import { pathToBase64, base64ToPath } from "@/common/image-tools-base64.js";
  487. import CommonUtil from "@/utils/comutil.js";
  488. import Cookies from "js-cookie";
  489. import QRCode from "qrcodejs2";
  490. import quotationDialog from "@/views/Core/components/quotationDialog.vue";
  491. import quotationDialogPro from "@/views/Core/components/quotationDialogPro.vue";
  492. import detailsDialog from "@/views/Core/components/detailsDialog.vue";
  493. export default {
  494. data() {
  495. return {
  496. orderLoaing: false,
  497. qrcodeWidth: "180",
  498. qrcodeHeight: "180",
  499. qrCodeId: Cookies.get("user"),
  500. ddgjdialogVisible: false,
  501. signaturedialogVisible:false,
  502. signaturecode:null,
  503. trajectoryTable: [],
  504. queryOrders: {
  505. carinfo: {},
  506. ownerinfo: {},
  507. applyinfo: {},
  508. insureinfo: {},
  509. extendInfo: {},
  510. },
  511. logoImg: "", //报价单保险公司logo图
  512. value2: "",
  513. optionsStatus: [],
  514. codedialogVisible: false,
  515. codedialogVisiblePro: false,
  516. loading: false,
  517. pageNum: 1, //页数
  518. pageSize: 20, //条数
  519. totalSize: null, //总数
  520. peopleid: "", //工号
  521. pageResult: [], //列表
  522. pageRequest: {
  523. //查询的默认条件
  524. orderNo: "",
  525. frameNo: "",
  526. insuredName: "",
  527. licenseNo: "",
  528. orderStatus: "",
  529. userId: "",
  530. endDate: "",
  531. startDate: "",
  532. pageNum: 1,
  533. pageSize: 20,
  534. deptId: "",
  535. },
  536. orderInfo: {
  537. //选中的订单
  538. ownerinfo: {},
  539. carinfo: {},
  540. applyinfo: {},
  541. insureinfo: {},
  542. kindinfo: [],
  543. riskinfo: [],
  544. ownerinfo: {},
  545. orderCommissionVo: {},
  546. extendInfo: {},
  547. },
  548. carImageList: [], //车辆影像
  549. ownerImageList: [], //车主影像
  550. policyImageList: [], //投保人影像
  551. insuredImageList: [], //被保人影像
  552. carCheckImageList: [], //验车照影像
  553. // 影像控制
  554. pic1Control: false,
  555. pic2Control: false,
  556. pic3Control: false,
  557. pic4Control: false,
  558. pic5Control: false,
  559. showInsureList: false, //是否展示具体险种信息
  560. oldfileList: [], //电子保单数据
  561. inscompany: "", //保险公司名称
  562. licenseNo: "", //车牌号
  563. applyName: "", //车主名字
  564. orderstatus: "", //订单状态
  565. sumpremium: "", //保费合计
  566. jqpremium: "", //交强
  567. sypremium: "", //商业
  568. taxamount: "", //车船税
  569. jypremium: "", //驾意险
  570. jqstartdate: "", //交强时间
  571. systartdate: "", //商业时间
  572. mobile: "", //投保人手机号
  573. qrcode: null,
  574. paycodeimg: "",
  575. userid: "",
  576. downloadstatus: 0,
  577. expands: [],
  578. productsTypeoptions: [],
  579. InsInsuranceKindoptions: [],
  580. width: document.documentElement.clientWidth,
  581. insAreaCompanyList: [], //子订单list
  582. companyList: [], //保险公司
  583. querystatusLoaing: false,
  584. quotationhistorydialogVisible: false, //报价历史显示状态
  585. HistoryList: [], //报价历史数据
  586. natureOfVehicleUseoptions: [],
  587. businessVehicleUseoptions: [],
  588. energyTypeoptions: [],
  589. vehicleTypeoptions: [],
  590. trafficManagementVehicleTypeoptions: [],
  591. outOfBusinessVehicleUseoptions: [],
  592. userIdPor: Cookies.get("user"),
  593. statusPor: "",
  594. deptIdPor: "",
  595. apiType: "",
  596. };
  597. },
  598. components: { quotationDialog, detailsDialog, quotationDialogPro },
  599. created() {
  600. this.getDicType("natureOfVehicleUse"); //车辆使用性质
  601. this.getDicType("vehicleType"); //车辆种类
  602. this.getDicType("trafficManagementVehicleType"); //车辆类型
  603. this.getDicType("energyType"); //能源种类
  604. this.getDicType("businessVehicleUse"); //(车辆用途)营业
  605. this.getDicType("outOfBusinessVehicleUse"); //(车辆用途)非营业
  606. this.getDicType("productsType"); //(车辆用途)非营业
  607. this.$api.letter.gainTopList().then((res) => {
  608. this.companyList = res.data;
  609. });
  610. this.$api.insCompany.dicType("insOrderStatus").then((res) => {
  611. this.optionsStatus = res.data.ddList;
  612. });
  613. this.peopleid = Cookies.get("user");
  614. this.$api.dept.findDeptTree().then((res) => {
  615. this.institutionOptions = res.data;
  616. });
  617. // this.findPage();
  618. if (this.isLetterOrder) {
  619. this.pageRequest.deptId = JSON.parse(
  620. localStorage.getItem("user_data")
  621. ).deptId;
  622. if (this.peopleid != "admin") {
  623. this.pageRequest.userId = this.peopleid;
  624. this.findPage();
  625. } else {
  626. this.pageRequest.userId = "admin";
  627. }
  628. }
  629. },
  630. props: {
  631. isLetterOrder: {
  632. type: Boolean,
  633. default: true,
  634. },
  635. },
  636. mounted() {
  637. window.addEventListener("resize", this.getDimensions);
  638. },
  639. beforeCreate() {
  640. _self = this;
  641. },
  642. // props:{
  643. // isdisabled:{
  644. // type:Boolean,
  645. // default:true
  646. // },
  647. // },
  648. filters: {
  649. cap(ele) {
  650. return _self.optionsStatus.find((item) => {
  651. return item.dictValue === ele;
  652. }).dictTag;
  653. },
  654. },
  655. unmounted() {
  656. window.removeEventListener("resize", this.getDimensions);
  657. },
  658. computed: {
  659. allinsOption() {
  660. let cloneData = JSON.parse(JSON.stringify(this.allIns)); // 对源数据深度克隆
  661. return cloneData.filter((father) => {
  662. // 循环所有项,并添加children属性
  663. let branchArr = cloneData.filter(
  664. (child) => father.id == child.parentId
  665. ); // 返回每一项的子级数组
  666. branchArr.length > 0 ? (father.children = branchArr) : ""; //给父级添加一个children属性,并赋值
  667. return father.parentId == 0; //返回第一层
  668. });
  669. },
  670. registerDateFormat() {
  671. let date = new Date(this.orderInfo.carinfo.registerDate);
  672. let year = date.getFullYear();
  673. let month = date.getMonth() + 1;
  674. let day = date.getDate();
  675. return year + "-" + month + "-" + day;
  676. },
  677. issueDateFormat() {
  678. let date = new Date(this.orderInfo.carinfo.issueDate);
  679. let year = date.getFullYear();
  680. let month = date.getMonth() + 1;
  681. let day = date.getDate();
  682. return year + "-" + month + "-" + day;
  683. },
  684. },
  685. methods: {
  686. //报价历史点击事件
  687. onoffQuotationHistory(row) {
  688. this.quotationhistoryRow = row;
  689. this.RadioHistoryChange();
  690. this.quotationhistorydialogVisible = true;
  691. },
  692. //报价轨迹查询
  693. RadioHistoryChange() {
  694. let params = {
  695. orderNo: this.quotationhistoryRow.orderno,
  696. orderStatus: "",
  697. };
  698. this.$api.letter.queryQuoteHistory(params).then((res) => {
  699. res.data.forEach((item) => {
  700. if (item.accidentInfo) {
  701. item.accidentInfo.constructor === Object
  702. ? [item.accidentInfo]
  703. : item.accidentInfo;
  704. }
  705. });
  706. this.HistoryList = res.data;
  707. });
  708. },
  709. getDicType(type) {
  710. this.$api.insCompany.dicType(type).then((res) => {
  711. if (res.code == 200) {
  712. this[type + "options"] = res.data.ddList;
  713. }
  714. });
  715. },
  716. capType(val) {
  717. if (val == "0") {
  718. return "success";
  719. }
  720. if (val == "1") {
  721. return "warning";
  722. }
  723. if (val == "2" || val == "3" || val == "4") {
  724. return "danger";
  725. }
  726. },
  727. // 撤销二维码
  728. revokeCode(id) {
  729. this.$api.letter.getRevokeQrCode(id).then((res) => {
  730. if (res.code == 200) {
  731. this.$message({
  732. message: res.msg,
  733. type: "success",
  734. });
  735. this.quotationhistorydialogVisible ? this.RadioHistoryChange() : "";
  736. this.findPage();
  737. }
  738. });
  739. },
  740. bjdpreview(companyId, userId) {
  741. let params = {
  742. companyId: companyId,
  743. };
  744. this.$api.letter.getByCompanyId(params).then((res) => {
  745. if (res.code == "200") {
  746. var data = res.data;
  747. if (data.kindinfo != null) {
  748. data.kindinfo.map((ele, index) => {
  749. switch (ele.kindCode) {
  750. case "A":
  751. if (ele.amount == 1) {
  752. ele.amount = "投保";
  753. } else {
  754. ele.amount = ele.amount;
  755. }
  756. break;
  757. case "D4":
  758. case "SY_FJ_YBW2":
  759. ele.unitAmount = this.toChinesNum(ele.unitAmount);
  760. break;
  761. case "MJ1":
  762. case "MJ2":
  763. case "MJ3":
  764. case "MJ4":
  765. ele.deductibleRate = ele.deductibleRate + "%";
  766. break;
  767. default:
  768. ele.amount = this.toChinesNum(ele.amount);
  769. }
  770. return ele;
  771. });
  772. }
  773. data.logoImg = this.iconfftter(res.data.inscompany);
  774. this.queryOrders = data;
  775. this.$api.letter.getThemeByUserId(this.userIdPor).then((res) => {
  776. if (res.code == 200) {
  777. if (res.data[0] == "GD") {
  778. this.$refs.quotationDialogPro.setBackupVisible(true);
  779. } else {
  780. this.$refs.quotationDialog.setBackupVisible(true);
  781. }
  782. }
  783. });
  784. }
  785. });
  786. },
  787. toChinesNum(num) {
  788. if (num.toString().length == 4) {
  789. let overQian = Math.floor(num / 1000);
  790. let result = overQian + "千";
  791. return result;
  792. } else {
  793. let overWan = Math.floor(num / 10000);
  794. let result = overWan + "万";
  795. return result;
  796. }
  797. },
  798. iconfftter(icon) {
  799. return CommonUtil.getDataName({
  800. dataList: this.global.insCompanyList,
  801. value: "name",
  802. label: "icon",
  803. data: icon,
  804. });
  805. },
  806. getRowClass(scope, rowIndex) {
  807. if (scope.row.insAreaCompanyList.length == 0) {
  808. //判断当前行是否有子数据或者根据实际情况设置
  809. return "row-expand-cover";
  810. }
  811. },
  812. getDimensions() {
  813. this.width = document.documentElement.clientWidth - 350 + "px";
  814. },
  815. //订单修改
  816. CloseEdit(index, row) {
  817. this.$api.letter.getByOrderNo({ orderNo: row.orderno }).then((res) => {
  818. if (res.code == 200) {
  819. if (this.isLetterOrder) {
  820. this.$router.push({
  821. path: "/letter/letter",
  822. query: { data: res.data },
  823. });
  824. } else {
  825. res.data.activeName = "999";
  826. this.$emit("orderEdit", res.data);
  827. }
  828. } else {
  829. this.$message.error(res.msg);
  830. }
  831. });
  832. },
  833. //二维码生成插件
  834. creatQrCode(text) {
  835. // 查找并删除旧的二维码DOM元素
  836. let element = document.getElementById("qrcode");
  837. while (element.firstChild) {
  838. element.removeChild(element.firstChild);
  839. }
  840. // 创建新的QRCode实例
  841. this.qrcode = new QRCode("qrcode", {
  842. text: text,
  843. width: this.qrcodeWidth,
  844. height: this.qrcodeHeight,
  845. colorDark: "#000000",
  846. colorLight: "#ffffff",
  847. correctLevel: QRCode.CorrectLevel.H,
  848. });
  849. },
  850. //更新订单状态
  851. refreshStatus(item) {
  852. let inscompany = {
  853. 国任财险: "updateOrderInfoGuoren",
  854. 中煤财险: "orderStatuszhongmei",
  855. 太平财险: "auditStatusQuery",
  856. 泰康财险: "auditStatusQuery",
  857. 华农财险: "auditStatusQuery",
  858. 恒邦财险: "auditStatusQuery",
  859. 众安财险: "auditStatusQuery",
  860. 中国人寿: "auditStatusQuery",
  861. 安盛天平: "auditStatusQuery",
  862. 紫金财险: "auditStatusQueryZijin",
  863. 渤海财险: "orderStatusbohai",
  864. };
  865. Object.keys(inscompany).forEach((val) => {
  866. if (val == item.inscompany) {
  867. this.$api.letter[inscompany[val]]({ companyId: item.id }).then(
  868. (res) => {
  869. if (res.code == 200) {
  870. this.$message({
  871. message: res.msg ? res.msg : "已刷新状态",
  872. type: "success",
  873. });
  874. this.findPage();
  875. } else {
  876. this.$message({
  877. showClose: true,
  878. dangerouslyUseHTMLString: true,
  879. message: res.msg.replace(/\n/g, "<br><br>"),
  880. type: "error",
  881. duration: 7000,
  882. });
  883. // this.$message({ message: res.msg, type: "error" });
  884. }
  885. }
  886. );
  887. }
  888. });
  889. if (item.inscompany == "永诚财险") {
  890. this.$api.letter.orderStatusyongcheng(item.id).then((res) => {
  891. if (res.code == 200) {
  892. this.$message({
  893. message: res.msg ? res.msg : "已刷新状态",
  894. type: "success",
  895. });
  896. this.findPage();
  897. } else {
  898. this.$message({
  899. showClose: true,
  900. dangerouslyUseHTMLString: true,
  901. message: res.msg.replace(/\n/g, "<br><br>"),
  902. type: "error",
  903. duration: 7000,
  904. });
  905. }
  906. });
  907. }
  908. if (item.inscompany == "华泰财险") {
  909. let HtApiType =
  910. item.apiType == 2 ? "auditStatusQuery" : "orderStatushuatai";
  911. this.$api.letter[HtApiType]({ companyId: item.id }).then((res) => {
  912. if (res.code == 200) {
  913. this.$message({
  914. message: res.msg ? res.msg : "已刷新状态",
  915. type: "success",
  916. });
  917. this.findPage();
  918. } else {
  919. this.$message({
  920. showClose: true,
  921. dangerouslyUseHTMLString: true,
  922. message: res.msg.replace(/\n/g, "<br><br>"),
  923. type: "error",
  924. duration: 7000,
  925. });
  926. }
  927. });
  928. }
  929. if (item.inscompany == "大家财险") {
  930. let HtApiType =
  931. item.apiType == 2 ? "auditStatusQuery" : "updateOrderInfoDajia";
  932. this.$api.letter[HtApiType]({ companyId: item.id }).then((res) => {
  933. if (res.code == 200) {
  934. this.$message({
  935. message: res.msg ? res.msg : "已刷新状态",
  936. type: "success",
  937. });
  938. this.findPage();
  939. } else {
  940. this.$message({
  941. showClose: true,
  942. dangerouslyUseHTMLString: true,
  943. message: res.msg.replace(/\n/g, "<br><br>"),
  944. type: "error",
  945. duration: 7000,
  946. });
  947. }
  948. });
  949. }
  950. },
  951. //华泰刷新核保状态
  952. updateStatusHuatai(item) {
  953. let HtApiType =
  954. item.apiType == 2 ? "auditStatusQuery" : "orderStatushuatai";
  955. this.$api.letter[HtApiType]({ companyId: item.id }).then((res) => {
  956. if (res.code == 200) {
  957. this.$message({
  958. message: res.msg ? res.msg : "已刷新状态",
  959. type: "success",
  960. });
  961. this.findPage();
  962. } else {
  963. this.$message({
  964. showClose: true,
  965. dangerouslyUseHTMLString: true,
  966. message: res.msg.replace(/\n/g, "<br><br>"),
  967. type: "error",
  968. duration: 7000,
  969. });
  970. }
  971. });
  972. },
  973. //查询缴费状态
  974. querystatus(item, index) {
  975. this.querystatusLoaing = true;
  976. let inscompany = {
  977. 国任财险: "updateOrderInfoGuoren",
  978. 大家财险: "updateOrderInfoDajia",
  979. 紫金财险: "getOrderDetail",
  980. 中煤财险: "paymentEnquiry",
  981. 渤海财险: "getOrderDetailboHai",
  982. 平安财险: "getDocumentStatusList",
  983. };
  984. Object.keys(inscompany).forEach((val) => {
  985. if (val == item.inscompany) {
  986. this.$api.letter[inscompany[val]]({ companyId: item.id }).then(
  987. (res) => {
  988. if (res.code == 200) {
  989. this.$message({
  990. message: res.msg ? res.msg : "已刷新状态",
  991. type: "success",
  992. });
  993. this.quotationhistorydialogVisible
  994. ? this.RadioHistoryChange()
  995. : "";
  996. this.findPage();
  997. this.querystatusLoaing = false;
  998. } else {
  999. this.querystatusLoaing = false;
  1000. this.$message({ message: res.msg, type: "error" });
  1001. }
  1002. }
  1003. );
  1004. }
  1005. });
  1006. if (item.inscompany == "永诚财险") {
  1007. this.$api.letter.orderStatusyongcheng(item.id).then((res) => {
  1008. if (res.code == 200) {
  1009. this.$message({
  1010. message: res.msg ? res.msg : "已刷新状态",
  1011. type: "success",
  1012. });
  1013. this.quotationhistorydialogVisible ? this.RadioHistoryChange() : "";
  1014. this.findPage();
  1015. this.querystatusLoaing = false;
  1016. } else {
  1017. this.querystatusLoaing = false;
  1018. this.$message({ message: res.msg, type: "error" });
  1019. }
  1020. });
  1021. }
  1022. if (item.inscompany == "华泰财险") {
  1023. let HtApiType =
  1024. item.apiType == 2 ? "pychonverifyPayment" : "updateOrderInfoHuatai";
  1025. this.$api.letter[HtApiType]({
  1026. [item.apiType == 2 ? "subOrderNo" : "companyId"]: item.id,
  1027. }).then((res) => {
  1028. if (res.code == 200) {
  1029. this.$message({
  1030. message: res.msg ? res.msg : "已刷新状态",
  1031. type: "success",
  1032. });
  1033. this.quotationhistorydialogVisible ? this.RadioHistoryChange() : "";
  1034. this.findPage();
  1035. this.querystatusLoaing = false;
  1036. } else {
  1037. this.querystatusLoaing = false;
  1038. this.$message({ message: res.msg, type: "error" });
  1039. }
  1040. });
  1041. }
  1042. if (item.inscompany == "大家财险") {
  1043. let DJApiType =
  1044. item.apiType == 2 ? "pychonverifyPayment" : "updateOrderInfoDajia";
  1045. this.$api.letter[DJApiType]({
  1046. [item.apiType == 2 ? "subOrderNo" : "companyId"]: item.id,
  1047. }).then((res) => {
  1048. if (res.code == 200) {
  1049. this.$message({
  1050. message: res.msg ? res.msg : "已刷新状态",
  1051. type: "success",
  1052. });
  1053. this.quotationhistorydialogVisible ? this.RadioHistoryChange() : "";
  1054. this.findPage();
  1055. this.querystatusLoaing = false;
  1056. } else {
  1057. this.querystatusLoaing = false;
  1058. this.$message({ message: res.msg, type: "error" });
  1059. }
  1060. });
  1061. }
  1062. if (
  1063. item.inscompany == "恒邦财险" ||
  1064. item.inscompany == "众安财险" ||
  1065. item.inscompany == "中国人寿" ||
  1066. item.inscompany == "安盛天平" ||
  1067. item.inscompany == "太平财险" ||
  1068. item.inscompany == "泰康财险" ||
  1069. item.inscompany == "华农财险"
  1070. ) {
  1071. this.$api.letter
  1072. .pychonverifyPayment({ subOrderNo: item.id })
  1073. .then((res) => {
  1074. if (res.code == "200") {
  1075. this.$message({
  1076. message: "订单支付成功,正在更改状态",
  1077. type: "success",
  1078. });
  1079. this.quotationhistorydialogVisible
  1080. ? this.RadioHistoryChange()
  1081. : "";
  1082. this.findPage();
  1083. this.querystatusLoaing = false;
  1084. } else {
  1085. this.querystatusLoaing = false;
  1086. this.$message({ message: res.msg, type: "error" });
  1087. }
  1088. });
  1089. }
  1090. },
  1091. cancelorder(item) {
  1092. this.$api.letter.zijincancelorder({ companyId: item.id }).then((res) => {
  1093. if (res.code == 200) {
  1094. this.$message({
  1095. message: res.msg,
  1096. type: "success",
  1097. });
  1098. this.findPage();
  1099. }
  1100. });
  1101. },
  1102. //二维码
  1103. carcode(item) {
  1104. this.apiType = item.apiType;
  1105. this.$api.letter.getQrCode(item.id).then((res) => {
  1106. if (res.code == "200") {
  1107. this.inscompany = res.data.inscompany; //保险公司
  1108. this.sumpremium = res.data.sumpremium; //总价
  1109. this.licenseNo = res.data.cPlateNo; //车牌号
  1110. this.applyName = res.data.cInsuredNme; //车主
  1111. this.jqpremium = res.data.jqpremium; //交强
  1112. this.sypremium = res.data.sypremium; //商业
  1113. this.taxamount = res.data.taxamount; //车船税
  1114. this.jypremium = res.data.jypremium; //驾意险
  1115. this.jqstartdate = res.data.jqStartDate; //交强起保日期
  1116. this.systartdate = res.data.syStartDate; //商业起保日期
  1117. // this.mobile = res.data.applyinfo.mobile;//投保人手机号
  1118. let qrCodeUrl = res.data.qrCodeUrl;
  1119. this.$api.letter.getThemeByUserId(this.userIdPor).then((res) => {
  1120. if (res.code == 200) {
  1121. if (res.data[0] == "GD") {
  1122. this.codedialogVisiblePro = true;
  1123. this.qrcodeWidth = "154";
  1124. this.qrcodeHeight = "154";
  1125. } else {
  1126. this.codedialogVisible = true;
  1127. }
  1128. this.$nextTick(function () {
  1129. if (item.inscompany == "太平财险") {
  1130. let anresult = qrCodeUrl.replace(/[\r\n]/g, "");
  1131. let animgBase64 = `data:image/png;base64,${anresult}`;
  1132. base64ToPath(animgBase64).then((path) => {
  1133. this.paycodeimg = path;
  1134. });
  1135. } else if (item.inscompany == "华泰财险") {
  1136. switch (item.apiType) {
  1137. case 1:
  1138. this.creatQrCode(qrCodeUrl);
  1139. break;
  1140. case 2:
  1141. let anresult = qrCodeUrl.replace(/[\r\n]/g, "");
  1142. let animgBase64 = `data:image/png;base64,${anresult}`;
  1143. base64ToPath(animgBase64).then((path) => {
  1144. console.log(path)
  1145. this.paycodeimg = path;
  1146. });
  1147. break;
  1148. }
  1149. } else if (item.inscompany == "大家财险") {
  1150. switch (item.apiType) {
  1151. case 1:
  1152. this.creatQrCode(qrCodeUrl);
  1153. break;
  1154. case 2:
  1155. let anresult = qrCodeUrl.replace(/[\r\n]/g, "");
  1156. let animgBase64 = `data:image/png;base64,${anresult}`;
  1157. base64ToPath(animgBase64).then((path) => {
  1158. this.paycodeimg = path;
  1159. });
  1160. break;
  1161. }
  1162. } else {
  1163. this.creatQrCode(qrCodeUrl);
  1164. }
  1165. });
  1166. }
  1167. });
  1168. } else {
  1169. this.$message({ message: res.msg, type: "warning" });
  1170. }
  1171. });
  1172. // this.$api.letter.getByCompanyId(params).then(res => {
  1173. // if (res.code == '200') {
  1174. // this.inscompany = res.data.inscompany;//保险公司
  1175. // this.sumpremium = res.data.sumpremium;//总价
  1176. // this.licenseNo = res.data.carinfo.licenseNo;//车牌号
  1177. // this.applyName = res.data.insuredname;//车主
  1178. // this.jqpremium = res.data.jqpremium;//交强
  1179. // this.sypremium = res.data.sypremium;//商业
  1180. // this.taxamount = res.data.taxamount;//车船税
  1181. // this.jypremium = res.data.jypremium;//驾意险
  1182. // this.jqstartdate = res.data.jqstartdate;//交强起保日期
  1183. // this.systartdate = res.data.systartdate;//商业起保日期
  1184. // this.mobile = res.data.applyinfo.mobile;//投保人手机号
  1185. // switch (item.inscompany) {
  1186. // case "永安财险":
  1187. // let url = this.global.h5BaseUrl + '/#/pages/carInsure1/yonganCode?companyId=' + item.id + '&mobile=' + this.mobile;
  1188. // this.$nextTick(() => {
  1189. // this.creatQrCode(url);
  1190. // });
  1191. // break;
  1192. // case "人保财险":
  1193. // case "中煤财险":
  1194. // case "华泰财险":
  1195. // case "永诚财险":
  1196. // case "紫金财险":
  1197. // this.$nextTick(() => {
  1198. // this.creatQrCode(res.data.paymentLink);
  1199. // });
  1200. // break;
  1201. // case "众安财险":
  1202. // this.paycodeimg = res.data.paymentLink;
  1203. // break;
  1204. // case "中国人寿":
  1205. // this.$nextTick(() => {
  1206. // this.creatQrCode(res.data.paymentLink);
  1207. // });
  1208. // break;
  1209. // case "恒邦财险":
  1210. // this.paycodeimg = res.data.paymentLink;
  1211. // break;
  1212. // case "国任财险":
  1213. // this.paycodeimg = res.data.paymentLink;
  1214. // break;
  1215. // case "安盛天平":
  1216. // let anresult = res.data.paymentLink.replace(/[\r\n]/g, "");
  1217. // let animgBase64 = `data:image/png;base64,${anresult}`;
  1218. // base64ToPath(animgBase64)
  1219. // .then(path => {
  1220. // this.paycodeimg = path;
  1221. // })
  1222. // break;
  1223. // default:
  1224. // this.$message({ message: "识别不到保险公司,请检查", type: "warning" })
  1225. // }
  1226. // this.codedialogVisible = true;
  1227. // } else {
  1228. // this.$message({ message: res.msg, type: "warning" })
  1229. // }
  1230. // })
  1231. },
  1232. signature(row){
  1233. this.$api.letter.pingAnsignEleApply({companyId:row.id}).then((res) => {
  1234. if (res.code == 200 && res.data) {
  1235. this.signaturedialogVisible = true;
  1236. // 查找并删除旧的二维码DOM元素
  1237. let element = document.getElementById("signaturecode");
  1238. while (element.firstChild) {
  1239. element.removeChild(element.firstChild);
  1240. }
  1241. this.signaturecode = new QRCode("signaturecode", {
  1242. text: res.data.resultMessage,
  1243. width: 180,
  1244. height: 180,
  1245. colorDark: "#000000",
  1246. colorLight: "#ffffff",
  1247. correctLevel: QRCode.CorrectLevel.H,
  1248. });
  1249. } else {
  1250. this.$message({
  1251. message: res.msg || "暂无数据!",
  1252. type: "warning",
  1253. });
  1254. }
  1255. });
  1256. },
  1257. orderTrajectory(row, item) {
  1258. this.$api.letter.queryBySuborder(item.id).then((res) => {
  1259. if (res.code == 200 && res.data.length > 0) {
  1260. this.ddgjdialogVisible = true;
  1261. this.trajectoryTable = res.data;
  1262. } else {
  1263. this.$message({
  1264. message: res.msg || "暂无数据!",
  1265. type: "warning",
  1266. });
  1267. }
  1268. });
  1269. },
  1270. capTypedictTag(val, option) {
  1271. if (option.find((item) => item.dictValue == val)) {
  1272. return option.find((item) => item.dictValue == val).dictTag;
  1273. } else {
  1274. return "-";
  1275. }
  1276. },
  1277. //应用详情
  1278. OrderDetails(dy, item) {
  1279. this.carImageList = [];
  1280. this.ownerImageList = []; //车主影像
  1281. this.policyImageList = []; //投保人影像
  1282. this.insuredImageList = []; //被保人影像
  1283. this.carCheckImageList = []; //验车照影像
  1284. // 影像控制
  1285. this.pic1Control = false;
  1286. this.pic2Control = false;
  1287. this.pic3Control = false;
  1288. this.pic4Control = false;
  1289. this.pic5Control = false;
  1290. for (let i = 0; i < this.global.insureList.length; i++) {
  1291. this.global.insureList[i].coveragePremium = "";
  1292. this.global.insureList[i].amount = 0;
  1293. }
  1294. let params = {
  1295. companyId: item.id,
  1296. };
  1297. this.$api.letter.getByCompanyId(params).then((res) => {
  1298. if (res.code == 200) {
  1299. this.licenseNo = res.data.licenseno; //车牌号
  1300. this.inscompany = res.data.inscompany; //保险公司
  1301. // res.data.carinfo.carnature = this.natureOfVehicleUseCap(
  1302. // res.data.carinfo.carnature
  1303. // );
  1304. if (
  1305. (res.data.carinfo.carnature &&
  1306. res.data.carinfo.carnature == "02") ||
  1307. res.data.carinfo.carnature == "非营业"
  1308. ) {
  1309. res.data.carinfo.vehicleUse = this.capTypedictTag(
  1310. res.data.carinfo.vehicleUse,
  1311. this.outOfBusinessVehicleUseoptions
  1312. );
  1313. } else {
  1314. res.data.carinfo.vehicleUse = this.capTypedictTag(
  1315. res.data.carinfo.vehicleUse,
  1316. this.businessVehicleUseoptions
  1317. );
  1318. }
  1319. res.data.carinfo.carnature = this.capTypedictTag(
  1320. res.data.carinfo.carnature,
  1321. this.natureOfVehicleUseoptions
  1322. );
  1323. res.data.carinfo.cartype = res.data.carinfo.cartype
  1324. ? this.capTypedictTag(
  1325. res.data.carinfo.cartype,
  1326. this.trafficManagementVehicleTypeoptions
  1327. )
  1328. : "";
  1329. res.data.carinfo.cimodelclass = res.data.carinfo.cimodelclass
  1330. ? this.capTypedictTag(
  1331. res.data.carinfo.cimodelclass,
  1332. this.vehicleTypeoptions
  1333. )
  1334. : "";
  1335. res.data.carinfo.energyType = res.data.carinfo.energyType
  1336. ? this.capTypedictTag(
  1337. res.data.carinfo.energyType,
  1338. this.energyTypeoptions
  1339. )
  1340. : "";
  1341. if (res.data.accidentInfo) {
  1342. res.data.accidentInfo.constructor === Object
  1343. ? [res.data.accidentInfo]
  1344. : res.data.accidentInfo;
  1345. }
  1346. Object.assign(this.orderInfo, res.data);
  1347. if (this.orderInfo.riskinfo && this.orderInfo.riskinfo.length > 0) {
  1348. for (let i = 0; i < this.orderInfo.riskinfo.length; i++) {
  1349. if (this.orderInfo.riskinfo[i].riskCode == "0510") {
  1350. for (let j = 0; j < this.orderInfo.kindinfo.length; j++) {
  1351. for (let m = 0; m < this.global.insureList.length; m++) {
  1352. if (
  1353. this.orderInfo.kindinfo[j].kindCode ==
  1354. this.global.insureList[m].kindCode
  1355. ) {
  1356. this.global.insureList[m].coveragePremium =
  1357. this.orderInfo.kindinfo[j].coveragePremium;
  1358. if (this.orderInfo.kindinfo[j].kindCode == "B") {
  1359. this.global.insureList[9].amtList[0].value =
  1360. this.orderInfo.kindinfo[j].amount;
  1361. }
  1362. if (this.orderInfo.kindinfo[j].kindCode == "A") {
  1363. this.global.insureList[m].amount = "1";
  1364. } else if (this.global.insureList[m].kindCode == "D4") {
  1365. this.global.insureList[m].amount =
  1366. this.orderInfo.kindinfo[j].unitAmount;
  1367. } else if (
  1368. this.global.insureList[m].isMainRisk ||
  1369. this.global.insureList[m].kindCode == "BD" ||
  1370. this.global.insureList[m].kindCode == "L"
  1371. ) {
  1372. this.global.insureList[m].amount =
  1373. this.orderInfo.kindinfo[j].amount;
  1374. } else {
  1375. this.global.insureList[m].amount =
  1376. this.orderInfo.kindinfo[j].deductibleRate;
  1377. }
  1378. }
  1379. }
  1380. }
  1381. }
  1382. }
  1383. }
  1384. // 获取影像
  1385. this.$api.letter.findByQuoteNo(dy.quoteno).then((resImage) => {
  1386. Object.keys(resImage.data).forEach((keys) => {
  1387. if (resImage.data[keys]) {
  1388. resImage.data[keys].url = resImage.data[keys].url
  1389. ? process.env.BASE_URL + resImage.data[keys].url
  1390. : null;
  1391. switch (keys) {
  1392. case "C01":
  1393. case "D01":
  1394. resImage.data[keys].url
  1395. ? this.carImageList.push(resImage.data[keys].url)
  1396. : "";
  1397. break;
  1398. case "C02":
  1399. case "D02":
  1400. resImage.data[keys].url
  1401. ? this.ownerImageList.push(resImage.data[keys].url)
  1402. : "";
  1403. break;
  1404. case "C03":
  1405. case "D03":
  1406. resImage.data[keys].url
  1407. ? this.policyImageList.push(resImage.data[keys].url)
  1408. : "";
  1409. break;
  1410. case "C04":
  1411. case "D04":
  1412. resImage.data[keys].url
  1413. ? this.insuredImageList.push(resImage.data[keys].url)
  1414. : "";
  1415. break;
  1416. case "XC00":
  1417. case "GC00":
  1418. case "GX00":
  1419. resImage.data[keys].url
  1420. ? this.carCheckImageList.push(resImage.data[keys].url)
  1421. : "";
  1422. break;
  1423. default:
  1424. break;
  1425. }
  1426. }
  1427. });
  1428. let obj = {
  1429. carImageList: this.carImageList,
  1430. ownerImageList: this.ownerImageList,
  1431. policyImageList: this.policyImageList,
  1432. insuredImageList: this.insuredImageList,
  1433. carCheckImageList: this.carCheckImageList,
  1434. };
  1435. this.$refs.detailsDialog.imageFun(obj);
  1436. });
  1437. this.pic1Control = false;
  1438. this.pic2Control = false;
  1439. this.pic3Control = false;
  1440. this.pic4Control = false;
  1441. this.pic5Control = false;
  1442. this.oldfileList = [];
  1443. let businessList = [];
  1444. let accidentList = [];
  1445. if (res.data.orderstatus == "3") {
  1446. if (res.data.isExternal == 1) {
  1447. this.$api.letter
  1448. .getPolicyPrintexternalOrder(res.data.id)
  1449. .then((res1) => {
  1450. if (res1.code == 200) {
  1451. if (res1.data.jqPolicy) {
  1452. this.oldfileList.push({
  1453. fileTitle: "交强电子保单",
  1454. filename: this.orderInfo.jqpolicyno,
  1455. fileurl: res1.data.jqPolicy,
  1456. });
  1457. }
  1458. if (res1.data.jqSign) {
  1459. this.oldfileList.push({
  1460. fileTitle: "交强电子标志",
  1461. filename: this.orderInfo.jqpolicyno,
  1462. fileurl: res1.data.jqSign,
  1463. });
  1464. }
  1465. if (res1.data.jqSign) {
  1466. accidentList.push({
  1467. fileTitle: "商业电子保单",
  1468. filename: this.orderInfo.sypolicyno,
  1469. fileurl: res1.data.jqSign,
  1470. });
  1471. }
  1472. if (res1.data.noPolicy) {
  1473. accidentList.push({
  1474. fileTitle: "驾意险保单",
  1475. filename: "驾意险保单",
  1476. fileurl: res1.data.noPolicy,
  1477. });
  1478. }
  1479. } else {
  1480. this.$message.error(res1.msg);
  1481. }
  1482. });
  1483. } else {
  1484. switch (res.data.inscompany) {
  1485. case "永安财险":
  1486. if (this.orderInfo.jqpolicyno) {
  1487. this.$api.letter
  1488. .getPolicyPrint({
  1489. companyId: item.id,
  1490. policytype: "jq",
  1491. })
  1492. .then((res) => {
  1493. //交强保单
  1494. if (res.data) {
  1495. let result = res.data.replace(/[\r\n]/g, "");
  1496. let pdfBase64 = `data:application/pdf;base64,${result}`;
  1497. base64ToPath(pdfBase64).then((path) => {
  1498. if (path) {
  1499. this.oldfileList.push({
  1500. fileTitle: "交强电子保单",
  1501. filename: this.orderInfo.jqpolicyno,
  1502. fileurl: path,
  1503. });
  1504. }
  1505. });
  1506. }
  1507. });
  1508. this.$api.letter
  1509. .getPolicyPrint2({
  1510. companyId: item.id,
  1511. policytype: "jq",
  1512. })
  1513. .then((res) => {
  1514. //交强保单
  1515. if (res.data) {
  1516. let result = res.data.replace(/[\r\n]/g, "");
  1517. let pdfBase64 = `data:application/pdf;base64,${result}`;
  1518. base64ToPath(pdfBase64).then((path) => {
  1519. if (path) {
  1520. this.oldfileList.push({
  1521. fileTitle: "交强电子标志",
  1522. filename: this.orderInfo.jqpolicyno,
  1523. fileurl: path,
  1524. });
  1525. }
  1526. });
  1527. }
  1528. });
  1529. }
  1530. if (this.orderInfo.sypolicyno) {
  1531. this.$api.letter
  1532. .getPolicyPrint({
  1533. companyId: item.id,
  1534. policytype: "sy",
  1535. })
  1536. .then((res) => {
  1537. //商业保单
  1538. if (res.data) {
  1539. let result = res.data.replace(/[\r\n]/g, "");
  1540. let pdfBase64 = `data:application/pdf;base64,${result}`;
  1541. base64ToPath(pdfBase64).then((path) => {
  1542. if (path) {
  1543. businessList.push({
  1544. fileTitle: "商业电子保单",
  1545. filename: this.orderInfo.sypolicyno,
  1546. fileurl: path,
  1547. });
  1548. }
  1549. });
  1550. }
  1551. });
  1552. }
  1553. break;
  1554. case "华泰财险":
  1555. switch (item.apiType) {
  1556. case 1:
  1557. if (this.orderInfo.jqpolicyno) {
  1558. this.$api.letter
  1559. .HuataigetPolicyPrint({
  1560. companyId: item.id,
  1561. riskCode: "0507",
  1562. type: "2", //2:保单
  1563. })
  1564. .then((res) => {
  1565. if (res.data) {
  1566. if (res.data.jqxPolicyUrl) {
  1567. this.oldfileList.push({
  1568. fileTitle: "交强电子保单",
  1569. filename: this.orderInfo.jqpolicyno,
  1570. fileurl: res.data.jqxPolicyUrl,
  1571. });
  1572. }
  1573. if (res.data.jqxFlagUrl) {
  1574. this.oldfileList.push({
  1575. fileTitle: "交强电子标志",
  1576. filename: this.orderInfo.jqpolicyno,
  1577. fileurl: res.data.jqxFlagUrl,
  1578. });
  1579. }
  1580. } else {
  1581. this.$message.error(res.msg);
  1582. }
  1583. });
  1584. }
  1585. if (this.orderInfo.sypolicyno) {
  1586. this.$api.letter
  1587. .HuataigetPolicyPrint({
  1588. companyId: item.id,
  1589. riskCode: "0510",
  1590. type: "2", //2:保单
  1591. })
  1592. .then((res) => {
  1593. if (res.data && res.data.syxPolicyUrl) {
  1594. businessList.push({
  1595. fileTitle: "商业电子保单",
  1596. filename: this.orderInfo.sypolicyno,
  1597. fileurl: res.data.syxPolicyUrl,
  1598. });
  1599. } else {
  1600. this.$message.error(res.msg);
  1601. }
  1602. });
  1603. }
  1604. break;
  1605. case 2:
  1606. if (
  1607. this.orderInfo.jqpolicyno ||
  1608. this.orderInfo.sypolicyno
  1609. ) {
  1610. this.$api.letter
  1611. .pythongetPolicyPrint({
  1612. subOrderNo: item.id,
  1613. })
  1614. .then((res) => {
  1615. if (res.code == 200 && res.data) {
  1616. if (res.data.jqxPolicyUrl) {
  1617. this.oldfileList.push({
  1618. fileTitle: "交强电子保单",
  1619. filename: this.orderInfo.jqpolicyno,
  1620. fileurl: res.data.jqxPolicyUrl,
  1621. });
  1622. }
  1623. if (res.data.jqxFlagUrl) {
  1624. this.oldfileList.push({
  1625. fileTitle: "交强电子标志",
  1626. filename: this.orderInfo.jqpolicyno,
  1627. fileurl: res.data.jqxFlagUrl,
  1628. });
  1629. }
  1630. if (res.data.syxPolicyUrl) {
  1631. businessList.push({
  1632. fileTitle: "商业电子保单",
  1633. filename: this.orderInfo.sypolicyno,
  1634. fileurl: res.data.syxPolicyUrl,
  1635. });
  1636. }
  1637. if (
  1638. res.data.jyxInfoList &&
  1639. res.data.jyxInfoList.length > 0
  1640. ) {
  1641. res.data.jyxInfoList.forEach((val) => {
  1642. accidentList.push({
  1643. fileTitle: "驾意险保单",
  1644. filename: "驾意险保单",
  1645. fileurl: val.jyx_policy_url,
  1646. });
  1647. });
  1648. }
  1649. } else {
  1650. this.$message.error(res.msg);
  1651. }
  1652. });
  1653. }
  1654. break;
  1655. }
  1656. break;
  1657. case "中煤财险":
  1658. if (this.orderInfo.jqpolicyno) {
  1659. this.$api.letter
  1660. .ZhongmeigetPolicyPrint({
  1661. companyId: item.id,
  1662. riskCode: "0507",
  1663. type: "2", //2:保单
  1664. })
  1665. .then((res) => {
  1666. if (res.data && res.data[0]) {
  1667. this.oldfileList.push({
  1668. fileTitle: "交强电子保单",
  1669. filename: this.orderInfo.jqpolicyno,
  1670. fileurl: res.data[0],
  1671. });
  1672. } else {
  1673. this.$message.error(res.msg);
  1674. }
  1675. });
  1676. this.$api.letter
  1677. .ZhongmeigetPolicyPrint({
  1678. companyId: item.id,
  1679. riskCode: "0507",
  1680. type: "1", // 1:标志
  1681. })
  1682. .then((res) => {
  1683. if (res.data && res.data[0]) {
  1684. this.oldfileList.push({
  1685. fileTitle: "交强电子标志",
  1686. filename: this.orderInfo.jqpolicyno,
  1687. fileurl: res.data[0],
  1688. });
  1689. } else {
  1690. this.$message.error(res.msg);
  1691. }
  1692. });
  1693. }
  1694. if (this.orderInfo.sypolicyno) {
  1695. this.$api.letter
  1696. .ZhongmeigetPolicyPrint({
  1697. companyId: item.id,
  1698. riskCode: "0510",
  1699. type: "2", //2:保单
  1700. })
  1701. .then((res) => {
  1702. if (res.data && res.data[0]) {
  1703. businessList.push({
  1704. fileTitle: "商业电子保单",
  1705. filename: this.orderInfo.sypolicyno,
  1706. fileurl: res.data[0],
  1707. });
  1708. } else {
  1709. this.$message.error(res.msg);
  1710. }
  1711. });
  1712. }
  1713. if (this.orderInfo.crossInsurance.length > 0) {
  1714. this.orderInfo.crossInsurance.map((ele) => {
  1715. this.$api.letter
  1716. .ZhongmeigetPolicyPrint({
  1717. ridePolicyNo: ele.ridePolicyNo,
  1718. companyId: item.id,
  1719. riskCode: "0513",
  1720. type: "2", //2:保单
  1721. })
  1722. .then((res) => {
  1723. if (res.code == 200 && res.data) {
  1724. accidentList.push({
  1725. fileTitle: "驾意险保单",
  1726. filename: this.orderInfo.sypolicyno,
  1727. fileurl: res.data[0],
  1728. });
  1729. } else {
  1730. this.$message.error(res.msg);
  1731. }
  1732. });
  1733. });
  1734. }
  1735. break;
  1736. case "永诚财险":
  1737. if (this.orderInfo.jqpolicyno) {
  1738. this.$api.letter
  1739. .yongchenggetPolicyPrint({
  1740. companyId: item.id,
  1741. riskCode: "0507",
  1742. type: "2", //2:保单
  1743. })
  1744. .then((res) => {
  1745. if (res.code == 200 && res.data) {
  1746. if (res.data.jqUrl) {
  1747. this.oldfileList.push({
  1748. fileTitle: "交强电子保单",
  1749. filename: this.orderInfo.jqpolicyno,
  1750. fileurl: res.data.jqUrl,
  1751. });
  1752. }
  1753. if (res.data.jqFlagUrl) {
  1754. this.oldfileList.push({
  1755. fileTitle: "交强电子标志",
  1756. filename: this.orderInfo.jqpolicyno,
  1757. fileurl: res.data.jqFlagUrl,
  1758. });
  1759. }
  1760. } else {
  1761. this.$message.error(res.msg);
  1762. }
  1763. });
  1764. }
  1765. if (this.orderInfo.sypolicyno) {
  1766. this.$api.letter
  1767. .yongchenggetPolicyPrint({
  1768. companyId: item.id,
  1769. riskCode: "0510",
  1770. type: "2", //2:保单
  1771. })
  1772. .then((res) => {
  1773. if (res.data && res.data.syUrl) {
  1774. businessList.push({
  1775. fileTitle: "商业电子保单",
  1776. filename: this.orderInfo.sypolicyno,
  1777. fileurl: res.data.syUrl,
  1778. });
  1779. } else {
  1780. this.$message.error(res.msg);
  1781. }
  1782. });
  1783. }
  1784. if (this.orderInfo.crossInsurance.length > 0) {
  1785. this.orderInfo.crossInsurance.map((ele) => {
  1786. this.$api.letter
  1787. .yongchenggetPolicyPrint({
  1788. companyId: item.id,
  1789. policyNumber: ele.policyNumber,
  1790. riskCode: "0513",
  1791. type: "2", //2:保单
  1792. })
  1793. .then((res) => {
  1794. if (res.code == 200 && res.data) {
  1795. accidentList.push({
  1796. fileTitle: "驾意险保单",
  1797. filename: ele.policyNumber,
  1798. fileurl: res.data.jyUrl,
  1799. });
  1800. } else {
  1801. this.$message.error(res.msg);
  1802. }
  1803. });
  1804. });
  1805. }
  1806. break;
  1807. case "国任财险":
  1808. if (this.orderInfo.jqpolicyno) {
  1809. this.$api.letter
  1810. .guoRengetPolicyPrint({
  1811. companyId: item.id,
  1812. riskCode: "0507",
  1813. type: "2", //2:保单
  1814. })
  1815. .then((res) => {
  1816. if (res.data) {
  1817. this.oldfileList.push({
  1818. fileTitle: "交强电子保单",
  1819. filename: this.orderInfo.jqpolicyno,
  1820. fileurl: res.data,
  1821. });
  1822. } else {
  1823. this.$message.error(res.msg);
  1824. }
  1825. });
  1826. this.$api.letter
  1827. .guoRengetPolicyPrint({
  1828. companyId: item.id,
  1829. riskCode: "0507",
  1830. type: "1", //1:标志
  1831. })
  1832. .then((res) => {
  1833. if (res.data) {
  1834. this.oldfileList.push({
  1835. fileTitle: "交强电子标志",
  1836. filename: this.orderInfo.jqpolicyno,
  1837. fileurl: res.data,
  1838. });
  1839. } else {
  1840. this.$message.error(res.msg);
  1841. }
  1842. });
  1843. }
  1844. if (this.orderInfo.sypolicyno) {
  1845. this.$api.letter
  1846. .guoRengetPolicyPrint({
  1847. companyId: item.id,
  1848. riskCode: "0510",
  1849. type: "2", //2:保单
  1850. })
  1851. .then((res) => {
  1852. if (res.data) {
  1853. businessList.push({
  1854. fileTitle: "商业电子保单",
  1855. filename: this.orderInfo.sypolicyno,
  1856. fileurl: res.data,
  1857. });
  1858. } else {
  1859. this.$message.error(res.msg);
  1860. }
  1861. });
  1862. }
  1863. if (this.orderInfo.crossInsurance.length > 0) {
  1864. this.orderInfo.crossInsurance.map((ele) => {
  1865. this.$api.letter
  1866. .guoRengetPolicyPrint({
  1867. companyId: item.id,
  1868. policyNumber: ele.policyNumber,
  1869. riskCode: "0513",
  1870. type: "2", //2:保单
  1871. })
  1872. .then((res) => {
  1873. if (res.data) {
  1874. accidentList.push({
  1875. fileTitle: "驾意险保单",
  1876. filename: ele.policyNumber,
  1877. fileurl: res.data,
  1878. });
  1879. } else {
  1880. this.$message.error(res.msg);
  1881. }
  1882. });
  1883. });
  1884. }
  1885. break;
  1886. case "紫金财险":
  1887. if (this.orderInfo.jqpolicyno) {
  1888. this.$api.letter
  1889. .zijingetPolicyPrint({
  1890. companyId: item.id,
  1891. riskCode: "0507",
  1892. type: "2", //2:保单
  1893. })
  1894. .then((res) => {
  1895. if (res.data) {
  1896. this.oldfileList.push({
  1897. fileTitle: "交强电子保单",
  1898. filename: this.orderInfo.jqpolicyno,
  1899. fileurl: res.data,
  1900. });
  1901. } else {
  1902. this.$message.error(res.msg);
  1903. }
  1904. });
  1905. this.$api.letter
  1906. .zijingetPolicyPrint({
  1907. companyId: item.id,
  1908. riskCode: "0507",
  1909. type: "1", //1:标志
  1910. })
  1911. .then((res) => {
  1912. if (res.data) {
  1913. this.oldfileList.push({
  1914. fileTitle: "交强电子标志",
  1915. filename: this.orderInfo.jqpolicyno,
  1916. fileurl: res.data,
  1917. });
  1918. } else {
  1919. this.$message.error(res.msg);
  1920. }
  1921. });
  1922. }
  1923. if (this.orderInfo.sypolicyno) {
  1924. this.$api.letter
  1925. .zijingetPolicyPrint({
  1926. companyId: item.id,
  1927. riskCode: "0510",
  1928. type: "2", //2:保单
  1929. })
  1930. .then((res) => {
  1931. if (res.data) {
  1932. businessList.push({
  1933. fileTitle: "商业电子保单",
  1934. filename: this.orderInfo.sypolicyno,
  1935. fileurl: res.data,
  1936. });
  1937. } else {
  1938. this.$message.error(res.msg);
  1939. }
  1940. });
  1941. }
  1942. if (this.orderInfo.crossInsurance.length > 0) {
  1943. this.orderInfo.crossInsurance.map((ele) => {
  1944. this.$api.letter
  1945. .zijingetPolicyPrint({
  1946. companyId: item.id,
  1947. policyNumber: ele.policyNumber,
  1948. riskCode: "0513",
  1949. type: "2", //2:保单
  1950. })
  1951. .then((res) => {
  1952. if (res.data) {
  1953. accidentList.push({
  1954. fileTitle: "驾意险保单",
  1955. filename: ele.policyNumber,
  1956. fileurl: res.data,
  1957. });
  1958. } else {
  1959. this.$message.error(res.msg);
  1960. }
  1961. });
  1962. });
  1963. }
  1964. break;
  1965. case "渤海财险":
  1966. if (this.orderInfo.jqpolicyno) {
  1967. this.$api.letter
  1968. .getPolicyPrintboHai({
  1969. companyId: item.id,
  1970. })
  1971. .then((res) => {
  1972. if (res.code == 200 && res.data) {
  1973. if (res.data.jqxPolicyUrl) {
  1974. this.oldfileList.push({
  1975. fileTitle: "交强电子保单",
  1976. filename: this.orderInfo.jqpolicyno,
  1977. fileurl: res.data.jqxPolicyUrl,
  1978. });
  1979. }
  1980. if (res.data.jqxFlagUrl) {
  1981. this.oldfileList.push({
  1982. fileTitle: "交强电子标志",
  1983. filename: this.orderInfo.jqpolicyno,
  1984. fileurl: res.data.jqxFlagUrl,
  1985. });
  1986. }
  1987. if (res.data.syxPolicyUrl) {
  1988. businessList.push({
  1989. fileTitle: "商业电子保单",
  1990. filename: this.orderInfo.sypolicyno,
  1991. fileurl: res.data.syxPolicyUrl,
  1992. });
  1993. }
  1994. if (
  1995. res.data.jyxInfoList &&
  1996. res.data.jyxInfoList.length > 0
  1997. ) {
  1998. res.data.jyxInfoList.forEach((val) => {
  1999. accidentList.push({
  2000. fileTitle: "驾意险保单",
  2001. filename: "驾意险保单",
  2002. fileurl: val.jyx_policy_url,
  2003. });
  2004. });
  2005. }
  2006. } else {
  2007. this.$message.error(res.msg);
  2008. }
  2009. });
  2010. }
  2011. break;
  2012. case "恒邦财险":
  2013. case "安盛天平":
  2014. case "中国人寿":
  2015. case "太平财险":
  2016. case "华农财险":
  2017. case "众安财险":
  2018. case "泰康财险":
  2019. if (this.orderInfo.jqpolicyno || this.orderInfo.sypolicyno) {
  2020. this.$api.letter
  2021. .pythongetPolicyPrint({
  2022. subOrderNo: item.id,
  2023. })
  2024. .then((res) => {
  2025. if (res.code == 200 && res.data) {
  2026. if (res.data.jqxPolicyUrl) {
  2027. this.oldfileList.push({
  2028. fileTitle: "交强电子保单",
  2029. filename: this.orderInfo.jqpolicyno,
  2030. fileurl: res.data.jqxPolicyUrl,
  2031. });
  2032. }
  2033. if (res.data.jqxFlagUrl) {
  2034. this.oldfileList.push({
  2035. fileTitle: "交强电子标志",
  2036. filename: this.orderInfo.jqpolicyno,
  2037. fileurl: res.data.jqxFlagUrl,
  2038. });
  2039. }
  2040. if (res.data.syxPolicyUrl) {
  2041. businessList.push({
  2042. fileTitle: "商业电子保单",
  2043. filename: this.orderInfo.sypolicyno,
  2044. fileurl: res.data.syxPolicyUrl,
  2045. });
  2046. }
  2047. if (
  2048. res.data.jyxInfoList &&
  2049. res.data.jyxInfoList.length > 0
  2050. ) {
  2051. res.data.jyxInfoList.forEach((val) => {
  2052. accidentList.push({
  2053. fileTitle: "驾意险保单",
  2054. filename: "驾意险保单",
  2055. fileurl: val.jyx_policy_url,
  2056. });
  2057. });
  2058. }
  2059. } else {
  2060. this.$message.error(res.msg);
  2061. }
  2062. });
  2063. }
  2064. break;
  2065. case "大家财险":
  2066. switch (item.apiType) {
  2067. case 1:
  2068. if (this.orderInfo.jqpolicyno) {
  2069. this.$api.letter
  2070. .obtainWarranty({
  2071. companyId: item.id,
  2072. riskCode: "0507",
  2073. type: "2", //2:保单
  2074. })
  2075. .then((res) => {
  2076. if (res.data) {
  2077. this.oldfileList.push({
  2078. fileTitle: "交强电子保单",
  2079. filename: this.orderInfo.jqpolicyno,
  2080. fileurl: res.data,
  2081. });
  2082. } else {
  2083. this.$message.error(res.msg);
  2084. }
  2085. });
  2086. this.$api.letter
  2087. .obtainWarranty({
  2088. companyId: item.id,
  2089. riskCode: "0507",
  2090. type: "1", //1:标志
  2091. })
  2092. .then((res) => {
  2093. if (res.data) {
  2094. this.oldfileList.push({
  2095. fileTitle: "交强电子标志",
  2096. filename: this.orderInfo.jqpolicyno,
  2097. fileurl: res.data,
  2098. });
  2099. } else {
  2100. this.$message.error(res.msg);
  2101. }
  2102. });
  2103. }
  2104. if (this.orderInfo.sypolicyno) {
  2105. this.$api.letter
  2106. .obtainWarranty({
  2107. companyId: item.id,
  2108. riskCode: "0510",
  2109. type: "2", //2:保单
  2110. })
  2111. .then((res) => {
  2112. if (res.data) {
  2113. businessList.push({
  2114. fileTitle: "商业电子保单",
  2115. filename: this.orderInfo.sypolicyno,
  2116. fileurl: res.data,
  2117. });
  2118. }
  2119. });
  2120. }
  2121. if (this.orderInfo.crossInsurance.length > 0) {
  2122. this.orderInfo.crossInsurance.map((ele) => {
  2123. this.$api.letter
  2124. .zijingetPolicyPrint({
  2125. companyId: item.id,
  2126. policyNumber: ele.policyNumber,
  2127. riskCode: "0513",
  2128. type: "2", //2:保单
  2129. })
  2130. .then((res) => {
  2131. if (res.data) {
  2132. accidentList.push({
  2133. fileTitle: "驾意险保单",
  2134. filename: ele.policyNumber,
  2135. fileurl: res.data,
  2136. });
  2137. } else {
  2138. this.$message.error(res.msg);
  2139. }
  2140. });
  2141. });
  2142. }
  2143. break;
  2144. case 2:
  2145. if (
  2146. this.orderInfo.jqpolicyno ||
  2147. this.orderInfo.sypolicyno
  2148. ) {
  2149. this.$api.letter
  2150. .pythongetPolicyPrint({
  2151. subOrderNo: item.id,
  2152. })
  2153. .then((res) => {
  2154. if (res.code == 200 && res.data) {
  2155. if (res.data.jqxPolicyUrl) {
  2156. this.oldfileList.push({
  2157. fileTitle: "交强电子保单",
  2158. filename: this.orderInfo.jqpolicyno,
  2159. fileurl: res.data.jqxPolicyUrl,
  2160. });
  2161. }
  2162. if (res.data.jqxFlagUrl) {
  2163. this.oldfileList.push({
  2164. fileTitle: "交强电子标志",
  2165. filename: this.orderInfo.jqpolicyno,
  2166. fileurl: res.data.jqxFlagUrl,
  2167. });
  2168. }
  2169. if (res.data.syxPolicyUrl) {
  2170. businessList.push({
  2171. fileTitle: "商业电子保单",
  2172. filename: this.orderInfo.sypolicyno,
  2173. fileurl: res.data.syxPolicyUrl,
  2174. });
  2175. }
  2176. if (
  2177. res.data.jyxInfoList &&
  2178. res.data.jyxInfoList.length > 0
  2179. ) {
  2180. res.data.jyxInfoList.forEach((val) => {
  2181. accidentList.push({
  2182. fileTitle: "驾意险保单",
  2183. filename: "驾意险保单",
  2184. fileurl: val.jyx_policy_url,
  2185. });
  2186. });
  2187. }
  2188. } else {
  2189. this.$message.error(res.msg);
  2190. }
  2191. });
  2192. }
  2193. break;
  2194. }
  2195. break;
  2196. default:
  2197. }
  2198. }
  2199. let obj = {
  2200. oldfileList: this.oldfileList,
  2201. businessList,
  2202. accidentList,
  2203. };
  2204. this.$refs.detailsDialog.warrantyFun(obj);
  2205. }
  2206. this.showInsureList = false;
  2207. this.$refs.detailsDialog.setBackupVisible(true);
  2208. } else {
  2209. this.$message.error("订单获取失败");
  2210. }
  2211. });
  2212. },
  2213. //联级选择器触发事件
  2214. handleChange(val) {
  2215. if (val.length !== 0) {
  2216. this.pageRequest.deptId = val.at(-1);
  2217. } else {
  2218. this.pageRequest.deptId = "";
  2219. }
  2220. },
  2221. handleClose(done) {
  2222. this.$confirm("确认关闭?")
  2223. .then((_) => {
  2224. done();
  2225. })
  2226. .catch((_) => { });
  2227. },
  2228. httpRequest(options) {
  2229. let file = options.file;
  2230. let filename = options.filename;
  2231. let reader = new FileReader();
  2232. if (file) {
  2233. reader.readAsDataURL(file);
  2234. }
  2235. reader.onload = () => {
  2236. let base64Str = reader.result;
  2237. this[options.filename].push(base64Str);
  2238. };
  2239. },
  2240. // 设置每页条数
  2241. applyhandleSizeChange(val) {
  2242. this.pageSize = val;
  2243. this.pageNum = 1;
  2244. this.pageRequest.pageNum = 1;
  2245. this.pageRequest.pageSize = val;
  2246. this.findPage();
  2247. },
  2248. // 当前页
  2249. applyhandleCurrentChange(val) {
  2250. this.pageNum = val;
  2251. this.pageRequest.pageNum = val;
  2252. this.findPage();
  2253. },
  2254. saveAs(blob, filename) {
  2255. var link = document.createElement("a");
  2256. link.href = window.URL.createObjectURL(blob);
  2257. link.target = "_ blank";
  2258. link.download = filename;
  2259. link.click();
  2260. },
  2261. //预览文件
  2262. viewfile(index) {
  2263. let name = index.fileurl.lastIndexOf("/");
  2264. fetch(index.fileurl)
  2265. .then((response) => response.blob())
  2266. .then((blob) => {
  2267. this.saveAs(
  2268. blob,
  2269. index.fileurl.substring(name + 1, index.fileurl.length)
  2270. );
  2271. })
  2272. .catch((error) => { });
  2273. // const a = document.createElement('a')
  2274. // a.style.display = 'none'
  2275. // a.href = index.fileurl
  2276. // a.target = '_ blank';
  2277. // a.download = this.licenseNo+ '.pdf'; // 下载文件的名字
  2278. // document.body.appendChild(a)
  2279. // a.click()
  2280. },
  2281. //锚链接
  2282. // jump(obj) {
  2283. // var s = document.getElementById(obj);
  2284. // var parent = s.parentNode;
  2285. // for (let i = 0; i < parent.childNodes.length; i++) {
  2286. // if (parent.childNodes[i].tagName == "DIV") {
  2287. // if (parent.childNodes[i].childNodes[0].classList.contains("active")) {
  2288. // parent.childNodes[i].childNodes[0].classList.remove("active");
  2289. // }
  2290. // }
  2291. // }
  2292. // s.childNodes[0].classList.add("active");
  2293. // },
  2294. // //表格行点击下拉事件
  2295. // handleRowClick(row) {
  2296. // if(!row.expanded){
  2297. // this.$api.letter.querySonOrders({orderNo:row.orderno}).then(res=>{
  2298. // if(res.code=='200' && res.data.length!=0){
  2299. // this.pageResult.map(item=>{
  2300. // if(item.orderno===row.orderno){
  2301. // item.insAreaCompanyList=res.data;
  2302. // }
  2303. // return item;
  2304. // })
  2305. // row.expanded = !row.expanded;
  2306. // this.$refs.expandTable.toggleRowExpansion(row, row.expanded);
  2307. // }else{
  2308. // this.$message.info("暂无数据");
  2309. // }
  2310. // })
  2311. // }else{
  2312. // row.expanded = !row.expanded;
  2313. // this.$refs.expandTable.toggleRowExpansion(row, row.expanded);
  2314. // }
  2315. // },
  2316. handleRowChange(row) {
  2317. if (!row.expanded) {
  2318. this.$api.letter
  2319. .querySonOrders({ orderNo: row.orderno })
  2320. .then((res) => {
  2321. if (res.code == "200" && res.data.length != 0) {
  2322. this.pageResult.map((item) => {
  2323. if (item.orderno === row.orderno) {
  2324. item.insAreaCompanyList = res.data;
  2325. }
  2326. return item;
  2327. });
  2328. row.expanded = !row.expanded;
  2329. this.$refs.expandTable.toggleRowExpansion(row, row.expanded);
  2330. } else {
  2331. this.$message.info("暂无数据");
  2332. }
  2333. });
  2334. } else {
  2335. row.expanded = !row.expanded;
  2336. this.$refs.expandTable.toggleRowExpansion(row, row.expanded);
  2337. }
  2338. },
  2339. //数据
  2340. findPage() {
  2341. this.orderLoaing = true;
  2342. let orderStatus = "";
  2343. if (this.isLetterOrder) {
  2344. orderStatus =
  2345. this.pageRequest.orderStatus == 888
  2346. ? ""
  2347. : this.pageRequest.orderStatus;
  2348. this.$api.letter
  2349. .queryOrders({ ...this.pageRequest, orderStatus })
  2350. .then((res) => {
  2351. if (res.code == "200") {
  2352. this.orderLoaing = false;
  2353. this.pageResult = res.data.content;
  2354. this.pageNum = res.data.pageNum;
  2355. this.totalSize = res.data.totalSize;
  2356. this.pageResult.forEach((val, index) => {
  2357. this.$set(val, "expanded", false);
  2358. });
  2359. } else {
  2360. this.$message.error(res.msg);
  2361. this.orderLoaing = false;
  2362. }
  2363. });
  2364. } else {
  2365. orderStatus = this.statusPor == 888 ? "" : this.statusPor;
  2366. this.$api.task
  2367. .queryPageHospitalityOrder({
  2368. ...this.pageRequest,
  2369. orderStatus,
  2370. userId: this.userIdPor,
  2371. deptId: this.deptIdPor,
  2372. })
  2373. .then((res) => {
  2374. if (res.code == "200") {
  2375. this.orderLoaing = false;
  2376. this.$nextTick(() => {
  2377. this.pageResult = res.data.content;
  2378. this.pageNum = res.data.pageNum;
  2379. this.totalSize = res.data.totalSize;
  2380. this.pageResult.forEach((val, index) => {
  2381. this.$set(val, "expanded", false);
  2382. });
  2383. });
  2384. } else {
  2385. this.$message.error(res.msg);
  2386. this.orderLoaing = false;
  2387. }
  2388. });
  2389. }
  2390. },
  2391. //查询
  2392. onSubmit() {
  2393. this.pageRequest.pageNum = 1;
  2394. this.pageRequest.pageSize = 20;
  2395. this.findPage();
  2396. },
  2397. //时间js
  2398. monthChange(e) {
  2399. if (e === null) {
  2400. this.pageRequest.startDate = e;
  2401. this.pageRequest.endDate = e;
  2402. } else {
  2403. this.pageRequest.startDate = e[0];
  2404. this.pageRequest.endDate = e[1];
  2405. }
  2406. },
  2407. // downloadFile(url, fileName, type) {
  2408. // const xhr = new XMLHttpRequest();
  2409. // xhr.open("GET", url, true);
  2410. // xhr.responseType = "blob"; // 获取文件blob数据
  2411. // xhr.onload = function() {
  2412. // if (xhr.status !== 200) {
  2413. // this.$notify.error({
  2414. // title: "错误",
  2415. // message: "下载出现错误"
  2416. // });
  2417. // return;
  2418. // }
  2419. // const newUrl = window.URL.createObjectURL(xhr.response); // 生成一个可用的临时url
  2420. // const a = document.createElement("a"); // 生成a标签调用点击事件
  2421. // a.setAttribute("href", newUrl);
  2422. // a.setAttribute("target", "_blank");
  2423. // a.setAttribute("download", fileName); // 自定义文件名
  2424. // document.body.appendChild(a);
  2425. // a.click();
  2426. // document.body.removeChild(a);
  2427. // };
  2428. // xhr.send();
  2429. // }
  2430. },
  2431. };
  2432. </script>
  2433. <style lang="scss" scoped>
  2434. .scan-code {
  2435. div {
  2436. margin-top: 10px;
  2437. }
  2438. }
  2439. .green_color {
  2440. color: #068069;
  2441. border: 1px solid #068069;
  2442. padding: 7px 8px;
  2443. }
  2444. .red_color {
  2445. color: var(--themeColor);
  2446. border: 1px solid var(--themeColor);
  2447. padding: 7px 8px;
  2448. }
  2449. .blue_color {
  2450. color: #2d4d89;
  2451. border: 1px solid #2d4d89;
  2452. padding: 7px 8px;
  2453. }
  2454. .el-dropdown {
  2455. font-size: 12px;
  2456. }
  2457. .el-step__description>span {
  2458. margin-right: 10px;
  2459. }
  2460. /deep/ {
  2461. .proSaomazhifucodeClass .el-dialog__header {
  2462. background: rgba(45, 77, 137, 0.1);
  2463. font-weight: bold;
  2464. }
  2465. .proSaomazhifucodeClass .el-dialog__footer {
  2466. border-top: 1px solid #eef1f6;
  2467. }
  2468. .el-step__head {
  2469. min-height: 90px;
  2470. }
  2471. .el-table .row-expand-cover .cell .el-table__expand-icon {
  2472. display: none;
  2473. }
  2474. .el-descriptions-item__label {
  2475. &:not(.is-bordered-label) {
  2476. color: #333;
  2477. }
  2478. }
  2479. .saomazhifucodeClass .el-dialog__body,
  2480. .saomazhifucodeClass .el-dialog__header,
  2481. .saomazhifucodeClass .el-dialog__footer {
  2482. padding: 0;
  2483. background: #f4e9e9;
  2484. }
  2485. .saomazhifucodeClass .el-dialog__body {
  2486. padding: 15px;
  2487. }
  2488. .saomazhifucodeClass .el-dialog__footer {
  2489. background: #f4e9e9;
  2490. padding-bottom: 15px;
  2491. }
  2492. .saomazhifucodeClass .el-dialog__headerbtn {
  2493. margin-top: 10px;
  2494. }
  2495. .el-input.is-disabled .el-input__inner {
  2496. color: #333;
  2497. }
  2498. }
  2499. .ORcodebody {
  2500. height: auto;
  2501. // background: url(../../../assets/image/group.png) #fff;
  2502. padding: 16px;
  2503. background-color: #fff;
  2504. }
  2505. .ORcode {
  2506. width: 100%;
  2507. height: auto;
  2508. display: flex;
  2509. justify-content: center;
  2510. align-items: center;
  2511. padding: 30px;
  2512. box-sizing: border-box;
  2513. &>div {
  2514. width: 176px;
  2515. height: 176px;
  2516. border: 1px solid var(--themeColor);
  2517. border-radius: 5px;
  2518. }
  2519. }
  2520. .ORtitle {
  2521. width: 100%;
  2522. padding-bottom: 20px;
  2523. box-sizing: border-box;
  2524. &>div {
  2525. width: 100%;
  2526. margin: 10px 0;
  2527. font-size: 14px;
  2528. &>span {
  2529. &:nth-child(1) {
  2530. color: #868b98;
  2531. text-align: end;
  2532. width: 150px;
  2533. }
  2534. &:nth-child(2) {
  2535. color: #333333;
  2536. }
  2537. }
  2538. }
  2539. }
  2540. </style>
  2541. <style scoped lang="scss">
  2542. #qqq {
  2543. background-color: #111;
  2544. width: 300px;
  2545. height: 300px;
  2546. margin: 0 auto;
  2547. /*水平居中*/
  2548. position: relative;
  2549. }
  2550. #qrCode {
  2551. display: inline-block;
  2552. margin: 0 auto;
  2553. /*水平居中*/
  2554. position: relative;
  2555. top: 15%;
  2556. }
  2557. #qrCode img {
  2558. width: 200px;
  2559. height: 200px;
  2560. background-color: #fff;
  2561. padding: 6px;
  2562. }
  2563. .leftContainer {
  2564. width: 80px;
  2565. position: fixed;
  2566. top: 79px;
  2567. left: 30px;
  2568. }
  2569. .leftContainer .el-col {
  2570. width: 80px;
  2571. height: 80px;
  2572. border-bottom: 1px solid #4d5c6f;
  2573. background: #526176;
  2574. cursor: pointer;
  2575. color: #a6aeb9;
  2576. border-radius: 0;
  2577. }
  2578. .leftContainer .el-col a {
  2579. display: block;
  2580. color: #a6aeb9;
  2581. text-decoration: none;
  2582. }
  2583. .leftContainer .el-col a:hover {
  2584. color: #fff;
  2585. }
  2586. .leftContainer .el-col a.active {
  2587. color: #fff;
  2588. }
  2589. .leftContainer .el-col i {
  2590. font-size: 30px;
  2591. margin: 15px 0px 5px;
  2592. }
  2593. .rightContainer {
  2594. width: calc(100vw - 160px);
  2595. margin-left: 100px;
  2596. }
  2597. .rightContainer .header .el-col {
  2598. font-size: 18px;
  2599. font-weight: bold;
  2600. }
  2601. .rightContainer .bodyTitle {
  2602. height: 40px;
  2603. background: #f3f3f3;
  2604. border: 1px solid #dddddd;
  2605. }
  2606. .rightContainer .bodyTitle>label {
  2607. margin: 0px 15px;
  2608. font-weight: bold;
  2609. }
  2610. .rightContainer #demo2 .body,
  2611. .rightContainer #demo6 .body {
  2612. border: 1px solid #ddd;
  2613. padding: 15px;
  2614. border-top: none;
  2615. }
  2616. .rightContainer .el-card {
  2617. margin-bottom: 15px;
  2618. }
  2619. .body .el-row .el-col label {
  2620. text-align: right;
  2621. width: 80px;
  2622. font-size: 14px;
  2623. width: 100%;
  2624. line-height: 36px;
  2625. display: inline-block;
  2626. box-sizing: border-box;
  2627. }
  2628. .disabledInput {
  2629. width: 80% !important;
  2630. background-color: #f5f7fa;
  2631. text-align: center !important;
  2632. max-width: 200px;
  2633. border: 1px solid #e4e7ed;
  2634. color: #c0c4cc;
  2635. cursor: not-allowed;
  2636. border-radius: 4px;
  2637. box-sizing: border-box;
  2638. padding: 0px 10px;
  2639. height: 36px;
  2640. margin: 20px 10%;
  2641. }
  2642. /* 上传图片样式Start */
  2643. .avatar-uploader .el-upload {
  2644. border: 1px dashed #d9d9d9;
  2645. border-radius: 6px;
  2646. cursor: pointer;
  2647. position: relative;
  2648. overflow: hidden;
  2649. }
  2650. .avatar-uploader .el-upload:hover {
  2651. border-color: #409eff;
  2652. }
  2653. .avatar-uploader-icon {
  2654. font-size: 28px;
  2655. color: #8c939d;
  2656. width: 100px;
  2657. height: 100px;
  2658. line-height: 100px;
  2659. text-align: center;
  2660. border: 1px dashed #d9d9d9;
  2661. }
  2662. .avatar {
  2663. border: 1px dashed #d9d9d9;
  2664. padding: 5px;
  2665. border-radius: 6px;
  2666. width: 100px;
  2667. height: 100px;
  2668. display: block;
  2669. }
  2670. .imageStyle {
  2671. display: inline-block;
  2672. width: 100px;
  2673. height: 100px;
  2674. box-shadow: #ddd 0px 0px 5px;
  2675. margin-right: 20px;
  2676. }
  2677. /* 上传图片样式End */
  2678. .dis {
  2679. display: flex;
  2680. }
  2681. .align {
  2682. align-items: center;
  2683. }
  2684. .jus {
  2685. justify-content: space-between;
  2686. }
  2687. .display {
  2688. display: flex;
  2689. justify-content: center;
  2690. align-items: center;
  2691. box-sizing: border-box;
  2692. }
  2693. .block {
  2694. margin-top: 10px;
  2695. }
  2696. .page {
  2697. padding: 14px;
  2698. box-sizing: border-box;
  2699. }
  2700. .el-select--medium {
  2701. vertical-align: bottom !important;
  2702. }
  2703. .widths {
  2704. width: 200px;
  2705. }
  2706. .demo-table-expand {
  2707. /* width:96vw; */
  2708. height: auto;
  2709. padding: 10px 20px 10px 50px;
  2710. font-size: 14px;
  2711. }
  2712. .demo-table-expand-time {
  2713. width: 40%;
  2714. }
  2715. .demo-table-expand-time>div {
  2716. margin: 0 10px;
  2717. }
  2718. .icon-img {
  2719. width: 30px;
  2720. height: 30px;
  2721. vertical-align: bottom;
  2722. }
  2723. .Enclosure {
  2724. width: 100%;
  2725. background-color: #fff;
  2726. padding: 20px;
  2727. box-sizing: border-box;
  2728. margin-bottom: 15px;
  2729. border-radius: 6px;
  2730. border: 1px solid #ebeef5;
  2731. transition: all 0.2s ease-in-out;
  2732. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  2733. }
  2734. .headers {
  2735. display: flex;
  2736. align-items: center;
  2737. justify-content: space-between;
  2738. flex-wrap: wrap;
  2739. margin: 5px 0;
  2740. font-weight: bold;
  2741. color: #333;
  2742. }
  2743. /* 内容待定 */
  2744. .headers_Custom {
  2745. div {
  2746. padding: 2px 0px;
  2747. font-size: 14px;
  2748. &>span {
  2749. color: rgb(226, 118, 10);
  2750. }
  2751. }
  2752. }
  2753. .back {
  2754. color: #303133;
  2755. font-weight: 700;
  2756. }
  2757. .u-f-ac {
  2758. -webkit-box-align: center;
  2759. align-items: center;
  2760. /* padding: 10px; */
  2761. }
  2762. .bodyTitle {
  2763. height: 40px;
  2764. background: #f3f3f3;
  2765. border: 1px solid #dddddd;
  2766. line-height: 40px;
  2767. padding: 0 20px;
  2768. box-sizing: border-box;
  2769. }
  2770. .Risk {
  2771. width: 100%;
  2772. height: auto;
  2773. display: flex;
  2774. flex-direction: column;
  2775. align-items: center;
  2776. font-size: 12px;
  2777. }
  2778. .Risk_title {
  2779. width: 100%;
  2780. height: 40px;
  2781. }
  2782. .Risk_title>div {
  2783. background: rgb(199, 20, 45);
  2784. color: rgb(255, 255, 255);
  2785. height: 100%;
  2786. font-weight: 500;
  2787. width: 33.3%;
  2788. padding: 10px 20px;
  2789. box-sizing: border-box;
  2790. border: #fff solid 1px;
  2791. display: flex;
  2792. justify-content: center;
  2793. align-items: center;
  2794. border-bottom: none;
  2795. }
  2796. .Risk_title>div:nth-child(1) {}
  2797. .Risk_title>div:nth-child(2) {
  2798. border-left: none;
  2799. border-right: none;
  2800. }
  2801. .Risk_data {
  2802. width: 100%;
  2803. height: 40px;
  2804. }
  2805. .Risk_data>div {
  2806. background: #fbf6f7;
  2807. color: rgb(51, 51, 51);
  2808. height: 100%;
  2809. font-weight: 500;
  2810. width: 33.3%;
  2811. padding: 10px 20px;
  2812. box-sizing: border-box;
  2813. border: #fff solid 1px;
  2814. display: flex;
  2815. justify-content: center;
  2816. align-items: center;
  2817. border-bottom: none;
  2818. }
  2819. .Risk_data>div :nth-child(2) {
  2820. border-left: none;
  2821. border-right: none;
  2822. }
  2823. .Risk_title>div :nth-child(3) {
  2824. border-top-right-radius: 10px;
  2825. }
  2826. .jyxStyle>span {
  2827. display: inline-block;
  2828. text-align: center;
  2829. }
  2830. /* .el-step__description{
  2831. color:#333
  2832. } */
  2833. /deep/ {
  2834. .el-step__title,
  2835. .el-step__icon-inner {
  2836. color: var(--themeColor);
  2837. }
  2838. .el-step__description.is-finish,
  2839. .el-step__head.is-finish {
  2840. color: #333;
  2841. border: none;
  2842. }
  2843. .el-step__icon.is-text {
  2844. border: none;
  2845. box-shadow: 0px 2px 2px 0px rgba(0, 0, 0, 0.1);
  2846. }
  2847. .el-step__icon.is-text {
  2848. font-size: 22px;
  2849. }
  2850. .el-step__icon {
  2851. width: 28px;
  2852. height: 28px;
  2853. }
  2854. .el-step.is-vertical .el-step__main {
  2855. padding-left: 20px;
  2856. }
  2857. .el-step__line,
  2858. .el-step.is-vertical .el-step__line {
  2859. left: 14px;
  2860. background-color: #e2e5eb;
  2861. width: 1px;
  2862. }
  2863. .el-step__line-inner {
  2864. height: 0;
  2865. display: none;
  2866. }
  2867. .is-flex {
  2868. .el-step__icon {
  2869. background: var(--themeColor);
  2870. }
  2871. .el-step__icon-inner {
  2872. color: #fff;
  2873. }
  2874. }
  2875. }
  2876. </style>