calculateMajor.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493
  1. <template>
  2. <div class="app-container organization-index">
  3. <div class="title-container">
  4. <breadcrumb id="breadcrumb-container" class="breadcrumb-container"/>
  5. </div>
  6. <el-tabs v-model="activeName" @tab-click="handleClick" type="border-card" style="margin-top: 10px;">
  7. <el-tab-pane label="评估人员" name="evaluate">
  8. <div style="width: 100%; height: 50px;">
  9. <el-date-picker v-model="findDate" type="daterange" align="center" unlink-panels
  10. range-separator="至" start-placeholder="统计日期(开始)" end-placeholder="统计日期(结束)" :picker-options="pickerOptions"
  11. value-format="yyyy-MM-dd" style="float: left; width: 300px;">
  12. </el-date-picker>
  13. <el-input v-model="listQuery1.userName" placeholder="姓名" clearable
  14. style="margin-left: 20px;width: 200px;float: left;">
  15. </el-input>
  16. <el-button class="filter-item" style="margin-left:20px;float: left;" type="primary" @click="searchList1()" round>搜索
  17. </el-button>
  18. <el-button class="filter-item" style="float: left;" round type="success" @click="resetSearch1()">重置
  19. </el-button>
  20. <el-button class="filter-item" style="float: left;" round type="info" @click="evaluatorTotalAmountExport()">导出合计
  21. </el-button>
  22. <el-button class="filter-item" style="float: left;" round type="info" @click="evaluatorCurUserDetailExport()">导出当前员工提成详情
  23. </el-button>
  24. <el-button class="filter-item" style="float: left;" round type="info" @click="evaluatorAllUserDetailExport()">导出所有员工提成详情
  25. </el-button>
  26. </div>
  27. <div style="width: 100%;">
  28. <el-table :data="evaluatorAmount"
  29. fit
  30. stripe
  31. highlight-current-row
  32. @row-click="evaluatorAmountDetail"
  33. :header-row-style="{ color: '#333333','font-size':'14px'}"
  34. style=" width: 18.1%; float: left;
  35. border-left: 1px solid #ebeced;
  36. border-right: 1px solid #ebeced;
  37. color: #333333; font-size: 14px;
  38. ">
  39. <el-table-column label="姓名" align="center">
  40. <template slot-scope="{row}">
  41. <span>{{ row.userName }}</span>
  42. </template>
  43. </el-table-column>
  44. <el-table-column label="提成金额(元)" align="center">
  45. <template slot-scope="{row}">
  46. <span>{{ row.commissionTotalAmount }}</span>
  47. </template>
  48. </el-table-column>
  49. </el-table>
  50. <el-table :data="evaluatorProd"
  51. fit
  52. stripe
  53. highlight-current-row
  54. :header-row-style="{ color: '#333333','font-size':'14px'}"
  55. style=" width: 80.5%; float: right;
  56. border-left: 1px solid #ebeced;
  57. border-right: 1px solid #ebeced;
  58. color: #333333; font-size: 14px;
  59. "
  60. >
  61. <el-table-column label="姓名" align="center">
  62. <template slot-scope="{row}">
  63. <span>{{ row.userName }}</span>
  64. </template>
  65. </el-table-column>
  66. <el-table-column label="产品号" width="200" align="center">
  67. <template slot-scope="{row}">
  68. <el-tag type="success">{{ row.reportNo }}</el-tag>
  69. </template>
  70. </el-table-column>
  71. <el-table-column label="项目名称" width="200" align="center" show-overflow-tooltip>
  72. <template slot-scope="{row}">
  73. <span>{{ row.name }}</span>
  74. </template>
  75. </el-table-column>
  76. <el-table-column label="项目分类" width="100" align="center" show-overflow-tooltip>
  77. <template slot-scope="{row}">
  78. <span>{{ row.businessCate }}</span>
  79. </template>
  80. </el-table-column>
  81. <el-table-column label="提成比例" align="center">
  82. <template slot-scope="{row}">
  83. <span>{{ row.ratio}}%</span>
  84. </template>
  85. </el-table-column>
  86. <el-table-column label="总提成额(¥)" align="center">
  87. <template slot-scope="{row}">
  88. <span>{{ row.totalAmount }}</span>
  89. </template>
  90. </el-table-column>
  91. <el-table-column label="分配比例" align="center">
  92. <template slot-scope="{row}">
  93. <span>{{ row.allotRatio*100 }}%</span>
  94. </template>
  95. </el-table-column>
  96. <el-table-column label="提成额(¥)" align="center">
  97. <template slot-scope="{row}">
  98. <span style="color:red">{{ row.commissionAmount }}</span>
  99. </template>
  100. </el-table-column>
  101. <el-table-column label="出报告日期" align="center">
  102. <template slot-scope="{row}">
  103. <span>{{ row.created }}</span>
  104. </template>
  105. </el-table-column>
  106. <el-table-column label="实收款(¥)" align="center">
  107. <template slot-scope="{row}">
  108. <span>{{ row.realAmount }}</span>
  109. </template>
  110. </el-table-column>
  111. <el-table-column label="提成日期" width="100" align="center">
  112. <template slot-scope="{row}">
  113. <span>{{ row.settleDate }}</span>
  114. </template>
  115. </el-table-column>
  116. </el-table>
  117. </div>
  118. </el-tab-pane>
  119. <el-tab-pane label="市场人员" name="market">
  120. <div style="width: 100%; height: 50px;">
  121. <el-date-picker v-model="findDate1" type="daterange" align="center" unlink-panels
  122. range-separator="至" start-placeholder="统计日期(开始)" end-placeholder="统计日期(结束)" :picker-options="pickerOptions"
  123. value-format="yyyy-MM-dd" style="float: left; width: 300px;">
  124. </el-date-picker>
  125. <el-date-picker clearable v-model="paymentDate1" type="daterange" align="center" unlink-panels
  126. range-separator="至" start-placeholder="到账日期(开始)" end-placeholder="到账日期(结束)" :picker-options="pickerOptions"
  127. value-format="yyyy-MM-dd" style="margin-left: 20px;float: left;">
  128. </el-date-picker>
  129. <el-input v-model="listQuery2.userName" placeholder="姓名" clearable
  130. style="margin-left: 20px;width: 200px;float: left;">
  131. </el-input>
  132. <el-button class="filter-item" style="margin-left:20px;float: left;" type="primary" @click="searchList2()" round>搜索
  133. </el-button>
  134. <el-button class="filter-item" style="float: left;" round type="success" @click="resetSearch2()">重置
  135. </el-button>
  136. <el-button class="filter-item" style="float: left;" round type="info" @click="marketTotalAmountExport()">导出合计
  137. </el-button>
  138. <el-button class="filter-item" style="float: left;" round type="info" @click="marketCurUserDetailExport()">导出当前员工提成详情
  139. </el-button>
  140. <el-button class="filter-item" style="float: left;" round type="info" @click="marketAllUserDetailExport()">导出所有员工提成详情
  141. </el-button>
  142. </div>
  143. <div style="width: 100%;">
  144. <el-table :data="marketAmount"
  145. fit
  146. stripe
  147. highlight-current-row
  148. @row-click="marketAmountDetail"
  149. :header-row-style="{ color: '#333333','font-size':'14px'}"
  150. style=" width: 18.1%; float: left;
  151. border-left: 1px solid #ebeced;
  152. border-right: 1px solid #ebeced;
  153. color: #333333; font-size: 14px;
  154. ">
  155. <el-table-column label="姓名" align="center">
  156. <template slot-scope="{row}">
  157. <span>{{ row.userName }}</span>
  158. </template>
  159. </el-table-column>
  160. <el-table-column label="提成金额(元)" align="center">
  161. <template slot-scope="{row}">
  162. <span>{{ row.commissionTotalAmount }}</span>
  163. </template>
  164. </el-table-column>
  165. </el-table>
  166. <el-table :data="marketProd"
  167. fit
  168. stripe
  169. highlight-current-row
  170. :header-row-style="{ color: '#333333','font-size':'14px'}"
  171. style=" width: 80.5%; float: right;
  172. border-left: 1px solid #ebeced;
  173. border-right: 1px solid #ebeced;
  174. color: #333333; font-size: 14px;
  175. "
  176. >
  177. <el-table-column label="姓名" align="center">
  178. <template slot-scope="{row}">
  179. <span>{{ row.userName }}</span>
  180. </template>
  181. </el-table-column>
  182. <el-table-column label="产品号" width="200" align="center">
  183. <template slot-scope="{row}">
  184. <el-tag type="success">{{ row.reportNo }}</el-tag>
  185. </template>
  186. </el-table-column>
  187. <el-table-column label="项目名称" width="200" align="center" show-overflow-tooltip>
  188. <template slot-scope="{row}">
  189. <span>{{ row.name }}</span>
  190. </template>
  191. </el-table-column>
  192. <el-table-column label="项目分类" width="100" align="center" show-overflow-tooltip>
  193. <template slot-scope="{row}">
  194. <span>{{ row.businessCate }}</span>
  195. </template>
  196. </el-table-column>
  197. <el-table-column label="提成比例" align="center">
  198. <template slot-scope="{row}">
  199. <span>{{ row.ratio}}%</span>
  200. </template>
  201. </el-table-column>
  202. <el-table-column label="总提成额(¥)" align="center">
  203. <template slot-scope="{row}">
  204. <span>{{ row.totalAmount }}</span>
  205. </template>
  206. </el-table-column>
  207. <el-table-column label="分配比例" align="center">
  208. <template slot-scope="{row}">
  209. <span>{{ row.allotRatio*100 }}%</span>
  210. </template>
  211. </el-table-column>
  212. <el-table-column label="提成额(¥)" align="center">
  213. <template slot-scope="{row}">
  214. <span style="color:red">{{ row.commissionAmount }}</span>
  215. </template>
  216. </el-table-column>
  217. <el-table-column label="出报告日期" align="center">
  218. <template slot-scope="{row}">
  219. <span>{{ row.created }}</span>
  220. </template>
  221. </el-table-column>
  222. <el-table-column label="实收款(¥)" align="center">
  223. <template slot-scope="{row}">
  224. <span>{{ row.realAmount }}</span>
  225. </template>
  226. </el-table-column>
  227. <el-table-column label="提成日期" width="100" align="center">
  228. <template slot-scope="{row}">
  229. <span>{{ row.settleDate }}</span>
  230. </template>
  231. </el-table-column>
  232. </el-table>
  233. </div>
  234. </el-tab-pane>
  235. </el-tabs>
  236. </div>
  237. </template>
  238. <script>
  239. import Breadcrumb from '@/components/Breadcrumb'
  240. import YPageListLayout from '@/components/YPageListLayout'
  241. export default {
  242. name: 'calculateMajor',
  243. components: {
  244. Breadcrumb,
  245. YPageListLayout
  246. },
  247. data() {
  248. return {
  249. activeName: 'evaluate',
  250. listQuery1: {
  251. page: 1,
  252. size: 10,
  253. descs: 'id',
  254. startDate:'2024-05-01 00:00:00',
  255. endDate:'2024-06-01 00:00:00',
  256. userName:null
  257. },
  258. listQuery2: {
  259. page: 1,
  260. size: 10,
  261. descs: 'id',
  262. startDate:'2024-05-01 00:00:00',
  263. endDate:'2024-06-01 00:00:00',
  264. userName:null
  265. },
  266. pickerOptions: {
  267. shortcuts: [{
  268. text: '最近一周',
  269. onClick(picker) {
  270. const end = new Date();
  271. const start = new Date();
  272. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  273. picker.$emit('pick', [start, end]);
  274. }
  275. }, {
  276. text: '最近一个月',
  277. onClick(picker) {
  278. const end = new Date();
  279. const start = new Date();
  280. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  281. picker.$emit('pick', [start, end]);
  282. }
  283. }, {
  284. text: '最近三个月',
  285. onClick(picker) {
  286. const end = new Date();
  287. const start = new Date();
  288. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  289. picker.$emit('pick', [start, end]);
  290. }
  291. }]
  292. },
  293. findDate: [],
  294. findDate1: [],
  295. evaluatorAmount:[],
  296. evaluatorProd:[],
  297. marketAmount:[],
  298. marketProd:[],
  299. }
  300. },
  301. created() {
  302. this.findDate.push(this.getDefaultStartDate());
  303. this.findDate.push(this.getDefaultEndDate());
  304. this.findDate1.push(this.getDefaultStartDate());
  305. this.findDate1.push(this.getDefaultEndDate());
  306. this.majorEvaluatorAmount();
  307. },
  308. methods: {
  309. getDefaultStartDate(){
  310. let currentDate = new Date();
  311. let currentYear = currentDate.getFullYear();
  312. var currentMonth = String(currentDate.getMonth()).padStart(2, "0");
  313. if (currentMonth=='00'){
  314. currentYear = currentYear-1;
  315. currentMonth = 12
  316. }
  317. return currentYear + '-' + currentMonth + '-' + '23'
  318. },
  319. getDefaultEndDate(){
  320. const currentDate = new Date();
  321. const currentYear = currentDate.getFullYear();
  322. var currentMonth = String(currentDate.getMonth() + 1).padStart(2,"0");
  323. return currentYear+'-'+currentMonth+'-'+'22'
  324. },
  325. handleClick(tab, event) {
  326. if (tab.name==='market'){
  327. this.majorMarketEvaluatorAmount();
  328. }
  329. if (tab.name==='evaluate'){
  330. this.majorEvaluatorAmount()
  331. }
  332. },
  333. resetSearch1() {
  334. this.$router.push({ query: {} });
  335. this.listQuery1 = {
  336. current: 1,
  337. size: 10,
  338. descs: 'id',
  339. userName:null,
  340. }
  341. this.searchList1()
  342. },
  343. searchList1() {
  344. // 重置分页
  345. this.listQuery1.page = 1
  346. this.listQuery1.size = 10
  347. if (this.findDate){
  348. this.listQuery1.startDate = this.findDate[0]+' 00:00:00';
  349. this.listQuery1.endDate = this.findDate[1]+ ' 23:59:59';
  350. }
  351. this.majorEvaluatorAmount()
  352. },
  353. resetSearch2() {
  354. this.$router.push({ query: {} });
  355. this.listQuery2 = {
  356. current: 1,
  357. size: 10,
  358. descs: 'id',
  359. userName:null,
  360. }
  361. this.searchList2()
  362. },
  363. searchList2() {
  364. // 重置分页
  365. this.listQuery2.page = 1
  366. this.listQuery2.size = 10
  367. if (this.findDate1){
  368. this.listQuery2.startDate = this.findDate1[0]+' 00:00:00';
  369. this.listQuery2.endDate = this.findDate1[1]+ ' 23:59:59';
  370. }
  371. this.majorMarketEvaluatorAmount()
  372. },
  373. majorEvaluatorAmount(){
  374. if (this.findDate){
  375. this.listQuery1.startDate = this.findDate[0]+' 00:00:00';
  376. this.listQuery1.endDate = this.findDate[1]+ ' 23:59:59';
  377. }
  378. this.$api.financeRealFund.majorEvaluatorCommission(this.listQuery1).then(res=>{
  379. if (res.code === 200){
  380. this.evaluatorAmount = res.data;
  381. if (this.evaluatorAmount.length > 0){
  382. this.listQuery1.userId = this.evaluatorAmount[0].id;
  383. this.$api.financeRealFund.majorEvaluatorCommissionDetail(this.listQuery1).then(res=>{
  384. if (res.code === 200){
  385. this.evaluatorProd = res.data;
  386. }
  387. })
  388. }else {
  389. this.evaluatorProd = []
  390. }
  391. }
  392. })
  393. },
  394. evaluatorAmountDetail(row, column, event){
  395. this.listQuery1.userId = row.id;
  396. this.$api.financeRealFund.majorEvaluatorCommissionDetail(this.listQuery1).then(res=>{
  397. if (res.code === 200){
  398. this.evaluatorProd = res.data;
  399. }
  400. })
  401. },
  402. majorMarketEvaluatorAmount(){
  403. if (this.findDate1){
  404. this.listQuery2.startDate = this.findDate1[0]+' 00:00:00';
  405. this.listQuery2.endDate = this.findDate1[1]+ ' 23:59:59';
  406. }
  407. this.$api.financeRealFund.majorMarketCommission(this.listQuery2).then(res=>{
  408. if (res.code === 200){
  409. this.marketAmount = res.data;
  410. if (this.marketAmount.length > 0){
  411. this.listQuery2.userId = this.marketAmount[0].id;
  412. this.$api.financeRealFund.majorMarketCommissionDetail(this.listQuery2).then(res=>{
  413. if (res.code === 200){
  414. this.marketProd = res.data;
  415. }
  416. })
  417. }else {
  418. this.marketProd = []
  419. }
  420. }
  421. })
  422. },
  423. marketAmountDetail(row, column, event){
  424. this.listQuery2.userId = row.id;
  425. this.$api.financeRealFund.majorMarketCommissionDetail(this.listQuery2).then(res=>{
  426. if (res.code === 200){
  427. this.marketProd = res.data;
  428. }
  429. })
  430. },
  431. evaluatorTotalAmountExport(){
  432. this.$utils.exportUtil(
  433. "/financeRealFund/major/evaluator/commission/total/export", this.listQuery1,
  434. "导出"
  435. );
  436. },
  437. evaluatorCurUserDetailExport(){
  438. this.$utils.exportUtil(
  439. "/financeRealFund/major/evaluator/commission/current/export", this.listQuery1,
  440. "导出"
  441. );
  442. },
  443. evaluatorAllUserDetailExport(){
  444. this.$utils.exportUtil(
  445. "/financeRealFund/major/evaluator/commission/all/export", this.listQuery1,
  446. "导出"
  447. );
  448. },
  449. marketTotalAmountExport(){
  450. this.$utils.exportUtil(
  451. "/financeRealFund/major/market/commission/total/export", this.listQuery2,
  452. "导出"
  453. );
  454. },
  455. marketCurUserDetailExport(){
  456. this.$utils.exportUtil(
  457. "/financeRealFund/major/market/commission/current/export", this.listQuery2,
  458. "导出"
  459. );
  460. },
  461. marketAllUserDetailExport(){
  462. this.$utils.exportUtil(
  463. "/financeRealFund/major/market/commission/all/export", this.listQuery2,
  464. "导出"
  465. );
  466. }
  467. }
  468. }
  469. </script>
  470. <style scoped lang="scss">
  471. </style>