index.vue 49 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226
  1. <template>
  2. <PageMain class="vh100">
  3. <el-tabs v-model="activeName" class="demo-tabs h-full" @tab-click="handleTabsClick">
  4. <el-tab-pane label="车险应收" name="1" class="h-full">
  5. <el-form v-model="receivableForm" label-width="100">
  6. <el-row :gutter="20">
  7. <el-col :span="8">
  8. <el-form-item label="车牌号">
  9. <el-input v-model="receivableForm.licenseNo" placeholder="请输入" clearable></el-input>
  10. </el-form-item>
  11. </el-col>
  12. <el-col :span="8">
  13. <el-form-item label="保险公司">
  14. <el-select v-model="receivableForm.companyId" placeholder="请选择" clearable filterable>
  15. <el-option v-for="item in companyList" :key="item.id" :value="item.id" :label="item.name"></el-option>
  16. </el-select>
  17. </el-form-item>
  18. </el-col>
  19. <el-col :span="8">
  20. <el-form-item label="签单时间">
  21. <el-date-picker v-model="receivableForm.signingTime" type="daterange" range-separator="至"
  22. start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
  23. </el-form-item>
  24. </el-col>
  25. <el-col :span="8">
  26. <el-form-item label="订单号">
  27. <el-input v-model="receivableForm.orderNo" placeholder="请输入" clearable></el-input>
  28. </el-form-item>
  29. </el-col>
  30. <el-col :span="8">
  31. <el-form-item label="出单协议">
  32. <el-select v-model="receivableForm.agreementId" placeholder="请选择" clearable filterable>
  33. <el-option v-for="item in agreementList" :key="item.id" :value="item.id"
  34. :label="item.agreementTitle"></el-option>
  35. </el-select>
  36. </el-form-item>
  37. </el-col>
  38. <el-col :span="8">
  39. <el-form-item label="出单机构">
  40. <el-cascader style="width: 100%" v-model="receivableForm.deptId" placeholder="请选择" :options="deptOption"
  41. :props="cascaderProps" clearable></el-cascader>
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="8">
  45. <el-form-item label="险种">
  46. <el-select v-model="receivableForm.riskCode" placeholder="请选择" clearable>
  47. <el-option v-for="(item, index) in insuranceType" :label="item.label" :value="item.label"></el-option>
  48. </el-select>
  49. </el-form-item>
  50. </el-col>
  51. <el-col :span="8">
  52. <el-form-item label="订单类型">
  53. <el-select v-model="receivableForm.orderType" placeholder="请选择" clearable>
  54. <el-option label="车险录入" value="1"></el-option>
  55. <el-option label="代客录单" value="2"></el-option>
  56. <el-option label="外部订单" value="3"></el-option>
  57. </el-select>
  58. </el-form-item>
  59. </el-col>
  60. <el-col v-show="isTrue" :span="8">
  61. <el-form-item label="被保人">
  62. <el-input v-model="receivableForm.insuredName" placeholder="请输入" clearable></el-input>
  63. </el-form-item>
  64. </el-col>
  65. <el-col :span="8">
  66. <el-form-item label="出单人类型">
  67. <el-select v-model="receivableForm.typeAttr" placeholder="请选择" clearable>
  68. <el-option label="团队" value="5"></el-option>
  69. <el-option label="个代" value="6"></el-option>
  70. <el-option label="渠道" value="7"></el-option>
  71. <el-option label="电销组" value="8"></el-option>
  72. </el-select>
  73. </el-form-item>
  74. </el-col>
  75. <el-col v-show="isTrue" :span="8">
  76. <el-form-item label="交强险保单号">
  77. <el-input v-model="receivableForm.jqPolicyNo" placeholder="请输入" clearable></el-input>
  78. </el-form-item>
  79. </el-col>
  80. <el-col v-show="isTrue" :span="8">
  81. <el-form-item label="商业险保单号">
  82. <el-input v-model="receivableForm.syPolicyNo" placeholder="请输入" clearable></el-input>
  83. </el-form-item>
  84. </el-col>
  85. <el-col v-show="isTrue" :span="8">
  86. <el-form-item label="对接人">
  87. <el-input v-model="receivableForm.dockingPerson" placeholder="请输入" clearable></el-input>
  88. </el-form-item>
  89. </el-col>
  90. <el-col v-show="isTrue" :span="8">
  91. <el-form-item label="交强起保时间">
  92. <el-date-picker v-model="receivableForm.jqDate" type="daterange" range-separator="至"
  93. start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
  94. </el-form-item>
  95. </el-col>
  96. <el-col v-show="isTrue" :span="8">
  97. <el-form-item label="商业起保时间">
  98. <el-date-picker v-model="receivableForm.syDate" type="daterange" range-separator="至"
  99. start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
  100. </el-form-item>
  101. </el-col>
  102. <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
  103. <el-button type="primary" @click="search">搜索</el-button>
  104. <el-button plain @click="reset">重置</el-button>
  105. <span class="icon_s">
  106. <span @click="isTrue = !isTrue">高级搜索</span>
  107. <el-icon class="is_icon" :class="{ 'is_down': isTrue }">
  108. <ArrowDown />
  109. </el-icon>
  110. </span>
  111. </el-col>
  112. </el-row>
  113. </el-form>
  114. <el-row :gutter="8" style="margin: 20px 0" class="flex a-c ">
  115. <span class="flex col-160 m-r-8 bg-F9">
  116. <el-checkbox class="p-w-12" @change="selectAll" v-model="selectAllValue"></el-checkbox>&nbsp;
  117. <el-select class="select-all width-100" placeholder="全选" v-model="selectType" @change="selectTypeChange">
  118. <el-option key="all" value="all" :label="`选中所有数据${total1}条`"></el-option>
  119. <el-option key="cur" value="cur" label="选中本页数据"></el-option>
  120. </el-select>
  121. </span>
  122. <div class="col-108 m-r-8">
  123. <el-button class="radius-2px width-100" type="primary" @click="addShow = true">添加应收</el-button>
  124. </div>
  125. <div class="col-108 m-r-8">
  126. <el-button class="radius-2px width-100" type="primary" @click="handleInvoiceSubmit">跟单费开票</el-button>
  127. </div>
  128. <div class="col-108 m-r-8">
  129. <el-button class="radius-2px width-100" type="primary" @click="handleExport(1)">导出</el-button>
  130. </div>
  131. <span class="col-108 m-r-8">
  132. <el-button class="radius-2px width-100" @click="handleBatchEdit">批量修改比例</el-button>
  133. </span>
  134. <span class="col-108 m-r-8">
  135. <el-dropdown class="width-100" trigger="click" placement="bottom" @command="dropdownCommand">
  136. <el-button class="radius-2px width-100">
  137. 批量管理&nbsp;&nbsp;<el-icon>
  138. <ArrowDown />
  139. </el-icon>
  140. </el-button>
  141. <template #dropdown>
  142. <el-dropdown-menu>
  143. <el-dropdown-item command="删除">删除</el-dropdown-item>
  144. </el-dropdown-menu>
  145. </template>
  146. </el-dropdown>
  147. </span>
  148. <span class="col-108 m-r-8">
  149. 已选: <span class="text-red">{{ selectedList.length }}</span> 条
  150. </span>
  151. <span>应收金额总计:¥{{ receivedAmountTotal || 0 }}</span>
  152. </el-row>
  153. <el-table :data="receiveData" :height="isTrue ? 'calc(100% - 396px)' : 'calc(100% - 296px)'"
  154. style="width: 100%; margin-top: 20px;" ref="ReceiveDataRef1" @select="handleSelectChange1"
  155. @select-all="handleSelectAll1">
  156. <el-table-column type="selection" width="50" fixed="left"></el-table-column>
  157. <el-table-column prop="signingTime" label="签单时间" width="150"></el-table-column>
  158. <el-table-column prop="orderNo" label="订单号" width="150"></el-table-column>
  159. <el-table-column prop="typeAttrName" label="出单人类型" width="120"></el-table-column>
  160. <el-table-column prop="companyName" label="保险公司" width="120"></el-table-column>
  161. <el-table-column prop="deptName" label="出单机构" width="120"></el-table-column>
  162. <el-table-column prop="agreementName" label="出单协议" width="150"></el-table-column>
  163. <el-table-column prop="invoiceStatusName" label="开票状态" width="100"></el-table-column>
  164. <el-table-column prop="orderType" label="订单类型" width="100"></el-table-column>
  165. <el-table-column prop="licenseNo" label="车牌号" width="100"></el-table-column>
  166. <el-table-column prop="otherCostsPremiums" label="应收跟单费" width="100"></el-table-column>
  167. <el-table-column prop="productName" label="险种" width="100"></el-table-column>
  168. <el-table-column prop="insuredPerson" label="被保人" width="100"></el-table-column>
  169. <el-table-column prop="jqPremium" label="交强险保费" width="100"></el-table-column>
  170. <el-table-column prop="taxPremium" label="车船税" width="100"></el-table-column>
  171. <el-table-column prop="jqOtherCostsProportion" label="交强险跟单费比例" width="100"></el-table-column>
  172. <el-table-column prop="jqOtherCostsPremiums" label="交强险跟单费" width="100"></el-table-column>
  173. <el-table-column prop="syPremium" label="商业险保费" width="100"></el-table-column>
  174. <el-table-column prop="syOtherCostsProportion" label="商业险跟单费比例" width="100"></el-table-column>
  175. <el-table-column prop="syOtherCostsPremiums" label="商业险跟单费" width="100"></el-table-column>
  176. <el-table-column prop="jyOtherCostsPremiums" label="驾意险跟单费" width="100"></el-table-column>
  177. <el-table-column prop="jqPolicyNo" label="交强险保单号" width="150"></el-table-column>
  178. <el-table-column prop="syPolicyNo" label="商业险保单号" width="150"></el-table-column>
  179. <el-table-column prop="jqStartDate" label="交强险起保日期" width="150"></el-table-column>
  180. <el-table-column prop="syStartDate" label="商业险起保日期" width="150"></el-table-column>
  181. <el-table-column prop="updateBy" label="修改人" width="100"></el-table-column>
  182. <el-table-column prop="createTime" label="创建时间" width="150"></el-table-column>
  183. <el-table-column prop="dockingPerson" label="对接人" width="100"></el-table-column>
  184. <el-table-column label="操作" width="120" fixed="right">
  185. <template #default="scope">
  186. <el-button link type="primary" @click="toEdit(scope.row)">编辑</el-button>
  187. <el-button link type="primary" @click="toDelete([scope.row.id])">删除</el-button>
  188. </template>
  189. </el-table-column>
  190. </el-table>
  191. <div class="pagination">
  192. <el-pagination v-model:current-page="pages" v-model:page-size="size" :page-sizes="[10, 20, 30, 40]"
  193. layout="total, sizes, prev, pager, next, jumper" :total="total1" @size-change="handleSizeChange"
  194. @current-change="handleCurrentChange"></el-pagination>
  195. </div>
  196. </el-tab-pane>
  197. <el-tab-pane label="非车险应收" name="2" class="h-full">
  198. <el-form v-model="receivableForm" label-width="100">
  199. <el-row :gutter="20">
  200. <el-col :span="8">
  201. <el-form-item label="车牌号">
  202. <el-input v-model="receivableForm.licenseNo" placeholder="请输入" clearable></el-input>
  203. </el-form-item>
  204. </el-col>
  205. <el-col :span="8">
  206. <el-form-item label="保险公司">
  207. <el-select v-model="receivableForm.companyId" placeholder="请选择" clearable filterable>
  208. <el-option v-for="item in companyList" :key="item.companyCode" :value="item.companyCode"
  209. :label="item.name"></el-option>
  210. </el-select>
  211. </el-form-item>
  212. </el-col>
  213. <el-col :span="8">
  214. <el-form-item label="签单时间">
  215. <el-date-picker v-model="receivableForm.signingTime" type="daterange" range-separator="至"
  216. start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
  217. </el-form-item>
  218. </el-col>
  219. <el-col :span="8">
  220. <el-form-item label="订单号">
  221. <el-input v-model="receivableForm.orderNo" placeholder="请输入" clearable></el-input>
  222. </el-form-item>
  223. </el-col>
  224. <el-col :span="8">
  225. <el-form-item label="出单协议">
  226. <el-select v-model="receivableForm.agreementId" placeholder="请选择" clearable filterable>
  227. <el-option v-for="item in agreementList" :key="item.id" :value="item.id"
  228. :label="item.agreementTitle"></el-option>
  229. </el-select>
  230. </el-form-item>
  231. </el-col>
  232. <el-col :span="8">
  233. <el-form-item label="出单机构">
  234. <el-cascader style="width: 100%" v-model="receivableForm.deptId" placeholder="请选择" :options="deptOption"
  235. :props="cascaderProps" clearable></el-cascader>
  236. </el-form-item>
  237. </el-col>
  238. <el-col :span="8">
  239. <el-form-item label="险种">
  240. <el-select v-model="receivableForm.riskCode" placeholder="请选择" clearable>
  241. <el-option v-for="(item, index) in insuranceType" :label="item.label" :value="item.label"></el-option>
  242. </el-select>
  243. </el-form-item>
  244. </el-col>
  245. <el-col :span="8">
  246. <el-form-item label="订单类型">
  247. <el-select v-model="receivableForm.orderType" placeholder="请选择" clearable>
  248. <el-option label="车险录入" value="1"></el-option>
  249. <el-option label="代客录单" value="2"></el-option>
  250. <el-option label="外部订单" value="3"></el-option>
  251. </el-select>
  252. </el-form-item>
  253. </el-col>
  254. <el-col v-show="isTrue" :span="8">
  255. <el-form-item label="被保人">
  256. <el-input v-model="receivableForm.insuredName" placeholder="请输入" clearable></el-input>
  257. </el-form-item>
  258. </el-col>
  259. <el-col :span="8">
  260. <el-form-item label="出单人类型">
  261. <el-select v-model="receivableForm.typeAttr" placeholder="请选择" clearable>
  262. <el-option label="团队" value="5"></el-option>
  263. <el-option label="个代" value="6"></el-option>
  264. <el-option label="渠道" value="7"></el-option>
  265. <el-option label="电销组" value="8"></el-option>
  266. </el-select>
  267. </el-form-item>
  268. </el-col>
  269. <el-col v-show="isTrue" :span="8">
  270. <el-form-item label="交强险保单号">
  271. <el-input v-model="receivableForm.jqPolicyNo" placeholder="请输入" clearable></el-input>
  272. </el-form-item>
  273. </el-col>
  274. <el-col v-show="isTrue" :span="8">
  275. <el-form-item label="商业险保单号">
  276. <el-input v-model="receivableForm.syPolicyNo" placeholder="请输入" clearable></el-input>
  277. </el-form-item>
  278. </el-col>
  279. <el-col v-show="isTrue" :span="8">
  280. <el-form-item label="对接人">
  281. <el-input v-model="receivableForm.dockingPerson" placeholder="请输入" clearable></el-input>
  282. </el-form-item>
  283. </el-col>
  284. <el-col v-show="isTrue" :span="8">
  285. <el-form-item label="交强起保时间">
  286. <el-date-picker v-model="receivableForm.jqDate" type="daterange" range-separator="至"
  287. start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
  288. </el-form-item>
  289. </el-col>
  290. <el-col v-show="isTrue" :span="8">
  291. <el-form-item label="商业起保时间">
  292. <el-date-picker v-model="receivableForm.syDate" type="daterange" range-separator="至"
  293. start-placeholder="开始时间" end-placeholder="结束时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
  294. </el-form-item>
  295. </el-col>
  296. <el-col :span="24" style="display: flex; align-items: center; justify-content: flex-end">
  297. <el-button type="primary" @click="search">搜索</el-button>
  298. <el-button plain @click="reset">重置</el-button>
  299. <span class="icon_s">
  300. <span @click="isTrue = !isTrue">高级搜索</span>
  301. <el-icon class="is_icon" :class="{ 'is_down': isTrue }">
  302. <ArrowDown />
  303. </el-icon>
  304. </span>
  305. </el-col>
  306. </el-row>
  307. </el-form>
  308. <el-row :gutter="8" style="margin: 20px 0" class="flex a-c ">
  309. <span class="flex col-160 m-r-8 bg-F9">
  310. <el-checkbox class="p-w-12" @change="selectAll" v-model="selectAllValue"></el-checkbox>&nbsp;
  311. <el-select class="select-all width-100" placeholder="全选" v-model="selectType" @change="selectTypeChange">
  312. <el-option key="all" value="all" :label="`选中所有数据${total2}条`"></el-option>
  313. <el-option key="cur" value="cur" label="选中本页数据"></el-option>
  314. </el-select>
  315. </span>
  316. <div class="col-108 m-r-8">
  317. <el-button class="radius-2px width-100" type="primary" @click="addShow = true">添加应收</el-button>
  318. </div>
  319. <div class="col-108 m-r-8">
  320. <el-button class="radius-2px width-100" type="primary" @click="handleInvoiceSubmit">跟单费开票</el-button>
  321. </div>
  322. <div class="col-108 m-r-8">
  323. <el-button class="radius-2px width-100" type="primary" @click="dropdownCommand('删除')">删除</el-button>
  324. </div>
  325. <div class="col-108 m-r-8">
  326. <el-button class="radius-2px width-100" type="primary" @click="handleExport(2)">导出</el-button>
  327. </div>
  328. <span class="col-108 m-r-8">
  329. <el-button class="radius-2px width-100" @click="handleBatchEdit">批量修改比例</el-button>
  330. </span>
  331. <span class="col-108 m-r-8">
  332. 已选: <span class="text-red">{{ selectedList.length }}</span> 条
  333. </span>
  334. </el-row>
  335. <el-table :data="receiveData" :height="isTrue ? 'calc(100% - 396px)' : 'calc(100% - 296px)'"
  336. style="width: 100%; margin-top: 20px;" ref="ReceiveDataRef2" @select="handleSelectChange2"
  337. @select-all="handleSelectAll2">
  338. <el-table-column type="selection" width="50" fixed="left"></el-table-column>
  339. <el-table-column prop="signingTime" label="签单时间" width="150"></el-table-column>
  340. <el-table-column prop="orderNo" label="订单号" width="150"></el-table-column>
  341. <el-table-column prop="typeAttrName" label="出单人类型" width="120"></el-table-column>
  342. <el-table-column prop="companyName" label="保险公司" width="120"></el-table-column>
  343. <el-table-column prop="deptName" label="出单机构" width="120"></el-table-column>
  344. <el-table-column prop="agreementName" label="出单协议" width="150"></el-table-column>
  345. <el-table-column prop="invoiceStatusName" label="开票状态" width="100"></el-table-column>
  346. <el-table-column prop="orderType" label="订单类型" width="100"></el-table-column>
  347. <el-table-column prop="licenseNo" label="车牌号" width="100"></el-table-column>
  348. <el-table-column prop="otherCostsPremiums" label="应收跟单费" width="100"></el-table-column>
  349. <el-table-column prop="productName" label="险种" width="100"></el-table-column>
  350. <el-table-column prop="insuredPerson" label="被保人" width="100"></el-table-column>
  351. <el-table-column prop="jyPremium" label="非车险保费" width="100"></el-table-column>
  352. <!-- <el-table-column prop="a" label="非车险不含税保费" width="100"></el-table-column>-->
  353. <el-table-column prop="jyOtherCostsProportion" label="非车险跟单费比例" width="100"></el-table-column>
  354. <el-table-column prop="jyPolicyNo" label="非车险保单号" width="100"></el-table-column>
  355. <el-table-column prop="jqStartDate" label="交强险起保日期" width="150"></el-table-column>
  356. <el-table-column prop="syStartDate" label="商业险起保日期" width="150"></el-table-column>
  357. <el-table-column prop="updateBy" label="修改人" width="100"></el-table-column>
  358. <el-table-column prop="createTime" label="创建时间" width="150"></el-table-column>
  359. <el-table-column label="操作" width="180" fixed="right">
  360. <template #default="scope">
  361. <div style="display: flex; align-items: center; justify-content: center">
  362. <el-button link type="primary" @click="toDelete([scope.row.id])">删除</el-button>
  363. <el-button link type="primary" @click="toEdit(scope.row)">编辑</el-button>
  364. <el-dropdown trigger="click" placement="bottom" @command="dropdownCommand">
  365. <el-button link type="primary">
  366. 更多
  367. </el-button>
  368. <template #dropdown>
  369. <el-dropdown-menu>
  370. <el-dropdown-item command="数据导入">数据导入</el-dropdown-item>
  371. </el-dropdown-menu>
  372. </template>
  373. </el-dropdown>
  374. </div>
  375. </template>
  376. </el-table-column>
  377. </el-table>
  378. <div class="pagination">
  379. <el-pagination v-model:current-page="pages" v-model:page-size="size" :page-sizes="[10, 20, 30, 40]"
  380. layout="total, sizes, prev, pager, next, jumper" :total="total2" @size-change="handleSizeChange"
  381. @current-change="handleCurrentChange"></el-pagination>
  382. </div>
  383. </el-tab-pane>
  384. </el-tabs>
  385. <el-dialog :close-on-click-modal="false" v-model="addShow" width="800" title="添加应收">
  386. <div class="add-content">
  387. <el-input v-model="addSearchValue" style="max-width: 500px" :placeholder="`请输入${placeholder}`"
  388. class="input-with-select">
  389. <template #prepend>
  390. <el-select v-model="addSelectType" placeholder="请选择" style="width: 120px"
  391. @change="handleAddSelectTypeChange">
  392. <el-option label="订单号查询" value="1" />
  393. <el-option label="交强险保单号查询" value="2" />
  394. <el-option label="商业险保单号查询" value="3" />
  395. </el-select>
  396. </template>
  397. <template #append>
  398. <el-button type="primary" @click="getUnauditedOrder">搜索</el-button>
  399. </template>
  400. </el-input>
  401. <el-table :data="selectingData" style="width: 100%;">
  402. <el-table-column prop="a" label="费用状态" width="100"></el-table-column>
  403. <el-table-column prop="signingTime" label="签单时间" width="120"></el-table-column>
  404. <el-table-column prop="licenseNo" label="车牌号" width="120"></el-table-column>
  405. <el-table-column prop="jqPolicyNo" label="交强保单号" width="120"></el-table-column>
  406. <el-table-column prop="syPolicyNo" label="商业保单号" width="120"></el-table-column>
  407. <el-table-column prop="jqPremium" label="交强保费" width="100"></el-table-column>
  408. <el-table-column prop="jqSuperviseCostsProportion" label="交强手续费比例" width="100"></el-table-column>
  409. <el-table-column prop="syPremium" label="商业保费" width="100"></el-table-column>
  410. <el-table-column prop="sySuperviseCostsProportion" label="商业手续费比例" width="100"></el-table-column>
  411. <el-table-column prop="a" label="应收金额" width="100"></el-table-column>
  412. <el-table-column label="操作" fixed="right" width="100">
  413. <template #default="scope">
  414. <el-button link type="primary" @click="handleToAdd(scope.row)">添加</el-button>
  415. </template>
  416. </el-table-column>
  417. </el-table>
  418. <p>已添加的应收单据</p>
  419. <el-table :data="selectedData" style="width: 100%;">
  420. <el-table-column prop="a" label="费用状态" width="100"></el-table-column>
  421. <el-table-column prop="signingTime" label="签单时间" width="120"></el-table-column>
  422. <el-table-column prop="licenseNo" label="车牌号" width="120"></el-table-column>
  423. <el-table-column prop="jqPolicyNo" label="交强保单号" width="120"></el-table-column>
  424. <el-table-column prop="syPolicyNo" label="商业保单号" width="120"></el-table-column>
  425. <el-table-column prop="jqPremium" label="交强保费" width="100"></el-table-column>
  426. <el-table-column prop="jqSuperviseCostsProportion" label="交强手续费比例" width="100"></el-table-column>
  427. <el-table-column prop="syPremium" label="商业保费" width="100"></el-table-column>
  428. <el-table-column prop="sySuperviseCostsProportion" label="商业手续费比例" width="100"></el-table-column>
  429. <el-table-column prop="a" label="应收金额" width="100"></el-table-column>
  430. <el-table-column label="操作" fixed="right" width="100">
  431. <template #default="scope">
  432. <el-button link type="primary" @click="handleDel(scope.row)">删除</el-button>
  433. </template>
  434. </el-table-column>
  435. </el-table>
  436. </div>
  437. <template #footer>
  438. <el-button class="border-[#0083FF] color-[#0083FF]" plain @click="addShow = false">取消</el-button>
  439. <el-button type="primary" @click="handleAddSubmit">确定</el-button>
  440. </template>
  441. </el-dialog>
  442. <el-dialog :close-on-click-modal="false" v-model="batchShow" width="800"
  443. :title="`选中修改(已选${selectedData.length}条数据)`">
  444. <div style="display: flex; align-items: center; justify-content: center; margin-bottom: 10px">
  445. 下载「标准导入模板」,编辑后上传;系统将自动匹配相关字段
  446. <el-button link type="primary">下载模板</el-button>
  447. </div>
  448. <el-upload class="upload-demo" drag accept=".xls, .xlsx" :auto-upload="false" @change="uploadFile">
  449. <el-icon class="el-icon--upload"><upload-filled /></el-icon>
  450. <div class="el-upload__text">
  451. 点击或将文件拖拽到这里上传
  452. </div>
  453. <a style="color: #999; font-size: 12px">目前支持的文件类型为*.xls, *.xlsx</a>
  454. </el-upload>
  455. </el-dialog>
  456. <el-dialog :close-on-click-modal="false" v-model="invoiceShow" width="600" title="提示">
  457. <el-radio-group v-model="invoiceRadio">
  458. <el-radio :value="item.id" v-for="(item, index) in options">{{ item.name }}</el-radio>
  459. </el-radio-group>
  460. <template #footer>
  461. <el-button class="border-[#0083FF] color-[#0083FF]" plain @click="invoiceShow = false">取消</el-button>
  462. <el-button type="primary" @click="handleInvoiceSubmit">确定</el-button>
  463. </template>
  464. </el-dialog>
  465. <el-dialog :close-on-click-modal="false" title="批量修改" v-model="batchEditShow" width="700">
  466. <el-tabs v-model="subActiveName" class="demo-tabs">
  467. <el-tab-pane label="User" name="first">
  468. <template #label>选中修改({{ selectedList.length }})</template>
  469. <el-form :model="editForm">
  470. <el-radio v-model="feeRate">手续费比例</el-radio>
  471. <el-row :gutter="20">
  472. <el-col :span="12">
  473. <el-form-item label="交强险手续费比例">
  474. <el-input v-model="editForm.jqInsurance">
  475. <template #append>%</template>
  476. </el-input>
  477. </el-form-item>
  478. </el-col>
  479. <el-col :span="12">
  480. <el-form-item label="商业险手续费比例">
  481. <el-input v-model="editForm.syInsurance">
  482. <template #append>%</template>
  483. </el-input>
  484. </el-form-item>
  485. </el-col>
  486. </el-row>
  487. <el-radio v-model="signTime">签单时间</el-radio>
  488. <el-row :gutter="20">
  489. <el-col :span="12">
  490. <el-form-item label="">
  491. <el-date-picker v-model="editForm.signTime" type="datetime" format="YYYY-MM-DD HH:mm:ss"
  492. value-format="YYYY-MM-DD HH:mm:ss"></el-date-picker>
  493. </el-form-item>
  494. </el-col>
  495. </el-row>
  496. <el-radio v-model="people">对接人</el-radio>
  497. <el-row :gutter="20">
  498. <el-col :span="12">
  499. <el-form-item label="姓名">
  500. <el-input v-model="editForm.name"></el-input>
  501. </el-form-item>
  502. </el-col>
  503. <el-col :span="12">
  504. <el-form-item label="手机号">
  505. <el-input v-model="editForm.phone"></el-input>
  506. </el-form-item>
  507. </el-col>
  508. </el-row>
  509. </el-form>
  510. </el-tab-pane>
  511. <el-tab-pane label="Config" name="second">
  512. <template #label>导入修改</template>
  513. <div style="display: flex; align-items: center; justify-content: center; margin-bottom: 10px">
  514. 下载「标准导入模板」,编辑后上传;系统将自动匹配相关字段
  515. <el-button link type="primary" @click="downloadImportTemplate">下载模板</el-button>
  516. </div>
  517. <el-upload class="upload-demo" drag accept=".xls, .xlsx" :auto-upload="false" @change="uploadJYFile">
  518. <el-icon class="el-icon--upload"><upload-filled /></el-icon>
  519. <div class="el-upload__text">
  520. 点击或将文件拖拽到这里上传
  521. </div>
  522. <a style="color: #999; font-size: 12px">目前支持的文件类型为*.xls, *.xlsx</a>
  523. </el-upload>
  524. <div v-if="importModifyCallback">
  525. <div>
  526. 您将导入 <span style="color:#409eff;">{{ importModifyCallback?.failedNumber +
  527. importModifyCallback?.successNumber
  528. ||
  529. 0 }}
  530. </span> 条数据,其中 <span style="color:#409eff;">{{ importModifyCallback?.successNumber || 0 }} </span>
  531. 条正常导入;<span style="color: red;">{{ importModifyCallback?.failedNumber || 0 }}</span> 条不符合要求无法导入。
  532. </div>
  533. <el-button type="primary" link @click="downloadImportFailedData(importModifyCallback)">下载导入失败文件</el-button>
  534. </div>
  535. </el-tab-pane>
  536. </el-tabs>
  537. <template #footer>
  538. <el-button class="border-[#0083FF] color-[#0083FF]" plain @click="batchEditShow = false">取消</el-button>
  539. <el-button type="primary" @click="handleBatchEditSubmit()">确定</el-button>
  540. </template>
  541. </el-dialog>
  542. </PageMain>
  543. </template>
  544. <script setup lang="ts">
  545. import api from '@/api'
  546. import { ElMessage, ElMessageBox } from "element-plus";
  547. import { useRouter } from 'vue-router'
  548. let myRouter = useRouter()
  549. let activeName = ref('1')
  550. let subActiveName = ref('first')
  551. const receivedAmountTotal = ref(0)
  552. const handleTabsClick = (e) => {
  553. activeName.value = e.props.name
  554. if (e.props.name == '1') {
  555. getOtherReceivableList()
  556. getreceivedAmountTotal()
  557. } else if (e.props.name == '2') {
  558. getJyOtherReceivableList()
  559. }
  560. isTrue.value = false
  561. receivableForm.value = {}
  562. selectedList.value = []
  563. }
  564. let isTrue = ref(false)
  565. let receivableForm = ref({})
  566. const toDelete = (ids) => {
  567. ElMessageBox.confirm(
  568. '确定要删除吗',
  569. '删除应收订单',
  570. {
  571. confirmButtonText: '确定',
  572. type: 'error',
  573. center: true,
  574. confirmButtonClass: 'el-button--danger',
  575. }
  576. ).then(() => {
  577. api.financeApi.deleteIncomesByIds(ids).then((res: any) => {
  578. if (res.code == 200) {
  579. ElMessage.success('删除成功')
  580. reset()
  581. }
  582. })
  583. })
  584. }
  585. let ReceiveDataRef1 = ref()
  586. let ReceiveDataRef2 = ref()
  587. // 选中的数据
  588. let selectedList = ref([])
  589. let allData = ref([])
  590. // 全选的类型
  591. let selectType = ref('')
  592. // 外部全选是否勾选
  593. let selectAllValue = ref(false)
  594. // 外部的全选
  595. const selectAll = (type: boolean) => {
  596. if (type) {
  597. if (selectType.value) {
  598. receiveData.value.forEach((item) => {
  599. ReceiveDataRef1.value!.toggleRowSelection(item, true)
  600. ReceiveDataRef2.value!.toggleRowSelection(item, true)
  601. })
  602. if (selectType.value == 'cur') {
  603. selectedList.value = receiveData.value
  604. } else {
  605. selectedList.value = []
  606. }
  607. }
  608. } else {
  609. receiveData.value.forEach(item => {
  610. ReceiveDataRef1.value!.toggleRowSelection(item, false)
  611. })
  612. selectType.value = ''
  613. selectedList.value = []
  614. }
  615. }
  616. const getreceivedAmountTotal = () => {
  617. let params = {
  618. licenseNo: receivableForm.value?.licenseNo,
  619. typeAttr: receivableForm.value?.typeAttr,
  620. companyId: receivableForm.value?.companyId,
  621. signingStartTime: receivableForm.value?.signingTime?.[0],
  622. signingEndTime: receivableForm.value?.signingTime?.[1],
  623. orderNo: receivableForm.value?.orderNo,
  624. agreementId: receivableForm.value?.agreementId,
  625. deptId: receivableForm.value?.deptId,
  626. riskCode: receivableForm.value?.riskCode,
  627. orderType: receivableForm.value?.orderType,
  628. insuredName: receivableForm.value?.insuredName,
  629. jqPolicyNo: receivableForm.value?.jqPolicyNo,
  630. syPolicyNo: receivableForm.value?.syPolicyNo,
  631. dockingPerson: receivableForm.value?.dockingPerson,
  632. jqStartDate: receivableForm.value?.jqDate?.[0],
  633. jqEndDate: receivableForm.value?.jqDate?.[1],
  634. syStartDate: receivableForm.value?.syDate?.[0],
  635. syEndDate: receivableForm.value?.syDate?.[1],
  636. pages: pages.value,
  637. size: size.value
  638. }
  639. api.financeApi.getOtherReceivableTotalAmount(params).then((res: any) => {
  640. if (res.code == 200) {
  641. receivedAmountTotal.value = res.data
  642. }
  643. })
  644. }
  645. // 全选类型改变
  646. const selectTypeChange = (type) => {
  647. selectAllValue.value = true
  648. receiveData.value.forEach(item => {
  649. ReceiveDataRef1.value!.toggleRowSelection(item, true)
  650. ReceiveDataRef2.value!.toggleRowSelection(item, true)
  651. })
  652. if (type == 'cur') {
  653. selectedList.value = receiveData.value
  654. } else {
  655. selectedList.value = allData.value
  656. }
  657. }
  658. // 编辑
  659. const toEdit = (row: any) => {
  660. myRouter.push({
  661. path: '/insurancePolicy/order/insurancePolicyOrderDetail',
  662. query: {
  663. orderNo: row.orderNo
  664. }
  665. })
  666. }
  667. // 获取协议列表
  668. const agreementList = ref()
  669. const getagreementList = () => {
  670. api.agreementApi.agreementList({
  671. isExternal: '0',
  672. pages: 1,
  673. size: 1000,
  674. }).then((res: any) => {
  675. if (res.code == 200) {
  676. agreementList.value = res.data.records
  677. }
  678. })
  679. }
  680. let options = ref([])
  681. const handleInvoice = () => {
  682. if (selectedList.value.length < 1) {
  683. myRouter.push({
  684. name: 'HandingFeeTicket',
  685. query: {
  686. invoiceType: activeName.value == '1' ? '2' : activeName.value == '2' ? '4' : ''
  687. }
  688. })
  689. } else {
  690. if (selectedList.value.some((item: any) => item.invoiceStatusName == '已开票')) {
  691. ElMessage({
  692. message: '存在已开票数据,不能开票!',
  693. type: 'warning'
  694. })
  695. return
  696. }
  697. invoiceShow.value = true
  698. let arr = selectedList.value.map((item) => {
  699. return item.id
  700. })
  701. api.financeApi.getReceivableCompany({
  702. incomeIds: [...arr]
  703. }).then((res: any) => {
  704. if (res.code == 200) {
  705. options.value = res.data
  706. }
  707. })
  708. }
  709. }
  710. const dropdownCommand = (e) => {
  711. if (e === '数据导入') {
  712. batchShow.value = true
  713. }
  714. if (e === '删除') {
  715. if (selectedList.value.length === 0) {
  716. ElMessage.warning('请选择删除的数据')
  717. return
  718. }
  719. toDelete(selectedList.value.map(item => item.id))
  720. }
  721. }
  722. let total1 = ref(0)
  723. let total2 = ref(0)
  724. let receiveData = ref([])
  725. // 应收添加
  726. let addShow = ref(false)
  727. let addSearchValue = ref('1932252903508697088')
  728. let placeholder = ref('订单号查询')
  729. let addSelectType = ref('1')
  730. const handleAddSelectTypeChange = (e) => {
  731. switch (e) {
  732. case '1':
  733. placeholder.value = '订单号查询'
  734. break;
  735. case '2':
  736. placeholder.value = '交强险保单号查询'
  737. break;
  738. case '3':
  739. placeholder.value = '商业险保单号查询'
  740. break;
  741. }
  742. }
  743. const getUnauditedOrder = () => {
  744. api.financeApi.getUnauditedOrder({
  745. orderNo: addSearchValue.value,
  746. queryType: activeName.value == '1' ? '2' : activeName.value == '2' ? '4' : ''
  747. }).then((res: any) => {
  748. if (res.code == 200) {
  749. selectingData.value = res.data
  750. }
  751. })
  752. }
  753. // 批量操作数据导入
  754. let selectData = ref([])
  755. let selectingData = ref([])
  756. let selectedData = ref([])
  757. const handleToAdd = (row) => {
  758. if (selectedData.value.length < 1) {
  759. selectedData.value.push(row)
  760. } else {
  761. if (!selectedData.value.some(item => item.id === row.id)) {
  762. selectedData.value.push(row)
  763. }
  764. }
  765. // ElMessage({
  766. // message: '该订单已被xxx添加到应收开票中',
  767. // type: 'warning'
  768. // })
  769. }
  770. const handleDel = (row) => {
  771. selectedData.value = selectedData.value.filter(item => item.id != row.id)
  772. }
  773. const handleAddSubmit = () => {
  774. if (selectedData.value.length < 1) {
  775. ElMessage({
  776. message: '请选择要添加的数据!',
  777. type: 'warning'
  778. })
  779. return
  780. }
  781. let arr = selectedData.value?.map(item => {
  782. return item.orderNo
  783. })
  784. api.financeApi.addReceivable({
  785. orderNo: [...arr],
  786. queryType: activeName.value == '1' ? '2' : activeName.value == '2' ? '4' : ''
  787. }).then((res: any) => {
  788. if (res.code == 200) {
  789. ElMessage({
  790. message: res.msg,
  791. type: 'success'
  792. })
  793. addShow.value = false
  794. getOtherReceivableList()
  795. getreceivedAmountTotal()
  796. getJyOtherReceivableList()
  797. }
  798. })
  799. }
  800. let batchShow = ref(false)
  801. const uploadFile = async (file) => {
  802. let files = file.raw
  803. const params = new FormData(); // 声明formData数据类型
  804. params.append("file", files);
  805. const { code, data, msg } = await api.financeApi.importSuperviseExcel(params)
  806. if (code == 200) {
  807. ElMessage({
  808. message: msg,
  809. type: 'success'
  810. })
  811. }
  812. }
  813. // 应收开票
  814. let invoiceShow = ref(false)
  815. let invoiceRadio = ref(null)
  816. const handleInvoiceSubmit = () => {
  817. myRouter.push({
  818. name: 'documentaryTicket'
  819. })
  820. }
  821. const handleSelectChange1 = (a, b) => {
  822. if (a.length > 0) {
  823. selectedList.value = a
  824. } else {
  825. selectedList.value = []
  826. }
  827. }
  828. const handleSelectChange2 = (a, b) => {
  829. if (a.length > 0) {
  830. selectedList.value = a
  831. } else {
  832. selectedList.value = []
  833. }
  834. }
  835. const handleSelectAll1 = (e) => {
  836. if (e.length > 0) {
  837. selectedList.value = e
  838. } else {
  839. selectedList.value = []
  840. }
  841. }
  842. const handleSelectAll2 = (e) => {
  843. if (e.length > 0) {
  844. selectedList.value = e
  845. } else {
  846. selectedList.value = []
  847. }
  848. }
  849. // 批量修改比例
  850. // 批量修改比例
  851. let batchEditShow = ref(false)
  852. let feeRate = ref(null)
  853. let signTime = ref(null)
  854. let people = ref(null)
  855. let editForm = ref({})
  856. const handleBatchEdit = () => {
  857. if (selectedList.value.length < 1) {
  858. ElMessage({
  859. message: '请选择数据!',
  860. type: 'warning'
  861. })
  862. return
  863. }
  864. editForm.value = {}
  865. batchEditShow.value = true
  866. }
  867. const handleBatchEditSubmit = async () => {
  868. const params = {
  869. incomeIds: selectedList.value.map(item => item.id),
  870. jqSuperviseCostsProportion: editForm.value.jqInsurance,
  871. sySuperviseCostsProportion: editForm.value.syInsurance,
  872. signingTime: editForm.value.signTime,
  873. contractUserName: editForm.value.name,
  874. contractPhone: editForm.value.phone,
  875. }
  876. const { code, data, msg } = await api.financeApi.batchModify(params)
  877. if (code === 200) {
  878. ElMessage.success(msg)
  879. batchEditShow.value = false
  880. }
  881. }
  882. const downloadImportTemplate = () => {
  883. let params = {
  884. licenseNo: receivableForm.value?.licenseNo,
  885. typeAttr: receivableForm.value?.typeAttr,
  886. companyId: receivableForm.value?.companyId,
  887. signingStartTime: receivableForm.value?.signingTime?.[0],
  888. signingEndTime: receivableForm.value?.signingTime?.[1],
  889. orderNo: receivableForm.value?.orderNo,
  890. agreementId: receivableForm.value?.agreementId,
  891. deptId: receivableForm.value?.deptId,
  892. riskCode: receivableForm.value?.riskCode,
  893. orderType: receivableForm.value?.orderType,
  894. insuredName: receivableForm.value?.insuredName,
  895. jqPolicyNo: receivableForm.value?.jqPolicyNo,
  896. syPolicyNo: receivableForm.value?.syPolicyNo,
  897. dockingPerson: receivableForm.value?.dockingPerson,
  898. jqStartDate: receivableForm.value?.jqDate?.[0],
  899. jqEndDate: receivableForm.value?.jqDate?.[1],
  900. syStartDate: receivableForm.value?.syDate?.[0],
  901. syEndDate: receivableForm.value?.syDate?.[1],
  902. }
  903. api.financeApi.exportTemplateReceivableList(params).then((res: any) => {
  904. if (res.code == 200) {
  905. const link = document.createElement('a');
  906. link.href = res.msg;
  907. link.download = '';
  908. // 触发下载
  909. document.body.appendChild(link);
  910. link.click();
  911. document.body.removeChild(link);
  912. } else {
  913. ElMessage({
  914. message: res.msg,
  915. type: 'warning'
  916. })
  917. }
  918. })
  919. }
  920. let importModifyCallback = ref()// 导入数据回调
  921. const uploadJYFile = async (file) => {
  922. let files = file.raw
  923. const params = new FormData(); // 声明formData数据类型
  924. params.append("file", files);
  925. const { code, data, msg } = await api.financeApi.importReceivableListUpdate(params)
  926. if (code == 200) {
  927. importModifyCallback.value = data
  928. ElMessage({
  929. message: msg,
  930. type: 'success'
  931. })
  932. }
  933. }
  934. // 下载导入失败文件
  935. const downloadImportFailedData = (item) => {
  936. const link = document.createElement('a');
  937. link.href = item.failFileUrl;
  938. link.download = '';
  939. // 触发下载
  940. document.body.appendChild(link);
  941. link.click();
  942. document.body.removeChild(link);
  943. }
  944. // 获取险种
  945. let insuranceType = ref([])
  946. const dictDetails = () => {
  947. api.additionalApi.dictDetails('insurance_type').then((res: any) => {
  948. if (res.code == 200) {
  949. insuranceType.value = res.data
  950. }
  951. })
  952. }
  953. // 归属
  954. let deptOption = ref([])
  955. const cascaderProps = {
  956. value: 'id',
  957. label: 'name',
  958. children: 'children',
  959. checkStrictly: true,
  960. }
  961. const initDept = () => {
  962. api.insuranceApi.getDeptTree({ sysCode: localStorage.getItem('sysCode') }).then((res: any) => {
  963. if (res.code == 200) {
  964. deptOption.value = res.data
  965. } else {
  966. ElMessage({
  967. message: res.msg,
  968. type: 'warning'
  969. })
  970. }
  971. })
  972. }
  973. // 保险公司
  974. let companyList = ref([])
  975. const initCompany = () => {
  976. api.insuranceApi.leftList('').then((res: any) => {
  977. if (res.code == 200) {
  978. companyList.value = res.data
  979. }
  980. })
  981. }
  982. // 分页
  983. let pages = ref(1)
  984. let size = ref(10)
  985. const handleSizeChange = (val) => {
  986. console.log(val)
  987. size.value = val
  988. if (activeName.value == '1') {
  989. getOtherReceivableList()
  990. getreceivedAmountTotal()
  991. } else if (activeName.value == '2') {
  992. getJyOtherReceivableList()
  993. }
  994. }
  995. const handleCurrentChange = (val) => {
  996. pages.value = val
  997. if (activeName.value == '1') {
  998. getOtherReceivableList()
  999. getreceivedAmountTotal()
  1000. } else if (activeName.value == '2') {
  1001. getJyOtherReceivableList()
  1002. }
  1003. }
  1004. const search = () => {
  1005. pages.value = 1
  1006. size.value = 10
  1007. if (activeName.value == '1') {
  1008. getOtherReceivableList()
  1009. getreceivedAmountTotal()
  1010. }
  1011. if (activeName.value == '2') {
  1012. getJyOtherReceivableList()
  1013. getreceivedAmountTotal()
  1014. }
  1015. }
  1016. const reset = () => {
  1017. receivableForm.value = {}
  1018. pages.value = 1
  1019. size.value = 10
  1020. search()
  1021. }
  1022. const getOtherReceivableList = () => {
  1023. let params = {
  1024. licenseNo: receivableForm.value?.licenseNo,
  1025. typeAttr: receivableForm.value?.typeAttr,
  1026. companyId: receivableForm.value?.companyId,
  1027. signingStartTime: receivableForm.value?.signingTime?.[0],
  1028. signingEndTime: receivableForm.value?.signingTime?.[1],
  1029. orderNo: receivableForm.value?.orderNo,
  1030. agreementId: receivableForm.value?.agreementId,
  1031. deptId: receivableForm.value?.deptId,
  1032. riskCode: receivableForm.value?.riskCode,
  1033. orderType: receivableForm.value?.orderType,
  1034. insuredName: receivableForm.value?.insuredName,
  1035. jqPolicyNo: receivableForm.value?.jqPolicyNo,
  1036. syPolicyNo: receivableForm.value?.syPolicyNo,
  1037. dockingPerson: receivableForm.value?.dockingPerson,
  1038. jqStartDate: receivableForm.value?.jqDate?.[0],
  1039. jqEndDate: receivableForm.value?.jqDate?.[1],
  1040. syStartDate: receivableForm.value?.syDate?.[0],
  1041. syEndDate: receivableForm.value?.syDate?.[1],
  1042. }
  1043. api.financeApi.getOtherReceivableList({
  1044. ...params,
  1045. pages: pages.value,
  1046. size: size.value
  1047. }).then((res: any) => {
  1048. if (res.code == 200) {
  1049. receiveData.value = res.data.insPlyIncomePage.records
  1050. allData.value = res.data.insPlyIncomeOrders
  1051. total1.value = res.data.insPlyIncomePage.total
  1052. receiveData.value.forEach(element => {
  1053. if (selectedList.value.find(v => v.id === element.id)) {
  1054. nextTick(() => {
  1055. ReceiveDataRef1.value!.toggleRowSelection(element, true)
  1056. })
  1057. }
  1058. });
  1059. }
  1060. })
  1061. }
  1062. const getJyOtherReceivableList = () => {
  1063. let params = {
  1064. licenseNo: receivableForm.value?.licenseNo,
  1065. typeAttr: receivableForm.value?.typeAttr,
  1066. companyId: receivableForm.value?.companyId,
  1067. signingStartTime: receivableForm.value?.signingTime?.[0],
  1068. signingEndTime: receivableForm.value?.signingTime?.[1],
  1069. orderNo: receivableForm.value?.orderNo,
  1070. agreementId: receivableForm.value?.agreementId,
  1071. deptId: receivableForm.value?.deptId,
  1072. riskCode: receivableForm.value?.riskCode,
  1073. orderType: receivableForm.value?.orderType,
  1074. insuredName: receivableForm.value?.insuredName,
  1075. jqPolicyNo: receivableForm.value?.jqPolicyNo,
  1076. syPolicyNo: receivableForm.value?.syPolicyNo,
  1077. dockingPerson: receivableForm.value?.dockingPerson,
  1078. jqStartDate: receivableForm.value?.jqDate?.[0],
  1079. jqEndDate: receivableForm.value?.jqDate?.[1],
  1080. syStartDate: receivableForm.value?.syDate?.[0],
  1081. syEndDate: receivableForm.value?.syDate?.[1],
  1082. }
  1083. api.financeApi.getJyOtherReceivableList({
  1084. ...params,
  1085. pageNo: pages.value,
  1086. pageSize: size.value
  1087. }).then((res: any) => {
  1088. if (res.code == 200) {
  1089. receiveData.value = res.data.insPlyIncomePage.records
  1090. allData.value = res.data.insPlyIncomeOrders
  1091. total2.value = res.data.insPlyIncomePage.total
  1092. receiveData.value.forEach(element => {
  1093. if (selectedList.value.find(v => v.id === element.id)) {
  1094. nextTick(() => {
  1095. ReceiveDataRef2.value!.toggleRowSelection(element, true)
  1096. })
  1097. }
  1098. });
  1099. }
  1100. })
  1101. }
  1102. const handleExport = (type) => {
  1103. switch (type) {
  1104. case 1:
  1105. exportOtherExcel()
  1106. break;
  1107. case 2:
  1108. exportOtherJyExcel()
  1109. break;
  1110. }
  1111. }
  1112. const exportOtherExcel = () => {
  1113. api.settlementApi.exportOtherExcel({
  1114. }).then((res: any) => {
  1115. const blob = new Blob([res], { type: 'application/vnd.ms-excel' });
  1116. const fileName = '跟单费应收车险结算报表明细' + new Date().getTime() + '.xlsx';
  1117. if ('download' in document.createElement('a')) {
  1118. const elink = document.createElement('a');
  1119. elink.download = fileName;
  1120. elink.style.display = 'none';
  1121. elink.href = URL.createObjectURL(blob);
  1122. document.body.appendChild(elink);
  1123. elink.click();
  1124. URL.revokeObjectURL(elink.href);
  1125. document.body.removeChild(elink);
  1126. } else {
  1127. navigator.msSaveBlob(blob, fileName);
  1128. }
  1129. })
  1130. }
  1131. const exportOtherJyExcel = () => {
  1132. api.settlementApi.exportOtherJyExcel({
  1133. }).then((res: any) => {
  1134. const blob = new Blob([res], { type: 'application/vnd.ms-excel' });
  1135. const fileName = '跟单费应收非车险结算报表明细' + new Date().getTime() + '.xlsx';
  1136. if ('download' in document.createElement('a')) {
  1137. const elink = document.createElement('a');
  1138. elink.download = fileName;
  1139. elink.style.display = 'none';
  1140. elink.href = URL.createObjectURL(blob);
  1141. document.body.appendChild(elink);
  1142. elink.click();
  1143. URL.revokeObjectURL(elink.href);
  1144. document.body.removeChild(elink);
  1145. } else {
  1146. navigator.msSaveBlob(blob, fileName);
  1147. }
  1148. })
  1149. }
  1150. onMounted(() => {
  1151. dictDetails();
  1152. initCompany();
  1153. initDept();
  1154. getOtherReceivableList();
  1155. getreceivedAmountTotal();
  1156. getagreementList();
  1157. })
  1158. </script>
  1159. <style scoped lang="scss">
  1160. @use "@/assets/styles/common/style.scss";
  1161. .icon_s {
  1162. display: flex;
  1163. align-items: center;
  1164. justify-content: flex-end;
  1165. margin-left: 20px;
  1166. color: #00a0f4;
  1167. cursor: pointer;
  1168. .is_icon {
  1169. transition: ease 0.2s;
  1170. }
  1171. .is_down {
  1172. transform: rotate(180deg);
  1173. }
  1174. }
  1175. .add-content {
  1176. width: 100%;
  1177. max-height: 600px;
  1178. }
  1179. .pagination {
  1180. margin-top: 10px;
  1181. display: flex;
  1182. justify-content: end;
  1183. }
  1184. :deep(.el-radio) {
  1185. width: 100%;
  1186. }
  1187. </style>