|
|
|
@ -1,9 +1,9 @@ |
|
|
|
|
// 清收完成统计 |
|
|
|
|
// 清收年度统计 |
|
|
|
|
<template> |
|
|
|
|
<div> |
|
|
|
|
<!-- 清收工作完成统计 --> |
|
|
|
|
<div v-if="liquidate === '1'"> |
|
|
|
|
<div class="mgt20 left-border fz-16"><p class="c-black mgl10">清收工作完成情况统计</p></div> |
|
|
|
|
<div class="mgt20 left-border fz-16"><p class="c-black mgl10">清收工作年度情况统计</p></div> |
|
|
|
|
<div class="mgt20 pdb20"> |
|
|
|
|
<div class="mgtb20"> |
|
|
|
|
<div class="flex-center"> |
|
|
|
@ -22,7 +22,7 @@ |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<el-button type="text" v-if="$router.currentRoute.meta.btn.includes('人员选择')" @click="createList(scope.row)">人员选择</el-button> |
|
|
|
|
<el-button type="text" v-if="$router.currentRoute.meta.btn.includes('统计查看')" @click="[(liquidate = '2'), edit(scope.row, 'watch')]">查看</el-button> |
|
|
|
|
<el-button type="text" v-if="$router.currentRoute.meta.btn.includes('统计编辑')" @click="edit(scope.row)">编辑</el-button> |
|
|
|
|
<el-button type="text" v-if="$router.currentRoute.meta.btn.includes('统计编辑')" @click="edit(scope.row)">管理</el-button> |
|
|
|
|
<el-button type="text" v-if="$router.currentRoute.meta.btn.includes('统计删除')" @click="del(scope.row)">删除</el-button> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
@ -46,7 +46,7 @@ |
|
|
|
|
<el-option v-for="item in proportion" :key="item.id" :label="item.label" :value="item.id"></el-option> |
|
|
|
|
</el-select> |
|
|
|
|
<el-input |
|
|
|
|
placeholder="请输入整数" |
|
|
|
|
placeholder="请输入金额(元)" |
|
|
|
|
class="wd20 mglr10" |
|
|
|
|
style="min-width: 200px" |
|
|
|
|
:disabled="!searchStr.proportionSymbol" |
|
|
|
@ -58,7 +58,7 @@ |
|
|
|
|
<el-select v-model="searchStr.allAoumntSymbol" placeholder="请选择" clearable @change="search"> |
|
|
|
|
<el-option v-for="item in proportion" :key="item.id" :label="item.label" :value="item.id"></el-option> |
|
|
|
|
</el-select> |
|
|
|
|
<el-input :disabled="!searchStr.allAoumntSymbol" class="wd20 mglr10" placeholder="清收总额" style="min-width: 200px" v-model="searchStr.allAoumnt" clearable></el-input> |
|
|
|
|
<el-input :disabled="!searchStr.allAoumntSymbol" class="wd20 mglr10" placeholder="请输入金额(元)" style="min-width: 200px" v-model="searchStr.allAoumnt" clearable></el-input> |
|
|
|
|
</div> |
|
|
|
|
<div class="flex-center"> |
|
|
|
|
<el-button v-preventReClick type="primary" size="small" round @click="clearOption">清空选项</el-button> |
|
|
|
@ -75,7 +75,7 @@ |
|
|
|
|
|
|
|
|
|
<div class="flex-between"> |
|
|
|
|
<div class="flex-center"> |
|
|
|
|
<el-button class="mgl20" v-if="$router.currentRoute.meta.btn.includes('统计导出')" v-preventReClick type="primary" size="small" round @click="statisticsSelection">导出列表</el-button> |
|
|
|
|
<el-button class="mgl20" v-if="$router.currentRoute.meta.btn.includes('统计导出列表')" v-preventReClick type="primary" size="small" round @click="statisticsSelection">导出列表</el-button> |
|
|
|
|
<el-radio-group v-model="radio" class="mgl30" @change="radioChange"> |
|
|
|
|
<el-radio-button class="ht40" label="依据公司排名"></el-radio-button> |
|
|
|
|
<el-radio-button class="ht40" label="依据小组排名"></el-radio-button> |
|
|
|
@ -87,7 +87,7 @@ |
|
|
|
|
class="ht40 mgl10 mgr10" |
|
|
|
|
@keyup.enter.native="annualStatisticsList('search')" |
|
|
|
|
v-model="searchStr.queryCondition" |
|
|
|
|
placeholder="工号/清收负责人/清收企业" |
|
|
|
|
placeholder="工号/清收负责人" |
|
|
|
|
clearable |
|
|
|
|
></el-input> |
|
|
|
|
</div> |
|
|
|
@ -119,23 +119,23 @@ |
|
|
|
|
</div> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column prop="cash" label="清收现金(万元)" align="center" width="150px"> |
|
|
|
|
<el-table-column prop="cash" label="清收现金(元)" align="center" width="150px"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<div class="multi-box" v-for="(item, index) in scope.row.cash" :key="index"> |
|
|
|
|
{{ item.cash }} |
|
|
|
|
</div> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column prop="asset" label="清收资产(万元)" align="center" width="150px"> |
|
|
|
|
<el-table-column prop="asset" label="清收资产(元)" align="center" width="150px"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<div class="multi-box" v-for="(item, index) in scope.row.assets" :key="index"> |
|
|
|
|
{{ item.asset }} |
|
|
|
|
{{ item.assets }} |
|
|
|
|
</div> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column prop="collectionTime" label="回款时间" align="center" width="200px"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<div class="backTime" v-for="(item, index) in scope.row.collectionTime" :key="index"> |
|
|
|
|
<div class="backTime static multi-box" v-for="(item, index) in scope.row.collectionTime" :key="index"> |
|
|
|
|
<el-date-picker |
|
|
|
|
style="width:180px" |
|
|
|
|
v-model="item.collectionTime" |
|
|
|
@ -158,7 +158,7 @@ |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<div class="ratio" v-show="scope.row.edit"> |
|
|
|
|
<div class="top">{{scope.row.totalAmount}}</div> |
|
|
|
|
<el-input :disabled="!scope.row.edit" v-model="scope.row.proportion"></el-input> |
|
|
|
|
<el-input :disabled="!scope.row.edit" placeholder="输入年度金额指标" v-model="scope.row.proportion"></el-input> |
|
|
|
|
</div> |
|
|
|
|
<div v-if="!scope.row.edit"> |
|
|
|
|
{{scope.row.percent}}% |
|
|
|
@ -167,7 +167,7 @@ |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column prop="remark" label="备注" align="center" width="200px"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<div class="backTime" v-for="(item, index) in scope.row.description" :key="index"> |
|
|
|
|
<div class="backTime static multi-box" v-for="(item, index) in scope.row.description" :key="index"> |
|
|
|
|
<el-input :disabled="!scope.row.edit" v-model="item.description"></el-input> |
|
|
|
|
</div> |
|
|
|
|
</template> |
|
|
|
@ -176,6 +176,7 @@ |
|
|
|
|
<el-table-column v-if="!liquidWatch" label="操作" width="300" align="center"> |
|
|
|
|
<template slot-scope="scope"> |
|
|
|
|
<el-button type="text" @click="yearEdit(scope.row)">{{scope.row.editStr}}</el-button> |
|
|
|
|
<el-button type="text" v-show="scope.row.edit" @click="[scope.row.edit = false,annualStatisticsList()]">取消</el-button> |
|
|
|
|
<!-- <el-button type="text" @click="history(scope.row)">查看</el-button> --> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
@ -193,7 +194,7 @@ |
|
|
|
|
<div class="left-border fz-16"><p class="c-black mgl10">年份</p></div> |
|
|
|
|
<el-date-picker |
|
|
|
|
:disabled="changeStaffDisabled" |
|
|
|
|
class="mgt10 mgl80" |
|
|
|
|
class="mgt10 mgl80 year" |
|
|
|
|
v-model="chooisYear" |
|
|
|
|
value-format="yyyy" |
|
|
|
|
:picker-options="pickerOptions" |
|
|
|
@ -205,6 +206,7 @@ |
|
|
|
|
<div class="tree"> |
|
|
|
|
<div class="left-border fz-16 mgt20"><p class="c-black mgl10">参与本年度清收排名的人员</p></div> |
|
|
|
|
<div class="mgl80 mgt20 mgr80" style="border: 1px solid #e6e6e6; border-radius: 15px; overflow: auto; padding: 15px"> |
|
|
|
|
<el-checkbox @change="allCheck" v-model="checked" class="mgl20" style="margin-left:23px">全选</el-checkbox> |
|
|
|
|
<el-tree |
|
|
|
|
:data="tree" |
|
|
|
|
show-checkbox |
|
|
|
@ -288,6 +290,7 @@ export default { |
|
|
|
|
recordArr:[],// 记录用数组,加载更多 |
|
|
|
|
changeStaffYear:'', |
|
|
|
|
changeStaffDisabled:false, |
|
|
|
|
checked:false, |
|
|
|
|
}; |
|
|
|
|
}, |
|
|
|
|
watch: { |
|
|
|
@ -296,6 +299,15 @@ export default { |
|
|
|
|
this.getTree() |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
liquidate(val){ |
|
|
|
|
if(val==2){ |
|
|
|
|
console.log('判断为2') |
|
|
|
|
this.liquidateList() |
|
|
|
|
this.annualStatisticsList() |
|
|
|
|
}else{ |
|
|
|
|
this.annualList() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
computed: { |
|
|
|
|
liquidate:{ |
|
|
|
@ -323,10 +335,8 @@ export default { |
|
|
|
|
created() { |
|
|
|
|
this.searchStr = this.$store.state.loan.liquidateSearch |
|
|
|
|
this.annualList() |
|
|
|
|
console.log(this.liquidate,'li') |
|
|
|
|
console.log(this.liquidate,this.searchStr,'li') |
|
|
|
|
if(this.liquidate=='2'){ |
|
|
|
|
console.log('判断为2') |
|
|
|
|
this.liquidateList() |
|
|
|
|
this.annualStatisticsList() |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
@ -376,6 +386,9 @@ export default { |
|
|
|
|
this.loading = false |
|
|
|
|
}) |
|
|
|
|
}, |
|
|
|
|
/* TODO 按照有多组进行区分,再按组分人,后端传来按组区分的数组,进行切割区分。 |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
annualStatisticsList(){ |
|
|
|
|
if(this.searchStr.proportionSymbol&&!this.searchStr.proportion) return this.$message('请输入完成比例整数!') |
|
|
|
|
if(this.searchStr.allAoumntSymbol&&!this.searchStr.allAoumnt) return this.$message('请输入已清收总额!') |
|
|
|
@ -399,19 +412,22 @@ export default { |
|
|
|
|
if(arr.has(e.jobNumber)){ |
|
|
|
|
let obj = arr.get(e.jobNumber) |
|
|
|
|
obj.enterprise.push({enterprise:e.enterprise,id:e.id}) |
|
|
|
|
obj.totalAmount += ((+e.cash||0)+(+e.assets)) |
|
|
|
|
obj.cash.push({cash:e.cash,id:e.id}) |
|
|
|
|
obj.assets.push({assets:e.assets,id:e.id}) |
|
|
|
|
obj.collectionTime.push({collectionTime:e.collectionTime,id:e.id}) |
|
|
|
|
obj.description.push({description:e.description,id:e.id}) |
|
|
|
|
obj.totalAmount += e.totalAmount |
|
|
|
|
arr.set(e.jobNumber,obj) |
|
|
|
|
// console.log(e.totalAmount,`再次处理加入的${e.personLiable}`) |
|
|
|
|
|
|
|
|
|
}else{ |
|
|
|
|
e.enterprise = [{enterprise:e.enterprise,id:e.id}] |
|
|
|
|
e.totalAmount = (+e.cash||0)+(+e.assets) |
|
|
|
|
e.cash = [{cash:e.cash,id:e.id}] |
|
|
|
|
e.assets = [{assets:e.assets,id:e.id}] |
|
|
|
|
e.collectionTime = [{collectionTime:e.collectionTime,id:e.id}] |
|
|
|
|
e.description = [{description:e.description,id:e.id}] |
|
|
|
|
e.totalAmount += e.totalAmount |
|
|
|
|
// console.log(e.totalAmount,`首次加入的${e.personLiable}`) |
|
|
|
|
arr.set(e.jobNumber,e) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
@ -421,7 +437,7 @@ export default { |
|
|
|
|
if(value.totalAmount&&value.proportion){ |
|
|
|
|
value.percent = ((value.totalAmount/value.proportion)*100).toFixed(2) |
|
|
|
|
}else{ |
|
|
|
|
value.percent = '未填写任务额度' |
|
|
|
|
value.percent = '未填写年度指标' |
|
|
|
|
} |
|
|
|
|
this.originalData.push(value) |
|
|
|
|
} |
|
|
|
@ -439,7 +455,7 @@ export default { |
|
|
|
|
case ">": |
|
|
|
|
if(this.searchStr.proportion){ |
|
|
|
|
this.statisticsData = this.statisticsData.filter(e=>{ |
|
|
|
|
if(e.percent!=='未填写任务额度') |
|
|
|
|
if(e.percent!=='未填写年度指标') |
|
|
|
|
return +e.percent > this.searchStr.proportion |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
@ -447,7 +463,7 @@ export default { |
|
|
|
|
case "<": |
|
|
|
|
if(this.searchStr.proportion){ |
|
|
|
|
this.statisticsData = this.statisticsData.filter(e=>{ |
|
|
|
|
if(e.percent!=='未填写任务额度') |
|
|
|
|
if(e.percent!=='未填写年度指标') |
|
|
|
|
return +e.percent < this.searchStr.proportion |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
@ -455,7 +471,7 @@ export default { |
|
|
|
|
case ">=": |
|
|
|
|
if(this.searchStr.proportion){ |
|
|
|
|
this.statisticsData = this.statisticsData.filter(e=>{ |
|
|
|
|
if(e.percent!=='未填写任务额度') |
|
|
|
|
if(e.percent!=='未填写年度指标') |
|
|
|
|
return +e.percent >= this.searchStr.proportion |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
@ -463,7 +479,7 @@ export default { |
|
|
|
|
case "<=": |
|
|
|
|
if(this.searchStr.proportion){ |
|
|
|
|
this.statisticsData = this.statisticsData.filter(e=>{ |
|
|
|
|
if(e.percent!=='未填写任务额度') |
|
|
|
|
if(e.percent!=='未填写年度指标') |
|
|
|
|
return +e.percent <= this.searchStr.proportion |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
@ -471,7 +487,7 @@ export default { |
|
|
|
|
case "=": |
|
|
|
|
if(this.searchStr.proportion){ |
|
|
|
|
this.statisticsData = this.statisticsData.filter(e=>{ |
|
|
|
|
if(e.percent!=='未填写任务额度') |
|
|
|
|
if(e.percent!=='未填写年度指标') |
|
|
|
|
return +e.percent == this.searchStr.proportion |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
@ -685,7 +701,7 @@ export default { |
|
|
|
|
// 判断进入查看 |
|
|
|
|
this.$store.commit('liquidWatch',val) |
|
|
|
|
console.log(val,this.liquidWatch,'liquidWatch') |
|
|
|
|
this.annualStatisticsList() |
|
|
|
|
// this.annualStatisticsList() |
|
|
|
|
}, |
|
|
|
|
yearEdit(row, val){// 编辑功能 |
|
|
|
|
if(row.edit != false){ |
|
|
|
@ -716,6 +732,7 @@ export default { |
|
|
|
|
personnelSelection(val){// 人员选择 |
|
|
|
|
return personnelSelection({year:val}).then(res=>{ |
|
|
|
|
this.treeIds = res.data.list |
|
|
|
|
console.log(this.treeIds,'treeids') |
|
|
|
|
this.ids = res.data.list |
|
|
|
|
}) |
|
|
|
|
}, |
|
|
|
@ -726,6 +743,30 @@ export default { |
|
|
|
|
|
|
|
|
|
}) |
|
|
|
|
}) |
|
|
|
|
}, |
|
|
|
|
allCheck(val){ |
|
|
|
|
console.log(this.tree,'tree') |
|
|
|
|
if(this.tree.length==0) return |
|
|
|
|
let that = this |
|
|
|
|
function recursion(arr){ |
|
|
|
|
if(arr&&arr.length>0){ |
|
|
|
|
arr.forEach(e=>{ |
|
|
|
|
that.treeIds.push(e.id) |
|
|
|
|
if(e.personnel&&e.personnel.length>0){ |
|
|
|
|
recursion(e.personnel) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if(val){ |
|
|
|
|
recursion(this.tree) |
|
|
|
|
// this.ids = this.treeIds |
|
|
|
|
}else{ |
|
|
|
|
this.treeIds = [] |
|
|
|
|
} |
|
|
|
|
this.$refs.tree.setCheckedKeys([this.treeIds]); |
|
|
|
|
// console.log(this.treeIds,'ids') |
|
|
|
|
// this.$forceUpdate(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
@ -736,12 +777,15 @@ export default { |
|
|
|
|
padding-bottom: 9px; |
|
|
|
|
} |
|
|
|
|
.multi-box { |
|
|
|
|
border: 1px solid #e6e6e6; |
|
|
|
|
// border: 1px solid #e6e6e6; |
|
|
|
|
|
|
|
|
|
min-height: 50px; |
|
|
|
|
text-align: center; |
|
|
|
|
line-height: 50px; |
|
|
|
|
&:nth-child(2n) { |
|
|
|
|
background: #e6e6e6; |
|
|
|
|
border-left: 1px solid #fff; |
|
|
|
|
border-right: 1px solid #fff; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.backTime{ |
|
|
|
@ -761,8 +805,8 @@ export default { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
.dataList{ |
|
|
|
|
height: 550px; |
|
|
|
|
overflow: auto; |
|
|
|
|
min-height: 550px; |
|
|
|
|
// overflow: auto; |
|
|
|
|
position: relative; |
|
|
|
|
} |
|
|
|
|
/deep/ .el-table::before{ |
|
|
|
@ -777,4 +821,24 @@ export default { |
|
|
|
|
/deep/ .el-input.is-disabled .el-input__inner{ |
|
|
|
|
text-align: center; |
|
|
|
|
} |
|
|
|
|
/deep/ .el-table--enable-row-transition .el-table__body td{ |
|
|
|
|
border: 0.0625rem solid #e6e6e6; |
|
|
|
|
border-top: 0; |
|
|
|
|
} |
|
|
|
|
/deep/ .el-table .cell{ |
|
|
|
|
padding-left: 0; |
|
|
|
|
padding-right: 0; |
|
|
|
|
} |
|
|
|
|
/deep/ .el-date-editor.el-input{ |
|
|
|
|
width: 100%!important; |
|
|
|
|
background: transparent; |
|
|
|
|
} |
|
|
|
|
/deep/ .top .el-date-editor.el-input{ |
|
|
|
|
width: 180px!important; |
|
|
|
|
background: transparent; |
|
|
|
|
} |
|
|
|
|
/deep/ .el-input.is-disabled .el-input__inner{ |
|
|
|
|
color:#606266; |
|
|
|
|
background: transparent; |
|
|
|
|
} |
|
|
|
|
</style> |
|
|
|
|