index.vue 50 KB

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