sequenceDetail.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. <template>
  2. <div class="app-container">
  3. <div class="title-container">
  4. <breadcrumb id="breadcrumb-container" class="breadcrumb-container"/>
  5. </div>
  6. <y-page-list-layout :page-list="pageData" :page-para="listQuery" :get-page-list="getList">
  7. <template slot="left">
  8. <el-input
  9. v-model="listQuery.itemName"
  10. placeholder="项目名称"
  11. clearable
  12. style="margin-left: 20px;width: 320px;float: left;"
  13. >
  14. </el-input>
  15. <el-input
  16. v-model="listQuery.userName"
  17. placeholder="人员名称"
  18. clearable
  19. style="margin-left: 20px;width: 320px;float: left;"
  20. >
  21. </el-input>
  22. <el-select
  23. v-model="listQuery.brokerageCate"
  24. placeholder="结算类型"
  25. clearable
  26. filterable
  27. style="margin-left: 20px;width: 150px;float: left;"
  28. class="filter-item"
  29. >
  30. <el-option label="结算" value="SETTLE"/>
  31. <el-option label="预提" value="AHEAD"/>
  32. <el-option label="回款结算" value="PAYMENT_SETTLE"/>
  33. <el-option label="补偿结算" value="COMPENSATION"/>
  34. </el-select>
  35. <el-select
  36. v-model="listQuery.year"
  37. placeholder="结算年份"
  38. clearable
  39. filterable
  40. style="margin-left: 20px;width: 100px;float: left;"
  41. class="filter-item"
  42. >
  43. <el-option label="2022" value="2022"/>
  44. <el-option label="2023" value="2023"/>
  45. <el-option label="2024" value="2024"/>
  46. <el-option label="2025" value="2025"/>
  47. <el-option label="2026" value="2026"/>
  48. <el-option label="2027" value="2027"/>
  49. <el-option label="2028" value="2028"/>
  50. <el-option label="2029" value="2029"/>
  51. <el-option label="2030" value="2030"/>
  52. </el-select>
  53. <el-select
  54. v-model="listQuery.month"
  55. placeholder="结算月份"
  56. clearable
  57. filterable
  58. style="margin-left: 20px;width: 100px;float: left;"
  59. class="filter-item"
  60. >
  61. <el-option label="1" value="1"/>
  62. <el-option label="2" value="2"/>
  63. <el-option label="3" value="3"/>
  64. <el-option label="4" value="4"/>
  65. <el-option label="5" value="5"/>
  66. <el-option label="6" value="6"/>
  67. <el-option label="7" value="7"/>
  68. <el-option label="8" value="8"/>
  69. <el-option label="9" value="9"/>
  70. <el-option label="10" value="10"/>
  71. <el-option label="11" value="11"/>
  72. <el-option label="12" value="12"/>
  73. </el-select>
  74. <el-button
  75. class="filter-item"
  76. style="margin-left: 10px;float: left;"
  77. type="primary"
  78. @click="getList"
  79. round
  80. >搜索
  81. </el-button>
  82. <el-button
  83. class="filter-item"
  84. style="float: left;"
  85. round
  86. type="warning"
  87. @click="resetSearch()"
  88. >重置
  89. </el-button>
  90. </template>
  91. <template slot="right">
  92. <PermissionButton
  93. menu-code="_views_settle_detail_export"
  94. class-name="filter-item"
  95. round
  96. type="primary"
  97. name="导出"
  98. @click="settleDetailExport"
  99. >
  100. </PermissionButton>
  101. </template>
  102. <parentTable
  103. v-loading="listLoading"
  104. :data="pageData.records"
  105. slot="table"
  106. style="width: 100%;"
  107. >
  108. <el-table-column label="项目名称" align="center">
  109. <template slot-scope="{row}">
  110. <span>{{ row.itemName }}</span>
  111. </template>
  112. </el-table-column>
  113. <el-table-column label="阶段名称" align="center" width="250">
  114. <template slot-scope="{row}">
  115. <span>{{ row.stageName===null?'-':row.stageName}}</span>
  116. </template>
  117. </el-table-column>
  118. <el-table-column label="结算年份" align="center">
  119. <template slot-scope="{row}">
  120. <span>{{row.year}}</span>
  121. </template>
  122. </el-table-column>
  123. <el-table-column label="结算月份" align="center">
  124. <template slot-scope="{row}">
  125. <span>{{row.month}}</span>
  126. </template>
  127. </el-table-column>
  128. <el-table-column label="回款名称" align="center">
  129. <template slot-scope="{row}">
  130. <span>{{ row.paymentName===null?'-':row.paymentName }}</span>
  131. </template>
  132. </el-table-column>
  133. <el-table-column label="回款金额" align="center">
  134. <template slot-scope="{row}">
  135. <span>{{ row.paymentAmount===null?'-':row.paymentAmount }}</span>
  136. </template>
  137. </el-table-column>
  138. <el-table-column label="人员名称" align="center" width="160">
  139. <template slot-scope="{row}">
  140. <span>{{ row.userName}}</span>
  141. </template>
  142. </el-table-column>
  143. <!-- <el-table-column label="预计提成金额(元)" align="center" width="160">-->
  144. <!-- <template slot-scope="{row}">-->
  145. <!-- <span>{{ row.predictAmount}}</span>-->
  146. <!-- </template>-->
  147. <!-- </el-table-column>-->
  148. <el-table-column label="结算金额(元)" align="center" width="120">
  149. <template slot-scope="{row}">
  150. <span>{{ row.brokerageAmount}}</span>
  151. </template>
  152. </el-table-column>
  153. <el-table-column label="结算类型" align="center" width="120">
  154. <template slot-scope="{row}">
  155. <span>{{ settleCate(row.brokerageCate)}}</span>
  156. </template>
  157. </el-table-column>
  158. <el-table-column label="提成规则" align="center" width="150">
  159. <template slot-scope="{row}">
  160. <el-tag type="success">{{brokerageRule(row.brokerageRule)}}</el-tag>
  161. </template>
  162. </el-table-column>
  163. <el-table-column label="提成方式" align="center" width="150">
  164. <template slot-scope="{row}">
  165. <el-tag type="success">{{brokerageMode(row.brokerageMode)}}</el-tag>
  166. </template>
  167. </el-table-column>
  168. <el-table-column label="结算时间" align="center" width="180">
  169. <template slot-scope="{row}">
  170. <span>{{ row.created}}</span>
  171. </template>
  172. </el-table-column>
  173. <!-- <el-table-column label="操作" align="center" width="100" fixed="right">-->
  174. <!-- <template slot-scope="{row}">-->
  175. <!-- <el-button-->
  176. <!-- class-name="filter-item"-->
  177. <!-- type="primary"-->
  178. <!-- @click="goDetail(row.id)"-->
  179. <!-- round-->
  180. <!-- >提成明细</el-button>-->
  181. <!-- </template>-->
  182. <!-- </el-table-column>-->
  183. </parentTable>
  184. </y-page-list-layout>
  185. </div>
  186. </template>
  187. <script>
  188. import YPageListLayout from '@/components/YPageListLayout'
  189. import Breadcrumb from '@/components/Breadcrumb'
  190. import PermissionButton from '@/components/PermissionButton/PermissionButton'
  191. import { fileDown } from '../../utils/file'
  192. export default {
  193. name: 'ViewsBrokerageSequenceDetail',
  194. components: {
  195. Breadcrumb,
  196. YPageListLayout,
  197. },
  198. filters: {
  199. statusFilter(status) {
  200. const statusMap = {
  201. published: 'success',
  202. draft: 'info',
  203. deleted: 'danger',
  204. }
  205. return statusMap[status]
  206. },
  207. },
  208. data() {
  209. return {
  210. isDisable:false,
  211. tableKey: 0,
  212. pageData: { records: [] },
  213. total: 20,
  214. listLoading: true,
  215. listQuery: {
  216. page: 1,
  217. size: 10,
  218. descs: 'id',
  219. state:null
  220. },
  221. listQueryKey: 'keyword',
  222. importLoading: false,
  223. }
  224. },
  225. created() {
  226. this.getList()
  227. },
  228. methods: {
  229. settleDetailExport(){
  230. this.$utils.exportUtil(
  231. "/itemBrokerageSequenceDetail/export", this.listQuery,
  232. "导出"
  233. );
  234. },
  235. settleCate(val){
  236. if (val === 'AHEAD'){
  237. return '预提';
  238. }
  239. if (val === 'SETTLE'){
  240. return '结算';
  241. }
  242. if (val === 'PAYMENT_SETTLE'){
  243. return '回款结算';
  244. }
  245. if (val === 'COMPENSATION'){
  246. return '补偿结算';
  247. }
  248. },
  249. brokerageRule(val){
  250. if (val === 'LAND_OTHER_RULE'){
  251. return '参与人员规则';
  252. }
  253. if (val === 'LAND_MARKETER_RULE'){
  254. return '市场人员规则';
  255. }
  256. if (val === 'LAND_SUPERVISOR_RULE'){
  257. return '营销主管规则';
  258. }
  259. if (val === 'LAND_MANAGER_RULE'){
  260. return '营销经理规则';
  261. }
  262. },
  263. brokerageMode(val){
  264. if (val === 'PERSONAL'){
  265. return '个人提成';
  266. }
  267. if (val === 'TEAM_SHARE'){
  268. return '团队提成';
  269. }
  270. },
  271. resetSearch() {
  272. this.listQuery = {
  273. current: 1,
  274. size: 10,
  275. descs: 'id',
  276. };
  277. this.getList()
  278. },
  279. getList() {
  280. const that = this;
  281. this.listLoading = true;
  282. this.$api.itemBrokerageSequenceDetail.list(Object.assign({}, that.listQuery)).then((res) => {
  283. that.pageData = res.data;
  284. setTimeout(() => {
  285. that.listLoading = false
  286. }, 200)
  287. })
  288. .catch(() => {
  289. that.listLoading = false
  290. })
  291. },
  292. }
  293. }
  294. </script>
  295. <style lang="scss" scoped>
  296. .right {
  297. flex: 1;
  298. .title {
  299. font-size: 16px;
  300. font-weight: 500;
  301. color: rgba(51, 51, 51, 1);
  302. line-height: 35px;
  303. margin-bottom: 8px;
  304. }
  305. .menu-2-box {
  306. display: flex;
  307. flex-wrap: wrap;
  308. width: 100%;
  309. }
  310. .menu-2-item {
  311. display: flex;
  312. align-items: center;
  313. color: #656565;
  314. font-size: 12px;
  315. width: 230px;
  316. height: 101px;
  317. background: rgb(255, 185, 129);
  318. border-radius: 3px;
  319. padding-left: 20px;
  320. margin-right: 10px;
  321. margin-bottom: 10px;
  322. cursor: pointer;
  323. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
  324. .text {
  325. margin-left: 16px;
  326. }
  327. }
  328. }
  329. </style>