瀏覽代碼

项目提成

wucl 2 年之前
父節點
當前提交
999eb0cfb7

+ 21 - 0
src/api/modules/itemBrokerageDetail.js

@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+/*
+* 项目提成明细
+*/
+export default {
+  list(params) {
+    return request.get(`itemBrokerageDetail`, { params: params })
+  },
+  detail(params) {
+    return request.get(`itemBrokerageDetail/${params}`)
+  },
+  add(params) {
+    return request.post(`itemBrokerageDetail`, params)
+  },
+  edit(params) {
+    return request.put(`itemBrokerageDetail`, params)
+  },
+  delete(params) {
+    return request.delete(`itemBrokerageDetail/${params}`)
+  },
+}

+ 3 - 0
src/api/modules/itemBrokerageGeneral.js

@@ -18,4 +18,7 @@ export default {
   delete(params) {
     return request.delete(`itemBrokerageGeneral/${params}`)
   },
+  marketerStatus(params) {
+    return request.get(`itemBrokerageGeneral/marketer/status`, {params:params})
+  },
 }

+ 21 - 0
src/api/modules/itemBrokerageSequence.js

@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+/*
+* 项目提成结算
+*/
+export default {
+  list(params) {
+    return request.get(`itemBrokerageSequence`, { params: params })
+  },
+  detail(params) {
+    return request.get(`itemBrokerageSequence/${params}`)
+  },
+  add(params) {
+    return request.post(`itemBrokerageSequence`, params)
+  },
+  edit(params) {
+    return request.put(`itemBrokerageSequence`, params)
+  },
+  delete(params) {
+    return request.delete(`itemBrokerageSequence/${params}`)
+  },
+}

+ 21 - 0
src/api/modules/itemBrokerageSequenceDetail.js

@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+/*
+* 项目提成结算明细
+*/
+export default {
+  list(params) {
+    return request.get(`itemBrokerageSequenceDetail`, { params: params })
+  },
+  detail(params) {
+    return request.get(`itemBrokerageSequenceDetail/${params}`)
+  },
+  add(params) {
+    return request.post(`itemBrokerageSequenceDetail`, params)
+  },
+  edit(params) {
+    return request.put(`itemBrokerageSequenceDetail`, params)
+  },
+  delete(params) {
+    return request.delete(`itemBrokerageSequenceDetail/${params}`)
+  },
+}

+ 8 - 0
src/router/urlMap.js

@@ -52,6 +52,10 @@ import _views_operation_log from '@/views/set/operationLog'
 import _views_set_brokerage from '@/views/set/brokerage'
 import _views_item_plan_list from '@/views/item/planList'
 import _views_brokerage_ahead from '@/views/brokerage/ahead'
+import _views_brokerage_collect from '@/views/brokerage/collect'
+import _views_brokerage_detail from '@/views/brokerage/detail'
+import _views_brokerage_settle from '@/views/brokerage/sequence'
+import _views_brokerage_settle_detail from '@/views/brokerage/sequenceDetail'
 export default {
   _views_set_menu,
   _view_department,
@@ -92,4 +96,8 @@ export default {
   _views_set_brokerage,
   _views_item_plan_list,
   _views_brokerage_ahead,
+  _views_brokerage_collect,
+  _views_brokerage_detail,
+  _views_brokerage_settle,
+  _views_brokerage_settle_detail,
 }

+ 21 - 8
src/views/brokerage/ahead.vue

@@ -46,7 +46,7 @@
             <span>{{ row.clientName}}</span>
           </template>
         </el-table-column>
-        <el-table-column label="合同金额" align="center" width="100">
+        <el-table-column label="合同金额(元)" align="center" width="110">
           <template slot-scope="{row}">
             <span>{{ row.amount}}</span>
           </template>
@@ -56,25 +56,26 @@
             <span>{{ row.clientManager}}</span>
           </template>
         </el-table-column>
-        <el-table-column label="客户经理提成金额" align="center" width="150">
+        <el-table-column label="客户经理提成金额(元)" align="center" width="160">
           <template slot-scope="{row}">
             <span>{{ row.marketerBrokerageAmount}}</span>
           </template>
         </el-table-column>
         <el-table-column label="客户经理提成率" align="center" width="150">
           <template slot-scope="{row}">
-            <span>{{ row.brokerageRate}}</span>
+            <span>{{ row.brokerageRate}}%</span>
           </template>
         </el-table-column>
-        <el-table-column label="是否预提" align="center" >
+        <el-table-column label="是否预提" align="center" width="180" fixed="right">
           <template slot-scope="{row}">
             <el-switch
-              style="display: block;height: 40px"
+              style="display: block;height: 40px;padding-top: 8px"
               v-model= row.marketerAdvanceBrokerageAble
               active-color="#13ce66"
               inactive-color="#ff4949"
               active-text="可预提"
               inactive-text="不可预提"
+              @change="updateAble(row)"
             >
             </el-switch>
           </template>
@@ -94,7 +95,6 @@
     components: {
       Breadcrumb,
       YPageListLayout,
-      PermissionButton,
     },
     filters: {
       statusFilter(status) {
@@ -124,14 +124,27 @@
       }
     },
     created() {
-      this.getList()
+      this.getList();
     },
     methods: {
+      updateAble(row){
+        this.$api.itemBrokerageGeneral.marketerStatus({id:row.id, marketerStatus:row.marketerAdvanceBrokerageAble}).then(res=>{
+          if (res.code === 200){
+            this.$notify({
+              title: '成功',
+              message: '修改成功',
+              type: 'success',
+              duration: 2000
+            });
+            this.getList();
+          }
+        })
+      },
       getList() {
         const that = this;
         this.listLoading = true;
         const key = {};
-        this.$api.itemBrokerageGeneral.list(Object.assign({}, that.listQuery, key)).then((res) => {
+        this.$api.itemBrokerageGeneral.list(Object.assign({marketerAdvanceBrokerageAble:true}, that.listQuery, key)).then((res) => {
           that.pageData = res.data;
           setTimeout(() => {
             that.listLoading = false

+ 297 - 0
src/views/brokerage/collect.vue

@@ -0,0 +1,297 @@
+<template>
+  <div class="app-container">
+    <div class="title-container">
+      <breadcrumb id="breadcrumb-container" class="breadcrumb-container"/>
+    </div>
+    <y-page-list-layout :page-list="pageData" :page-para="listQuery" :get-page-list="getList">
+      <template slot="left">
+        <el-input
+          v-model="listQuery.name"
+          placeholder="项目名称"
+          clearable
+          style="margin-left: 20px;width: 320px;float: left;"
+        >
+        </el-input>
+        <el-input
+          v-model="listQuery.businessNo"
+          placeholder="流水号"
+          clearable
+          style="margin-left: 20px;width: 320px;float: left;"
+        >
+        </el-input>
+        <el-input
+          v-model="listQuery.clientManager"
+          placeholder="客户经理"
+          clearable
+          style="margin-left: 20px;width: 320px;float: left;"
+        >
+        </el-input>
+        <el-select
+          v-model="listQuery.marketerStatus"
+          placeholder="客户经理提成状态"
+          clearable
+          filterable
+          style="margin-left: 20px;width: 150px;float: left;"
+          class="filter-item"
+        >
+          <el-option label="待预提" value="TO_PREDICTING"/>
+          <el-option label="已预提" value="PREDICTED"/>
+          <el-option label="回款中" value="NOT_PAYMENT"/>
+          <el-option label="待结算" value="NOT_SETTLE"/>
+          <el-option label="已结算" value="CLOSED"/>
+        </el-select>
+        <el-select
+          v-model="listQuery.participantStatus"
+          placeholder="参与人提成状态"
+          clearable
+          filterable
+          style="margin-left: 20px;width: 150px;float: left;"
+          class="filter-item"
+        >
+          <el-option label="未开始" value="NOT_START"/>
+          <el-option label="预提中" value="PREDICTING"/>
+          <el-option label="待结算" value="NOT_SETTLE"/>
+          <el-option label="已结算" value="CLOSED"/>
+        </el-select>
+        <el-button
+          class="filter-item"
+          style="margin-left: 10px;float: left;"
+          type="primary"
+          @click="getList"
+          round
+        >搜索
+        </el-button>
+        <el-button
+          class="filter-item"
+          style="float: left;"
+          round
+          type="warning"
+          @click="resetSearch()"
+        >重置
+        </el-button>
+      </template>
+      <parentTable
+        v-loading="listLoading"
+        :data="pageData.records"
+        slot="table"
+        style="width: 100%;"
+      >
+        <el-table-column label="项目名称" align="center" width="250">
+          <template slot-scope="{row}">
+            <span>{{ row.name }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="事业部流水号" align="center" width="135">
+          <template slot-scope="{row}">
+            <span>{{ row.businessNo }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="合同金额(元)" align="center" width="110">
+          <template slot-scope="{row}">
+            <span>{{ row.amount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="客户经理" align="center" width="100">
+          <template slot-scope="{row}">
+            <span>{{ row.clientManager}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="客户经理可预提" align="center" width="120">
+          <template slot-scope="{row}">
+            <el-tag type="success">{{ row.marketerAdvanceBrokerageAble===true?'是':'否'}}</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="客户经理已预提" align="center" width="120">
+          <template slot-scope="{row}">
+            <el-tag type="success">{{ row.marketerAdvanceBrokerageDone===true?'是':'否'}}</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="客户经理提成金额(元)" align="center" width="160">
+          <template slot-scope="{row}">
+            <span>{{ row.marketerBrokerageAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="客户经理提成状态" align="center" width="150">
+          <template slot-scope="{row}">
+            <el-tag type="success">{{brokerageStatus(row.marketerStatus)}}</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="客户经理提成率" align="center" width="120">
+          <template slot-scope="{row}">
+            <span>{{ row.brokerageRate}}%</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="参与人预计提成总金额(元)" align="center" width="200">
+          <template slot-scope="{row}">
+            <span>{{ row.participantPredictBrokerageAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="参与人实际提成总金额(元)" align="center" width="190">
+          <template slot-scope="{row}">
+            <span>{{ row.participantActualBrokerageAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="参与人提成状态" align="center" width="120">
+          <template slot-scope="{row}">
+            <el-tag type="success">{{brokerageStatus(row.participantStatus)}}</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="预计提成总金额(元)" align="center" width="150">
+          <template slot-scope="{row}">
+            <span style="color: red">{{ row.brokeragePredictAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="已提成总金额(元)" align="center" width="130">
+          <template slot-scope="{row}">
+            <span style="color: red">{{ row.brokerageActualAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center" width="100"  fixed="right">
+          <template slot-scope="{row}">
+            <el-button
+              class-name="filter-item"
+              type="primary"
+              @click="goDetail(row.id)"
+              round
+            >提成明细</el-button>
+          </template>
+        </el-table-column>
+      </parentTable>
+    </y-page-list-layout>
+  </div>
+</template>
+<script>
+  import YPageListLayout from '@/components/YPageListLayout'
+  import Breadcrumb from '@/components/Breadcrumb'
+  import PermissionButton from '@/components/PermissionButton/PermissionButton'
+  import { fileDown } from '../../utils/file'
+
+  export default {
+    name: 'ViewsBrokerageCollect',
+    components: {
+      Breadcrumb,
+      YPageListLayout,
+    },
+    filters: {
+      statusFilter(status) {
+        const statusMap = {
+          published: 'success',
+          draft: 'info',
+          deleted: 'danger',
+        }
+        return statusMap[status]
+      },
+    },
+    data() {
+      return {
+        isDisable:false,
+        tableKey: 0,
+        pageData: { records: [] },
+        total: 20,
+        listLoading: true,
+        listQuery: {
+          page: 1,
+          size: 10,
+          descs: 'id',
+          state:null
+        },
+        listQueryKey: 'keyword',
+        importLoading: false,
+      }
+    },
+    created() {
+      this.getList()
+    },
+    methods: {
+      goDetail(id){
+        this.$router.push(`/brokerage/item/detail?generalId=${id}`)
+      },
+      resetSearch() {
+        this.listQuery = {
+          current: 1,
+          size: 10,
+          descs: 'id',
+        };
+        this.getList()
+      },
+      brokerageStatus(val){
+        if (val === 'NOT_START'){
+          return '未开始';
+        }
+        if (val === 'PREDICTING'){
+          return '预提中';
+        }
+        if (val === 'TO_PREDICTING'){
+          return '待预提';
+        }
+        if (val === 'PREDICTED'){
+          return '已预提';
+        }
+        if (val === 'NOT_PAYMENT'){
+          return '回款中';
+        }
+        if (val === 'FREEZE'){
+          return '冻结';
+        }
+        if (val === 'NOT_SETTLE'){
+          return '待结算';
+        }
+        if (val === 'CLOSED'){
+          return '已结算';
+        }
+      },
+      getList() {
+        const that = this;
+        this.listLoading = true;
+        this.$api.itemBrokerageGeneral.list(Object.assign({}, that.listQuery)).then((res) => {
+          that.pageData = res.data;
+          setTimeout(() => {
+            that.listLoading = false
+          }, 200)
+        })
+          .catch(() => {
+            that.listLoading = false
+          })
+      },
+    }
+  }
+</script>
+<style lang="scss" scoped>
+  .right {
+    flex: 1;
+
+    .title {
+      font-size: 16px;
+      font-weight: 500;
+      color: rgba(51, 51, 51, 1);
+      line-height: 35px;
+      margin-bottom: 8px;
+    }
+
+    .menu-2-box {
+      display: flex;
+      flex-wrap: wrap;
+      width: 100%;
+    }
+
+    .menu-2-item {
+      display: flex;
+      align-items: center;
+      color: #656565;
+      font-size: 12px;
+      width: 230px;
+      height: 101px;
+      background: rgb(255, 185, 129);
+      border-radius: 3px;
+      padding-left: 20px;
+      margin-right: 10px;
+      margin-bottom: 10px;
+      cursor: pointer;
+      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
+
+      .text {
+        margin-left: 16px;
+      }
+    }
+  }
+</style>

+ 260 - 0
src/views/brokerage/detail.vue

@@ -0,0 +1,260 @@
+<template>
+  <div class="app-container">
+    <div class="title-container">
+      <breadcrumb id="breadcrumb-container" class="breadcrumb-container"/>
+    </div>
+    <y-page-list-layout :page-list="pageData" :page-para="listQuery" :get-page-list="getList">
+      <template slot="left">
+        <el-input
+          v-model="listQuery.itemName"
+          placeholder="项目名称"
+          clearable
+          style="margin-left: 20px;width: 320px;float: left;"
+        >
+        </el-input>
+        <el-input
+          v-model="listQuery.userName"
+          placeholder="人员名称"
+          clearable
+          style="margin-left: 20px;width: 320px;float: left;"
+        >
+        </el-input>
+        <el-select
+          v-model="listQuery.brokerageRule"
+          placeholder="提成规则"
+          clearable
+          filterable
+          style="margin-left: 20px;width: 150px;float: left;"
+          class="filter-item"
+        >
+          <el-option label="市场人员规则" value="LAND_MARKETER_RULE"/>
+          <el-option label="参与人员规则" value="LAND_OTHER_RULE"/>
+        </el-select>
+        <el-select
+          v-model="listQuery.brokerageMode"
+          placeholder="提成方式"
+          clearable
+          filterable
+          style="margin-left: 20px;width: 150px;float: left;"
+          class="filter-item"
+        >
+          <el-option label="个人提成" value="PERSONAL"/>
+          <el-option label="团队抽成" value="TEAM_SHARE"/>
+        </el-select>
+        <el-button
+          class="filter-item"
+          style="margin-left: 10px;float: left;"
+          type="primary"
+          @click="getList"
+          round
+        >搜索
+        </el-button>
+        <el-button
+          class="filter-item"
+          style="float: left;"
+          round
+          type="warning"
+          @click="resetSearch()"
+        >重置
+        </el-button>
+      </template>
+      <parentTable
+        v-loading="listLoading"
+        :data="pageData.records"
+        slot="table"
+        style="width: 100%;"
+      >
+        <el-table-column label="项目名称" align="center">
+          <template slot-scope="{row}">
+            <span>{{ row.itemName }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="阶段名称" align="center">
+          <template slot-scope="{row}">
+            <span>{{ row.stageName===null?'-': row.stageName}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="合同金额(元)" align="center" width="110">
+          <template slot-scope="{row}">
+            <span>{{ row.amount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="人员名称" align="center" width="150">
+          <template slot-scope="{row}">
+            <span>{{ row.userName}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="人员类型" align="center" width="150">
+          <template slot-scope="{row}">
+            <span>{{ row.userType}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="预提金额(元)" align="center" width="150">
+          <template slot-scope="{row}">
+            <span>{{ row.aheadAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="预计提成总金额(元)" align="center" width="160">
+          <template slot-scope="{row}">
+            <span>{{ row.predictAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="实际提成总金额(元)" align="center" width="150">
+          <template slot-scope="{row}">
+            <span>{{row.actualAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="已结算金额(元)" align="center" width="120">
+          <template slot-scope="{row}">
+            <span>{{ row.advanceAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="提成规则" align="center" width="150">
+          <template slot-scope="{row}">
+            <span>{{ brokerageRule(row.brokerageRule)}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="提成方式" align="center" width="150">
+          <template slot-scope="{row}">
+            <span>{{ brokerageMode(row.brokerageMode)}}</span>
+          </template>
+        </el-table-column>
+<!--        <el-table-column label="操作" align="center" width="100"  fixed="right">-->
+<!--          <template slot-scope="{row}">-->
+<!--            <el-button-->
+<!--              class-name="filter-item"-->
+<!--              type="primary"-->
+<!--              :page-jump="true"-->
+<!--              :page-query="{id: row.id}"-->
+<!--              round-->
+<!--            >提成明细</el-button>-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+      </parentTable>
+    </y-page-list-layout>
+  </div>
+</template>
+<script>
+  import YPageListLayout from '@/components/YPageListLayout'
+  import Breadcrumb from '@/components/Breadcrumb'
+  import PermissionButton from '@/components/PermissionButton/PermissionButton'
+  import { fileDown } from '../../utils/file'
+
+  export default {
+    name: 'ViewsBrokerageDetail',
+    components: {
+      Breadcrumb,
+      YPageListLayout,
+    },
+    filters: {
+      statusFilter(status) {
+        const statusMap = {
+          published: 'success',
+          draft: 'info',
+          deleted: 'danger',
+        }
+        return statusMap[status]
+      },
+    },
+    data() {
+      return {
+        isDisable:false,
+        tableKey: 0,
+        pageData: { records: [] },
+        total: 20,
+        listLoading: true,
+        listQuery: {
+          page: 1,
+          size: 10,
+          descs: 'id',
+          generalId:null
+        },
+        listQueryKey: 'keyword',
+      }
+    },
+    created() {
+      if (this.$route.query.generalId) {
+        this.listQuery.generalId = this.$route.query.generalId;
+      }
+      this.getList()
+    },
+    methods: {
+      resetSearch() {
+        this.listQuery = {
+          current: 1,
+          size: 10,
+          descs: 'id',
+        };
+        this.getList()
+      },
+      brokerageRule(val){
+        if (val === 'LAND_OTHER_RULE'){
+          return '参与人员规则';
+        }
+        if (val === 'LAND_MARKETER_RULE'){
+          return '市场人员规则';
+        }
+      },
+      brokerageMode(val){
+        if (val === 'PERSONAL'){
+          return '个人提成';
+        }
+        if (val === 'TEAM_SHARE'){
+          return '团队抽成';
+        }
+      },
+      getList() {
+        const that = this;
+        this.listLoading = true;
+        this.$api.itemBrokerageDetail.list(Object.assign({}, that.listQuery)).then((res) => {
+          that.pageData = res.data;
+          setTimeout(() => {
+            that.listLoading = false
+          }, 200)
+        })
+          .catch(() => {
+            that.listLoading = false
+          })
+      },
+    }
+  }
+</script>
+<style lang="scss" scoped>
+  .right {
+    flex: 1;
+
+    .title {
+      font-size: 16px;
+      font-weight: 500;
+      color: rgba(51, 51, 51, 1);
+      line-height: 35px;
+      margin-bottom: 8px;
+    }
+
+    .menu-2-box {
+      display: flex;
+      flex-wrap: wrap;
+      width: 100%;
+    }
+
+    .menu-2-item {
+      display: flex;
+      align-items: center;
+      color: #656565;
+      font-size: 12px;
+      width: 230px;
+      height: 101px;
+      background: rgb(255, 185, 129);
+      border-radius: 3px;
+      padding-left: 20px;
+      margin-right: 10px;
+      margin-bottom: 10px;
+      cursor: pointer;
+      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
+
+      .text {
+        margin-left: 16px;
+      }
+    }
+  }
+</style>

+ 271 - 0
src/views/brokerage/sequence.vue

@@ -0,0 +1,271 @@
+<template>
+  <div class="app-container">
+    <div class="title-container">
+      <breadcrumb id="breadcrumb-container" class="breadcrumb-container"/>
+    </div>
+    <y-page-list-layout :page-list="pageData" :page-para="listQuery" :get-page-list="getList">
+      <template slot="left">
+        <el-input
+          v-model="listQuery.userName"
+          placeholder="人员名称"
+          clearable
+          style="margin-left: 20px;width: 320px;float: left;"
+        >
+        </el-input>
+        <el-select
+          v-model="listQuery.brokerageRule"
+          placeholder="结算类型"
+          clearable
+          filterable
+          style="margin-left: 20px;width: 150px;float: left;"
+          class="filter-item"
+        >
+          <el-option label="项目结算" value="ITEM_SETTLE"/>
+          <el-option label="默认预提" value="DEFAULT_AHEAD"/>
+        </el-select>
+        <el-button
+          class="filter-item"
+          style="margin-left: 10px;float: left;"
+          type="primary"
+          @click="getList"
+          round
+        >搜索
+        </el-button>
+        <el-button
+          class="filter-item"
+          style="float: left;"
+          round
+          type="warning"
+          @click="resetSearch()"
+        >重置
+        </el-button>
+      </template>
+      <parentTable
+        v-loading="listLoading"
+        :data="pageData.records"
+        slot="table"
+        style="width: 100%;"
+      >
+        <el-table-column type="expand">
+          <template slot-scope="{row}">
+            <parentTable style="font-size: 5px;color: #8c939d" v-loading="listLoading" inline :data="row.details">
+              <el-table-column label="项目名称" align="center">
+                <template slot-scope="{row}">
+                  <span>{{ row.itemName }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="阶段名称" align="center">
+                <template slot-scope="{row}">
+                  <span>{{ row.stageName===null?'-':row.stageName }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="预计结算金额(元)" align="center">
+                <template slot-scope="{row}">
+                  <span>{{ row.predictAmount }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="实际结算金额(元)" align="center">
+                <template slot-scope="{row}">
+                  <span>{{ row.brokerageAmount }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="结算类型" align="center">
+                <template slot-scope="{row}">
+                  <span>{{ itemCate(row.brokerageCate) }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="提成规则" align="center">
+                <template slot-scope="{row}">
+                  <span>{{ brokerageRule(row.brokerageRule) }}</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="提成方式" align="center">
+                <template slot-scope="{row}">
+                  <span>{{ brokerageMode(row.brokerageMode) }}</span>
+                </template>
+              </el-table-column>
+            </parentTable>
+          </template>
+        </el-table-column>
+        <el-table-column label="人员名称" align="center" width="110">
+          <template slot-scope="{row}">
+            <span>{{ row.userName }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="结算总金额(元)" align="center" width="120">
+          <template slot-scope="{row}">
+            <span>{{ row.brokerageAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="结算类型" align="center" width="150">
+          <template slot-scope="{row}">
+            <span>{{settleCate(row.cate)}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="提成体现" align="center" width="150">
+          <template slot-scope="{row}">
+            <span>{{ row.embody}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="备注" align="center">
+          <template slot-scope="{row}">
+            <span>{{ row.remark}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="结算时间" align="center" width="160">
+          <template slot-scope="{row}">
+            <span>{{ row.created}}</span>
+          </template>
+        </el-table-column>
+<!--        <el-table-column label="操作" align="center" width="100"  fixed="right">-->
+<!--          <template slot-scope="{row}">-->
+<!--            <el-button-->
+<!--              class-name="filter-item"-->
+<!--              type="primary"-->
+<!--              :page-jump="true"-->
+<!--              :page-query="{id: row.id}"-->
+<!--              round-->
+<!--            >提成明细</el-button>-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+      </parentTable>
+    </y-page-list-layout>
+  </div>
+</template>
+<script>
+  import YPageListLayout from '@/components/YPageListLayout'
+  import Breadcrumb from '@/components/Breadcrumb'
+  import PermissionButton from '@/components/PermissionButton/PermissionButton'
+  import { fileDown } from '../../utils/file'
+
+  export default {
+    name: 'ViewsBrokerageSequence',
+    components: {
+      Breadcrumb,
+      YPageListLayout,
+    },
+    filters: {
+      statusFilter(status) {
+        const statusMap = {
+          published: 'success',
+          draft: 'info',
+          deleted: 'danger',
+        }
+        return statusMap[status]
+      },
+    },
+    data() {
+      return {
+        isDisable:false,
+        tableKey: 0,
+        pageData: { records: [] },
+        details:[],
+        total: 20,
+        listLoading: true,
+        listQuery: {
+          page: 1,
+          size: 10,
+          descs: 'id',
+        },
+        listQueryKey: 'keyword',
+      }
+    },
+    created() {
+      this.getList()
+    },
+    methods: {
+      brokerageRule(val){
+        if (val === 'LAND_OTHER_RULE'){
+          return '参与人员规则';
+        }
+        if (val === 'LAND_MARKETER_RULE'){
+          return '市场人员规则';
+        }
+      },
+      brokerageMode(val){
+        if (val === 'PERSONAL'){
+          return '个人提成';
+        }
+        if (val === 'TEAM_SHARE'){
+          return '团队抽成';
+        }
+      },
+      itemCate(val){
+        if (val === 'AHEAD'){
+          return '预提';
+        }
+        if (val === 'SETTLE'){
+          return '结算';
+        }
+      },
+      resetSearch() {
+        this.listQuery = {
+          current: 1,
+          size: 10,
+          descs: 'id',
+        };
+        this.getList()
+      },
+      settleCate(val){
+        if (val === 'DEFAULT_AHEAD'){
+          return '默认预提';
+        }
+        if (val === 'ITEM_SETTLE'){
+          return '项目结算';
+        }
+      },
+      getList() {
+        const that = this;
+        this.listLoading = true;
+        this.$api.itemBrokerageSequence.list(Object.assign({}, that.listQuery)).then((res) => {
+          that.pageData = res.data;
+          setTimeout(() => {
+            that.listLoading = false
+          }, 200)
+        })
+          .catch(() => {
+            that.listLoading = false
+          })
+      },
+    }
+  }
+</script>
+<style lang="scss" scoped>
+  .right {
+    flex: 1;
+
+    .title {
+      font-size: 16px;
+      font-weight: 500;
+      color: rgba(51, 51, 51, 1);
+      line-height: 35px;
+      margin-bottom: 8px;
+    }
+
+    .menu-2-box {
+      display: flex;
+      flex-wrap: wrap;
+      width: 100%;
+    }
+
+    .menu-2-item {
+      display: flex;
+      align-items: center;
+      color: #656565;
+      font-size: 12px;
+      width: 230px;
+      height: 101px;
+      background: rgb(255, 185, 129);
+      border-radius: 3px;
+      padding-left: 20px;
+      margin-right: 10px;
+      margin-bottom: 10px;
+      cursor: pointer;
+      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
+
+      .text {
+        margin-left: 16px;
+      }
+    }
+  }
+</style>

+ 244 - 0
src/views/brokerage/sequenceDetail.vue

@@ -0,0 +1,244 @@
+<template>
+  <div class="app-container">
+    <div class="title-container">
+      <breadcrumb id="breadcrumb-container" class="breadcrumb-container"/>
+    </div>
+    <y-page-list-layout :page-list="pageData" :page-para="listQuery" :get-page-list="getList">
+      <template slot="left">
+        <el-input
+          v-model="listQuery.itemName"
+          placeholder="项目名称"
+          clearable
+          style="margin-left: 20px;width: 320px;float: left;"
+        >
+        </el-input>
+        <el-input
+          v-model="listQuery.userName"
+          placeholder="人员名称"
+          clearable
+          style="margin-left: 20px;width: 320px;float: left;"
+        >
+        </el-input>
+        <el-select
+          v-model="listQuery.brokerageCate"
+          placeholder="结算类型"
+          clearable
+          filterable
+          style="margin-left: 20px;width: 150px;float: left;"
+          class="filter-item"
+        >
+          <el-option label="项目结算" value="SETTLE"/>
+          <el-option label="默认预提" value="AHEAD"/>
+        </el-select>
+        <el-button
+          class="filter-item"
+          style="margin-left: 10px;float: left;"
+          type="primary"
+          @click="getList"
+          round
+        >搜索
+        </el-button>
+        <el-button
+          class="filter-item"
+          style="float: left;"
+          round
+          type="warning"
+          @click="resetSearch()"
+        >重置
+        </el-button>
+      </template>
+      <parentTable
+        v-loading="listLoading"
+        :data="pageData.records"
+        slot="table"
+        style="width: 100%;"
+      >
+        <el-table-column label="项目名称" align="center">
+          <template slot-scope="{row}">
+            <span>{{ row.itemName }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="阶段名称" align="center" width="250">
+          <template slot-scope="{row}">
+            <span>{{ row.stageName===null?'-':row.stageName}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="人员名称" align="center" width="160">
+          <template slot-scope="{row}">
+            <span>{{ row.userName}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="预计提成金额(元)" align="center" width="160">
+          <template slot-scope="{row}">
+            <span>{{ row.predictAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="结算金额(元)" align="center" width="120">
+          <template slot-scope="{row}">
+            <span>{{ row.brokerageAmount}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="结算类型" align="center" width="120">
+          <template slot-scope="{row}">
+            <span>{{ settleCate(row.brokerageCate)}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column label="提成规则" align="center" width="150">
+          <template slot-scope="{row}">
+            <el-tag type="success">{{brokerageRule(row.brokerageRule)}}</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="提成方式" align="center" width="150">
+          <template slot-scope="{row}">
+            <el-tag type="success">{{brokerageMode(row.brokerageMode)}}</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="结算时间" align="center" width="180">
+          <template slot-scope="{row}">
+            <span>{{ row.created}}</span>
+          </template>
+        </el-table-column>
+<!--        <el-table-column label="操作" align="center" width="100"  fixed="right">-->
+<!--          <template slot-scope="{row}">-->
+<!--            <el-button-->
+<!--              class-name="filter-item"-->
+<!--              type="primary"-->
+<!--              @click="goDetail(row.id)"-->
+<!--              round-->
+<!--            >提成明细</el-button>-->
+<!--          </template>-->
+<!--        </el-table-column>-->
+      </parentTable>
+    </y-page-list-layout>
+  </div>
+</template>
+<script>
+  import YPageListLayout from '@/components/YPageListLayout'
+  import Breadcrumb from '@/components/Breadcrumb'
+  import PermissionButton from '@/components/PermissionButton/PermissionButton'
+  import { fileDown } from '../../utils/file'
+
+  export default {
+    name: 'ViewsBrokerageSequenceDetail',
+    components: {
+      Breadcrumb,
+      YPageListLayout,
+    },
+    filters: {
+      statusFilter(status) {
+        const statusMap = {
+          published: 'success',
+          draft: 'info',
+          deleted: 'danger',
+        }
+        return statusMap[status]
+      },
+    },
+    data() {
+      return {
+        isDisable:false,
+        tableKey: 0,
+        pageData: { records: [] },
+        total: 20,
+        listLoading: true,
+        listQuery: {
+          page: 1,
+          size: 10,
+          descs: 'id',
+          state:null
+        },
+        listQueryKey: 'keyword',
+        importLoading: false,
+      }
+    },
+    created() {
+      this.getList()
+    },
+    methods: {
+      settleCate(val){
+        if (val === 'AHEAD'){
+          return '默认预提';
+        }
+        if (val === 'SETTLE'){
+          return '项目结算';
+        }
+      },
+      brokerageRule(val){
+        if (val === 'LAND_OTHER_RULE'){
+          return '参与人员规则';
+        }
+        if (val === 'LAND_MARKETER_RULE'){
+          return '市场人员规则';
+        }
+      },
+      brokerageMode(val){
+        if (val === 'PERSONAL'){
+          return '个人提成';
+        }
+        if (val === 'TEAM_SHARE'){
+          return '团队抽成';
+        }
+      },
+      resetSearch() {
+        this.listQuery = {
+          current: 1,
+          size: 10,
+          descs: 'id',
+        };
+        this.getList()
+      },
+      getList() {
+        const that = this;
+        this.listLoading = true;
+        this.$api.itemBrokerageSequenceDetail.list(Object.assign({}, that.listQuery)).then((res) => {
+          that.pageData = res.data;
+          setTimeout(() => {
+            that.listLoading = false
+          }, 200)
+        })
+          .catch(() => {
+            that.listLoading = false
+          })
+      },
+    }
+  }
+</script>
+<style lang="scss" scoped>
+  .right {
+    flex: 1;
+
+    .title {
+      font-size: 16px;
+      font-weight: 500;
+      color: rgba(51, 51, 51, 1);
+      line-height: 35px;
+      margin-bottom: 8px;
+    }
+
+    .menu-2-box {
+      display: flex;
+      flex-wrap: wrap;
+      width: 100%;
+    }
+
+    .menu-2-item {
+      display: flex;
+      align-items: center;
+      color: #656565;
+      font-size: 12px;
+      width: 230px;
+      height: 101px;
+      background: rgb(255, 185, 129);
+      border-radius: 3px;
+      padding-left: 20px;
+      margin-right: 10px;
+      margin-bottom: 10px;
+      cursor: pointer;
+      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
+
+      .text {
+        margin-left: 16px;
+      }
+    }
+  }
+</style>

+ 1 - 1
src/views/item/list.vue

@@ -137,7 +137,7 @@
             <el-button v-else plain disabled>下载</el-button>
           </template>
         </el-table-column>
-        <el-table-column label="操作" align="center" width="300">
+        <el-table-column label="操作" align="center" width="300" fixed="right">
           <template slot-scope="{row}">
             <PermissionButton
               menu-code="_views_item_plan"

+ 5 - 5
src/views/item/planList.vue

@@ -45,10 +45,10 @@
                 </el-timeline-item>
               </el-timeline>
               <el-alert v-else
-                  title="此项目还未排期"
-                  type="error"
-                  :closable="false"
-                  show-icon>
+                title="此项目还未排期"
+                type="error"
+                :closable="false"
+                show-icon>
               </el-alert>
             </div>
           </div>
@@ -134,7 +134,7 @@
     },
     methods: {
       commit(){
-        if (!this.id){
+        if (!this.itemId){
           this.$notify({
             title: '错误',
             message: '提交失败',