Verifyuntasks.vue 65 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117
  1. <template>
  2. <div class="page">
  3. <retrievalForm :fields="retrievalFields" @submit="handleFormSubmit" @toggleCollapse="toggleCollapse"
  4. @areaSelectChange="areaSelectChange"></retrievalForm>
  5. <el-table size="small" :data="pageResult" height="590" border v-loading="loading" highlight-current-row
  6. @expand-change="handleRowChange" ref="expandTable" :row-class-name="tableRowClassName"
  7. :header-cell-style="{ background: '#F2F7FC', fontWeight: '700', color: '#606266' }">
  8. <el-table-column prop="subOrderId" label="订单号" align="center"></el-table-column>
  9. <el-table-column prop="username" label="业务员" align="center" width="200">
  10. <template slot-scope="scope">
  11. <span>{{ scope.row.username }}({{ scope.row.userid }})</span>
  12. </template>
  13. </el-table-column>
  14. <el-table-column prop="managementSource" label="机构来源" align="center">
  15. <template slot-scope="scope">
  16. <el-tag v-if="scope.row.managementSource == '渠道'">渠道</el-tag>
  17. <el-tag v-if="scope.row.managementSource == '个代'" type="success">个代</el-tag>
  18. <el-tag v-if="scope.row.managementSource == '电销'" type="warning">电销</el-tag>
  19. </template>
  20. </el-table-column>
  21. <el-table-column prop="agreementName" label="协议名称" align="center"></el-table-column>
  22. <el-table-column prop="insCompany" label="承保公司" align="center">
  23. <template slot-scope="scope">
  24. <span>{{ scope.row.insCompany ? scope.row.insCompany : '--' }}</span>
  25. </template>
  26. </el-table-column>
  27. <el-table-column prop="isExternal" label="外部订单" align="center">
  28. <template slot-scope="scope">
  29. <span>{{ scope.row.isExternal == '1' ? '是' : '否' }}</span>
  30. </template>
  31. </el-table-column>
  32. <el-table-column prop="problemOrder" label="疑问订单" align="center">
  33. <template slot-scope="scope">
  34. <span>{{ scope.row.problemOrder == '1' ? '是' : '否' }}</span>
  35. </template>
  36. </el-table-column>
  37. <el-table-column prop="insCompany" label="合作公司" align="center">
  38. <template slot-scope="scope">
  39. <span>{{ scope.row.partnerCompaniesName ? scope.row.partnerCompaniesName : '--' }}</span>
  40. </template>
  41. </el-table-column>
  42. <el-table-column prop="licenseno" label="车牌号" align="center"></el-table-column>
  43. <el-table-column prop="insuredname" label="投保人姓名" align="center"></el-table-column>
  44. <el-table-column prop="product" label="投保险种" align="center"></el-table-column>
  45. <el-table-column prop="operatorName" label="录入人" align="center"></el-table-column>
  46. <el-table-column prop="auditStatus" label="状态" align="center">
  47. <template slot-scope="scope">
  48. <el-tag v-if="scope.row.auditStatus == '0'" type="success" size="small">未审核</el-tag>
  49. <el-tag v-if="scope.row.auditStatus == '1'" type="warning" size="small">审核通过</el-tag>
  50. <el-tag v-if="scope.row.auditStatus == '2'" type="danger" size="small">审核驳回</el-tag>
  51. </template>
  52. </el-table-column>
  53. <el-table-column prop="createtime" label="录单日期" align="center" ></el-table-column>
  54. <el-table-column prop="signingTime" label="签单时间" align="center" ></el-table-column>
  55. <el-table-column prop="payDate" label="支付时间" align="center" ></el-table-column>
  56. <el-table-column label="操作" align="center" min-width="170" >
  57. <template slot-scope="scope">
  58. <kt-button label="审核" type="text" perms="carInsurance:expenseVerification:pendingReview:review"
  59. @click="OrderDetails(scope.row)" />
  60. <!-- <kt-button label="轨迹" type="text" perms="carInsurance:expenseVerification:pendingReview:trajectory"
  61. @click="trajectory(scope.row)" /> -->
  62. <kt-button label="轨迹" type="text" @click="trajectory(scope.row)" />
  63. <kt-button :label="scope.row.problemOrder=='0'?'疑问订单':'取消疑问订单'" type="text" @click="doubtfulOrders(scope.row)" />
  64. </template>
  65. </el-table-column>
  66. </el-table>
  67. <!-- 分页功能 -->
  68. <div class="block">
  69. <el-pagination @size-change="applyhandleSizeChange" @current-change="applyhandleCurrentChange"
  70. :current-page="pageNum" :page-size="pageSize" :page-sizes="[20, 30, 50, 100]"
  71. layout="total, sizes, prev, pager, next, jumper" :total="totalSize"></el-pagination>
  72. </div>
  73. <!-- 车辆报价新页面 -->
  74. <detailsDialog ref="detailsDialog" :orderInfo="orderInfo" :feeOrderNewVoList="feeOrderNewVoList" :isrejection="isrejection"
  75. @updatedCost="updatedCost" @adusitFUn="adusitFUn" @rejectionFUn="rejectionFUn">
  76. </detailsDialog>
  77. <el-dialog :visible.sync="ddgjdialogVisible" width="430px">
  78. <div slot="title" class="dialog-title">
  79. <span>订单轨迹</span>
  80. </div>
  81. <div style="height: 300px; overflow-y: auto">
  82. <el-steps direction="vertical" :active="trajectoryTable.length - 1" finish-status="success">
  83. <el-step :title="auditstatusCap(item.auditstatus)" :key="item.id" v-for="item in trajectoryTable">
  84. <template slot="description">
  85. <div>保险公司:{{ item.insCompany }} <span style="margin-left:15px">创建用户:{{ item.operator }}</span></div>
  86. <div>创建时间:{{ item.operatorTime }}</div>
  87. </template>
  88. </el-step>
  89. </el-steps>
  90. </div>
  91. </el-dialog>
  92. </div>
  93. </template>
  94. <script>
  95. import retrievalForm from "@/components/Form/retrievalForm.vue";
  96. import Cookies from "js-cookie";
  97. import KtButton from "@/views/Core/KtButton";//按钮权限组件
  98. import detailsDialog from "@/views/Core/components/detailsDialogPro.vue";
  99. export default {
  100. components: {
  101. KtButton,
  102. detailsDialog,
  103. retrievalForm
  104. },
  105. data() {
  106. return {
  107. isrejection:false,
  108. ddgjdialogVisible: false,
  109. trajectoryTable: [],
  110. feeOrderNewVoList: {},
  111. isAuditing: {},
  112. oldFeeInfo: [],//原始跟单费用比例
  113. adjustFeeDescInfo: {},//调整费用时使用对象
  114. adjustFeeFlag: false,
  115. queryOrders: "",
  116. value2: "",
  117. optionsStatus: [],
  118. quotedetailsdialogVisible: false,
  119. loading: false,
  120. pageNum: 1,//页数
  121. pageSize: 20,//条数
  122. totalSize: null,//总数
  123. peopleid: "",//工号
  124. pageResult: [],//列表
  125. pageRequest: {
  126. pageNum: 1,
  127. pageSize: 20,
  128. orderStatus: 0,
  129. userId: "",
  130. },
  131. retrievalFields: [
  132. {
  133. name: 'provinceId',
  134. label: '省机构名称',
  135. type: 'select',
  136. options: []
  137. },
  138. {
  139. name: 'cityId',
  140. label: '市机构名称',
  141. type: 'select',
  142. options: []
  143. },
  144. {
  145. name: 'countyId',
  146. label: '区机构名称',
  147. type: 'select',
  148. options: []
  149. },
  150. {
  151. name: 'houseId',
  152. label: '门店名称',
  153. type: 'select',
  154. options: []
  155. },
  156. // {
  157. // name: 'taskNo',
  158. // label: '任务池号',
  159. // type: 'input',
  160. // },
  161. {
  162. name: 'orderNo',
  163. label: '订单号',
  164. type: 'input',
  165. },
  166. {
  167. name: 'managementSource',
  168. label: '机构来源',
  169. type: 'select',
  170. options: [],
  171. optionsIabel: "dictTag",
  172. optionsValue: "dictValue",
  173. },
  174. {
  175. name: 'companyId',
  176. label: '保险公司',
  177. type: 'select',
  178. options: []
  179. },
  180. {
  181. name: 'insuredName',
  182. label: '被保险人',
  183. type: 'input',
  184. Retained: true,
  185. },
  186. {
  187. name: 'licenseNo',
  188. label: '车牌号',
  189. type: 'input',
  190. Retained: true,
  191. },
  192. {
  193. name: 'frameNo',
  194. label: '车架号',
  195. type: 'input',
  196. Retained: true,
  197. },
  198. {
  199. name: 'engineNo',
  200. label: '发动机号',
  201. type: 'input',
  202. Retained: true,
  203. },
  204. {
  205. name: 'riskCode',
  206. label: '投保险种',
  207. type: 'select',
  208. Retained: true,
  209. options: [],
  210. optionsIabel: "dictTag",
  211. optionsValue: "dictTag",
  212. },
  213. {
  214. name: 'operatorId',
  215. label: '代理人工号',
  216. type: 'input',
  217. Retained: true,
  218. },
  219. {
  220. name: 'operatorName',
  221. label: '代理人姓名',
  222. type: 'input',
  223. Retained: true,
  224. },
  225. {
  226. name: 'auditId',
  227. label: '受理人工号',
  228. type: 'input',
  229. Retained: true,
  230. },
  231. {
  232. name: 'agreeId',
  233. label: '协议选择',
  234. type: 'select',
  235. options: [],
  236. optionsIabel: "agreementName",
  237. },
  238. {
  239. name: 'isExternal',
  240. label: '外部订单',
  241. type: 'select',
  242. optionsIabel: "label",
  243. optionsValue: "value",
  244. options: [
  245. {
  246. label:'是',
  247. value:'1'
  248. },{
  249. label:'否',
  250. value:'0'
  251. },
  252. ],
  253. },
  254. {
  255. name: 'problemOrder',
  256. label: '疑问订单',
  257. type: 'select',
  258. optionsIabel: "label",
  259. optionsValue: "value",
  260. options: [
  261. {
  262. label:'是',
  263. value:'1'
  264. },{
  265. label:'否',
  266. value:'0'
  267. },
  268. ],
  269. },
  270. {
  271. name: ["quoteStartDateStr", "quoteEndDateStr"],
  272. label: '报价时间',
  273. type: 'date',
  274. list: 'quoteList'
  275. },
  276. {
  277. name: ["attachStartDateStr", "attachEndDateStr"],
  278. label: '起保时间',
  279. type: 'date',
  280. list: 'attachList'
  281. },
  282. {
  283. name: ["signStartDateStr", "signEndDateStr"],
  284. label: '签单时间',
  285. type: 'date',
  286. list: 'signList'
  287. },
  288. {
  289. name: ["payStartDateStr", "payEndDateStr"],
  290. label: '支付时间',
  291. type: 'date',
  292. list: 'payList'
  293. },
  294. ],
  295. orderInfo: {
  296. //选中的订单
  297. ownerinfo: {},
  298. carinfo: {},
  299. applyinfo: {},
  300. insureinfo: {},
  301. kindinfo: [],
  302. riskinfo: [],
  303. ownerinfo: {},
  304. extendInfo: {}
  305. },
  306. feeDetailInfo: [],//费用明细信息
  307. inscompany: "", //保险公司名称
  308. licenseNo: "", //车牌号
  309. sumpremium: "", //保费合计
  310. jqpremium: "",//交强
  311. sypremium: "",//商业
  312. taxamount: "",//车船税
  313. jypremium: "",//驾意险
  314. jqstartdate: "",//交强时间
  315. systartdate: "",//商业时间
  316. mobile: "",//投保人手机号
  317. qrcode: null,
  318. userid: "",
  319. institutionOptions: [],
  320. width: document.documentElement.clientWidth,
  321. insAreaCompanyList: [],//子订单list
  322. companyList: [], //保险公司
  323. oldVersionHistory: [],
  324. natureOfVehicleUseoptions: [],
  325. businessVehicleUseoptions: [],
  326. outOfBusinessVehicleUseoptions: [],
  327. vehicleTypeoptions: [],
  328. trafficManagementVehicleTypeoptions: [],
  329. energyTypeoptions: [],
  330. carImageList: [], //车辆影像
  331. ownerImageList: [], //车主影像
  332. policyImageList: [], //投保人影像
  333. insuredImageList: [], //被保人影像
  334. carCheckImageList: [], //验车照影像
  335. oldfileList: [], //电子保单数据
  336. }
  337. },
  338. created() {
  339. this.pageRequest.userId = Cookies.get("user");
  340. this.areaqueryList(1, 99, "provinceId");
  341. this.CompanyList();
  342. this.agrmentlist();
  343. this.$api.insCompany.dicType('productsType').then(res => {
  344. if (res.code == 200) {
  345. this.selectDataMatching(this.retrievalFields, 'riskCode', res.data.ddList);
  346. }
  347. });
  348. this.$api.insCompany.dicType('organizationSource').then(res => {
  349. if (res.code == 200) {
  350. this.selectDataMatching(this.retrievalFields, 'managementSource', res.data.ddList);
  351. }
  352. });
  353. this.getDicType("natureOfVehicleUse");//车辆使用性质
  354. this.getDicType("businessVehicleUse"); //(车辆用途)营业
  355. this.getDicType("outOfBusinessVehicleUse"); //(车辆用途)非营业
  356. this.getDicType("vehicleType"); //车辆种类
  357. this.getDicType("trafficManagementVehicleType"); //车辆类型
  358. this.getDicType("energyType"); //能源种类
  359. },
  360. mounted() {
  361. window.addEventListener('resize', this.getDimensions);
  362. },
  363. unmounted() {
  364. window.removeEventListener('resize', this.getDimensions);
  365. },
  366. methods: {
  367. auditstatusCap(val) {
  368. if (val == "0") {
  369. return "未审核";
  370. }
  371. if (val == "1") {
  372. return "审核通过";
  373. }
  374. if (val == "2") {
  375. return "审核驳回";
  376. }
  377. if (val == "3") {
  378. return "已承保";
  379. }
  380. },
  381. trajectory(row) {
  382. // let a='1797905916021248000'
  383. this.$api.task.getFeeAuditHistory(row.orderno).then((res) => {
  384. if (res.code == 200 && res.data.length > 0) {
  385. this.trajectoryTable = res.data
  386. this.ddgjdialogVisible = true
  387. }
  388. else {
  389. this.$message.error('暂无数据!')
  390. }
  391. });
  392. },
  393. doubtfulOrders(row) {
  394. this.$api.task.markProblemOrder({subOrder:row.orderno,problemOrder:row.problemOrder=='0'?'1':'0'}).then((res) => {
  395. if (res.code == 200 ) {
  396. this.$message({
  397. message: res.msg ||'操作成功',
  398. type: 'success'
  399. });
  400. this.findPage();
  401. }
  402. else {
  403. this.$message.error(res.msg)
  404. }
  405. });
  406. },
  407. //获取机构数据
  408. areaqueryList(level, parentId, filed) {
  409. this.$api.task.queryListByParentId(level, parentId).then((res) => {
  410. this.selectDataMatching(this.retrievalFields, filed, res.data);
  411. });
  412. },
  413. CompanyList() {
  414. this.$api.letter.gainTopList().then((res) => {
  415. this.selectDataMatching(this.retrievalFields, 'companyId', res.data);
  416. })
  417. },
  418. agrmentlist() {
  419. this.$api.task.findPtlAgreementList().then((res) => {
  420. this.selectDataMatching(this.retrievalFields, 'agreeId', res.data);
  421. });
  422. },
  423. getDicType(type) {
  424. this.$api.insCompany.dicType(type).then(res => {
  425. if (res.code == 200) {
  426. this[type + 'options'] = res.data.ddList;
  427. }
  428. })
  429. },
  430. //下拉数据匹配
  431. selectDataMatching(files, name, data) {
  432. files.forEach(filed => {
  433. if (filed.name == name) {
  434. filed.options = data;
  435. }
  436. })
  437. },
  438. areaSelectChange(obj) {
  439. switch (obj.filed) {
  440. case 'provinceId':
  441. this.areaqueryList(2, obj.id, 'cityId')
  442. break;
  443. case 'cityId':
  444. this.areaqueryList(3, obj.id, 'countyId')
  445. break;
  446. case 'countyId':
  447. this.areaqueryList(4, obj.id, 'houseId')
  448. break;
  449. default:
  450. }
  451. },
  452. handleFormSubmit(data) {
  453. this.pageRequest.pageNum = 1;
  454. this.pageRequest.pageSize = 20;
  455. let obj = Object.assign(this.pageRequest, data)
  456. this.pageRequest = obj;
  457. this.findPage();
  458. },
  459. toggleCollapse(data) {
  460. this.retrievalFields.map(val => {
  461. if (val.Retained != null) val.Retained = data;
  462. return val;
  463. })
  464. },
  465. updatedCost(data) {
  466. let list = JSON.parse(JSON.stringify(data));
  467. console.log(list)
  468. const exportFee = [];
  469. const entranceFee = [];
  470. list.feeOrder.forEach((item, index) => {
  471. if (index < 3) entranceFee.push(item);
  472. else exportFee.push(item);
  473. });
  474. let params = {
  475. feeId: this.oldVersionHistory.feeId,
  476. feeOrderNewVoOld: this.oldVersionHistory,
  477. feeOrderNewVoNew: {
  478. deptManagerFee: list.deptManagerFee,
  479. entranceFee: entranceFee,
  480. exportFee: exportFee,
  481. }
  482. }
  483. this.$api.task.costsadjust(params).then((res) => {
  484. if (res.code == '200') {
  485. let data = res.data;
  486. let list = [];
  487. data.exportFee.map((val, index) => {
  488. val.type = "出口费用"
  489. return val;
  490. })
  491. data.entranceFee.map((val, index) => {
  492. val.type = "入口费用"
  493. return val;
  494. })
  495. console.log(data)
  496. this.feeOrderNewVoList = {
  497. deptManagerFee: data.deptManagerFee,
  498. list: [...data.entranceFee, ...data.exportFee],
  499. }
  500. this.$message({
  501. type: 'success',
  502. message: res.msg,
  503. });
  504. } else {
  505. this.$message({
  506. type: 'error',
  507. message: res.msg,
  508. });
  509. }
  510. });
  511. },
  512. closeDialog() {
  513. this.adjustFeeFlag = false;
  514. },
  515. // 审核驳回
  516. rejectionFUn(){
  517. this.$prompt('输入驳回原因', '提示', {
  518. confirmButtonText: '确定',
  519. cancelButtonText: '取消',
  520. inputPattern: /^.+$/,
  521. distinguishCancelAndClose: true,
  522. inputErrorMessage: '输入驳回原因!'
  523. }).then(({ value }) => {
  524. let subParam = {
  525. orderNo: this.orderInfo.orderno,
  526. jqCostsProportionStr: this.adjustFeeDescInfo.jqAllFeeRate,
  527. syCostsProportionStr: this.adjustFeeDescInfo.syAllFeeRate,
  528. auditStatus:'2',
  529. updateFlag: this.adjustFeeFlag ? "1" : "0",
  530. rejectinfo:value
  531. }
  532. this.$api.task
  533. .auditFee(subParam)
  534. .then(res => {
  535. if (res.code == 200) {
  536. this.findPage()
  537. this.$message({
  538. message: '操作成功' || res.msg,
  539. type: 'success'
  540. });
  541. this.$refs.detailsDialog.setBackupVisible(false);
  542. }
  543. else {
  544. this.$message.error(res.msg)
  545. }
  546. })
  547. })
  548. },
  549. //审核通过
  550. adusitFUn() {
  551. this.$confirm('是否确认审核?', '提示', {
  552. confirmButtonText: '确定',
  553. cancelButtonText: '取消',
  554. type: 'warning'
  555. }).then(() => {
  556. const loading = this.$loading({
  557. lock: true,
  558. text: '数据加载中,请稍等',
  559. spinner: 'el-icon-loading',
  560. background: 'rgba(0, 0, 0, 0.7)'
  561. });
  562. let subParam = {
  563. orderNo: this.orderInfo.orderno,
  564. jqCostsProportionStr: this.adjustFeeDescInfo.jqAllFeeRate,
  565. syCostsProportionStr: this.adjustFeeDescInfo.syAllFeeRate,
  566. auditStatus:'1',
  567. updateFlag: this.adjustFeeFlag ? "1" : "0",
  568. }
  569. this.$api.task.auditFee(subParam).then((res) => {
  570. if (res.code == 200) {
  571. loading.close();
  572. this.$message({
  573. type: 'success',
  574. message: "审核通过",
  575. });
  576. this.findPage();
  577. // this.quotedetailsdialogVisible = false;
  578. this.$refs.detailsDialog.setBackupVisible(false);
  579. } else {
  580. loading.close();
  581. this.$message.error(res.msg)
  582. }
  583. })
  584. }).catch(() => {
  585. });
  586. },
  587. toChinesNum(num) {
  588. let changeNum = [
  589. "零", "1", "2", "3", "4", "5", "6", "7", "8", "9"
  590. ];
  591. let unit = ["", "0", "00", "000", "0000"];
  592. num = parseInt(num);
  593. let getWan = temp => {
  594. let strArr = temp
  595. .toString()
  596. .split("")
  597. .reverse();
  598. let newNum = "";
  599. let newArr = [];
  600. strArr.forEach((item, index) => {
  601. newArr.unshift(
  602. item === "0" ? changeNum[item] : changeNum[item] + unit[index]
  603. );
  604. });
  605. let numArr = [];
  606. newArr.forEach((m, n) => {
  607. if (m !== "零") numArr.push(n);
  608. });
  609. if (newArr.length > 1) {
  610. newArr.forEach((m, n) => {
  611. if (newArr[newArr.length - 1] === "零") {
  612. if (n <= numArr[numArr.length - 1]) {
  613. newNum += m;
  614. }
  615. } else {
  616. newNum += m;
  617. }
  618. });
  619. } else {
  620. newNum = newArr[0];
  621. }
  622. return newNum;
  623. };
  624. let overWan = Math.floor(num / 10000);
  625. let noWan = num % 10000;
  626. if (noWan.toString().length < 4) {
  627. noWan = "0" + noWan;
  628. }
  629. return overWan ? getWan(overWan) + "万" + getWan(noWan) : getWan(num);
  630. },
  631. //联级选择器触发事件
  632. handleChange(val) {
  633. if (val.length !== 0) {
  634. this.pageRequest.deptId = val.at(-1);
  635. }
  636. else {
  637. this.pageRequest.deptId = ''
  638. }
  639. },
  640. getDimensions() {
  641. this.width = document.documentElement.clientWidth - 350 + 'px';
  642. },
  643. //使用性质
  644. natureOfVehicleUseCap(ele) {
  645. if (this.natureOfVehicleUseoptions.find(item => item.dictValue == ele)) {
  646. return this.natureOfVehicleUseoptions.find((item) => {
  647. return item.dictValue === ele;
  648. }).dictTag;
  649. }
  650. else {
  651. return ''
  652. }
  653. },
  654. //车辆类型
  655. trafficManagementVehicleTypeCap(ele) {
  656. if (this.trafficManagementVehicleTypeoptions.find(item => item.dictValue == ele)) {
  657. return this.trafficManagementVehicleTypeoptions.find((item) => {
  658. return item.dictValue === ele;
  659. }).dictTag;
  660. }
  661. else {
  662. return ''
  663. }
  664. },
  665. //车辆种类
  666. vehicleTypeCap(ele) {
  667. if (this.vehicleTypeoptions.find(item => item.dictValue == ele)) {
  668. return this.vehicleTypeoptions.find((item) => {
  669. return item.dictValue === ele;
  670. }).dictTag;
  671. }
  672. else {
  673. return ''
  674. }
  675. },
  676. //能源种类
  677. energyTypeCap(ele) {
  678. if (this.energyTypeoptions.find(item => item.dictValue == ele)) {
  679. return this.energyTypeoptions.find((item) => {
  680. return item.dictValue === ele;
  681. }).dictTag;
  682. }
  683. else {
  684. return ''
  685. }
  686. },
  687. //车辆用途
  688. outOfBusinessVehicleUseCap(type, ele) {
  689. switch (type) {
  690. case '非营业':
  691. if (this.outOfBusinessVehicleUseoptions.find(item => item.dictValue == ele)) {
  692. return this.outOfBusinessVehicleUseoptions.find((item) => {
  693. return item.dictValue === ele;
  694. }).dictTag;
  695. }
  696. else {
  697. return ''
  698. }
  699. case '营业':
  700. if (this.businessVehicleUseoptions.find(item => item.dictValue == ele)) {
  701. return this.businessVehicleUseoptions.find((item) => {
  702. return item.dictValue === ele;
  703. }).dictTag;
  704. }
  705. else {
  706. return ''
  707. }
  708. default:
  709. }
  710. },
  711. tableRowClassName(row) {
  712. if(row.row.isExternal===1){
  713. return "flagRow";
  714. }
  715. else{
  716. return ''
  717. }
  718. },
  719. //应用详情
  720. OrderDetails(dy) {
  721. if(dy.isExternal==1){
  722. this.isrejection=true
  723. }
  724. else{
  725. this.isrejection=false
  726. }
  727. this.carImageList = [];
  728. this.ownerImageList = []; //车主影像
  729. this.policyImageList = []; //投保人影像
  730. this.insuredImageList = []; //被保人影像
  731. this.carCheckImageList = []; //验车照影像
  732. let params = {
  733. orderNo: dy.orderno,
  734. }
  735. this.$api.task.feeDetail(params).then((res) => {
  736. if (res.code == 200) {
  737. res.data.kindinfo.map((ele, index) => {
  738. switch (ele.kindCode) {
  739. case "A":
  740. ele.amount = "投保";
  741. break;
  742. case "D4":
  743. case "SY_FJ_YBW2":
  744. ele.unitAmount = this.toChinesNum(ele.unitAmount);
  745. break;
  746. case "MJ1":
  747. case "MJ2":
  748. case "MJ3":
  749. case "MJ4":
  750. ele.deductibleRate = ele.deductibleRate + "%";
  751. break;
  752. default:
  753. ele.amount = this.toChinesNum(ele.amount);
  754. }
  755. return ele;
  756. });
  757. // 获取影像
  758. this.$api.letter.findByQuoteNo(dy.quoteno).then((resImage) => {
  759. Object.keys(resImage.data).forEach((keys) => {
  760. if (resImage.data[keys]) {
  761. resImage.data[keys].url = resImage.data[keys].url
  762. ? process.env.BASE_URL + resImage.data[keys].url
  763. : null;
  764. switch (keys) {
  765. case "C01":
  766. case "D01":
  767. resImage.data[keys].url
  768. ? this.carImageList.push(resImage.data[keys].url)
  769. : "";
  770. break;
  771. case "C02":
  772. case "D02":
  773. resImage.data[keys].url
  774. ? this.ownerImageList.push(resImage.data[keys].url)
  775. : "";
  776. break;
  777. case "C03":
  778. case "D03":
  779. resImage.data[keys].url
  780. ? this.policyImageList.push(resImage.data[keys].url)
  781. : "";
  782. break;
  783. case "C04":
  784. case "D04":
  785. resImage.data[keys].url
  786. ? this.insuredImageList.push(resImage.data[keys].url)
  787. : "";
  788. break;
  789. case "XC00":
  790. case "GC00":
  791. case "GX00":
  792. resImage.data[keys].url
  793. ? this.carCheckImageList.push(resImage.data[keys].url)
  794. : "";
  795. break;
  796. default:
  797. break;
  798. }
  799. }
  800. });
  801. let obj = {
  802. carImageList: this.carImageList,
  803. ownerImageList: this.ownerImageList,
  804. policyImageList: this.policyImageList,
  805. insuredImageList: this.insuredImageList,
  806. carCheckImageList: this.carCheckImageList
  807. }
  808. this.$refs.detailsDialog.imageFun(obj);
  809. });
  810. if (res.data.feeOrderNewVo && res.data.feeOrderNewVo.exportFee && res.data.feeOrderNewVo.entranceFee) {
  811. let data = JSON.parse(JSON.stringify(res.data.feeOrderNewVo))
  812. this.oldVersionHistory = data;
  813. data.exportFee.map((val, index) => {
  814. val.type = "出口费用"
  815. return val;
  816. })
  817. data.entranceFee.map((val, index) => {
  818. val.type = "入口费用"
  819. return val;
  820. })
  821. this.feeOrderNewVoList = {
  822. deptManagerFee: data.deptManagerFee,
  823. list: [...data.entranceFee, ...data.exportFee],
  824. }
  825. }
  826. res.data.carinfo.carnature = this.natureOfVehicleUseCap(res.data.carinfo.carnature)
  827. res.data.carinfo.cartype = this.trafficManagementVehicleTypeCap(res.data.carinfo.cartype)
  828. res.data.carinfo.cimodelclass = this.vehicleTypeCap(res.data.carinfo.cimodelclass)
  829. res.data.carinfo.energyType = this.energyTypeCap(res.data.carinfo.energyType)
  830. res.data.carinfo.vehicleUse = this.outOfBusinessVehicleUseCap(res.data.carinfo.carnature, res.data.carinfo.vehicleUse)
  831. this.orderInfo = res.data;
  832. this.oldfileList = [];
  833. let businessList = []
  834. let accidentList = []
  835. if (res.data.orderstatus == "3") {
  836. if (res.data.isExternal == 1) {
  837. this.$api.letter
  838. .getPolicyPrintexternalOrder(res.data.id).then(res1 => {
  839. if (res1.code == 200) {
  840. if (res1.data.jqPolicy) {
  841. this.oldfileList.push({
  842. fileTitle: "交强电子保单",
  843. filename: this.orderInfo.jqpolicyno,
  844. fileurl: res1.data.jqPolicy
  845. });
  846. }
  847. if (res1.data.jqSign) {
  848. this.oldfileList.push({
  849. fileTitle: "交强电子标志",
  850. filename: this.orderInfo.jqpolicyno,
  851. fileurl: res1.data.jqSign
  852. });
  853. }
  854. if (res1.data.syPolicy) {
  855. accidentList.push({
  856. fileTitle: "商业电子保单",
  857. filename: this.orderInfo.sypolicyno,
  858. fileurl: res1.data.syPolicy
  859. });
  860. }
  861. if (res1.data.noPolicy) {
  862. accidentList.push({
  863. fileTitle: "驾意险保单",
  864. filename: "驾意险保单",
  865. fileurl: res1.data.noPolicy
  866. });
  867. }
  868. }
  869. else {
  870. this.$message.error(res1.msg)
  871. }
  872. })
  873. }
  874. else {
  875. switch (res.data.inscompany) {
  876. case "永安财险":
  877. if (this.orderInfo.jqpolicyno) {
  878. this.$api.letter
  879. .getPolicyPrint({
  880. companyId: res.data.id,
  881. policytype: "jq",
  882. })
  883. .then((res) => {
  884. //交强保单
  885. if (res.data) {
  886. let result = res.data.replace(/[\r\n]/g, "");
  887. let pdfBase64 = `data:application/pdf;base64,${result}`;
  888. base64ToPath(pdfBase64).then((path) => {
  889. if (path) {
  890. this.oldfileList.push({
  891. fileTitle: "交强电子保单",
  892. filename: this.orderInfo.jqpolicyno,
  893. fileurl: path,
  894. });
  895. }
  896. });
  897. }
  898. });
  899. this.$api.letter
  900. .getPolicyPrint2({
  901. companyId: res.data.id,
  902. policytype: "jq",
  903. })
  904. .then((res) => {
  905. //交强保单
  906. if (res.data) {
  907. let result = res.data.replace(/[\r\n]/g, "");
  908. let pdfBase64 = `data:application/pdf;base64,${result}`;
  909. base64ToPath(pdfBase64).then((path) => {
  910. if (path) {
  911. this.oldfileList.push({
  912. fileTitle: "交强电子标志",
  913. filename: this.orderInfo.jqpolicyno,
  914. fileurl: path,
  915. });
  916. }
  917. });
  918. }
  919. });
  920. }
  921. if (this.orderInfo.sypolicyno) {
  922. this.$api.letter
  923. .getPolicyPrint({
  924. companyId: res.data.id,
  925. policytype: "sy",
  926. })
  927. .then((res) => {
  928. //商业保单
  929. if (res.data) {
  930. let result = res.data.replace(/[\r\n]/g, "");
  931. let pdfBase64 = `data:application/pdf;base64,${result}`;
  932. base64ToPath(pdfBase64).then((path) => {
  933. if (path) {
  934. businessList.push({
  935. fileTitle: "商业电子保单",
  936. filename: this.orderInfo.sypolicyno,
  937. fileurl: path,
  938. });
  939. }
  940. });
  941. }
  942. });
  943. }
  944. break;
  945. case "华泰财险":
  946. if (this.orderInfo.jqpolicyno) {
  947. this.$api.letter
  948. .HuataigetPolicyPrint({
  949. companyId: res.data.id,
  950. riskCode: "0507",
  951. type: "2", //2:保单
  952. })
  953. .then((res) => {
  954. if (res.data) {
  955. if (res.data.jqxPolicyUrl) {
  956. this.oldfileList.push({
  957. fileTitle: "交强电子保单",
  958. filename: this.orderInfo.jqpolicyno,
  959. fileurl: res.data.jqxPolicyUrl,
  960. });
  961. }
  962. if (res.data.jqxFlagUrl) {
  963. this.oldfileList.push({
  964. fileTitle: "交强电子标志",
  965. filename: this.orderInfo.jqpolicyno,
  966. fileurl: res.data.jqxFlagUrl,
  967. });
  968. }
  969. } else {
  970. this.$message.error(res.msg);
  971. }
  972. });
  973. }
  974. if (this.orderInfo.sypolicyno) {
  975. this.$api.letter
  976. .HuataigetPolicyPrint({
  977. companyId: res.data.id,
  978. riskCode: "0510",
  979. type: "2", //2:保单
  980. })
  981. .then((res) => {
  982. if (res.data && res.data.syxPolicyUrl) {
  983. businessList.push({
  984. fileTitle: "商业电子保单",
  985. filename: this.orderInfo.sypolicyno,
  986. fileurl: res.data.syxPolicyUrl,
  987. });
  988. } else {
  989. this.$message.error(res.msg);
  990. }
  991. });
  992. }
  993. break;
  994. case "中煤财险":
  995. if (this.orderInfo.jqpolicyno) {
  996. this.$api.letter
  997. .ZhongmeigetPolicyPrint({
  998. companyId: res.data.id,
  999. riskCode: "0507",
  1000. type: "2", //2:保单
  1001. })
  1002. .then((res) => {
  1003. if (res.data && res.data[0]) {
  1004. this.oldfileList.push({
  1005. fileTitle: "交强电子保单",
  1006. filename: this.orderInfo.jqpolicyno,
  1007. fileurl: res.data[0],
  1008. });
  1009. } else {
  1010. this.$message.error(res.msg);
  1011. }
  1012. });
  1013. this.$api.letter
  1014. .ZhongmeigetPolicyPrint({
  1015. companyId: res.data.id,
  1016. riskCode: "0507",
  1017. type: "1", // 1:标志
  1018. })
  1019. .then((res) => {
  1020. if (res.data && res.data[0]) {
  1021. this.oldfileList.push({
  1022. fileTitle: "交强电子标志",
  1023. filename: this.orderInfo.jqpolicyno,
  1024. fileurl: res.data[0],
  1025. });
  1026. } else {
  1027. this.$message.error(res.msg);
  1028. }
  1029. });
  1030. }
  1031. if (this.orderInfo.sypolicyno) {
  1032. this.$api.letter
  1033. .ZhongmeigetPolicyPrint({
  1034. companyId: res.data.id,
  1035. riskCode: "0510",
  1036. type: "2", //2:保单
  1037. })
  1038. .then((res) => {
  1039. if (res.data && res.data[0]) {
  1040. businessList.push({
  1041. fileTitle: "商业电子保单",
  1042. filename: this.orderInfo.sypolicyno,
  1043. fileurl: res.data[0],
  1044. });
  1045. } else {
  1046. this.$message.error(res.msg);
  1047. }
  1048. });
  1049. }
  1050. if (this.orderInfo.crossInsurance.length > 0) {
  1051. this.orderInfo.crossInsurance.map((ele) => {
  1052. this.$api.letter
  1053. .ZhongmeigetPolicyPrint({
  1054. ridePolicyNo: ele.ridePolicyNo,
  1055. companyId: res.data.id,
  1056. riskCode: "0513",
  1057. type: "2", //2:保单
  1058. })
  1059. .then((res) => {
  1060. if (res.code == 200 && res.data) {
  1061. accidentList.push({
  1062. fileTitle: "驾意险保单",
  1063. filename: this.orderInfo.sypolicyno,
  1064. fileurl: res.data[0],
  1065. });
  1066. } else {
  1067. this.$message.error(res.msg);
  1068. }
  1069. });
  1070. });
  1071. }
  1072. break;
  1073. case "永诚财险":
  1074. if (this.orderInfo.jqpolicyno) {
  1075. this.$api.letter
  1076. .yongchenggetPolicyPrint({
  1077. companyId: res.data.id,
  1078. riskCode: "0507",
  1079. type: "2", //2:保单
  1080. })
  1081. .then((res) => {
  1082. if (res.code == 200 && res.data) {
  1083. if (res.data.jqUrl) {
  1084. this.oldfileList.push({
  1085. fileTitle: "交强电子保单",
  1086. filename: this.orderInfo.jqpolicyno,
  1087. fileurl: res.data.jqUrl,
  1088. });
  1089. }
  1090. if (res.data.jqFlagUrl) {
  1091. this.oldfileList.push({
  1092. fileTitle: "交强电子标志",
  1093. filename: this.orderInfo.jqpolicyno,
  1094. fileurl: res.data.jqFlagUrl,
  1095. });
  1096. }
  1097. } else {
  1098. this.$message.error(res.msg);
  1099. }
  1100. });
  1101. }
  1102. if (this.orderInfo.sypolicyno) {
  1103. this.$api.letter
  1104. .yongchenggetPolicyPrint({
  1105. companyId: res.data.id,
  1106. riskCode: "0510",
  1107. type: "2", //2:保单
  1108. })
  1109. .then((res) => {
  1110. if (res.data && res.data.syUrl) {
  1111. businessList.push({
  1112. fileTitle: "商业电子保单",
  1113. filename: this.orderInfo.sypolicyno,
  1114. fileurl: res.data.syUrl,
  1115. });
  1116. } else {
  1117. this.$message.error(res.msg);
  1118. }
  1119. });
  1120. }
  1121. if (this.orderInfo.crossInsurance.length > 0) {
  1122. this.orderInfo.crossInsurance.map((ele) => {
  1123. this.$api.letter
  1124. .yongchenggetPolicyPrint({
  1125. companyId: res.data.id,
  1126. policyNumber: ele.policyNumber,
  1127. riskCode: "0513",
  1128. type: "2", //2:保单
  1129. })
  1130. .then((res) => {
  1131. if (res.code == 200 && res.data) {
  1132. accidentList.push({
  1133. fileTitle: "驾意险保单",
  1134. filename: ele.policyNumber,
  1135. fileurl: res.data.jyUrl,
  1136. });
  1137. } else {
  1138. this.$message.error(res.msg);
  1139. }
  1140. });
  1141. });
  1142. }
  1143. break;
  1144. case "国任财险":
  1145. if (this.orderInfo.jqpolicyno) {
  1146. this.$api.letter
  1147. .guoRengetPolicyPrint({
  1148. companyId: res.data.id,
  1149. riskCode: "0507",
  1150. type: "2", //2:保单
  1151. })
  1152. .then((res) => {
  1153. if (res.data) {
  1154. this.oldfileList.push({
  1155. fileTitle: "交强电子保单",
  1156. filename: this.orderInfo.jqpolicyno,
  1157. fileurl: res.data,
  1158. });
  1159. } else {
  1160. this.$message.error(res.msg);
  1161. }
  1162. });
  1163. this.$api.letter
  1164. .guoRengetPolicyPrint({
  1165. companyId: res.data.id,
  1166. riskCode: "0507",
  1167. type: "1", //1:标志
  1168. })
  1169. .then((res) => {
  1170. if (res.data) {
  1171. this.oldfileList.push({
  1172. fileTitle: "交强电子标志",
  1173. filename: this.orderInfo.jqpolicyno,
  1174. fileurl: res.data,
  1175. });
  1176. } else {
  1177. this.$message.error(res.msg);
  1178. }
  1179. });
  1180. }
  1181. if (this.orderInfo.sypolicyno) {
  1182. this.$api.letter
  1183. .guoRengetPolicyPrint({
  1184. companyId: res.data.id,
  1185. riskCode: "0510",
  1186. type: "2", //2:保单
  1187. })
  1188. .then((res) => {
  1189. if (res.data) {
  1190. businessList.push({
  1191. fileTitle: "商业电子保单",
  1192. filename: this.orderInfo.sypolicyno,
  1193. fileurl: res.data,
  1194. });
  1195. } else {
  1196. this.$message.error(res.msg);
  1197. }
  1198. });
  1199. }
  1200. if (this.orderInfo.crossInsurance.length > 0) {
  1201. this.orderInfo.crossInsurance.map((ele) => {
  1202. this.$api.letter
  1203. .guoRengetPolicyPrint({
  1204. companyId: res.data.id,
  1205. policyNumber: ele.policyNumber,
  1206. riskCode: "0513",
  1207. type: "2", //2:保单
  1208. })
  1209. .then((res) => {
  1210. if (res.data) {
  1211. accidentList.push({
  1212. fileTitle: "驾意险保单",
  1213. filename: ele.policyNumber,
  1214. fileurl: res.data,
  1215. });
  1216. } else {
  1217. this.$message.error(res.msg);
  1218. }
  1219. });
  1220. });
  1221. }
  1222. break;
  1223. case "紫金财险":
  1224. if (this.orderInfo.jqpolicyno) {
  1225. this.$api.letter
  1226. .zijingetPolicyPrint({
  1227. companyId: res.data.id,
  1228. riskCode: "0507",
  1229. type: "2", //2:保单
  1230. })
  1231. .then((res) => {
  1232. if (res.data) {
  1233. this.oldfileList.push({
  1234. fileTitle: "交强电子保单",
  1235. filename: this.orderInfo.jqpolicyno,
  1236. fileurl: res.data,
  1237. });
  1238. } else {
  1239. this.$message.error(res.msg);
  1240. }
  1241. });
  1242. this.$api.letter
  1243. .zijingetPolicyPrint({
  1244. companyId: res.data.id,
  1245. riskCode: "0507",
  1246. type: "1", //1:标志
  1247. })
  1248. .then((res) => {
  1249. if (res.data) {
  1250. this.oldfileList.push({
  1251. fileTitle: "交强电子标志",
  1252. filename: this.orderInfo.jqpolicyno,
  1253. fileurl: res.data,
  1254. });
  1255. } else {
  1256. this.$message.error(res.msg);
  1257. }
  1258. });
  1259. }
  1260. if (this.orderInfo.sypolicyno) {
  1261. this.$api.letter
  1262. .zijingetPolicyPrint({
  1263. companyId: res.data.id,
  1264. riskCode: "0510",
  1265. type: "2", //2:保单
  1266. })
  1267. .then((res) => {
  1268. if (res.data) {
  1269. businessList.push({
  1270. fileTitle: "商业电子保单",
  1271. filename: this.orderInfo.sypolicyno,
  1272. fileurl: res.data,
  1273. });
  1274. } else {
  1275. this.$message.error(res.msg);
  1276. }
  1277. });
  1278. }
  1279. if (this.orderInfo.crossInsurance.length > 0) {
  1280. this.orderInfo.crossInsurance.map((ele) => {
  1281. this.$api.letter
  1282. .zijingetPolicyPrint({
  1283. companyId: res.data.id,
  1284. policyNumber: ele.policyNumber,
  1285. riskCode: "0513",
  1286. type: "2", //2:保单
  1287. })
  1288. .then((res) => {
  1289. if (res.data) {
  1290. accidentList.push({
  1291. fileTitle: "驾意险保单",
  1292. filename: ele.policyNumber,
  1293. fileurl: res.data,
  1294. });
  1295. } else {
  1296. this.$message.error(res.msg);
  1297. }
  1298. });
  1299. });
  1300. }
  1301. break;
  1302. case "渤海财险":
  1303. if (this.orderInfo.jqpolicyno) {
  1304. this.$api.letter
  1305. .getPolicyPrintboHai({
  1306. companyId: res.data.id,
  1307. })
  1308. .then((res) => {
  1309. if (res.code == 200 && res.data) {
  1310. if (res.data.jqxPolicyUrl) {
  1311. this.oldfileList.push({
  1312. fileTitle: "交强电子保单",
  1313. filename: this.orderInfo.jqpolicyno,
  1314. fileurl: res.data.jqxPolicyUrl,
  1315. });
  1316. }
  1317. if (res.data.jqxFlagUrl) {
  1318. this.oldfileList.push({
  1319. fileTitle: "交强电子标志",
  1320. filename: this.orderInfo.jqpolicyno,
  1321. fileurl: res.data.jqxFlagUrl,
  1322. });
  1323. }
  1324. if (res.data.syxPolicyUrl) {
  1325. businessList.push({
  1326. fileTitle: "商业电子保单",
  1327. filename: this.orderInfo.sypolicyno,
  1328. fileurl: res.data.syxPolicyUrl,
  1329. });
  1330. }
  1331. if (
  1332. res.data.jyxInfoList &&
  1333. res.data.jyxInfoList.length > 0
  1334. ) {
  1335. res.data.jyxInfoList.forEach((val) => {
  1336. accidentList.push({
  1337. fileTitle: "驾意险保单",
  1338. filename: "驾意险保单",
  1339. fileurl: val.jyx_policy_url,
  1340. });
  1341. });
  1342. }
  1343. } else {
  1344. this.$message.error(res.msg);
  1345. }
  1346. });
  1347. }
  1348. break;
  1349. case "恒邦财险":
  1350. case "安盛天平":
  1351. case "中国人寿":
  1352. case "太平财险":
  1353. case "华农财险":
  1354. case "众安财险":
  1355. if (this.orderInfo.jqpolicyno || this.orderInfo.sypolicyno) {
  1356. this.$api.letter
  1357. .pythongetPolicyPrint({
  1358. subOrderNo: res.data.id,
  1359. })
  1360. .then((res) => {
  1361. if (res.code == 200 && res.data) {
  1362. if (res.data.jqxPolicyUrl) {
  1363. this.oldfileList.push({
  1364. fileTitle: "交强电子保单",
  1365. filename: this.orderInfo.jqpolicyno,
  1366. fileurl: res.data.jqxPolicyUrl,
  1367. });
  1368. }
  1369. if (res.data.jqxFlagUrl) {
  1370. this.oldfileList.push({
  1371. fileTitle: "交强电子标志",
  1372. filename: this.orderInfo.jqpolicyno,
  1373. fileurl: res.data.jqxFlagUrl,
  1374. });
  1375. }
  1376. if (res.data.syxPolicyUrl) {
  1377. businessList.push({
  1378. fileTitle: "商业电子保单",
  1379. filename: this.orderInfo.sypolicyno,
  1380. fileurl: res.data.syxPolicyUrl,
  1381. });
  1382. }
  1383. if (
  1384. res.data.jyxInfoList &&
  1385. res.data.jyxInfoList.length > 0
  1386. ) {
  1387. res.data.jyxInfoList.forEach((val) => {
  1388. accidentList.push({
  1389. fileTitle: "驾意险保单",
  1390. filename: "驾意险保单",
  1391. fileurl: val.jyx_policy_url,
  1392. });
  1393. });
  1394. }
  1395. } else {
  1396. this.$message.error(res.msg);
  1397. }
  1398. });
  1399. }
  1400. break;
  1401. case "大家财险":
  1402. if (this.orderInfo.jqpolicyno) {
  1403. this.$api.letter
  1404. .obtainWarranty({
  1405. companyId: res.data.id,
  1406. riskCode: "0507",
  1407. type: "2", //2:保单
  1408. })
  1409. .then((res) => {
  1410. if (res.data) {
  1411. this.oldfileList.push({
  1412. fileTitle: "交强电子保单",
  1413. filename: this.orderInfo.jqpolicyno,
  1414. fileurl: res.data,
  1415. });
  1416. } else {
  1417. this.$message.error(res.msg);
  1418. }
  1419. });
  1420. this.$api.letter
  1421. .obtainWarranty({
  1422. companyId: res.data.id,
  1423. riskCode: "0507",
  1424. type: "1", //1:标志
  1425. })
  1426. .then((res) => {
  1427. if (res.data) {
  1428. this.oldfileList.push({
  1429. fileTitle: "交强电子标志",
  1430. filename: this.orderInfo.jqpolicyno,
  1431. fileurl: res.data,
  1432. });
  1433. } else {
  1434. this.$message.error(res.msg);
  1435. }
  1436. });
  1437. }
  1438. if (this.orderInfo.sypolicyno) {
  1439. this.$api.letter
  1440. .obtainWarranty({
  1441. companyId: res.data.id,
  1442. riskCode: "0510",
  1443. type: "2", //2:保单
  1444. })
  1445. .then((res) => {
  1446. if (res.data) {
  1447. businessList.push({
  1448. fileTitle: "商业电子保单",
  1449. filename: this.orderInfo.sypolicyno,
  1450. fileurl: res.data,
  1451. });
  1452. }
  1453. });
  1454. }
  1455. if (this.orderInfo.crossInsurance.length > 0) {
  1456. this.orderInfo.crossInsurance.map((ele) => {
  1457. this.$api.letter
  1458. .zijingetPolicyPrint({
  1459. companyId: res.data.id,
  1460. policyNumber: ele.policyNumber,
  1461. riskCode: "0513",
  1462. type: "2", //2:保单
  1463. })
  1464. .then((res) => {
  1465. if (res.data) {
  1466. accidentList.push({
  1467. fileTitle: "驾意险保单",
  1468. filename: ele.policyNumber,
  1469. fileurl: res.data,
  1470. });
  1471. } else {
  1472. this.$message.error(res.msg);
  1473. }
  1474. });
  1475. });
  1476. }
  1477. break;
  1478. default:
  1479. }
  1480. }
  1481. let obj = {
  1482. oldfileList: this.oldfileList,
  1483. businessList,
  1484. accidentList
  1485. }
  1486. this.$refs.detailsDialog.warrantyFun(obj);
  1487. }
  1488. this.feeDetailInfo = res.data.orderFeeResult;
  1489. this.oldFeeInfo = res.data.adjustFeeDescVo;
  1490. this.adjustFeeDescInfo = { ...this.oldFeeInfo }
  1491. // this.quotedetailsdialogVisible = true;
  1492. this.$refs.detailsDialog.setBackupVisible(true);
  1493. } else {
  1494. this.$message.error("订单获取失败");
  1495. }
  1496. });
  1497. },
  1498. // 设置每页条数
  1499. applyhandleSizeChange(val) {
  1500. this.pageSize = val;
  1501. this.pageNum = 1;
  1502. this.pageRequest.pageNum = 1;
  1503. this.pageRequest.pageSize = val;
  1504. this.findPage();
  1505. },
  1506. // 当前页
  1507. applyhandleCurrentChange(val) {
  1508. this.pageNum = val;
  1509. this.pageRequest.pageNum = val;
  1510. this.findPage();
  1511. },
  1512. handleRowChange(row) {
  1513. if (!row.expanded) {
  1514. this.$api.letter.querySonOrders({ orderNo: row.orderno }).then(res => {
  1515. if (res.code == '200' && res.data.length != 0) {
  1516. this.pageResult.map(item => {
  1517. if (item.orderno === row.orderno) {
  1518. item.insAreaCompanyList = res.data;
  1519. }
  1520. return item;
  1521. })
  1522. row.expanded = !row.expanded;
  1523. this.$refs.expandTable.toggleRowExpansion(row, row.expanded);
  1524. } else {
  1525. this.$message.info("暂无数据");
  1526. }
  1527. })
  1528. } else {
  1529. row.expanded = !row.expanded;
  1530. this.$refs.expandTable.toggleRowExpansion(row, row.expanded);
  1531. }
  1532. },
  1533. //数据
  1534. findPage() {
  1535. this.loading = true;
  1536. this.$api.task.queryPageOrder(this.pageRequest).then((res) => {
  1537. if (res.code == "200") {
  1538. this.loading = false;
  1539. this.pageResult = res.data.content;
  1540. this.pageNum = res.data.pageNum;
  1541. this.totalSize = res.data.totalSize;
  1542. this.pageResult.forEach(val => {
  1543. this.$set(val, "expanded", false);
  1544. });
  1545. } else {
  1546. this.loading = false;
  1547. }
  1548. })
  1549. },
  1550. //查询
  1551. onSubmit() {
  1552. this.pageRequest.pageNum = 1;
  1553. this.pageRequest.pageSize = 20;
  1554. this.findPage();
  1555. },
  1556. //时间js
  1557. monthChange(e) {
  1558. if (e === null) {
  1559. this.pageRequest.startDate = e;
  1560. this.pageRequest.endDate = e;
  1561. } else {
  1562. this.pageRequest.startDate = e[0];
  1563. this.pageRequest.endDate = e[1];
  1564. }
  1565. },
  1566. }
  1567. }
  1568. </script>
  1569. <style lang="scss" scoped>
  1570. /deep/ {
  1571. .el-table .row-expand-cover .cell .el-table__expand-icon {
  1572. display: none;
  1573. }
  1574. .el-descriptions__body {
  1575. padding: 10px 50px;
  1576. box-sizing: border-box;
  1577. color: rgb(226, 118, 10);
  1578. }
  1579. .el-descriptions-item__label {
  1580. &:not(.is-bordered-label) {
  1581. color: #333;
  1582. }
  1583. }
  1584. .saomazhifucodeClass .el-dialog__body,
  1585. .saomazhifucodeClass .el-dialog__header {
  1586. padding: 0;
  1587. }
  1588. .el-input.is-disabled .el-input__inner {
  1589. color: #333;
  1590. }
  1591. }
  1592. .ORcodebody {
  1593. width: 100%;
  1594. height: auto;
  1595. box-sizing: border-box;
  1596. }
  1597. .code_title {
  1598. width: 100%;
  1599. height: 50px;
  1600. background-color: #fdcb08;
  1601. justify-content: center;
  1602. }
  1603. .code_title>span {
  1604. font-size: 22px;
  1605. color: #000;
  1606. font-weight: bold;
  1607. }
  1608. .ORcode {
  1609. width: 100%;
  1610. background: #fff;
  1611. height: auto;
  1612. display: flex;
  1613. justify-content: center;
  1614. align-items: center;
  1615. padding: 30px;
  1616. box-sizing: border-box;
  1617. border-bottom: 6px dotted #fdcb08;
  1618. }
  1619. .ORcode>div {
  1620. width: 180px;
  1621. height: 180px;
  1622. border: 1px solid #000;
  1623. border-radius: 5px;
  1624. }
  1625. .ORtitle {
  1626. background: #fff;
  1627. width: 100%;
  1628. padding: 20px;
  1629. box-sizing: border-box;
  1630. border-bottom: 1px solid #f2f2f2;
  1631. }
  1632. .ORtitle>div {
  1633. width: 100%;
  1634. margin: 10px 0;
  1635. font-weight: bold;
  1636. font-size: 14px;
  1637. display: flex;
  1638. align-items: center;
  1639. }
  1640. .ORtitle>div>span:nth-child(1) {
  1641. color: #979797;
  1642. text-align: end;
  1643. width: 150px;
  1644. }
  1645. .ORtitle>div>span:nth-child(2) {
  1646. color: #000;
  1647. margin-left: 10px;
  1648. }
  1649. </style>
  1650. <style scoped>
  1651. #qqq {
  1652. background-color: #111;
  1653. width: 300px;
  1654. height: 300px;
  1655. margin: 0 auto;
  1656. /*水平居中*/
  1657. position: relative;
  1658. }
  1659. #qrCode {
  1660. display: inline-block;
  1661. margin: 0 auto;
  1662. /*水平居中*/
  1663. position: relative;
  1664. top: 15%;
  1665. }
  1666. #qrCode img {
  1667. width: 200px;
  1668. height: 200px;
  1669. background-color: #fff;
  1670. padding: 6px;
  1671. }
  1672. .leftContainer {
  1673. width: 80px;
  1674. position: fixed;
  1675. top: 79px;
  1676. left: 30px;
  1677. }
  1678. .leftContainer .el-col {
  1679. width: 80px;
  1680. height: 80px;
  1681. border-bottom: 1px solid #4d5c6f;
  1682. background: #526176;
  1683. cursor: pointer;
  1684. color: #a6aeb9;
  1685. border-radius: 0;
  1686. }
  1687. .leftContainer .el-col a {
  1688. display: block;
  1689. color: #a6aeb9;
  1690. text-decoration: none;
  1691. }
  1692. .leftContainer .el-col a:hover {
  1693. color: #fff;
  1694. }
  1695. .leftContainer .el-col a.active {
  1696. color: #fff;
  1697. }
  1698. .leftContainer .el-col i {
  1699. font-size: 30px;
  1700. margin: 15px 0px 5px;
  1701. }
  1702. .rightContainer {
  1703. width: calc(100vw - 160px);
  1704. margin-left: 100px;
  1705. }
  1706. .rightContainer .header .el-col {
  1707. font-size: 18px;
  1708. font-weight: bold;
  1709. }
  1710. .rightContainer .bodyTitle {
  1711. height: 40px;
  1712. background: #f3f3f3;
  1713. border: 1px solid #dddddd;
  1714. }
  1715. .rightContainer .bodyTitle>label {
  1716. margin: 0px 15px;
  1717. font-weight: bold;
  1718. }
  1719. .rightContainer #demo2 .body,
  1720. .rightContainer #demo6 .body {
  1721. border: 1px solid #ddd;
  1722. padding: 15px;
  1723. border-top: none;
  1724. }
  1725. .rightContainer .el-card {
  1726. margin-bottom: 15px;
  1727. }
  1728. .body .el-row .el-col label {
  1729. text-align: right;
  1730. width: 80px;
  1731. font-size: 14px;
  1732. width: 100%;
  1733. line-height: 36px;
  1734. display: inline-block;
  1735. box-sizing: border-box;
  1736. }
  1737. .disabledInput {
  1738. width: 80% !important;
  1739. background-color: #f5f7fa;
  1740. text-align: center !important;
  1741. max-width: 200px;
  1742. border: 1px solid #e4e7ed;
  1743. color: #c0c4cc;
  1744. cursor: not-allowed;
  1745. border-radius: 4px;
  1746. box-sizing: border-box;
  1747. padding: 0px 10px;
  1748. height: 36px;
  1749. margin: 20px 10%;
  1750. }
  1751. /* 上传图片样式Start */
  1752. .avatar-uploader .el-upload {
  1753. border: 1px dashed #d9d9d9;
  1754. border-radius: 6px;
  1755. cursor: pointer;
  1756. position: relative;
  1757. overflow: hidden;
  1758. }
  1759. .avatar-uploader .el-upload:hover {
  1760. border-color: #409eff;
  1761. }
  1762. .avatar-uploader-icon {
  1763. font-size: 28px;
  1764. color: #8c939d;
  1765. width: 100px;
  1766. height: 100px;
  1767. line-height: 100px;
  1768. text-align: center;
  1769. border: 1px dashed #d9d9d9;
  1770. }
  1771. .avatar {
  1772. border: 1px dashed #d9d9d9;
  1773. padding: 5px;
  1774. border-radius: 6px;
  1775. width: 100px;
  1776. height: 100px;
  1777. display: block;
  1778. }
  1779. .imageStyle {
  1780. display: inline-block;
  1781. width: 100px;
  1782. height: 100px;
  1783. box-shadow: #ddd 0px 0px 5px;
  1784. margin-right: 20px;
  1785. }
  1786. /* 上传图片样式End */
  1787. .dis {
  1788. display: flex;
  1789. }
  1790. .align {
  1791. align-items: center;
  1792. }
  1793. .jus {
  1794. justify-content: space-between;
  1795. }
  1796. .display {
  1797. display: flex;
  1798. justify-content: center;
  1799. align-items: center;
  1800. padding: 10px;
  1801. box-sizing: border-box;
  1802. }
  1803. .block {
  1804. margin-top: 10px;
  1805. }
  1806. .page {
  1807. padding: 14px;
  1808. box-sizing: border-box;
  1809. }
  1810. .el-select--medium {
  1811. vertical-align: bottom !important;
  1812. }
  1813. .widths {
  1814. width: 220px;
  1815. }
  1816. .demo-table-expand {
  1817. width: 100%;
  1818. height: auto;
  1819. padding: 10px 50px;
  1820. font-size: 14px;
  1821. }
  1822. .demo-table-expand-time {
  1823. width: 600px;
  1824. }
  1825. .demo-table-expand-time>div {
  1826. margin: 0 10px;
  1827. }
  1828. .icon-img {
  1829. display: block;
  1830. width: 30px;
  1831. height: 30px;
  1832. }
  1833. .Enclosure {
  1834. width: 100%;
  1835. background-color: #fff;
  1836. padding: 20px;
  1837. box-sizing: border-box;
  1838. margin-bottom: 15px;
  1839. border-radius: 6px;
  1840. border: 1px solid #ebeef5;
  1841. transition: all 0.2s ease-in-out;
  1842. box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  1843. }
  1844. .headers {
  1845. display: flex;
  1846. align-items: center;
  1847. justify-content: space-between;
  1848. flex-wrap: wrap;
  1849. margin: 5px 0;
  1850. font-weight: bold;
  1851. color: #333;
  1852. }
  1853. /* 内容待定 */
  1854. .headers_Custom>div {
  1855. padding: 20px 40px;
  1856. font-size: 16px;
  1857. }
  1858. .headers_Custom>div>span {
  1859. color: rgb(226, 118, 10);
  1860. }
  1861. .back {
  1862. color: #303133;
  1863. font-weight: 700;
  1864. }
  1865. .u-f-ac {
  1866. -webkit-box-align: center;
  1867. align-items: center;
  1868. /* padding: 10px; */
  1869. }
  1870. .bodyTitle {
  1871. height: 40px;
  1872. background: #f3f3f3;
  1873. border: 1px solid #dddddd;
  1874. line-height: 40px;
  1875. padding: 0 20px;
  1876. box-sizing: border-box;
  1877. }
  1878. .bjdbody {
  1879. width: 100%;
  1880. height: auto;
  1881. background-color: rgb(199, 20, 45);
  1882. padding: 20px 10px 0 10px;
  1883. box-sizing: border-box;
  1884. border-radius: 8px;
  1885. }
  1886. .bjdCarMessage,
  1887. .bjdCarSum {
  1888. width: 100%;
  1889. height: auto;
  1890. background-color: #fff;
  1891. border-radius: 8px;
  1892. margin-bottom: 10px;
  1893. padding-bottom: 10px;
  1894. }
  1895. .bjdfooter {
  1896. border-top: 1px solid #fff;
  1897. padding: 10px;
  1898. box-sizing: border-box;
  1899. color: #fff;
  1900. }
  1901. .bjdCarSum>div {
  1902. width: 100%;
  1903. padding: 15px 20px;
  1904. box-sizing: border-box;
  1905. font-weight: bold;
  1906. color: #000;
  1907. border-bottom: 1px solid #f2f2f2;
  1908. }
  1909. .bjdCarMessage1 {
  1910. height: 80px;
  1911. padding: 16px;
  1912. box-sizing: border-box;
  1913. border-bottom: 1px solid #f2f2f2;
  1914. display: flex;
  1915. align-items: center;
  1916. color: #000;
  1917. }
  1918. .bjdCarMessage1>.f-c>span:nth-child(1) {
  1919. font-size: 18px;
  1920. font-weight: bold;
  1921. }
  1922. .bjdCarMessage1>img,
  1923. .bjdfooter>img {
  1924. margin-right: 30px;
  1925. }
  1926. .bjdCarMessage1 .f-c>span:nth-child(2),
  1927. .bjdCarMessage1 .f-c>span:nth-child(3) {
  1928. font-size: 12px;
  1929. margin-top: 5px;
  1930. }
  1931. .bjdCarMessage2_car>span:nth-child(1) {
  1932. color: #000;
  1933. font-weight: bold;
  1934. }
  1935. .bjdCarMessage2_car>span:nth-child(2) {
  1936. color: #999;
  1937. }
  1938. .bjdCarMessage2>ul>li {
  1939. margin: 20px 0;
  1940. }
  1941. .Risk {
  1942. width: 100%;
  1943. height: auto;
  1944. display: flex;
  1945. flex-direction: column;
  1946. align-items: center;
  1947. font-size: 12px;
  1948. }
  1949. .Risk_title {
  1950. width: 100%;
  1951. height: 40px;
  1952. }
  1953. .Risk_title>div {
  1954. background: rgb(199, 20, 45);
  1955. color: rgb(255, 255, 255);
  1956. height: 100%;
  1957. font-weight: 500;
  1958. width: 33.3%;
  1959. padding: 10px 20px;
  1960. box-sizing: border-box;
  1961. border: #fff solid 1px;
  1962. display: flex;
  1963. justify-content: center;
  1964. align-items: center;
  1965. border-bottom: none;
  1966. }
  1967. .Risk_title>div:nth-child(2) {
  1968. border-left: none;
  1969. border-right: none;
  1970. }
  1971. .Risk_data {
  1972. width: 100%;
  1973. height: 40px;
  1974. }
  1975. .Risk_data>div {
  1976. background: #fbf6f7;
  1977. color: rgb(51, 51, 51);
  1978. height: 100%;
  1979. font-weight: 500;
  1980. width: 33.3%;
  1981. padding: 10px 20px;
  1982. box-sizing: border-box;
  1983. border: #fff solid 1px;
  1984. display: flex;
  1985. justify-content: center;
  1986. align-items: center;
  1987. border-bottom: none;
  1988. }
  1989. .Risk_data>div :nth-child(2) {
  1990. border-left: none;
  1991. border-right: none;
  1992. }
  1993. .Risk_title>div :nth-child(3) {
  1994. border-top-right-radius: 10px;
  1995. }
  1996. .jyxStyle>span {
  1997. display: inline-block;
  1998. text-align: center;
  1999. }
  2000. .FeeEnclosure /deep/ table {
  2001. width: 100% !important;
  2002. }
  2003. .FeeEnclosure /deep/ .cell {
  2004. text-align: center;
  2005. }
  2006. .FeeEnclosure /deep/ .el-table__empty-block {
  2007. width: 100% !important;
  2008. }
  2009. .FeeEnclosure .feeadjust-input {
  2010. width: 35%;
  2011. height: 20px;
  2012. font-size: 13px;
  2013. }
  2014. </style>