index.vue 48 KB

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