calculateAssets.vue 22 KB

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