基本完成新需求

master
e 3 years ago
parent 3258ccaf6d
commit e91c7f28f0
  1. 3
      README.md
  2. 1
      src/App.vue
  3. 2
      src/components/common/BindPhone.vue
  4. 6
      src/components/common/Sidebar.vue
  5. 5
      src/components/common/Tags.vue
  6. 110
      src/components/common/assetDesign.vue
  7. 2
      src/components/common/back.vue
  8. 28
      src/components/common/background-list.vue
  9. 8
      src/components/common/left-sidebar.vue
  10. 21
      src/components/common/noticeDesign.vue
  11. 6
      src/components/common/system-management.vue
  12. 2
      src/components/common/systemLog.vue
  13. 39
      src/components/common/systemTree.vue
  14. 5
      src/components/common/top_sidebar.vue
  15. 19
      src/components/common/tree.vue
  16. 10
      src/components/page/HomePage.vue
  17. 12
      src/components/page/Login.vue
  18. 14
      src/components/page/SystemManagement.vue
  19. 137
      src/components/page/afterLoan/afterInsurance.vue
  20. 78
      src/components/page/afterLoan/afterLoan.vue
  21. 4
      src/components/page/afterLoan/collection.vue
  22. 672
      src/components/page/afterLoan/complete.vue
  23. 168
      src/components/page/afterLoan/progress.vue
  24. 48
      src/router/index.js
  25. 4
      src/store/modules/loan.js
  26. 496
      src/utils/api.js
  27. 537
      src/utils/core.js
  28. 24
      src/utils/http.js

@ -1,2 +1,3 @@
# dq_webcode
大庆智慧金融前端代码PC端---2021
大庆智慧金融前端代码PC端---2021

@ -15,6 +15,7 @@ export default {
//vuexsessionStorage
window.addEventListener('beforeunload', () => {
sessionStorage.removeItem('success')
sessionStorage.setItem('store', JSON.stringify(this.$store.state));
});

@ -1,6 +1,5 @@
<template>
<div>
<!-- 绑定手机号card -->
<div class="Login_view bindphone_view">
<div class="flex-between login_title">
<span>绑定手机号码</span>
@ -55,7 +54,6 @@ export default {
</script>
<style lang="scss" scoped>
//Steps
@mixin Steps_node {
width: 16px;
height: 16px;

@ -160,6 +160,7 @@ export default {
handleCommand(command) {
if(command == 'loginout'){
// sessionStorage.removeItem('ms_username')
console.log('触发用户名下拉菜单')
this.$router.push('/login');
this.$store.getters.clear
resetRouter()//
@ -169,6 +170,7 @@ export default {
sessionStorage.clear()
localStorage.clear()
// 退token
sessionStorage.removeItem('success')
}
@ -180,6 +182,7 @@ export default {
let homeMenu = this.$store.state.homeMenu,
len = homeMenu.length,
items = []
console.log(homeMenu,'homeMenu')
for(let i=0;i<len;i++){
let obj ={},index
switch (homeMenu[i]) {
@ -201,6 +204,7 @@ export default {
items.splice(0,0,{title:'首页',index:'homePage'})
items.splice(1,0,{title:'工作台',index:'workbench'})
}
console.log(items,'items')
return items
},
filterHandler(value, row, column) {
@ -225,8 +229,6 @@ export default {
jumpTo(data){//
// sessionStorage.setItem('message-data',JSON.stringify(data))
this.$store.commit('messageData',{messageData:data})
//
//
if(this.$route.path!=="/workbench-guarantee") this.$router.push('/workbench-guarantee')
this.pop = false
}

@ -34,7 +34,6 @@
isActive(path) {
return path === this.$route.fullPath;
},
//
closeTags(index) {
const delItem = this.tagsList.splice(index, 1)[0];
const item = this.tagsList[index] ? this.tagsList[index] : this.tagsList[index - 1];
@ -44,19 +43,16 @@
this.$router.push('/');
}
},
//
closeAll(){
this.tagsList = [];
this.$router.push('/');
},
//
closeOther(){
const curItem = this.tagsList.filter(item => {
return item.path === this.$route.fullPath;
})
this.tagsList = curItem;
},
//
setTags(route){
const isExist = this.tagsList.some(item => {
return item.path === route.fullPath;
@ -89,7 +85,6 @@
},
created(){
this.setTags(this.$route);
//
bus.$on('close_current_tags', () => {
for (let i = 0, len = this.tagsList.length; i < len; i++) {
const item = this.tagsList[i];

@ -3,7 +3,6 @@
<div class="border-b flex-between ht50 self">
<div></div>
<p class="title">资产部调查</p>
<!-- 这是一个后退按钮组件 -->
<back @click.native="backTo()"></back>
</div>
<div class="mgt20 top-btn">
@ -38,7 +37,6 @@
<el-input disabled :placeholder="fromData[5]&&fromData[5].prompt?fromData[5].prompt:'系统读取'" clearable></el-input>
</div>
</div>
<!-- 第二列 -->
<div class="flex1 mgl40">
<div class="df-ac mgt20">
<el-button @click="changeName(fromData[2])" class=" mglr20" style="width:120px" type="text" :disabled="fromData[2]&&!fromData[2].ifOperation?false:true">{{fromData[2]&&fromData[2].name?fromData[2].name:'客户名称'}}</el-button>
@ -54,7 +52,6 @@
</div>
</div>
</div>
<!-- <el-form label-width="150px" :model="assetFromData" > -->
<div class="df bgw ">
<div class="flex1 ">
<div class="df-ac mgt20">
@ -85,7 +82,6 @@
<el-input disabled :placeholder="fromData[15]&&fromData[15].prompt?fromData[15].prompt:'系统读取'" clearable></el-input>
</div>
</div>
<!-- 第二列 -->
<div class="flex1 mgl40">
<div class="df-ac mgtb20">
<el-button @click="changeName(fromData[9])" class=" mglr20" style="width:120px" type="text" :disabled="fromData[9]&&!fromData[9].ifOperation?false:true">{{fromData[9]&&fromData[9].name?fromData[9].name:'资产评估报告编号'}}</el-button>
@ -94,14 +90,6 @@
<div class="df-ac mgtb20">
<el-button @click="changeName(fromData[11])" class=" mglr20" style="width:120px" type="text" :disabled="fromData[11]&&fromData[11].ifOperation==0?false:true">{{fromData[11]&&fromData[11].name?fromData[11].name:'资产评估报告编号'}}</el-button>
<el-input disabled :placeholder="fromData[11]&&fromData[11].prompt?fromData[11].prompt:'系统读取'" clearable></el-input>
<!-- <el-date-picker
disabled
class="wd100"
v-model="assetFromData.assetsTime"
type="date"
:placeholder="fromData[11]&&fromData[11].prompt?fromData[11].prompt:''">
</el-date-picker> -->
</div>
<div class="df-ac mgtb20">
<el-button @click="changeName(fromData[12])" class=" mglr20" style="width:120px" type="text" :disabled="fromData[12]&&fromData[12].ifOperation==0?false:true">{{fromData[12]&&fromData[12].name?fromData[12].name:'资产评估报告编号'}}</el-button>
@ -111,19 +99,10 @@
<el-button @click="changeName(fromData[13])" class=" mglr20" style="width:120px" type="text" :disabled="fromData[13]&&fromData[13].ifOperation==0?false:true">{{fromData[13]&&fromData[13].name?fromData[13].name:'资产评估报告编号'}}</el-button>
<el-input disabled :placeholder="fromData[13]&&fromData[13].prompt?fromData[13].prompt:'系统读取'" clearable></el-input>
</div>
<!-- <el-form-item label="审计日期" prop="auditTime" class="date">
<el-date-picker
class="wd100"
v-model="assetFromData.auditTime"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item> -->
</div>
</div>
<div class="df">
<div class="flex1 mgt0">
<!-- <el-form-item label="反担保措施" class="guarantee mgr20" prop="enGuaranteeMeasures"> -->
<div class="df-ac">
<el-button @click="changeName(fromData[7])" class=" mglr20" style="width:120px" type="text" :disabled="fromData[7]&&fromData[7].ifOperation==0?false:true">{{fromData[7]&&fromData[7].name?fromData[7].name:'资产评估报告编号'}}</el-button>
<el-checkbox-group v-model="arr" disabled>
@ -134,7 +113,6 @@
<el-checkbox label="其他" ></el-checkbox>
</el-checkbox-group>
</div>
<!-- </el-form-item> -->
</div>
<div class="flex1 mgt0">
<el-input
@ -147,7 +125,6 @@
</el-input>
</div>
</div>
<!-- </el-form> -->
</div>
</div>
</div>
@ -180,16 +157,11 @@
<el-form-item v-if="hintMessage" label="修改提示信息" prop="address">
<el-input class="ht40 wd80" v-model="changeFromMessage.prompt" placeholder="请输入" clearable></el-input>
</el-form-item>
<!-- ||hidden -->
<el-form-item v-if="need" label="修改功能" class="guarantee mgtb20" >
<el-select v-if="need" v-model="changeFromMessage.ifRequired" class="wd80" :placeholder="'是否必填'" >
<el-option label="必填" :value="0"></el-option>
<el-option label="非必填" :value="1"></el-option>
</el-select>
<!-- <el-select v-if="hidden" v-model="changeFromMessage.ifConceal" class="wd80" :placeholder="'是否隐藏'" >
<el-option label="隐藏" :value="0"></el-option>
<el-option label="不隐藏" :value="1"></el-option>
</el-select> -->
</el-form-item>
</el-form>
</div>
@ -230,7 +202,6 @@
</template>
<script>
import {designFrom,designateEmpTrees,queryCopySendUser,addCopySendUser,getEmployeesByRoleId,updateUserRole, updateFrom} from '../../utils/api'
export default {
props: {},
data() {
@ -297,31 +268,30 @@ export default {
assetFromData:{remark:[]},
arr:[],
assetAuditFrom:{},
//
showPop:false,//
changedName:'',//
showPop:false,
changedName:'',
originalName:'',
fromData:[],//
fromData:[],
treesData:[],
clearNodeArr:false,
checkedData:[],
survey:false,
roleID:'',//
checkedIDS:[],//ids
title:'',//
hidden:false,//
need:false,//
formerName:'',//
hintMessage:true,//
changeFromMessage:{//
roleID:'',
checkedIDS:[],
title:'',
hidden:false,
need:false,
formerName:'',
hintMessage:true,
changeFromMessage:{
id: '',
ifConceal: '',// 012
ifRequired: '',// 01
name: '',//
prompt: ''//
ifConceal: '',
ifRequired: '',
name: '',
prompt: ''
}
};
@ -354,38 +324,38 @@ export default {
handleSelect(key, keyPath) {
this.change = key
},
changeName(data){//
changeName(data){
this.showPop = true
//
if(data.ifConceal===1){
this.$set(this.changeFromMessage,'ifConceal',1)
this.hidden = false
}else{
this.hidden = true
}
//
if(data.formerName==='上传营业执照'||data.formerName==='上传法定代表人夫妻及企业实际经营者身份证附件'||data.formerName==='上传法定代表人夫妻户口本、结婚证(离婚证)'||data.formerName==='上传法定代表人身份证证明'||data.formerName==='上传公司章程'||data.formerName==='上传由会计师事务所审计的上一年度及本年度审计报告'||data.formerName==='上传企业信用报告'||data.formerName==='上传企业法人夫妇信用报告、实际经营者信用报告'||data.formerName==='上传征信业务授权书、承诺书'||data.formerName==='上传增值税纳税报表首表/完税证明'||data.formerName==='上传股东会会议纪要'||data.formerName==='上传反担保资料和评估报告'){//
this.hintMessage = false //
this.need = true //
if(data.formerName==='上传营业执照'||data.formerName==='上传法定代表人夫妻及企业实际经营者身份证附件'||data.formerName==='上传法定代表人夫妻户口本、结婚证(离婚证)'||data.formerName==='上传法定代表人身份证证明'||data.formerName==='上传公司章程'||data.formerName==='上传由会计师事务所审计的上一年度及本年度审计报告'||data.formerName==='上传企业信用报告'||data.formerName==='上传企业法人夫妇信用报告、实际经营者信用报告'||data.formerName==='上传征信业务授权书、承诺书'||data.formerName==='上传增值税纳税报表首表/完税证明'||data.formerName==='上传股东会会议纪要'||data.formerName==='上传反担保资料和评估报告'){
this.hintMessage = false
this.need = true
}else{
this.need = false //
this.hintMessage = true //
this.need = false
this.hintMessage = true
}
if(data.formerName==="评估价值(万元)") {this.hintMessage = false} else this.hintMessage = true
this.formerName = data.formerName// --title
this.originalName = data.name //
this.$set(this.changeFromMessage,"prompt",data.prompt)//
this.formerName = data.formerName
this.originalName = data.name
this.$set(this.changeFromMessage,"prompt",data.prompt)
this.$set(this.changeFromMessage,'name',data.name)
this.$set(this.changeFromMessage,'id',data.id)
this.$set(this.changeFromMessage,'ifRequired',data.ifRequired) //
this.$set(this.changeFromMessage,'ifRequired',data.ifRequired)
},
clickNode(node) {//
clickNode(node) {
this.designateEmpTrees()
this.survey = true
this.roleID = ''
this.title = node.title
// if(node.title===''&&node.content==="")this.roleID = 62
switch (node.content) {
case "资产部专员":
this.roleID = 63
@ -402,20 +372,20 @@ export default {
}
if(this.roleID) this.getEmployeesByRoleId(this.roleID)
},
compare(key){ //
compare(key){
return function(value1,value2){
let val1=value1[key];
let val2=value2[key];
return val1-val2;
}
},
designFrom(){//
designFrom(){
designFrom({processId:3}).then(res=>{
this.fromData = res.data
this.fromData.sort(this.compare('id'))
})
},
updateFrom(){//
updateFrom(){
if(!this.changeFromMessage.name) return this.$message.error("表单名称不可为空!")
updateFrom(this.changeFromMessage).then(res=>{
if(res.code===10000){
@ -425,22 +395,22 @@ export default {
}
})
},
assetDesignateCnode(val){//
assetDesignateCnode(val){
this.checkedIDS = []
this.checkedIDS = val.map(e=>{
return e.id
})
},
changeChecked(val){//
changeChecked(val){
this.checkedData = val
},
designateEmpTrees(){//
designateEmpTrees(){
designateEmpTrees().then(res=>{
this.treesData = res.data
// this.processVisualList(this.iconData.id)
})
},
updateUserRole(){//
updateUserRole(){
let old = []
if(this.checkedData.length!==0){
old = this.checkedData.map(e=>{
@ -458,7 +428,7 @@ export default {
}
})
},
getEmployeesByRoleId(id){// --id
getEmployeesByRoleId(id){
getEmployeesByRoleId({roleId:id}).then(res=>{
if(!res.data) return
let data = res.data,
@ -472,7 +442,7 @@ export default {
}
})
},
addCopySendUser(){//
addCopySendUser(){
let old = []
if(this.checkedData.length!==0){
old = this.checkedData.map(e=>{
@ -489,7 +459,7 @@ export default {
}
})
},
queryCopySendUser(){//
queryCopySendUser(){
queryCopySendUser({processId:3}).then(res=>{
if(!res.data.userList) return
let data = res.data.userList,

@ -1,5 +1,3 @@
//退
<template>
<div class="flex-center cursor">
<svg class="icon text-color" aria-hidden="true">

@ -1,17 +1,11 @@
//
<template>
<div class="pdlr20 wrap self">
<!-- 传入数据 -->
<el-table :row-key="rowkey" ref="multipleTable" :data="tableData" stripe tooltip-effect="dark" style="width: 100%" @selection-change="getCheck" header-align="center">
<!-- 不要勾选框,则传入一个check -->
<el-table-column v-if="check" type="selection" width="40" class="flex-center"></el-table-column>
<el-table-column label="序号" width="45" type="index"></el-table-column>
<!-- 具槽带出作用域自定义化内容 -->
<slot name="tableData"> </slot>
</el-table>
<div class="sorter self" v-if="show()">
<!-- 不想要分页传一个disabled -->
<!-- 渲染根据传的数据来total当前页 -->
<p v-if="tableData.length!==0">{{ page }}/{{ totalPage }}</p>
<el-pagination
:hide-on-single-page="tableData.length===0"
@ -33,10 +27,9 @@ export default {
tableData: Array,
disabled: Boolean,
totalPage: { type: Number, default: 1 },
check: { type: Boolean, default: true }, //false
nowPage: { type: Number, default: 1 }, //
totalCount: { type: Number, default: 10 },//
// size:Number,
check: { type: Boolean, default: true },
nowPage: { type: Number, default: 1 },
totalCount: { type: Number, default: 10 },
},
data() {
return {
@ -46,16 +39,13 @@ export default {
};
},
methods: {
//
getCheck(val) {
this.$emit('getCheckbox', val);
},
//
handleCurrentChange(val) {
this.$emit('getPaging', val);
this.page = +val;
},
//
show() {
if (this.disabled) {
return false;
@ -81,9 +71,6 @@ export default {
<style lang='scss' scoped>
@import url('../../assets/css/common.scss');
.sorter {
// position: absolute;
// bottom: 5%;
// right: 3%;
display: flex;
justify-content: flex-end;
margin-top: 50px;
@ -91,8 +78,6 @@ export default {
p {
color: #cccccc;
position: absolute;
// right: 25px;
// top: -29px;
left: 50%;
top: 28%;
transform: translate(-50%,-50%);
@ -100,7 +85,6 @@ export default {
}
}
.wrap {
// min-height: 664px;
min-height: 100%;
}
/deep/.el-table .cell {
@ -146,8 +130,6 @@ export default {
transition: none;
}
//
/deep/ .el-checkbox__input.is-checked .el-checkbox__inner {
background-color: transparent;
transition: none;
@ -171,9 +153,6 @@ export default {
text-align: center;
text-overflow: clip;
}
//
/deep/ .el-pager li {
border-radius: 50% !important;
height: 30px;
@ -197,7 +176,6 @@ export default {
}
/deep/ .el-input__inner {
border-radius: 20px;
// background: #fafafa;
}
/deep/ .el-pagination .btn-next .el-icon {
color: #00b9ff;

@ -39,14 +39,6 @@ export default {
return []
}
},
/*
menus:{
head:['name1','name2'],
body:{
name1:[{name:xxx,index:1},...]
}
}
*/
menus:{
type:Object,
default:function(){

@ -1,10 +1,8 @@
//
<template>
<div class="container_bg">
<div class="border-b flex-between ht50 self">
<div></div>
<p class="title">放款通知</p>
<!-- 这是一个后退按钮组件 -->
<back @click.native="backTo()"></back>
</div>
<div class="mgt20 top-btn">
@ -12,9 +10,6 @@
<el-menu-item index="2">流程设计</el-menu-item>
</el-menu>
</div>
<!-- 表单设计逻辑获取接口渲染每一个字段点击事件触发弹框修改对应的字段保存刷新 -->
<!-- 字段需要根据接口渲染那么只能使用对象定义好对应的字段 -->
<!-- 需要修改的地方还有是否禁用是否进行验证 -->
<div class="df df-jc">
<div class="chart-warp">
<FactoryDrawFlow
@ -24,7 +19,6 @@
></FactoryDrawFlow>
</div>
</div>
<!-- 表单设计弹框 -->
<el-dialog :visible.sync="showPop" style="margin-top:-7vh">
<div class=" tx-center">
<div class="pop-top container_bg fj-center border-b">
@ -64,7 +58,6 @@
<Cancel_btn @click.native="showPop=false"></Cancel_btn>
</div>
</el-dialog>
<!-- 修改业务申请人员弹框 -->
<el-dialog :visible.sync="survey" width="70%" style="margin-top: -7vh">
<div class="pop-top container_bg fj-center border-b">
<strong class="mgb20 fz-18">设置{{title}}</strong>
@ -90,11 +83,6 @@
<cancel_btn @click.native="survey=false"></Cancel_btn>
</div>
</el-dialog>
<!-- <el-dialog :visible.sync="showPreviewImg" style="margin-top:-7vh">
<div class=" tx-center">
<img :src="previewImg" class="el-image-viewer__img" style="transform: scale(1) rotate(0deg);margin-top: -1px; max-height: 100%; max-width: 100%;">
</div>
</el-dialog> -->
</div>
</template>
<script>
@ -129,9 +117,6 @@ export default {
showPop:false,//
changedName:'',//
originalName:'',
// applyer:'',//
// manneger:'',//
// copy:'',//
FlowConfig: [//
{
content: "法规部经理",
@ -178,14 +163,8 @@ export default {
};
},
created(){
// this.designFrom()
// this.getEmployeesByRoleId(57)//
// a.toString()
},
mounted(){
// this.flowImg()//
},
watch:{
survey:function(now,before){

@ -30,23 +30,17 @@ export default {
},
data(){
return{
//
defaultProps: {
children: 'children',
label: 'permissionName'
},
nodeArr:[]//
}
},
methods:{
//
checkBox(data, checked, indeterminate){
// this.$emit('getNodeArr',data.permissionId,checked)
},
//
getNode(data) {
//nodedata
},
}

@ -82,7 +82,6 @@ export default {
this.getData();
},
methods: {
//
async getData() {
let res = await systemLog({
page: this.pageNo,
@ -94,7 +93,6 @@ export default {
this.systemLogData = res.data.list;
this.totals = res.data.totalCount;
},
//
selectTime(val) {
if (val) {
this.searchForm.startTime = val[0];

@ -15,7 +15,7 @@ export default {
},
data() {
return {
val:false,//
val:false,
};
},
created() {
@ -43,17 +43,14 @@ export default {
},
[
h('span', [
//
h('Icon', {
style: {
marginRight: '0px'
}
}),
//
h('span', data.name)
]),
h('span', {
//
style: {
display: 'inline-block',
float: 'right',
@ -64,34 +61,20 @@ export default {
);
},
checkData(arr,val){
//
//
let checkarr = this.$refs.tree.getCheckedAndIndeterminateNodes()
//
if(checkarr.length!==0){
// ,
for(let i=0;i<checkarr.length;i++){
this.$emit('getNode',checkarr[i].id,true)
}
}
//
if(val.checked === false&&val.children&&val.children.length!==0){
this.deleteIds(val.children)
}
this.$emit('getNode',val.id,val.checked)
//
if(val.checked===false){
//
// id,children0
//
this.searchFather(val.parentId,this.Treedata)
}
//
// idchecked
// id
},
//
deleteIds(data){
let that = this
if(data.length!==0){
@ -103,12 +86,10 @@ export default {
}
}
},
// id
searchFather(id,data){
let that = this
for(let i =0;i<data.length;i++){
if(data[i].id==id){
// id
if(data[i].children&&data[i].children.length===1){
that.$emit('getNode',data[i].id,false)
@ -117,8 +98,6 @@ export default {
}
if(data[i].parentId==0){
// children
// this.valtrue
that.searchDeep(data[i].children)
if(that.val){
that.$emit('getNode',data[i].id,false)
@ -126,24 +105,20 @@ export default {
}
}else{
if(data[i].children&&data[i].children.length!==0){
//
that.searchFather(id,data[i].children)
}
}
}
},
//
searchDeep(data){
if(data.length&&data.length!==0){
let len = data.length
for(let i =0;i<len;i++){
// falsetrue
if(data[i].checked===true){
this.val = false
}else if(data[i].checked===false){
this.val =true
}
//
if(data[i].children&&data[i].children.length!==0){
this.searchDeep(data[i].children)
}
@ -156,39 +131,27 @@ export default {
};
</script>
<style lang='scss' scoped>
//
/deep/ .ivu-checkbox-inner {
// background: url('../../assets/img/btn_per_un.png');
width: 20px;
height: 20px;
border: 1px solid #cecece;
// border-radius: 50%;
// background-size: contain;
&:hover{
border-color: #52b1ff;
}
}
//
/deep/ .ivu-checkbox-checked .ivu-checkbox-inner {
// background: url('../../assets/img/btn_pre.png');
border: 1px solid #cecece;
width:20px;
// background: #52b1ff;
height:20px;
// border-radius: 50%;
background-size: contain;
}
//
/deep/ .ivu-checkbox-checked .ivu-checkbox-inner:after {
// display: none;
z-index: 2;
width: 7px;
height: 10px;
}
//
/deep/ .ivu-checkbox-disabled.ivu-checkbox-checked .ivu-checkbox-inner:after{

@ -1,4 +1,3 @@
//
<template>
<div class="top-sidebar not-zoom shadow">
<el-menu :default-active="pitchOn" class="wd100 bd0 flex-center">
@ -18,13 +17,12 @@
export default {
props: {
title: Array,
pitchOn: String //
pitchOn: String
},
data() {
return {};
},
methods: {
//
setIndex(index) {
this.$emit('getSidebarVal', index);
}
@ -42,7 +40,6 @@ export default {
border-radius: 10px;
}
}
//
/deep/ .el-menu-item {
box-sizing: border-box;
padding: 0 !important;

@ -9,10 +9,8 @@
alt
/>
</div>
<!-- 改为label -->
{{item.name}}
</div>
<!-- -->
<div v-show="item.ifVisible" v-if="item.children&&item.children.length!=0">
<div v-for="(item1,index1) in item.children" :key="index1">
<div class="item1" @click.stop="open(item1)">
@ -86,12 +84,10 @@ export default {
}
},
methods: {
//
open(item) {
item.ifVisible = !item.ifVisible;
},
//removeByvaluemain.js
choose(item) {
item.ifVisible = !item.ifVisible;
if (item.ifVisible) {
@ -100,9 +96,8 @@ export default {
this.chooseList.removeByValue(item);
}
},
//
isHasObj(arr, val) {
var flag = 0; //1 0
var flag = 0;
for (var i = 0; i < arr.length; i++) {
if (JSON.stringify(arr[i]).indexOf(JSON.stringify(val)) != -1) {
flag = 1;
@ -119,10 +114,9 @@ export default {
</script>
<style lang="scss" scoped>
$insideColor: rgba(245, 242, 255, 0.8); //
$outColor: rgba(255, 255, 255, 0.8); //
$insideColor: rgba(245, 242, 255, 0.8);
$outColor: rgba(255, 255, 255, 0.8);
//,item
@mixin public {
height: 50px;
line-height: 50px;
@ -176,7 +170,6 @@ $outColor: rgba(255, 255, 255, 0.8); //外部节点的边框颜色
background: rgba(255, 255, 255, 1);
}
//ul,li
ul,
li {
padding: 0;
@ -184,7 +177,6 @@ li {
list-style: none;
}
// 使
.arrowTransform {
transition: 0.2s;
transform-origin: center;
@ -195,8 +187,6 @@ li {
transform-origin: center;
transform: rotateZ(90deg);
}
//
.checkBox {
width: 14px;
height: 14px;
@ -206,8 +196,7 @@ li {
border: 2px solid rgba(146, 120, 255, 1);
}
//
.isActive {
background-size: 14px 14px; /*按比例缩放*/
background-size: 14px 14px;
}
</style>

@ -101,11 +101,11 @@ export default {
},
async mounted(){
this.getMounth() //
this.queryAccessRecords()
this.getNewBusinessCount()
this.queryLoginNum()
this.queryLoginOnline2()
await this.getMounth() //
await this.queryAccessRecords()
await this.getNewBusinessCount()
await this.queryLoginNum()
await this.queryLoginOnline2()
await this.getTodayBusinessCount()
await this.queryAccessRecords()
await this.queryVisitNum()

@ -12,7 +12,7 @@
<span class="aboutUs">关于我们</span>
</div>
<!-- 登录card -->
<div class="Login_view" v-show="cardType == 1">
<div class="Login_view" v-show="cardType == 1" v-loading="loading" >
<div class="flex-between login_title">
<span>登录</span>
<router-link :to="{path:'beforeLogin'}">
@ -92,6 +92,7 @@ export default {
// appid : 'wx3b7bca679da34921',
// scope : 'snsapi_login',
// redirect_uri : encodeURIComponent("http://192.168.31.254:8080/#/Dashboard"),
loading:false
};
},
beforeCreate(){
@ -140,6 +141,7 @@ export default {
}else{
this.tenDayEffective = 2
}
this.loading = true
login({
phone: this.param.username,
type: this.loginType,
@ -147,11 +149,15 @@ export default {
password: this.param.password,
tenDayEffective: this.tenDayEffective
}).then(res => {
console.log('登录接口完成')
sessionStorage.setItem("token",res.data.token);
sessionStorage.setItem("userID",res.data.id);
this.$store.commit("userNameData", { userName: res.data.account, userPhone: this.param.username,headerImg:res.data.headPortaritUrl });
this.getNowRole()// id
}).catch(res => {});
this.loading = false
}).catch(res => {
this.loading = false
});
}
});
},
@ -163,6 +169,7 @@ export default {
},
getNowRole(){
return getNowRole().then(res=>{
console.log('进行权限请求')
if(res.success){
sessionStorage.setItem("now-roleBtn",res.data);
this.$nextTick(()=>{
@ -170,6 +177,7 @@ export default {
this.$router.push(this.$route.query.redirect)
}else{
this.$router.push('/homePage')
console.log(sessionStorage.getItem('token'))
}
})
}

@ -1,21 +1,16 @@
<template>
<div class="container_bg">
<div class="border-b flex-between ht50">
<div class="flex-center">
<img src="../../assets/img/manpower-icon.png" alt class="top-module-icon mgr10" />
<p class="head-text">系统管理</p>
</div>
<!-- 这是一个后退按钮组件 -->
<!-- <back @click.native="goto('background')"></back> -->
<div class="flex-center">
<img src="../../assets/img/manpower-icon.png" alt class="top-module-icon mgr10" />
<p class="head-text">系统管理</p>
</div>
</div>
<div class="df mgt20 main self">
<Left-sidebar class="flex-column-end " :title="leftSidebarData" @getSidebarVal="getIndex" :pitchOn="active"></Left-sidebar>
<div class="right-main self">
<!-- 角色权限管理 -->
<Jurisdiction v-if="active === '1'"></Jurisdiction>
<!-- 修改密码管理 -->
<SupertubePwd v-if="active === '2'"></SupertubePwd>
<!-- 平台日志 -->
<PlatformLog v-if="active === '3'"></PlatformLog>
</div>
</div>
@ -92,7 +87,6 @@
/deep/ .el-col-3 .el-card__body{
padding-right: 0;
// padding-left: 0;
}
}

@ -1,5 +1,6 @@
<template>
<div>
<div v-show="loanStatus == 1">
<div class="mgt20 left-border fz-16"><p class="c-black mgl10">保后管理</p></div>
<div class="mgt20 pdb20">
@ -19,8 +20,8 @@
clearable
></el-input>
<el-button v-preventReClick type="primary" size="small" round @click="search">查询</el-button>
<el-button v-preventReClick type="primary" size="small" round @click="edit()">新建</el-button>
<el-button v-preventReClick type="primary" plain size="small" round icon="el-icon-download" @click="upLoadPop=true">导入</el-button>
<el-button v-preventReClick type="primary" size="small" v-if="$router.currentRoute.meta.btn.includes('担保新建')" round @click="edit()">新建</el-button>
<el-button v-preventReClick type="primary" plain size="small" round icon="el-icon-download" v-if="$router.currentRoute.meta.btn.includes('担保导入')" @click="upLoadPop=true">导入</el-button>
<el-button v-preventReClick type="primary" plain size="small" round icon="el-icon-upload2" @click="insExport">导出</el-button>
</div>
</div>
@ -50,8 +51,8 @@
<el-table-column prop="sourceStr" label="来源" align="center"></el-table-column>
<el-table-column label="操作" width="200" align="center">
<template slot-scope="scope">
<el-button v-if="scope.row.source=='1'" type="text" @click="edit('',scope.row)">编辑</el-button>
<el-button v-if="scope.row.source=='1'" type="text" @click="deleteInsurance(scope.row)">删除</el-button>
<el-button v-if="scope.row.source=='1'&&$router.currentRoute.meta.btn.includes('担保编辑')" type="text" @click="edit('',scope.row)">编辑</el-button>
<el-button v-if="scope.row.source=='1'&&$router.currentRoute.meta.btn.includes('担保删除')" type="text" @click="deleteInsurance(scope.row)">删除</el-button>
<el-button v-if="$router.currentRoute.meta.btn.includes('办理结项') && scope.row.paymentStatus == '已还清'" type="text" @click="conclusion(scope.row)">办理结项</el-button>
<el-button v-if="$router.currentRoute.meta.btn.includes('还款录入') && scope.row.paymentStatus != '已结项'" type="text" @click="edit(scope.row)">还款录入</el-button>
<el-button v-if="$router.currentRoute.meta.btn.includes('保后还款记录')" type="text" @click="history(scope.row)">还款记录</el-button>
@ -229,7 +230,8 @@
</el-form-item>
</div>
<el-form-item label="经营情况:">
<el-select v-model="liquidate.operation" placeholder="请选择">
<!-- 未完成 -->
<el-select v-model="liquidate.operation" placeholder="请选择" prop="operation">
<el-option v-for="(item, index) in circumstance" :key="index" :label="item.name" :value="item.value"></el-option>
</el-select>
</el-form-item>
@ -274,13 +276,11 @@
</el-form-item>
<el-form-item label="本次还款(元)" prop="currentRepayment" >
<el-input v-model="repaymentForm.currentRepayment" placeholder="请输入本次还款金额"
type="text" oninput="value=value.replace(/[^\d.]/g,'')"></el-input>
<el-input v-model="repaymentForm.currentRepayment" placeholder="请输入本次还款金额" type="text" maxlength="10" oninput="value=value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')"></el-input>
</el-form-item>
<el-form-item label="其他费用(元)">
<el-input v-model="repaymentForm.otherExpenses" placeholder="请输入其他费用"
type="text" oninput="value=value.replace(/[^\d.]/g,'')"></el-input>
<el-input v-model="repaymentForm.otherExpenses" placeholder="请输入其他费用" type="text" maxlength="8" oninput="value=value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')"></el-input>
</el-form-item>
@ -300,19 +300,19 @@
</el-form-item>
<el-form-item label="本次还款总额(元)">
<el-input v-model="totalRepayment" oninput="value=value.replace(/[^\d.]/g,'')" disabled placeholder="还款总额" maxlength="10"></el-input>
<el-input v-model="totalRepayment" disabled placeholder="还款总额" maxlength="8" oninput="value=value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')"></el-input>
</el-form-item>
<el-form-item label="利息(元)" prop="interest">
<el-input v-model="repaymentForm.interest" placeholder="请输入利息" type="text" oninput="value=value.replace(/[^\d.]/g,'')"></el-input>
<el-input v-model="repaymentForm.interest" placeholder="请输入利息" type="text" maxlength="8" oninput="value=value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')"></el-input>
</el-form-item>
<el-form-item label="减免金额(元)">
<el-input v-model="repaymentForm.deductionAmount" oninput="value=value.replace(/[^\d.]/g,'')" placeholder="请输入减免金额"></el-input>
<el-input v-model="repaymentForm.deductionAmount" maxlength="10" oninput="value=value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')" placeholder="请输入减免金额"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="清偿方式" >
<el-form-item label="清偿方式" required>
<div class="df">
<span style="margin-right:20px">1现金</span>
<el-input style="width:20%;min-width:250px" oninput="value=value.replace(/[^\d.]/g,'')" v-model="repaymentForm.repaymentCash" placeholder="请输入金额"></el-input>
@ -470,17 +470,13 @@
<el-dialog title="导入" :visible.sync="upLoadPop" width="24%" center :close-on-click-modal="false">
<div class="flex-start-around">
<el-button type="primary" round
><a :href="excelTemplate" style="color:#fff">模板下载<i class="el-icon-download el-icon--right"></i></a
><a href="https://www.feifanhitech.com/enclosureFile/insuranceTemplate.xlsx" style="color:#fff">模板下载<i class="el-icon-download el-icon--right"></i></a
></el-button>
<el-upload
accept=".xls,.xlsx"
:on-remove="handleRemove"
:on-error="uploadError"
:on-success="uploadSuccess"
:before-remove="beforeRemove"
:limit="1"
:on-exceed="handleExceed"
:action="excelImport"
:action="importInsurance"
:file-list="uploadList"
name="file"
:headers="importHeaders"
@ -529,11 +525,14 @@
</template>
<script>
import { allBankName, insuranceList, insuranceDetail, repaymentEntry, repaymentList, repaymentStatistics, excelHis, delRepayment, repaymentDetail, excelInsurance, updateInsurance, updateRepayment, designateEmpTrees, getAllClient ,saveInsurance,companyInfoBySth,liquidateList,liquidateEdit,liquidateDel,deleteInsurance, editInsurance, compensationSituation,} from '../../../utils/api';
import { allBankName, insuranceList, insuranceDetail, repaymentEntry, repaymentList, repaymentStatistics, excelHis, delRepayment, repaymentDetail, excelInsurance, updateInsurance, updateRepayment, designateEmpTrees, getAllClient ,saveInsurance,companyInfoBySth,liquidateList,liquidateEdit,liquidateDel,deleteInsurance, editInsurance, compensationSituation,importInsurance , exportFailure} from '../../../utils/api';
import core from '../../../utils/core';
export default {
data() {
return {
return {
importInsurance:importInsurance,
uploadList:[],
importHeaders: { token: sessionStorage.getItem('token') },
guaranteeLoading:false,
keyword: '',
paymentStatus: '',
@ -699,7 +698,7 @@
textarea:'',
guaranteeEditStatus:false,//
cash:0,//
btns:{}
};
},
computed:{
@ -823,9 +822,8 @@
}
},
created(){
console.log(this.discernEdit,'env-');
console.log(this.btn,'mate',this.$router.currentRoute.meta.btn)
this.liquidateList()
if(this.bankSelect.length===0){
allBankName().then(res=>{
let arr = res.data.map(item=>{
@ -1045,8 +1043,6 @@
if(this.status==='newLoans'){
this.saveInsurance()
}else{// /
let form2 = new Promise((resolve,reject)=>{
this.$refs[repaymentForm].validate((valid) => {
if (valid) {
@ -1054,7 +1050,7 @@
}else{
this.$message.error('请输入必填信息!')
}
})
})
})
Promise.all([this.saveInsurance(),form2]).then(()=>{
console.log(this.RepaymentId,'id有无')
@ -1361,12 +1357,14 @@
})
},
saveInsurance(){//
let has = false
const form1 = new Promise((resolve,reject)=>{
this.$refs['refGuaranteeForm'].validate((valid) => {
if (valid) {
resolve()
}else{
return this.$message.error('请输入必填信息!')
has = true
return this.$message.error('请输入必填信息!')
}
})
@ -1376,41 +1374,47 @@
if (valid) {
resolve()
}else{
return this.$message.error('请输入必填信息!')
if(!has) return this.$message.error('请输入必填信息!')
}
})
})
//
return Promise.all([form1,form3]).then(()=>{
let obj ={}
//
if(this.discernEdit) obj.insuranceId = this.id
Object.assign(obj,this.comp,this.liquidate)
let param = {
alInsuranceList:this.guaranteeForm,//
alReimbursement:obj//
}
if(this.discernEdit){//
editInsurance(param).then(res=>{
console.log(res,'编辑业务');
if(this.entering){
this.$message.success('编辑业务成功!')
this.$store.commit("loanStatusData", { loanStatus: 1 });
}
this.$confirm('确定保存该记录?', '提示', {type:"info"}).then(()=>{
let obj ={}
//
if(this.discernEdit) obj.insuranceId = this.id
Object.assign(obj,this.comp,this.liquidate)
let param = {
alInsuranceList:this.guaranteeForm,//
alReimbursement:obj//
}
if(this.discernEdit){//
editInsurance(param).then(res=>{
console.log(res,'编辑业务');
if(this.entering){
this.$message.success('编辑业务成功!')
this.$store.commit("loanStatusData", { loanStatus: 1 });
}
})
}else{//
saveInsurance(param).then(res=>{
//
if(this.status==='newLoans'){
this.$message.success('新增业务成功!')
this.$store.commit("loanStatusData", { loanStatus: 1 });
}
})
}
})
}).catch(e=>{
console.log(e,'取消保存记录')
})
}else{//
saveInsurance(param).then(res=>{
//
if(this.status==='newLoans'){
this.$message.success('新增业务成功!')
this.$store.commit("loanStatusData", { loanStatus: 1 });
}
})
}
}).catch(err=>{
}).catch(()=>{
// alert('')
console.log(err,'err')
return false
@ -1432,6 +1436,24 @@
this.cash = res.data.amount
})
},
uploadSuccess(response, file, fileList) { //
this.upLoadPop = false
this.uploadList = []
//
let data = response.data
if(data.import.exportCode){
core.exportFile(exportFailure(data.import.exportCode))
}
// if (response.code == 10000) {
// this.$message.success('');
// this.importVisible = false;
// this.getData();
// } else {
// this.$message.error(response.message);
// }
// this.uploadList.push({ name: file.name, url: response.message.fileUrl });
},
}
@ -1490,4 +1512,7 @@
margin-top: 10px;
text-align: center;
}
/deep/ .el-upload-list{
display: none;
}
</style>

@ -41,7 +41,10 @@ export default {
data() {
return {
title:[],
menus:{},
menus:{
head:[],
body:[]
},
showValue: '0', //
loanStatusHome: 1,
logStatusHome: 1,
@ -68,29 +71,31 @@ export default {
},
},
created(){
if(this.$router.currentRoute.meta.btn.includes('保后管理')){
let meta = this.$router.currentRoute.meta.btn
if(meta.includes('保后管理')){
this.title.push({ name: '保后管理', index: '0' })
}
if(this.$router.currentRoute.meta.btn.includes('催收管理')){
if(meta.includes('催收管理')){
this.title.push({ name: '催收管理', index: '1' })
}
this.menus = {
head:['数据统计与查询'],
body:{
'数据统计与查询':[{name: '清收完成统计', index: '2'},{name: '清收进度查询', index: '3'}]
}
}
/* // 判断权限--
//
if(this.$router.currentRoute.meta.btn.includes('数据统计与查询')){
this.titlehead.push('数据统计与查询')
if(this.$router.currentRoute.meta.btn.includes('清收完成统计')){
this.title.body['数据统计与查询'].push({ name: '清收完成统计', index: '0' })
// this.menus = {
// head:[''],
// body:{
// '':[{name: '', index: '2'},{name: '', index: '3'}]
// }
// }
console.log(this.$router.currentRoute,'陆游信息')
if(meta.includes('清收完成统计')||meta.includes('清收进度查询')){
this.menus.head.push('数据统计与查询')
this.menus.body['数据统计与查询'] = []
if(meta.includes('清收完成统计')){
this.menus.body['数据统计与查询'].push({ name: '清收完成统计', index: '2' })
}
if(this.$router.currentRoute.meta.btn.includes('清收进度查询')){
this.title.body['数据统计与查询'].push({ name: '清收进度查询', index: '1' })
if(meta.includes('清收进度查询')){
this.menus.body['数据统计与查询'].push({ name: '清收进度查询', index: '3' })
}
} */
}
this.showValue = this.$store.state.loan.leftStatus
this.loanStatusHome = this.$store.state.loan.loanStatus
this.logStatusHome = this.$store.state.loan.logStatus
@ -188,26 +193,25 @@ export default {
},
//
getIndex(index) {
if(index){
switch (index) {
case '0':
this.$store.commit("loanStatusData", { loanStatus: 1 });
break;
case '1':
this.$store.commit("logStatusData", { logStatus: 1 });
break;
case '2':
this.$store.commit("liquidate", '1');
break;
case '3':
// this.$store.commit("logStatusData", { logStatus: 1 });
break;
default:
break;
}
this.showValue = index;
this.$store.commit("leftSidebarData", { leftStatus: this.showValue });
console.log(index,'ind')
switch (index) {
case '0':
this.$store.commit("loanStatusData", { loanStatus: 1 });
break;
case '1':
this.$store.commit("logStatusData", { logStatus: 1 });
break;
case '2':
this.$store.commit("liquidate", '1');
break;
case '3':
this.$store.commit("liquidate", '2');
break;
default:
break;
}
this.showValue = index;
this.$store.commit("leftSidebarData", { leftStatus: this.showValue });
}
},
};

@ -122,7 +122,7 @@
</el-form-item>
<el-form-item label="本次还款(元)" prop="currentRepayment">
<el-input v-model="repaymentForm.currentRepayment" placeholder="请输入本次还款金额"></el-input>
<el-input v-model="repaymentForm.currentRepayment" placeholder="请输入本次还款金额"></el-input>
</el-form-item>
<el-form-item label="其他费用(元)">
@ -946,8 +946,10 @@
})
this.collectionHisData = res.data.list
this.collectionHisTotals = res.data.totalCount
},
collectionHisSearch(){
this.collectionHisPage = 1
this.collectionHisList()
},

@ -7,23 +7,27 @@
<div class="mgt20 pdb20">
<div class="mgtb20">
<div class="flex-center">
<el-button v-preventReClick type="primary" round @click="createList('new')">生成年度统计表</el-button>
<el-button type="primary" v-if="$router.currentRoute.meta.btn.includes('生成年度统计表')" round @click="createList('new')">生成年度统计表</el-button>
</div>
</div>
<div class="shadow radius10 pdt20">
<el-table :data="data" stripe header-align="center" class="mat20">
<el-table-column type="index" width="200" label="序号" align="center"></el-table-column>
<el-table-column prop="businessCode" label="年度" align="center"></el-table-column>
<el-table-column label="年度" align="center">
<template slot-scope="scope">
{{scope.row}}
</template>
</el-table-column>
<el-table-column label="操作" width="300" align="center">
<template slot-scope="scope">
<el-button type="text" @click="createList(scope.row)">人员选择</el-button>
<el-button type="text" @click="[(liquidate = '2'), edit(scope.row, 'watch')]">查看</el-button>
<el-button type="text" @click="edit(scope.row)">编辑</el-button>
<el-button type="text" @click="del(scope.row)">删除</el-button>
<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="del(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<!-- <div class="pagination">
<el-pagination
background
@current-change="currentChange"
@ -32,7 +36,7 @@
:total="totals"
>
</el-pagination>
</div>
</div> -->
</div>
</div>
</div>
@ -43,48 +47,44 @@
<div class="flex-between mgtb20">
<div class="flex-center">
<p class="fz-16 mgr10 font-blue mgl20 nowrap">清收组</p>
<el-select v-model="searchStr.liquidate" placeholder="请选择" clearable @change="search">
<el-select v-model="searchStr.groupId" placeholder="请选择" clearable @change="search">
<el-option v-for="item in liquidateSelectArr" :key="item.id" :label="item.label" :value="item.id"></el-option>
</el-select>
<p class="fz-16 mgr10 font-blue mgl20 nowrap">完成比例</p>
<el-select v-model="searchStr.paymentStatus" placeholder="请选择" clearable @change="search">
<el-select v-model="searchStr.proportionSymbol" 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
placeholder="请输入整数"
class="wd20 mglr10"
style="min-width: 200px"
v-model="keyword"
v-model="searchStr.proportion"
clearable
></el-input>
<p>%</p>
<p class="fz-16 mgr10 font-blue mgl20 nowrap">已清收总额</p>
<el-input placeholder="搜索业务编号/客户名称" style="min-width: 200px" v-model="keyword" clearable></el-input>
<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 class="wd20 mglr10" placeholder="搜索业务编号/客户名称" style="min-width: 200px" v-model="searchStr.allAoumnt" clearable></el-input>
</div>
<div class="flex-center">
<!-- <el-input
placeholder="搜索业务编号/客户名称"
class="mgr20"
v-model="keyword"
clearable
></el-input> -->
<el-button v-preventReClick type="primary" size="small" round @click="clearOption">清空选项</el-button>
<!-- <el-button v-preventReClick type="primary" size="small" round @click="edit()">新建</el-button> -->
<el-button v-preventReClick type="primary" size="small" round @click="annualStatisticsList">搜索</el-button>
</div>
</div>
<div class="shadow radius10 pdt20">
<div class="flex-between mab20 mgl10">
<div class="flex-center">
<p class="hr_tag"></p>
<span class="hr_text">2021年度清收工作完成情况统计表</span>
<span class="hr_text">{{liquidateSearch.year}}年度清收工作完成情况统计表</span>
</div>
</div>
<div class="flex-between">
<div class="flex-center">
<el-button class="mgl20" v-preventReClick type="primary" size="small" round @click="search">导出列表</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>
@ -94,117 +94,113 @@
<el-input
style="min-width: 250px"
class="ht40 mgl10 mgr10"
@keyup.enter.native="getBusinessApply('search')"
v-model="searchStr.jobNum"
@keyup.enter.native="annualStatisticsList('search')"
v-model="searchStr.queryCondition"
placeholder="工号/清收负责人/清收企业"
clearable
></el-input>
</div>
</div>
<el-table
:data="statisticsData"
stripe
header-align="center"
class="mat20"
@selection-change="statisticsSelection"
:row-key="getRowKeys"
:key="1"
>
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column prop="companyRanks" label="公司排名" align="center" width="150px"></el-table-column>
<el-table-column prop="TeamRanks" label="小组排名" align="center" width="150px"></el-table-column>
<el-table-column prop="liquidate" label="清收组" align="center"></el-table-column>
<el-table-column prop="principal" label="清收负责人" align="center" width="150px"></el-table-column>
<el-table-column prop="jobNumber" label="工号" align="center"></el-table-column>
<el-table-column prop="enterprise" label="清收企业" align="center" width="150px">
<template slot-scope="scope">
<div class="multi-box" v-for="(item, index) in scope.row.enterprise" :key="index">
{{ item }}
</div>
</template>
</el-table-column>
<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 }}
</div>
</template>
</el-table-column>
<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.asset" :key="index">
{{ item }}
</div>
</template>
</el-table-column>
<el-table-column prop="backTime" label="回款时间" align="center" width="200px">
<template slot-scope="scope">
<div class="backTime" v-for="(item, index) in scope.row.backTime" :key="index">
<el-date-picker
style="width:180px"
v-model="item.time"
type="date"
value-format="yyyy-MM-dd"
:disabled="!scope.row.edit"
>
</el-date-picker>
</div>
</template>
</el-table-column>
<el-table-column prop="repaymentTime" label="已清收总额(元)" align="center" width="150px">
<template slot-scope="scope" >
<div class="multi-box" >
{{ scope.row.repaymentTime }}
</div>
</template>
</el-table-column>
<el-table-column prop="ratio" label="完成比例" align="center" width="150px">
<template slot-scope="scope">
<div class="ratio">
<div class="top">{{scope.row.repaymentTime}}</div>
<el-input :disabled="!scope.row.edit" v-model="scope.row.ratio"></el-input>
</div>
</template>
</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.remark" :key="index">
<el-input :disabled="!scope.row.edit" v-model="item.remark"></el-input>
</div>
</template>
</el-table-column>
<!-- 判断是否为查看或者编辑 -->
<el-table-column 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" @click="history(scope.row)">查看</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination
background
@current-change="currentChange"
layout="total, prev, pager, next"
:current-page="pageNo"
:total="totals"
</div>
<!--
前端查询
:data="data.filter(data => !search || data.businessCode.toLowerCase().includes(search.toLowerCase()))"
-->
<div class="dataList" ref="table" @scroll="handleScroll">
<el-table
:data="statisticsData"
stripe
header-align="center"
v-loading="statisticsLoading"
class="mat20 "
:row-key="getRowKeys"
:key="1"
>
</el-pagination>
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column prop="companyRanks" label="公司排名" align="center" width="150px"></el-table-column>
<el-table-column prop="TeamRanks" label="小组排名" align="center" width="150px"></el-table-column>
<el-table-column prop="groupName" label="清收组" align="center"></el-table-column>
<el-table-column prop="personLiable" label="清收负责人" align="center" width="150px"></el-table-column>
<el-table-column prop="jobNumber" label="工号" align="center"></el-table-column>
<el-table-column prop="enterprise" label="清收企业" align="center" width="150px">
<template slot-scope="scope">
<div class="multi-box" v-for="(item, index) in scope.row.enterprise" :key="index">
{{ item.enterprise }}
</div>
</template>
</el-table-column>
<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">
<template slot-scope="scope">
<div class="multi-box" v-for="(item, index) in scope.row.assets" :key="index">
{{ item.asset }}
</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">
<el-date-picker
style="width:180px"
v-model="item.collectionTime"
type="date"
value-format="yyyy-MM-dd"
:disabled="!scope.row.edit"
>
</el-date-picker>
</div>
</template>
</el-table-column>
<el-table-column prop="totalAmount" label="已清收总额(元)" align="center" width="150px">
<template slot-scope="scope" >
<div class="multi-box" >
{{ scope.row.totalAmount }}
</div>
</template>
</el-table-column>
<el-table-column prop="ratio" label="完成比例" align="center" width="150px">
<template slot-scope="scope">
<div class="ratio">
<div class="top">{{scope.row.totalAmount}}</div>
<el-input :disabled="!scope.row.edit" v-model="scope.row.proportion"></el-input>
</div>
</template>
</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">
<el-input :disabled="!scope.row.edit" v-model="item.description"></el-input>
</div>
</template>
</el-table-column>
<!-- 判断是否为查看或者编辑 -->
<el-table-column 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" @click="history(scope.row)">查看</el-button> -->
</template>
</el-table-column>
</el-table>
</div>
<el-button class="more-btn" v-show="moreBtn" type="primary" round>向下滑动查看更多</el-button>
</div>
</div>
</div>
<!-- 弹框--生成年度统计表 -->
<el-dialog title="请选择" width="40%" :visible.sync="showRank" center>
<el-dialog title="请选择" v-loading="treeLoading" width="40%" :visible.sync="showRank" center>
<div class="ranking">
<div class="top">
<div class="left-border fz-16"><p class="c-black mgl10">年份</p></div>
<el-date-picker
class="mgt10 mgl80"
v-model="chooisYear"
value-format="yyyy"
:picker-options="pickerOptions"
type="year"
placeholder="选择年"
@ -220,6 +216,8 @@
default-expand-all
node-key="id"
ref="tree"
@check-change="checkBox"
:default-checked-keys="treeIds"
highlight-current
:props="defaultProps"
>
@ -227,128 +225,59 @@
</div>
</div>
<div class="flex-center fj-center mgt20">
<el-button type="primary" round class="mgr20">确定</el-button>
<el-button type="primary" round class="mgl20">取消</el-button>
<el-button type="primary" v-preventReClick round class="mgr20" @click="treeSure">确定</el-button>
<el-button round class="mgl20" @click="[chooisYear='',showRank=false]">取消</el-button>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import {collectionGroupList ,generateAnnualStatistics,annualList,annualStatisticsList,editAnnualStatistics,personnelSelection ,annualStatisticsDeleted,annualStatisticsListExport } from '../../../utils/api'
import core from '../../../utils/core'
export default {
name: '',
props: {},
data() {
return {
showRank: false, //
treeLoading:false,//
loading:false,//
statisticsLoading:false,//
defaultProps: {
children: 'children',
label: 'label'
children: 'personnel',
label: "name"
},
data: [{}],
tree: [
{
id: 1,
label: '一级 1',
children: [
{
id: 4,
label: '二级 1-1',
children: [
{
id: 9,
label: '三级 1-1-1'
},
{
id: 10,
label: '三级 1-1-2'
}
]
}
]
},
{
id: 2,
label: '一级 2',
children: [
{
id: 5,
label: '二级 2-1'
},
{
id: 6,
label: '二级 2-2'
}
]
},
{
id: 3,
label: '一级 3',
children: [
{
id: 7,
label: '二级 3-1'
},
{
id: 8,
label: '二级 3-2'
}
]
}
],
data: [],
tree: [],
treeIds:[],
treeStatus:'',
chooisYear: '',
pageNo: 0,
totals: 0,
liquidateSelectArr: [{ label: '不限', id: '' }],
proportion: [
//
{ label: '不限', id: '0' },
{ label: '>', id: '1' },
{ label: '<', id: '2' },
{ label: '>=', id: '3' },
{ label: '<=', id: '4' },
{ label: '=', id: '5' }
{ label: '不限', id: '' },
{ label: '>', id: '>' },
{ label: '<', id: '<' },
{ label: '>=', id: '>=' },
{ label: '<=', id: '<=' },
{ label: '=', id: '=' }
],
searchStr: {
//
liquidate: '', //
ratio: '', //
year:'',
groupId: '', //
proportion: '', //
percent: '', //
paymentStatus: '' //
proportionSymbol: '', //
},
radio: '依据公司排名',
liquidateSelect: '0', //
originalData:[],// data
statisticsData: [//
{
selection: '1',
companyRanks: '1',
TeamRanks: '1',
liquidate: '1',
principal: '1',
jobNumber: '1',
enterprise: [//
'蒙牛',
'腾讯',
'腾讯',
],
cash: [123456, 2345678,96354],
asset: [123, 456, 23],
backTime: [
{ time: '2021-12-11' },
{ time: '2021-12-12' },
{ time: '2021-12-12' },
],
repaymentTime:12321342315621789,
ratio: '25525225',
remark: [
{ remark: '我是备注1' },
{ remark: '我是备注2' },
{ remark: '我是备注2' }
],
edit:false,
editStr:'编辑'
}
],
keyword: '', //
pickerOptions: {
@ -358,37 +287,280 @@ export default {
let year = date.getFullYear();
return time.getFullYear() > year;
}
}
},
moreBtn:false,
moreText:'向下滚动查看更多',
recordArr:[],// ,
};
},
watch: {
showRank(val){
if(val){
this.getTree()
}
},
},
computed: {
liquidate:{
get(){
return this.$store.state.loan.liquidate
},set(){}
},
liquidateSearch:{
get(){
this.searchStr = this.$store.state.loan.liquidateSearch
return this.$store.state.loan.liquidateSearch
},set(){}
}
},
created() {
this.searchStr = this.$store.state.loan.liquidateSearch
this.annualList()
if(this.liquidate=='2'){
this.annualStatisticsList()
}
},
mounted() {
},
methods: {
createList(val) {
//
handleScroll:core.debounce(function(){
let box = this.$refs.table
if(box.scrollTop+box.clientHeight+180>box.scrollHeight){
this.moreBtn = true
}else{
this.moreBtn = false
}
if(box.scrollTop+box.clientHeight+50>=box.scrollHeight){
let st = box.scrollTop
this.moreBtn = false
//
this.statisticsData.push(...this.recordArr.slice(0,10))
this.recordArr.splice(0,10)
if(this.recordArr.length===0){
this.moreText = "没有更多数据了!"
}else{
this.moreText = "向下滚动查看更多"
box.scrollTop = st
this.statisticsLoading = true
setTimeout(() => {
this.statisticsLoading = false
}, 1000);
}
}
},20),
annualList(){
annualList().then(res=>{
this.data = res.data.list
})
},
annualStatisticsList(){
if(this.searchStr.proportionSymbol&&!this.searchStr.proportion) return this.$message('请输入完成比例整数!')
if(this.searchStr.allAoumntSymbol&&!this.searchStr.allAoumnt) return this.$message('请输入已清收总额!')
this.moreText = "向下滑动查看更多"
let param = {
year:this.searchStr.year,
groupId:this.searchStr.groupId,
proportionSymbol:this.searchStr.proportionSymbol,
proportion:this.searchStr.proportion,
queryCondition:this.searchStr.queryCondition,
}
this.statisticsLoading = true
annualStatisticsList(param).then(res=>{
this.statisticsLoading = false
let arr = new Map()
let data = res.data.list
data.forEach(e=>{
if(arr.has(e.jobNumber)){
let obj = arr.get(e.jobNumber)
obj.enterprise.push({enterprise:e.enterprise,id:e.id})
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)
}else{
e.enterprise = [{enterprise:e.enterprise,id:e.id}]
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
arr.set(e.jobNumber,e)
}
})
//
this.originalData = []
for(let [key,value] of arr){
this.originalData.push(value)
}
this.radioChange('依据小组排名')
this.radioChange('依据公司排名')
if(this.radio==='依据小组排名'){
this.radioChange('依据小组排名')
}
switch (this.searchStr.allAoumntSymbol) {
case '':
break;
case ">":
this.statisticsData = this.statisticsData.filter(e=>{
return e.totalAmount > this.searchStr.allAoumnt
})
break;
case "<":
this.statisticsData = this.statisticsData.filter(e=>{
return e.totalAmount < this.searchStr.allAoumnt
})
break;
case ">=":
this.statisticsData = this.statisticsData.filter(e=>{
return e.totalAmount >= this.searchStr.allAoumnt
})
break;
case "<=":
this.statisticsData = this.statisticsData.filter(e=>{
return e.totalAmount <= this.searchStr.allAoumnt
})
break;
case "=":
this.statisticsData = this.statisticsData.filter(e=>{
return e.totalAmount == this.searchStr.allAoumnt
})
break;
default:
break;
}
while (this.statisticsData.length<20) {
this.statisticsData.push({})
}
// 10,
if (this.statisticsData.length>10) {
this.recordArr = JSON.parse(JSON.stringify(this.statisticsData))
this.recordArr.splice(0,10)
this.statisticsData.splice(10,this.statisticsData.length-1)//
}
}).catch(err=>{
this.statisticsLoading = false
})
},
getTree(){//
this.treeLoading = true
collectionGroupList().then(res=>{
this.treeLoading = false
let data = res.data.list
data.forEach((e,index)=>{
if(e.id.includes('group')&&e.personnel.length===0){
e.disabled = true
}
})
this.tree = data
}).catch(err=>{
this.treeLoading = false
})
},
//
checkBox(data, checked, indeterminate){
this.treeIds = this.$refs.tree.getCheckedKeys()
},
async createList(val) {//
this.showRank = true;
if (val === 'new') {
if(val==='new'){//
this.treeIds = []
}else{
await this.personnelSelection(val)
}
this.treeStatus = val
},
treeSure(){//
if (this.treeStatus === 'new') {
//
} else {
//
// idid
if(!this.chooisYear)return this.$message.error('请先选择年份!')
let arr = []
this.treeIds.forEach((e,index)=>{
if(typeof(e)=='number'){
arr.push(e)
}
})
if(arr.length===0) return this.$message.warning('请先选择人员后再生成列表!')
generateAnnualStatistics({personLiableIds:arr,year:this.chooisYear}).then(res=>{
this.showRank = false
this.$message.success('操作成功!')
this.annualList()
}).catch(err=>{
})
}
},
currentChange(val) {
//
},
radioChange(val) {
//
console.log(val, 'val');
radioChange(val) {//
function compare(key){
return function(value1,value2){
let val1=value1[key];
let val2=value2[key];
return val2-val1;
}
}
if(val==='依据小组排名'){
let groupMap = new Map()
this.originalData.forEach(e=>{
if(groupMap.has(e.groupName)){
let obj = groupMap.get(e.groupName)
obj.totalAmount += e.totalAmount
groupMap.set(e.groupName,obj)
}else{
let obj = {groupName:e.groupName,totalAmount:e.totalAmount}
groupMap.set(e.groupName,obj)
}
})
let group = []
for(let [key,value] of groupMap){
group.push(value)
}
group.sort(compare('totalAmount'))
let newGroup = []
group.forEach(e=>{
let arr = []
this.originalData.forEach(el=>{
if(e.groupName===el.groupName){
arr.push(el)
}
})
newGroup.push(arr)
})
newGroup.forEach(e=>{
e.sort(compare('totalAmount'))
})
let groupDown = []
newGroup.forEach((e)=>{
e.forEach((e,index)=>{
e.TeamRanks = index+1
e.editStr = '编辑'
e.edit = false
groupDown.push(e)
})
})
this.statisticsData = JSON.parse(JSON.stringify(groupDown))
}else if(val==='依据公司排名'){
// ,
this.originalData.sort(compare('totalAmount'))
this.originalData.forEach((e,i)=>{
e.companyRanks = i+1
e.editStr = '编辑'
e.edit = false
})
this.statisticsData = JSON.parse(JSON.stringify(this.originalData))
}
},
clearOption() {
//
this.searchStr = {};
this.$store.commit('liquidateSearch',{})
},
search() {
//
@ -397,24 +569,58 @@ export default {
// Key
return row.Id;
},
statisticsSelection(val) {
//
console.log(val,'勾选')
statisticsSelection() {
console.log('发',this.searchStr.year)
console.log(this.searchStr.year+`年度清收工作完成进度表`)
core.exportFile(annualStatisticsListExport(this.searchStr.year),this.searchStr.year+"年度清收工作完成进度表")
},
edit(row, val) {
//
this.liquidate ='2';
this.$store.commit('liquidateSearch',{
year:row
})
this.$store.commit('liquidate','2')
this.annualStatisticsList()
},
yearEdit(row, val){//
if(row.edit != false){
row.edit = false
row.editStr = '编辑'
//
let param = []
row.enterprise.forEach((e,index)=>{
let obj = {
collectionTime:row.collectionTime[index].collectionTime,
id:e.id,
description:row.description[index].description,
proportion:row.proportion
}
param.push(obj)
})
editAnnualStatistics({collectionStatistics:param}).then(res=>{
this.$message.success('编辑成功!')
setTimeout(() => {
this.annualStatisticsList()
}, 1000);
})
}else{
row.editStr = '保存'
row.edit = true
//
}
},
personnelSelection(val){//
return personnelSelection({year:val}).then(res=>{
this.treeIds = res.data.list
})
},
del(row){
this.$confirm('确定要删除该年度统计数据吗?').then(()=>{
annualStatisticsDeleted(row).then(res=>{
this.annualList()
})
})
}
}
};
@ -436,7 +642,9 @@ export default {
.backTime{
min-height: 50px;
line-height: 50px;
/deep/ .el-input__inner{
text-align: center;
}
}
.ratio{
@ -447,4 +655,18 @@ export default {
margin-bottom: 15px;
}
}
.dataList{
height: 550px;
overflow: auto;
position: relative;
}
/deep/ .el-table::before{
background-color: transparent;
}
.more-btn{
position: absolute;
bottom: 10px;
left: 50%;
transform: translate(-50%,0);
}
</style>

@ -5,66 +5,62 @@
<div class="mgt20 pdb20">
<div class="flex-between mgtb20">
<p class="fz-16 mgr10 font-blue mgl20 nowrap">所在区域</p>
<el-select v-model="searchStr.liquidate" placeholder="请选择" clearable @change="search">
<el-select v-model="searchStr.area" placeholder="请选择" clearable @change="search">
<el-option v-for="item in area" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<p class="fz-16 mgr10 font-blue mgl20 nowrap">经营情况</p>
<el-select v-model="searchStr.liquidate" placeholder="请选择" clearable @change="search">
<el-select v-model="searchStr.operation" placeholder="请选择" clearable @change="search">
<el-option v-for="item in circumstance" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
<p class="fz-16 mgr10 font-blue mgl20 nowrap">贷款银行</p>
<el-select v-model="searchStr.liquidate" placeholder="请选择" clearable @change="search">
<el-select v-model="searchStr.bank" placeholder="请选择" clearable @change="search">
<el-option v-for="(item,index) in bankData" :key="item.index" :label="item.value" :value="item.value"></el-option>
</el-select>
<p class="fz-16 mgr10 font-blue mgl20 nowrap">代偿金额</p>
<el-select v-model="searchStr.paymentStatus" placeholder="请选择" clearable @change="search">
<el-select v-model="searchStr.amountSymbol" 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.amountSymbol"
placeholder="请输入金额(万)"
class="wd20 mglr10"
style="max-width: 200px"
v-model="keyword"
v-model="searchStr.compensationAmount"
clearable
></el-input>
</div>
<div class="flex-between mgtb20">
<div class="flex-center">
<p class="fz-16 mgr10 font-blue mgl20 nowrap">代偿余额</p>
<el-select v-model="searchStr.paymentStatus" placeholder="请选择" clearable @change="search">
<el-select v-model="searchStr.balanceSymbol" 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.balanceSymbol"
placeholder="请输入整数"
class="wd20 mglr10"
style="min-width: 200px"
v-model="keyword"
v-model="searchStr.compensatoryBalance"
clearable
></el-input>
<p class="fz-16 mgr10 font-blue mgl20 nowrap">代偿时间</p>
<!-- <el-date-picker
style="width:180px"
v-model="searchStr.time"
type="date"
value-format="yyyy-MM-dd"
>
</el-date-picker> -->
<el-date-picker
class="ht40 mgl10"
v-model="searchStr.time"
@change="getDates($event,parameter.startTime,parameter.endTime,'flowTeam')"
v-model="startToEndTime"
@change="getDates($event)"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
format="yyyy-MM-dd"
value-format="timestamp"
value-format="yyyy-MM-dd"
>
</el-date-picker>
</div>
<div class="flex-center mgr10">
<el-button v-preventReClick type="primary" round @click="clearOption">清空选项</el-button>
<el-button v-preventReClick type="primary" round @click="quryCollectionProgress">搜索</el-button>
<el-button v-preventReClick type="primary" round @click="clearOption">清空选项</el-button>
</div>
</div>
<div class="shadow radius10 pdt20">
@ -77,14 +73,14 @@
<div class="flex-between">
<div class="flex-center">
<el-button class="mgl20" v-preventReClick type="primary" size="small" round @click="search">导出列表</el-button>
<el-button class="mgl20" v-if="$router.currentRoute.meta.btn.includes('清收进度导出列表')" v-preventReClick type="primary" size="small" round @click="collectionProgressExport">导出列表</el-button>
</div>
<div class="df">
<el-input
style="min-width: 250px"
class="ht40 mgl10 mgr10"
@keyup.enter.native="getBusinessApply('search')"
v-model="searchStr.jobNum"
@keyup.enter.native="quryCollectionProgress()"
v-model="searchStr.queryCondition"
placeholder="企业名称/清收负责人/业务编号"
clearable
></el-input>
@ -97,29 +93,28 @@
stripe
header-align="center"
class="mat20"
:row-key="getRowKey"
@selection-change="statisticsSelection"
:row-key="getRowKeys"
:key="1"
>
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column>
<el-table-column prop="companyRanks" label="业务编号" align="center" min-width="100px"></el-table-column>
<el-table-column prop="TeamRanks" label="企业名称" align="center" min-width="100px"></el-table-column>
<el-table-column prop="liquidate" label="法定代表人" align="center"></el-table-column>
<el-table-column prop="principal" label="联系电话" align="center" min-width="100px"></el-table-column>
<el-table-column prop="jobNumber" label="贷款银行" align="center"></el-table-column>
<el-table-column prop="enterprise" label="贷款金额(元)" align="center" min-width="100px"></el-table-column>
<el-table-column prop="enterprise" label="贷款期限" align="center" min-width="100px"></el-table-column>
<el-table-column prop="enterprise" label="代偿时间" align="center" min-width="100px"></el-table-column>
<el-table-column prop="enterprise" label="代偿金额(元)" align="center" min-width="100px"></el-table-column>
<el-table-column prop="enterprise" label="代偿余额(元)" align="center" min-width="100px"></el-table-column>
<el-table-column prop="enterprise" label="抵押情况" align="center" min-width="100px"></el-table-column>
<el-table-column prop="enterprise" label="诉讼情况" align="center" min-width="100px"></el-table-column>
<el-table-column prop="enterprise" label="经营情况" align="center" min-width="100px"></el-table-column>
<el-table-column prop="enterprise" label="所在区域" align="center" min-width="100px"></el-table-column>
<el-table-column prop="enterprise" label="清偿方式" align="center" min-width="100px"></el-table-column>
<el-table-column prop="enterprise" label="清收负责人" align="center" min-width="100px"></el-table-column>
<el-table-column prop="enterprise" label="备注" align="center" min-width="100px"></el-table-column>
<el-table-column prop="businessCode" label="业务编号" align="center" min-width="100px"></el-table-column>
<el-table-column prop="customerName" label="企业名称" align="center" min-width="100px"></el-table-column>
<el-table-column prop="legalName" label="法定代表人" align="center"></el-table-column>
<el-table-column prop="phone" label="联系电话" align="center" min-width="100px"></el-table-column>
<el-table-column prop="bank" label="贷款银行" align="center"></el-table-column>
<el-table-column prop="guaranteeAmount" label="贷款金额(元)" align="center" min-width="100px"></el-table-column>
<el-table-column prop="guaranteeTime" label="贷款期限" align="center" min-width="100px"></el-table-column>
<el-table-column prop="compensatoryTime" label="代偿时间" align="center" min-width="100px"></el-table-column>
<el-table-column prop="compensationAmount" label="代偿金额(元)" align="center" min-width="100px"></el-table-column>
<el-table-column prop="compensatoryBalance" label="代偿余额(元)" align="center" min-width="100px"></el-table-column>
<el-table-column prop="mortgage" label="抵押情况" align="center" min-width="100px"></el-table-column>
<el-table-column prop="litigation" label="诉讼情况" align="center" min-width="100px"></el-table-column>
<el-table-column prop="operation" label="经营情况" align="center" min-width="100px"></el-table-column>
<el-table-column prop="area" label="所在区域" align="center" min-width="100px"></el-table-column>
<el-table-column prop="repaymentMethod" label="清偿方式" align="center" min-width="100px"></el-table-column>
<el-table-column prop="personLiable" label="清收负责人" align="center" min-width="100px"></el-table-column>
<el-table-column prop="repaymentNotes" label="备注" align="center" min-width="100px"></el-table-column>
</el-table>
<div class="pagination">
@ -137,6 +132,8 @@
</div>
</template>
<script>
import {queryCollectionProgress , collectionProgressExport} from '../../../utils/api'
import core from '../../../utils/core'
export default{
name:'',
props:{},
@ -144,17 +141,32 @@ export default{
return{
loading:false,
statisticsData:[],
searchStr:{},
pageNo:1,
searchStr:{
amountSymbol:'',
area:'',
balanceSymbol:'',
bank:'',
compensationAmount:'',
compensatoryBalance:'',
compensatoryEndTime:'',
compensatoryStartTime:'',
operation:'',
page:this.pageNo||1,
queryCondition:'',//
size:10
},
startToEndTime:[],
totals:0,
ids:[],
proportion: [
//
{ label: '不限', id: '0' },
{ label: '>', id: '1' },
{ label: '<', id: '2' },
{ label: '>=', id: '3' },
{ label: '<=', id: '4' },
{ label: '=', id: '5' }
{ label: '不限', id: '' },
{ label: '>', id: '>' },
{ label: '<', id: '<' },
{ label: '>=', id: '>=' },
{ label: '<=', id: '<=' },
{ label: '=', id: '=' }
],
area:[//
{name:'萨尔图区',id:0},
@ -178,6 +190,7 @@ export default{
console.clear()
console.log('初始化')
console.log(this.bankData)
this.quryCollectionProgress()
},
computed: {
bankData(){
@ -185,16 +198,65 @@ export default{
}
},
methods:{
search(){
search(){},
quryCollectionProgress:core.throttle(function(){//
let strObj = this.searchStr
if(strObj.amountSymbol&&!strObj.compensationAmount||strObj.balanceSymbol&&!strObj.compensatoryBalance){
return this.$message.warning('选择符号后请输入金额!')
}
this.loading = true
console.log('触发')
queryCollectionProgress(this.searchStr).then(res=>{
this.loading = false
this.totals
let data = res.data.list
data.map(e=>{
e.area = core.areaStr(e.area)
e.repaymentMethod = e.repaymentMethod.slice(1,e.repaymentMethod.length-1)
})
this.statisticsData = res.data.list
this.totals = res.data.total
console.log(res,'列表数据')
console.log(this.totals,'yo')
}).catch(err=>{
console.log(err,'报错-列表')
this.loading = false
})
}),
collectionProgressExport(){//
if(this.ids.length===0) return this.$message.warning('请先勾选数据后再导出')
console.log(collectionProgressExport(this.ids),'url')
core.exportFile(collectionProgressExport(this.ids),'清收工作进度表')
},
getDates(val){//
console.log(val,'val')
if(val.length===2){
this.searchStr.compensatoryStartTime = val[0]
this.searchStr.compensatoryEndTime = val[1]
}else{
this.searchStr.compensatoryEndTime = ''
this.searchStr.compensatoryStartTime = ''
}
},
clearOption(){
this.searchStr = {}
statisticsSelection(val){//
console.log(val,'勾选')
this.ids = val.map(e=>e.id)
},
currentChange(val){
clearOption(){//
this.startToEndTime = []
this.searchStr = {
size:10,page:1
}
this.quryCollectionProgress()
},
currentChange(val){//
this.pageNo = val
this.quryCollectionProgress()
},
getRowKey(row){
return row.id;
},
},
}

@ -22,7 +22,6 @@ Router.prototype.replace = function push(location, onResolve, onReject) {
const Home = () => import('../components/common/Home.vue')
// 首页
const HomePage = () => import('../components/page/HomePage.vue')
// 个人中心
const Dashboard = () => import('../components/page/Dashboard.vue')
// 工作台
@ -244,15 +243,13 @@ function createdRouter(item,val) {// 处理成路由接受对象的方法
return obj
}else return
}
// 路由前置导航守卫
router.beforeEach(function(to,from,next){
if(to.path == '/login'){// 退出,则删除token,避免影响到下面的判断
if(to.path == '/login'){
sessionStorage.removeItem('token')
}
// if(sessionStorage.getItem('getRouter')&&sessionStorage.getItem('token')) return
if(sessionStorage.getItem('token')){//判断是否登录,是否以及处理过路由
// 如果要完善,需要优化:文件名称和路由path对应,循环把本地文件匹配上去,得改本地文件的名称,需要时间。
getPermission().then(res=>{// 路由接口获取路由
if(sessionStorage.getItem('token')){
if(!sessionStorage.getItem('success')){
getPermission().then(res=>{
if(res.success){
sessionStorage.setItem('getRouter','true')
let permissions = {
@ -286,18 +283,18 @@ router.beforeEach(function(to,from,next){
},
len = res.data.length,
homeMenu = []
console.log(res.data,'路由处理,工作台和非工作台路由匹配')
for(let i=0;i<len;i++){
//匹配非工作台的路由
if(res.data[i].name!=='客户资源管理系统'&&res.data[i].name!=='担保业务管理系统'&&res.data[i].name!=='保后业务管理系统'){
permissions.children.push(createdRouter(res.data[i]))
homeMenu.push(res.data[i].name)
}else{
// 匹配工作台的路由,塞进工作台里
permissions.children[1].meta.btn.push(res.data[i].name)
permissions.children[1].children.push(createdRouter(res.data[i]))
}
}
router.app.$options.store.commit("homeMenuData", { homeMenu: homeMenu });// 顶部四个按钮
router.app.$options.store.commit("homeMenuData", { homeMenu: homeMenu });
let errPage = [
{
path: '*',
@ -312,38 +309,19 @@ router.beforeEach(function(to,from,next){
router.addRoutes([permissions])
router.addRoutes(errPage)
sessionStorage.setItem('routerData',JSON.stringify([permissions]))
// console.log(router.app.$options.store.state.router,'成功处理路由否');
// 测试处理过路由否
sessionStorage.setItem('success',true)
}
}).catch(err=>{
console.log(err,'路由处理出错')
let errPage = {
path: '*',
redirect: '/login'
path: '*',
redirect: '/login'
}
router.addRoutes([errPage])
})
// }else {// 处理过路由的情况下,还原路由操作---权限新增/修改的时候,删除掉保存的路由数据
// console.log('处理过路由,直接还原',router);
// let errPage = [
// {
// path: '*',
// redirect: '/404'
// },
// {
// path: '/404',
// component: notFind,
// meta: { title: '找不到页面', btn:[]}
// }
// ],
// // 踩坑,路由刷新后直接session拿的时候,会丢失component,此处不可取,待完善,一一匹配本地文件。
// old = JSON.parse(sessionStorage.getItem('routerData'))
// // router.addRoutes(old)
// // router.addRoutes(errPage)
// console.log('处理过路由,不进行二次处理',router,old,to.path);
// // next({
// // path:to.path
// // })
// }
}else{// 当没有token的情况下---处理重定向操作,储存重定向路由
}
}else{
if (to.path !== '/login'&&to.path !=="/beforeLogin"&&to.path !=='/bind-phone') {
next({ path: '/login',
query:{redirect:to.path}

@ -26,6 +26,7 @@ const state = {
entering:false,// 是否为录入业务
disabledAll:false,//禁用全部
liquidate:'1',// 控制清收统计页面切换
liquidateSearch:{},
}
@ -94,6 +95,9 @@ const mutations = {
liquidate(state,val){
state.liquidate = val
},
liquidateSearch(s,obj){
s.liquidateSearch = obj
}
}

@ -1,452 +1,242 @@
import { get, post, put, del,Url } from './http';
// let host = 'http://192.168.31.137:8080';//陈赓
import {
get,
post,
put,
del,
Url
} from './http';
let host = Url;
export const login = p => post('/apiHrmsAuth/hrms/auth/userlogin/login', p); //登录
export const phoneCode = p => get('/apiHrmsAuth/hrms/auth/userlogin/sendCode', p); //找回密码验证码
export const verifyMobile = p => post('/apiHrmsAuth/hrms/auth/userlogin/verifyMobile', p); //忘记密码
export const getBackPwd = p => post('/apiHrmsAuth/hrms/auth/userlogin/getBackPwd', p); //设置新密码
export const querycustomerList = p => get('/api-crms/crms/customer/queryList', p); //查询客户
export const deleteCustomer = p => del('/api-crms/crms/customer/deleteCustomer', p); //删除客户
export const queryDetails = p => get('/api-crms/crms/customer/queryDetails', p); //查询客户详情
export const savePersonal = p => post('/api-crms/crms/customer/savePersonal', p); //添加个人客户
export const saveCompany = p => post('/api-crms/crms/customer/saveCompany', p); //添加企业客户
export const updateCompany = p => post('/api-crms/crms/customer/updateCompany', p); //编辑企业客户
export const updatePersonal = p => post('/api-crms/crms/customer/updatePersonal', p); //编辑个人客户
export const listEmployeeName = p => get('/api-hrms/hrms/employee/listEmployeeName', p); //查询所有的客户经理
export const updatePwd = p => post('/apiHrmsAuth/hrms/auth/userlogin/updatePwd', p); //修改平台超管员密码
export const loginLogList = p => get('/apiHrmsAuth/hrms/auth/systemLog/loginLogList', p); //平台日志列表
export const rolePermissionList = p => get('/apiHrmsAuth/hrms/auth/permission/rolePermissionList', p); //角色权限列表
export const queryPermission = p => get('/apiHrmsAuth/hrms/auth/permission/queryPermissionByRoleId', p); //查看角色权限
export const saveRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/saveRolePermission', p); //新增角色权限
export const updateRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/updateRolePermission', p); //编辑角色权限
export const delRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/delRolePermission', p); //删除角色权限
export const jurTree = p => get('/apiHrmsAuth/hrms/auth/permission/tree', p); //查询所有权限树形结构
// 后台-人资-部门
export const departmentTree = p => get('/api-hrms/hrms/dept/tree',p); //部门树形结构数据(显示部门)
export const addDepartment = p => post('/api-hrms/hrms/dept/save', p); //新增一条部门信息
export const deleteDepartment = p => del('/api-hrms/hrms/dept/delete', p); //删除部门信息(树结构)
export const editDepartment = p => put('/api-hrms/hrms/dept/update', p); //根据id修改部门信息(编辑)
export const dragDepartment = p => put('/api-hrms/hrms/dept/update/sort', p); //修改部门的拖拽排序(传id和排序)
export const rulesAll = p => get('/api-hrms/hrms/position/listRoleIdAndName', p); //所有角色id+名称
export const postAll = p => post('/api-hrms/hrms/position/listPositionIdAndName', p); //所有职位id+名称
export const ruleJurisdiction = p => post('/api-hrms/hrms/employee/tree', p); //新增员工-角色对应的权限
export const clickDepartment = p => get('/api-hrms/hrms/dept/children', p); //点击部门,搜索该部门名下的员工
// 后台-人资-员工列表
export const deleteStaff = p => del('/api-hrms/hrms/employee/delete', p); //根据id删除员工
export const forbiddenStaff = p => get('/api-hrms/hrms/employee/forbidInfo', p); //禁用详情(为啥禁用)
export const queryStaff = p => get('/api-hrms/hrms/employee/getEmployeeAndDeptById', p); //根据id查询员工的基本信息
export const queryStaffName = p => get('/api-hrms/hrms/employee/getEmployeeById', p); //根据id查询员工姓名
export const staffMessage = p => get('/api-hrms/hrms/employee/info', p); //根据id查询员工详细信息
export const staffList = p => get('/api-hrms/hrms/employee/list', p); //查询列表
export const staffResetPwd = p => get('/api-hrms/hrms/employee/reset', p); //员工重置密码
export const addStaff = p => post('/api-hrms/hrms/employee/save', p); //新增员工
export const startStaff = p => get('/api-hrms/hrms/employee/start', p); //启用员工
export const stopStaff = p => post('/api-hrms/hrms/employee/stop', p); //禁用员工
export const roleStaff = p => post('/api-hrms/hrms/employee/tree', p); //角色对应权限
export const editStaff = p => post('/api-hrms/hrms/employee/update', p); //修改员工
// 后台-员工-导入
export const importStaff = p => post('/api-hrms/hrms/employee/excelImport',p); //导入员工(上传)
// 后台-员工-导出
export const excelStaffFile = `${host}/api-hrms/hrms/employee/excelExport`; //导出员工文件
export const excelTemplateStaff = `${host}/api-hrms/hrms/employee/excelTemplate`; //导出员工模板
// 后台-人资-职位
export const deletePost = p => del('/api-hrms/hrms/position/delete', p); //删除职位信息
export const searchPostId = p => get('/api-hrms/hrms/position/info', p); //职位id查询职位信息详情
export const postList = p => get('/api-hrms/hrms/position/list', p); //职位列表+查询
export const addPostMessage = p => post('/api-hrms/hrms/position/save', p); //新增职位信息
export const editPostMessage = p => put('/api-hrms/hrms/position/update', p); //修改职位信息
// 后台担保系统
// 表单设计--公用接口
export const login = p => post('/apiHrmsAuth/hrms/auth/userlogin/login', p);
export const phoneCode = p => get('/apiHrmsAuth/hrms/auth/userlogin/sendCode', p);
export const verifyMobile = p => post('/apiHrmsAuth/hrms/auth/userlogin/verifyMobile', p);
export const getBackPwd = p => post('/apiHrmsAuth/hrms/auth/userlogin/getBackPwd', p);
export const querycustomerList = p => get('/api-crms/crms/customer/queryList', p);
export const deleteCustomer = p => del('/api-crms/crms/customer/deleteCustomer', p);
export const queryDetails = p => get('/api-crms/crms/customer/queryDetails', p);
export const savePersonal = p => post('/api-crms/crms/customer/savePersonal', p);
export const saveCompany = p => post('/api-crms/crms/customer/saveCompany', p);
export const updateCompany = p => post('/api-crms/crms/customer/updateCompany', p);
export const updatePersonal = p => post('/api-crms/crms/customer/updatePersonal', p);
export const listEmployeeName = p => get('/api-hrms/hrms/employee/listEmployeeName', p);
export const updatePwd = p => post('/apiHrmsAuth/hrms/auth/userlogin/updatePwd', p);
export const loginLogList = p => get('/apiHrmsAuth/hrms/auth/systemLog/loginLogList', p);
export const rolePermissionList = p => get('/apiHrmsAuth/hrms/auth/permission/rolePermissionList', p);
export const queryPermission = p => get('/apiHrmsAuth/hrms/auth/permission/queryPermissionByRoleId', p);
export const saveRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/saveRolePermission', p);
export const updateRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/updateRolePermission', p);
export const delRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/delRolePermission', p);
export const jurTree = p => get('/apiHrmsAuth/hrms/auth/permission/tree', p);
export const departmentTree = p => get('/api-hrms/hrms/dept/tree', p);
export const addDepartment = p => post('/api-hrms/hrms/dept/save', p);
export const deleteDepartment = p => del('/api-hrms/hrms/dept/delete', p);
export const editDepartment = p => put('/api-hrms/hrms/dept/update', p);
export const dragDepartment = p => put('/api-hrms/hrms/dept/update/sort', p);
export const rulesAll = p => get('/api-hrms/hrms/position/listRoleIdAndName', p);
export const postAll = p => post('/api-hrms/hrms/position/listPositionIdAndName', p);
export const ruleJurisdiction = p => post('/api-hrms/hrms/employee/tree', p);
export const clickDepartment = p => get('/api-hrms/hrms/dept/children', p);
export const deleteStaff = p => del('/api-hrms/hrms/employee/delete', p);
export const forbiddenStaff = p => get('/api-hrms/hrms/employee/forbidInfo', p);
export const queryStaff = p => get('/api-hrms/hrms/employee/getEmployeeAndDeptById', p);
export const queryStaffName = p => get('/api-hrms/hrms/employee/getEmployeeById', p);
export const staffMessage = p => get('/api-hrms/hrms/employee/info', p);
export const staffList = p => get('/api-hrms/hrms/employee/list', p);
export const staffResetPwd = p => get('/api-hrms/hrms/employee/reset', p);
export const addStaff = p => post('/api-hrms/hrms/employee/save', p);
export const startStaff = p => get('/api-hrms/hrms/employee/start', p);
export const stopStaff = p => post('/api-hrms/hrms/employee/stop', p);
export const roleStaff = p => post('/api-hrms/hrms/employee/tree', p);
export const editStaff = p => post('/api-hrms/hrms/employee/update', p);
export const importStaff = p => post('/api-hrms/hrms/employee/excelImport', p);
export const excelStaffFile = `${host}/api-hrms/hrms/employee/excelExport`;
export const excelTemplateStaff = `${host}/api-hrms/hrms/employee/excelTemplate`;
export const deletePost = p => del('/api-hrms/hrms/position/delete', p);
export const searchPostId = p => get('/api-hrms/hrms/position/info', p);
export const postList = p => get('/api-hrms/hrms/position/list', p);
export const addPostMessage = p => post('/api-hrms/hrms/position/save', p);
export const editPostMessage = p => put('/api-hrms/hrms/position/update', p);
export const designFrom = p => get('/api-guarantee/form/design/list', p);
// 修改表单
export const updateFrom = p => post('/api-guarantee/form/design/update', p);
// 担保模块选择
export const updateFrom = p => post('/api-guarantee/form/design/update', p);
export const processManageList = p => get('/api-guarantee/dg-process-manage/processManageList', p);
// 修改图标
export const updateProcessManage = p => post('/api-guarantee/dg-process-manage/updateProcessManage', p); //新增职位信息
// 修改可见范围
export const updateProcessManage = p => post('/api-guarantee/dg-process-manage/updateProcessManage', p);
export const updateUserVisual = p => post('/api-guarantee/dg-process-manage/updateUserVisual', p);
// 查询可见范围
export const processVisualList = p => get('/api-guarantee/dg-process-manage/processVisualList', p);
// 查询超管用户--用于避免超管在表单可见范围被删除
export const superManager = p => get('/api-hrms/hrms/employee/getUserIdByRoleId', p);
// 查询抄送用户
export const queryCopySendUser = p => get('/api-guarantee/dg-process-user/queryCopySendUser', p);
// 添加抄送的用户
export const addCopySendUser = p => post('/api-guarantee/dg-process-user/updateCopySendUser', p);
// 查添加进流程的员工
export const getEmployeesByRoleId = p => get('/api-hrms/hrms/role/getEmployeesByRoleId', p);
// 修改用户角色
export const updateUserRole = p => post('/api-hrms/hrms/role/updateUserRole', p);
// 查询日志列表
export const systemLog = p => get('/apiHrmsAuth/hrms/auth/systemLog/list', p);
// 系统-新增角色权限
export const newAddRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/saveRolePermission', p); //新增角色权限
export const editRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/updateRolePermission', p); //修改角色权限
export const getPermissionIds = p => get('/apiHrmsAuth/hrms/auth/permission/queryPermissionArrById', p); //已有权限的ids
// 工作台--人力资源
// 绑定手机号
export const workBindPhone = p => get('/api-hrms/hrms/user/binding', p);
// 微信解绑
export const wxUnbundle = p => get('/api-hrms/hrms/user/cancel', p);
// 验证码
export const workPhoneAuthCord = p => get('/api-hrms/hrms/user/code', p);
// 用户信息
export const workUserMsg = p => get('/api-hrms/hrms/user/info', p);
// 修改用户信息9
export const woreEditUserMsg = p => post('/api-hrms/hrms/user/update', p);
// 修改密码
export const workEditPwd = p => get('/api-hrms/hrms/user/updatePassword', p);
// 头像上传
export const headImgUp = p => post('/api-hrms/hrms/user/uploadFile', p);
//工作台--保后管理
// 查询保后列表
export const newAddRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/saveRolePermission', p);
export const editRolePermission = p => post('/apiHrmsAuth/hrms/auth/permission/updateRolePermission', p);
export const getPermissionIds = p => get('/apiHrmsAuth/hrms/auth/permission/queryPermissionArrById', p);
export const workBindPhone = p => get('/api-hrms/hrms/user/binding', p);
export const wxUnbundle = p => get('/api-hrms/hrms/user/cancel', p);
export const workPhoneAuthCord = p => get('/api-hrms/hrms/user/code', p);
export const workUserMsg = p => get('/api-hrms/hrms/user/info', p);
export const woreEditUserMsg = p => post('/api-hrms/hrms/user/update', p);
export const workEditPwd = p => get('/api-hrms/hrms/user/updatePassword', p);
export const headImgUp = p => post('/api-hrms/hrms/user/uploadFile', p);
export const insuranceList = p => get('/api-guarantee/al-insurance-list/insuranceList', p);
// 查询保后详情
export const insuranceDetail = p => get('/api-guarantee/al-insurance-list/insuranceDetail', p);
//办理结项
export const updateInsurance = p => get('/api-guarantee/al-insurance-list/updateStatus', p);
//还款录入
export const repaymentEntry = p => post('/api-guarantee/al-repayment-entry/repaymentEntry', p);
//还款记录列表
export const repaymentList = p => get('/api-guarantee/al-repayment-entry/repaymentList', p);
//还款记录统计
export const repaymentStatistics = p => get('/api-guarantee/al-repayment-entry/repaymentStatistics', p);
//批量删除还款记录
export const delRepayment = p => post('/api-guarantee/al-repayment-entry/delRepayment', p);
// 查询还款记录详情
export const repaymentDetail = p => get('/api-guarantee/al-repayment-entry/repaymentDetail', p);
// 编辑还款录入
export const updateRepayment = p => post('/api-guarantee/al-repayment-entry/updateRepayment', p);
// 添加保后业务
export const saveInsurance = p => post('/api-guarantee/al-insurance-list/saveInsurance', p);
// 删除保后业务
export const deleteInsurance = p => post('/api-guarantee/al-insurance-list/deleteInsurance?insuranceId='+p);
// 更新保后业务
export const deleteInsurance = p => post('/api-guarantee/al-insurance-list/deleteInsurance?insuranceId=' + p);
export const editInsurance = p => post('/api-guarantee/al-insurance-list/updateInsurance', p);
// 清收组列表
export const liquidateList = p => get('/api-guarantee/al-collection-group/list', p);
// 清收组添加或修改
export const liquidateEdit = p => post('/api-guarantee/al-collection-group/saveOrUpdate', p);
// 清收组删除
export const liquidateDel = p => post('/api-guarantee/al-collection-group/delete?id='+p);
// 取得代偿金额
export const liquidateDel = p => post('/api-guarantee/al-collection-group/delete?id=' + p);
export const compensationSituation = p => get(`/api-guarantee/al-insurance-list/compensationSituation?date=${p.data}&insuranceId=${p.insuranceId}`);
export const queryCollectionProgress = p => post('/api-guarantee/al-collection-statistics/queryCollectionProgress', p);
export const collectionProgressExport = p => `${host}/api-guarantee/al-collection-statistics/collectionProgressExport?ids=${p}`
export const editAnnualStatistics = p => post('/api-guarantee/al-collection-statistics/editAnnualStatistics', p);
export const personnelSelection = p => get('/api-guarantee/al-collection-statistics/personnelSelection', p);
export const annualStatisticsDeleted = p => post(`/api-guarantee/al-collection-statistics/annualStatisticsDeleted?year=${p}`);
export const annualStatisticsListExport = p => `${host}/api-guarantee/al-collection-statistics/annualStatisticsListExport?year=${p}`
export const importInsurance = `${host}/api-guarantee/al-insurance-list/importInsurance`;
export const exportFailure = p=> `${host}/api-guarantee/al-insurance-list/exportFailure?exportCode=${p}`;
// 催收
export const collectionGroupList = p => post('/api-guarantee/al-collection-statistics/collectionGroupList', p);
export const generateAnnualStatistics = p => post('/api-guarantee/al-collection-statistics/generateAnnualStatistics', p);
export const annualList = p => get('/api-guarantee/al-collection-statistics/annualList', p);
export const annualStatisticsList = p => post('/api-guarantee/al-collection-statistics/annualStatisticsList', p);
export const collection = p => post('/api-guarantee/al-collection/collection', p);
// 催收列表
export const collectionList = p => get('/api-guarantee/al-collection/list', p);
// 点击催收查询出的列表
export const collectionListDetail = p => get('/api-guarantee/al-collection/overdue/detail', p);
// 催收记录列表
export const collectionHisList = p => post('/api-guarantee/al-collection/collection/list', p);
// 催收记录列表点击查看
export const collectionHisListDetail = p => get('/api-guarantee/al-collection/examine/detail', p);
export const excelInsurance = `${host}/api-guarantee/al-insurance-list/excelExport`; //导出保后管理列表
export const excelHis = `${host}/api-guarantee/al-repayment-entry/excelExport`; //导出还款记录列表
export const excelCollection = `${host}/api-guarantee/al-collection/list/export/excel`; //导出催收管理列表
export const excelCollectionHis = `${host}/api-guarantee/al-collection/collection/list/export/excel`; //导出催收管理列表
// 工作台--客户资源管理
// 删除
export const workClientDel = p => post('/api-crms/crms/workbench/delete', p);
// 详情
export const workClientParticulars = p => get('/api-crms/crms/workbench/info', p);
// 客户信息列表展示
export const workClientMsgList = p => get('/api-crms/crms/workbench/list', p);
// 获取当前客户部门经理--下属客户经理
export const workClientManager= p => get('/api-crms/crms/workbench/manager', p);
// 不通过
export const workClientNoPass = p => get('/api-crms/crms/workbench/noPass', p);
// 通过审核
export const workClientPass = p => get('/api-crms/crms/workbench/pass', p);
// 新增企业类型客户
export const excelInsurance = `${host}/api-guarantee/al-insurance-list/excelExport`;
export const excelHis = `${host}/api-guarantee/al-repayment-entry/excelExport`;
export const excelCollection = `${host}/api-guarantee/al-collection/list/export/excel`;
export const excelCollectionHis = `${host}/api-guarantee/al-collection/collection/list/export/excel`;
export const workClientDel = p => post('/api-crms/crms/workbench/delete', p);
export const workClientParticulars = p => get('/api-crms/crms/workbench/info', p);
export const workClientMsgList = p => get('/api-crms/crms/workbench/list', p);
export const workClientManager = p => get('/api-crms/crms/workbench/manager', p);
export const workClientNoPass = p => get('/api-crms/crms/workbench/noPass', p);
export const workClientPass = p => get('/api-crms/crms/workbench/pass', p);
export const workClientAddEnterprise = p => post('/api-crms/crms/workbench/saveCompany', p);
// 新增企业类型客户新版接口
export const insertCompany = p => post('/api-crms/crms/workbench/insertCompany', p);
// 新增个人类型客户
export const workClientMsg = p => post('/api-crms/crms/workbench/savePersonal', p);
// 修改企业类型客户
export const workEditClientEnterpriseMsg = p => post('/api-crms/crms/workbench/updateCompany', p);
// 修改企业类型客户新版接口
export const updateCompanyNew = p => post('/api-crms/crms/workbench/updateCompanyNew', p);
// 修改个人类型客户
export const workEditClientMsg = p => post('/api-crms/crms/workbench/updatePersonal', p);
// 后台和前台区分
// 新增个人类型客户
export const backClientMsg = p => post('/api-crms/crms/customer/savePersonal', p);
// 新增企业类型客户
export const backSaveCompany = p => post('/api-crms/crms/customer/saveCompany', p);
// 修改企业类型客户
export const backupdateCompany = p => post('/api-crms/crms/customer/updateCompany', p);
// 修改个人类型客户
export const backupdatePersonal = p => post('/api-crms/crms/customer/updatePersonal', p);
// 登录微信扫码(图片)
// export const WXCordImg = p => get('/apiHrmsAuth/hrms/auth/userlogin/wxLoginUrl', p);
// 微信回调授权码(不用管)
export const WXAuthCord = p => get('/apiHrmsAuth/hrms/auth/userlogin/user/callback', p);
// 登录绑定手机号
export const bindPhone = p => post('/apiHrmsAuth/hrms/auth/userlogin/bindPhoneAndOpenId', p);
// 登录手机验证码
export const phoneAuthCord = p => get('/apiHrmsAuth/hrms/auth/userlogin/sendCode', p);
// 判断手机是否存在
export const phoneExist = p => get('/apiHrmsAuth/hrms/auth/userlogin/isPhoneExist', p);
// 工作台--担保业务
//业务申请列表
export const businessApplyList = p => get('/api-guarantee/dg-apply-amount-info/businessApplicationList', p);
//新建业务
export const businessApplication = p => post('/api-guarantee/dg-apply-amount-info/businessApplication', p);
// 获取所有客户的信息
export const getAllClient = p => get('/api-crms/crms/customer/queryCompanyCodeAndName', p);
//客户编号/取得信息
export const insertCompany = p => post('/api-crms/crms/workbench/insertCompany', p);
export const workClientMsg = p => post('/api-crms/crms/workbench/savePersonal', p);
export const workEditClientEnterpriseMsg = p => post('/api-crms/crms/workbench/updateCompany', p);
export const updateCompanyNew = p => post('/api-crms/crms/workbench/updateCompanyNew', p);
export const workEditClientMsg = p => post('/api-crms/crms/workbench/updatePersonal', p);
export const backClientMsg = p => post('/api-crms/crms/customer/savePersonal', p);
export const backSaveCompany = p => post('/api-crms/crms/customer/saveCompany', p);
export const backupdateCompany = p => post('/api-crms/crms/customer/updateCompany', p);
export const backupdatePersonal = p => post('/api-crms/crms/customer/updatePersonal', p);
export const WXAuthCord = p => get('/apiHrmsAuth/hrms/auth/userlogin/user/callback', p);
export const bindPhone = p => post('/apiHrmsAuth/hrms/auth/userlogin/bindPhoneAndOpenId', p);
export const phoneAuthCord = p => get('/apiHrmsAuth/hrms/auth/userlogin/sendCode', p);
export const phoneExist = p => get('/apiHrmsAuth/hrms/auth/userlogin/isPhoneExist', p);
export const businessApplyList = p => get('/api-guarantee/dg-apply-amount-info/businessApplicationList', p);
export const businessApplication = p => post('/api-guarantee/dg-apply-amount-info/businessApplication', p);
export const getAllClient = p => get('/api-crms/crms/customer/queryCompanyCodeAndName', p);
export const companyInfoBySth = p => post('/api-guarantee/dg-apply-amount-info/companyInfoBySth', p);
// 业务申请-查看
export const businessApplyWatch = p => get('/api-guarantee/dg-apply-amount-info/businessApplicationDetail', p);
// 业务-修改
export const businessApplyWatch = p => get('/api-guarantee/dg-apply-amount-info/businessApplicationDetail', p);
export const businessApplyEdit = p => post('/api-guarantee/dg-apply-amount-info/updateBusinessApplication', p);
// 业务申请-审核
export const businessApplyAudit = p => post('/api-guarantee/dg-apply-amount-info/approvalBusinessApplication', p);
// 业务-撤销
export const businessApplyAudit = p => post('/api-guarantee/dg-apply-amount-info/approvalBusinessApplication', p);
export const businessApplyRepeal = p => get('/api-guarantee/dg-apply-amount-info/revokeBusinessApplication', p);
// 所有银行
export const allBankName = p => get('/api-guarantee/dg-bank/bankList', p);
// 抄送功能截图--已修改为正常功能
export const copySend = p => post('/api-guarantee/dg-copy-for/copySend', p);
// 担保调查列表
export const guaranteeList = p => get('/api-guarantee/dg-guarantee-assign-user/guaranteeList', p);
// 查看详情功能--领导/调查员
export const guaranteeDetails = p => get('/api-guarantee/dg-guarantee-assign-user/guaranteeDetail', p);
// 调查功能
export const guaranteeSurvey = p => post('/api-guarantee/dg-guarantee-assign-user/investigateGuarantee', p);
// 领导审核
export const guaranteeleader = p => post('/api-guarantee/dg-guarantee-assign-user/approvalGuarantee', p);
// 指派A/B角
export const guaranteeDesignateAB = p => post('/api-guarantee/dg-guarantee-assign-user/assignCorners', p);
// 团队效率-柱状图
export const efficiencyChart = p => post('/api-guarantee/guarantee/efficiency/team', p);
// 团队效率--搜索部门
export const listDepartment = p => get('/api-hrms/hrms/dept/listDepartment', p);
// 团队效率--业务数量状态栏
export const businessCount = p => get('/api-guarantee/guarantee/efficiency/businessCount', p);
// 个人效率--列表
export const personalEfficiencyList = p => post('/api-guarantee/guarantee/efficiency/personalEfficiencyList', p);
// 个人效率--抄送我的列表
export const queryCopyForMe = p => post('/api-guarantee/dg-copy-user/queryCopyForMe', p);
// 抄送导出
export const exportCopyForMe = `${host}/api-guarantee/dg-copy-user/exportCopyForMe`;
// 个人效率--列表导出
export const personalEfficiencyListExport = `${host}/api-guarantee/guarantee/efficiency/personalEfficiencyListExport`;
// 消息提示接口
export const exportCopyForMe = `${host}/api-guarantee/dg-copy-user/exportCopyForMe`;
export const personalEfficiencyListExport = `${host}/api-guarantee/guarantee/efficiency/personalEfficiencyListExport`;
export const notice = p => get('/api-guarantee/guarantee/efficiency/notice', p);
// 根据部门id查询员工
export const listEmployeeByDeptId = p => get('/api-hrms/hrms/dept/listEmployeeByDeptId', p);
// 暂时替代一下上面的接口,后续切换回去。这接口上面有过了,不管,后续删除
// export const listEmployeeName = p => get('/api-hrms/hrms/employee/listEmployeeName', p);
//
// 业务统计--
// 列表导出
export const excelExportPass = `${host}/api-guarantee/guarantee/statistics/excelExport`;
// 拒绝列表导出
export const excelExportRefuse = `${host}/api-guarantee/guarantee/statistics/excelExportRefuse`;
// 业务统计列表
export const excelExportPass = `${host}/api-guarantee/guarantee/statistics/excelExport`;
export const excelExportRefuse = `${host}/api-guarantee/guarantee/statistics/excelExportRefuse`;
export const listPass = p => get('/api-guarantee/guarantee/statistics/list', p);
// 拒绝列表
export const listRefuse = p => get('/api-guarantee/guarantee/statistics/listRefuse', p);
// 个人中心柱状图
export const approvalNum = p => get('/api-guarantee/guarantee/efficiency/approvalNum', p);
// 指派树---不做限制版-仅工作会
export const designateEmpTrees = p => get('/api-hrms//hrms/dept/empTrees', p);
// 关联人列表
export const designateEmpTrees = p => get('/api-hrms/hrms/dept/empTrees', p);
export const getLinkmanList = p => get('/api-crms/crms-company-personal/companyPersonalList', p);
// 查询关联人
export const searchLinkmanList = p => get('/api-crms/crms-company-personal/selectCompanyPersonal', p);
// 查询关联人新版
export const NewsearchLinkmanList = p => get('/api-crms/crms-company-personal/selectCompanyPersonal', p);
// 删除关联人
export const delLinkmanList = p => post('/api-crms/crms-company-personal/deleteCompanyPersonal', p);
// 删除关联人新版
export const NewdelLinkmanList = p => post('/api-crms/crms-company-personal/deleteCompanyPersonal', p);
// 新增关联人
export const newLinkmanList = p => post('/api-crms/crms-company-personal/insertCompanyPersonal', p);
// 新增关联人新版
export const newLinkList = p => post('/api-crms/crms-company-personal/insertCompanyPersonal', p);
// 编辑关联人
export const editLinkmanList = p => post('/api-crms/crms-company-personal/updateCompanyPersonal', p);
// 编辑关联人新版
export const NeweditLinkmanList = p => post('/api-crms/crms-company-personal/updateCompanyPersonal', p);
// 资产部--审核
export const assetAudit = p => post('/api-guarantee/dg-assets-investigation/approvalAssets', p);
// 资产部--查看
export const assetWatch = p => get('/api-guarantee/dg-assets-investigation/assetsDetail', p);
// 资产部--列表
export const assetList = p => post('/api-guarantee/dg-assets-investigation/assetsList', p);
// 资产部--指派
export const assetAssign = p => post('/api-guarantee/dg-assets-investigation/assignCorners', p);
// 资产部--调查
export const assetSurvey = p => post('/api-guarantee/dg-assets-investigation/investigateAssets', p);
// 信息部--列表
export const messageList = p => get('/api-guarantee/dg-message-investigation/messageList', p);
// 信息部详情
export const messageDetail = p => get('/api-guarantee/dg-message-investigation/messageDetail', p);
// 信息部--指派
export const messageAssign = p => post('/api-guarantee/dg-message-investigation/assignCorners', p);
// 信息部--调查
export const messageSurvey = p => post('/api-guarantee/dg-message-investigation/investigateMessage', p);
// 信息部审核
export const messageAudit = p => post('/api-guarantee/dg-message-investigation/approvalMessage', p);
// 合规调查-指派
export const complianceAssign = p => get('/api-guarantee/compliance/investigation/assign', p);
// 合规-审核
export const complianceAudit = p => post('/api-guarantee/compliance/investigation/check', p);
// 合规-列表
export const complianceList = p => get('/api-guarantee/compliance/investigation/list', p);
// 合规-查看详情
export const complianceDetail = p => get('/api-guarantee/compliance/investigation/query', p);
// 合规-调查
export const complianceSurvey = p => post('/api-guarantee/compliance/investigation/survey', p);
// 工作会-审议
export const workAudit = p => post('/api-guarantee/work/conference/check', p);
//工作会-所有审核意见
export const workOpinion = p => get('/api-guarantee/work/conference/getAuditOpinion', p);
// 工作会列表
export const workList = p => get('/api-guarantee/work/conference/list', p);
// 工作会-查看
export const workDetail = p => get('/api-guarantee/work/conference/query', p);
// 工作会-评委抽取
export const workExtract = p => post('/api-guarantee/work/conference/theJudgesDrawn', p);
// 贷审会-审议
export const loansAudit = p => post('/api-guarantee/committee/consider/check', p);
// 贷审会-列表
export const loansList = p => get('/api-guarantee/committee/consider/list', p);
// 贷审会-查看
export const loansDetail = p => get('/api-guarantee/committee/consider/query', p);
// 贷审会--获取抽取的评委
export const loansJudge = p => get('/api-guarantee/committee/consider/theJudgesDrawn', p);
/* 业务+担保 上传文件 */
export const guaranteeUploadFile = p => post('/api-guarantee/dg-apply-amount-info/uploadFile', p);
/* 业务+担保 删除文件 */
export const guaranteeDeleteFile = p => get('/api-guarantee/dg-apply-amount-info/deleteServerFile', p);
//担保函的接口
export const guaranteeLetterList = p => post('/api-guarantee/dg-guarantee-letter-assign-user/guaranteeLetterList', p); //担保函列表
export const updateStatus = p => post('/api-guarantee/dg-guarantee-letter-assign-user/updateStatus', p); //用户提交审核意见
// 担保函详情--新增
export const guaranteeUploadFile = p => post('/api-guarantee/dg-apply-amount-info/uploadFile', p);
export const guaranteeDeleteFile = p => get('/api-guarantee/dg-apply-amount-info/deleteServerFile', p);
export const guaranteeLetterList = p => post('/api-guarantee/dg-guarantee-letter-assign-user/guaranteeLetterList', p);
export const updateStatus = p => post('/api-guarantee/dg-guarantee-letter-assign-user/updateStatus', p);
export const letterDetail = p => get('/api-guarantee/dg-guarantee-letter-assign-user/guaranteeLetterDetail', p);
//回款确认
export const paymentList = p => post('/api-guarantee/dg-payment-confirmation-consider/paymentConfirmationList', p); //回款确认列表
export const updatePayment = p => post('/api-guarantee/dg-payment-confirmation-consider/updatePaymentConfirmation', p); //更新回款确认
// 回款详情 --新增
export const paymentList = p => post('/api-guarantee/dg-payment-confirmation-consider/paymentConfirmationList', p);
export const updatePayment = p => post('/api-guarantee/dg-payment-confirmation-consider/updatePaymentConfirmation', p);
export const paymentDetail = p => get('/api-guarantee/dg-payment-confirmation-consider/paymentConfirmationDetail', p);
//放款通知
export const loanNoticeList = p => post('/api-guarantee/dg-loan-notice/loanNoticeList', p); //放款通知列表
export const updateLoanNotice = p => post('/api-guarantee/dg-loan-notice/updateLoanNotice', p); //放款通知确认
// 放款详情--新增
export const loanNoticeList = p => post('/api-guarantee/dg-loan-notice/loanNoticeList', p);
export const updateLoanNotice = p => post('/api-guarantee/dg-loan-notice/updateLoanNotice', p);
export const loanNoticeDetail = p => get('/api-guarantee/dg-loan-notice/loanNoticeDetail', p);
export const auditProcessList = p => get('/api-guarantee/dg-audit-process/auditProcessList', p);//审核流程进程列表
export const auditProcessPop = p => get('/api-guarantee/dg-audit-process/getProcessId', p);//审核流程进程--弹框
//获取当前用户角色
export const auditProcessList = p => get('/api-guarantee/dg-audit-process/auditProcessList', p);
export const auditProcessPop = p => get('/api-guarantee/dg-audit-process/getProcessId', p);
export const getNowRole = p => get('/api-guarantee/dg-apply-amount-info/getRoles', p);
// 获取动态路由权限
export const getPermission = p => get('/api-hrms/hrms/permission/getPermission', p);
// 首页的接口
// 当月每天新建审批
export const getNewBusinessCount = p => get('/api-guarantee/guarantee/efficiency/getNewBusinessCount', p);
// 当天新建审批数量-客户员工区分
export const getTodayBusinessCount = p => get('/api-guarantee/guarantee/efficiency/getTodayBusinessCount', p);
// 今日审批记录--个人中心
export const todayApprovalRecord = p => get('/api-guarantee/dg-audit-process/todayApprovalRecord', p);
// 访问记录-列表
export const queryAccessRecords = p => get('/apiHrmsAuth/hrms-access-records-log/queryAccessRecords', p);
// 访问次数
export const queryVisitNum = p => get('/apiHrmsAuth/hrms-access-records-log/queryVisitNum', p);
// 今日登录用户总数
export const queryLoginNum = p => get('/apiHrmsAuth/hrms-access-records-log/queryLoginNum', p);
// 登录趋势图
export const queryLoginOnline = p => get('/apiHrmsAuth/hrms-access-records-log/queryLoginOnline', p);
// 登录时间段
export const queryLoginOnline2 = p => get('/apiHrmsAuth/hrms-access-records-log/queryLoginOnline2', p);
// 业务-导出
export const businessExportList = `${host}/api-guarantee/dg-apply-amount-info/excelExport`;
// 担保-导出
export const guaranteeExportList = `${host}/api-guarantee/dg-guarantee-assign-user/excelExport`;
// 资产-导出
export const assetExportList = `${host}/api-guarantee/dg-assets-investigation/excelExport`;
// 信息-导出
export const messageExportList = `${host}/api-guarantee/dg-message-investigation/excelExport`;
// 合规-导出
export const complianceExportList = `${host}/api-guarantee/compliance/investigation/excelExport`;
// 工作会-导出
export const workExportList = `${host}/api-guarantee/work/conference/excelExport`;
// 贷审会-导出
export const loansExportList = `${host}/api-guarantee/committee/consider/excelExport`;
export const excelTemplate = `${host}/api-crms/crms/customer/excelTemplate`; //导出客户模板
export const excelExport = `${host}/api-crms/crms/customer/excelExport`; //导出客户
export const excelImport = `${host}/api-crms/crms/customer/excelImport`; //导入excal
export const excelExportStaff = `${host}/api-crms/crms/customer/excelExport`; //导出客户
export const excelImportStaff = `${host}/api-crms/crms/customer/excelImport`; //导入员工excal
export const excelExportLetter = `${host}/api-guarantee/dg-guarantee-letter-assign-user/guaranteeLetterListExport`; //导出担保函列表
export const exportGuaranteeLetter = `${host}/api-guarantee/dg-guarantee-letter-assign-user/exportGuaranteeLetter`; //导出担保函
export const excelExportPayment = `${host}/api-guarantee/dg-payment-confirmation-consider/paymentConfirmationListExport`; //导出回款确认列表数据
export const loanNoticeListExport = `${host}/api-guarantee/dg-loan-notice/loanNoticeListExport`; //导出放款通知列表数据
export const exportLoanNotice = `${host}/api-guarantee/dg-loan-notice/exportLoanNotice`; //导出放款通知
export const businessExportList = `${host}/api-guarantee/dg-apply-amount-info/excelExport`;
export const guaranteeExportList = `${host}/api-guarantee/dg-guarantee-assign-user/excelExport`;
export const assetExportList = `${host}/api-guarantee/dg-assets-investigation/excelExport`;
export const messageExportList = `${host}/api-guarantee/dg-message-investigation/excelExport`;
export const complianceExportList = `${host}/api-guarantee/compliance/investigation/excelExport`;
export const workExportList = `${host}/api-guarantee/work/conference/excelExport`;
export const loansExportList = `${host}/api-guarantee/committee/consider/excelExport`;
export const excelTemplate = `${host}/api-crms/crms/customer/excelTemplate`;
export const excelExport = `${host}/api-crms/crms/customer/excelExport`;
export const excelImport = `${host}/api-crms/crms/customer/excelImport`;
export const excelExportStaff = `${host}/api-crms/crms/customer/excelExport`;
export const excelImportStaff = `${host}/api-crms/crms/customer/excelImport`;
export const excelExportLetter = `${host}/api-guarantee/dg-guarantee-letter-assign-user/guaranteeLetterListExport`;
export const exportGuaranteeLetter = `${host}/api-guarantee/dg-guarantee-letter-assign-user/exportGuaranteeLetter`;
export const excelExportPayment = `${host}/api-guarantee/dg-payment-confirmation-consider/paymentConfirmationListExport`;
export const loanNoticeListExport = `${host}/api-guarantee/dg-loan-notice/loanNoticeListExport`;
export const exportLoanNotice = `${host}/api-guarantee/dg-loan-notice/exportLoanNotice`;

@ -1,286 +1,303 @@
function fMoney(s, n) {
n = n > 0 && n <= 20 ? n : 2;
s = parseFloat((s + '').replace(/[^\d\.-]/g, '')).toFixed(n) + '';
let l = s
.split('.')[0]
.split('')
.reverse();
let r = s.split('.')[1];
let t = '';
for (let i = 0; i < l.length; i++) {
t += l[i] + ((i + 1) % 3 == 0 && i + 1 != l.length ? ',' : '');
}
return (
t
export default {
fMoney:function(s, n) {
n = n > 0 && n <= 20 ? n : 2;
s = parseFloat((s + '').replace(/[^\d\.-]/g, '')).toFixed(n) + '';
let l = s
.split('.')[0]
.split('')
.reverse()
.join('') +
'.' +
r
);
}
.reverse();
let r = s.split('.')[1];
let t = '';
for (let i = 0; i < l.length; i++) {
t += l[i] + ((i + 1) % 3 == 0 && i + 1 != l.length ? ',' : '');
}
return (
t
.split('')
.reverse()
.join('') +
'.' +
r
);
},
function toDateTime(date, time) {
if (!date) return '';
date = date.toString();
time = time ? time.toString() : '';
let str = `${date.substr(0, 4)}-${date.substr(4, 2)}-${date.substr(6, 2)}`;
if (date.length == 14) {
str += ` ${date.substr(8, 2)}:${date.substr(10, 2)}:${date.substr(12, 2)}`;
} else if (date.length == 6) {
str = `${date.substr(0, 2)}:${date.substr(2, 2)}:${date.substr(4, 2)}`;
} else if (time) {
str += ` ${time.substr(0, 2)}:${time.substr(2, 2)}:${time.substr(4, 2)}`;
}
return str;
}
toDateTime:function(date, time) {
if (!date) return '';
date = date.toString();
time = time ? time.toString() : '';
let str = `${date.substr(0, 4)}-${date.substr(4, 2)}-${date.substr(6, 2)}`;
if (date.length == 14) {
str += ` ${date.substr(8, 2)}:${date.substr(10, 2)}:${date.substr(12, 2)}`;
} else if (date.length == 6) {
str = `${date.substr(0, 2)}:${date.substr(2, 2)}:${date.substr(4, 2)}`;
} else if (time) {
str += ` ${time.substr(0, 2)}:${time.substr(2, 2)}:${time.substr(4, 2)}`;
}
return str;
},
function fMoney2(m) {
return parseFloat(m).toFixed(2);
}
fMoney2:function (m) {
return parseFloat(m).toFixed(2);
},
// 数字转换大写中文
function fMoney3(money) {
//汉字的数字
let cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
let cnIntRadice = new Array('', '拾', '佰', '仟'); //基本单位
let cnIntUnits = new Array('', '万', '亿', '兆'); //对应整数部分扩展单位
let cnDecUnits = new Array('仟', '佰', '拾', ''); //对应小数部分单位
let cnInteger = '元整'; //整数金额时后面跟的字符
// let
let cnIntLast = '万'; //整数无小数点的单位
let int; //金额整数部分
let dot; //金额小数部分
let chineseStr = ''; //输出的中文金额字符串
let parts; //分离金额后用的数组,预定义
if (money == '') {
return '';
}
//转换为字符串,获取小数点后的值与整数分离
money = money.toString();
if (money.indexOf('.') == -1) {
int = money;
dot = '';
} else {
parts = money.split('.'); //整数小数分离
int = parts[0];
dot = parts[1].substr(0, 4); //最多四位小数
}
//十进制转换,处理整数部分单位
if (parseInt(int, 10) > 0) {
let zeroCount = 0;
let IntLen = int.length;
for (let i = 0; i < IntLen; i++) {
//循环整数部分,给每个位赋值,且判断是否整除4,添加额外赋值
let n = int.substr(i, 1);
let p = IntLen - i - 1;
let q = p / 4;
let m = p % 4;
if (n == '0') {
zeroCount++;
} else {
if (zeroCount > 0) {
chineseStr += cnNums[0];
// 数字转换大写中文
fMoney3:function (money) {
//汉字的数字
let cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖');
let cnIntRadice = new Array('', '拾', '佰', '仟'); //基本单位
let cnIntUnits = new Array('', '万', '亿', '兆'); //对应整数部分扩展单位
let cnDecUnits = new Array('仟', '佰', '拾', ''); //对应小数部分单位
let cnInteger = '元整'; //整数金额时后面跟的字符
let cnIntLast = '万'; //整数无小数点的单位
let int; //金额整数部分
let dot; //金额小数部分
let chineseStr = ''; //输出的中文金额字符串
let parts; //分离金额后用的数组,预定义
if (money == '') {
return '';
}
//转换为字符串,获取小数点后的值与整数分离
money = money.toString();
if (money.indexOf('.') == -1) {
int = money;
dot = '';
} else {
parts = money.split('.'); //整数小数分离
int = parts[0];
dot = parts[1].substr(0, 4); //最多四位小数
}
//十进制转换,处理整数部分单位
if (parseInt(int, 10) > 0) {
let zeroCount = 0;
let IntLen = int.length;
for (let i = 0; i < IntLen; i++) {
//循环整数部分,给每个位赋值,且判断是否整除4,添加额外赋值
let n = int.substr(i, 1);
let p = IntLen - i - 1;
let q = p / 4;
let m = p % 4;
if (n == '0') {
zeroCount++;
} else {
if (zeroCount > 0) {
chineseStr += cnNums[0];
}
//归零
zeroCount = 0;
chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
}
if (m == 0 && zeroCount < 4) {
chineseStr += cnIntUnits[q];
}
//归零
zeroCount = 0;
chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
}
if (m == 0 && zeroCount < 4) {
chineseStr += cnIntUnits[q];
}
chineseStr += cnIntLast;
}
chineseStr += cnIntLast;
}
//小数部分
if (dot != '') {
let decLen = dot.length;
for (let i = 0; i < decLen; i++) {
let n = dot.substr(i, 1);
if (n != '0') {
chineseStr += cnNums[Number(n)] + cnDecUnits[i];
//小数部分
if (dot != '') {
let decLen = dot.length;
for (let i = 0; i < decLen; i++) {
let n = dot.substr(i, 1);
if (n != '0') {
chineseStr += cnNums[Number(n)] + cnDecUnits[i];
}
}
}
}
// if (chineseStr == '') {// 为0时,
// chineseStr += cnNums[0] + cnIntLast + cnInteger;
// }
// else if (dot == '') {//小数点为空值时
chineseStr += cnInteger;
// }
return chineseStr;
}
// if (chineseStr == '') {// 为0时,
// chineseStr += cnNums[0] + cnIntLast + cnInteger;
// }
// else if (dot == '') {//小数点为空值时
chineseStr += cnInteger;
// }
return chineseStr;
},
function orderreleaseType(sts) {
const status = {
'0': '手动发布',
'1': '定时发布'
};
return status[sts] || '未知状态';
}
orderreleaseType:function (sts) {
const status = {
'0': '手动发布',
'1': '定时发布'
};
return status[sts] || '未知状态';
},
function auditStatus(sts) {
const status = {
'1': { text: '审核中', color: '#FF9784' },
'2': { text: '已审核', color: '#46C435' },
'3': { text: '已拒绝', color: '#FF9784' },
'4': { text: '已驳回', color: '#FF9784' }
};
return status[sts] || { text: '未知状态', color: '#666' };
}
auditStatus:function (sts) {
const status = {
'1': { text: '审核中', color: '#FF9784' },
'2': { text: '已审核', color: '#46C435' },
'3': { text: '已拒绝', color: '#FF9784' },
'4': { text: '已驳回', color: '#FF9784' }
};
return status[sts] || { text: '未知状态', color: '#666' };
},
function businessType(sts) {
const status = {
'0': { text:'已撤销', color: '#FF9784' },
'1': { text:'进行中', color: '#FF9784' },
'2': { text:'已完成', color: '#46C435' },
'3': { text:'已否决', color: '#FF9784' }
};
return status[sts] || { text: '未知状态', color: '#666' };
}
businessType:function (sts) {
const status = {
'0': { text:'已撤销', color: '#FF9784' },
'1': { text:'进行中', color: '#FF9784' },
'2': { text:'已完成', color: '#46C435' },
'3': { text:'已否决', color: '#FF9784' }
};
return status[sts] || { text: '未知状态', color: '#666' };
},
function operationType(sts) {
const status = {
'0': { text:'已发起', color: '#46C435' },
'1': { text:'待处理', color: '#FF9784' },
'2': { text:'已处理', color: '#46C435' },
'3': { text:'待提交', color: '#FF9784' },
'4': { text:'待定义', color: '#FF9784' }
};
return status[sts] || { text: '未知状态', color: '#666' };
}
operationType:function (sts) {
const status = {
'0': { text:'已发起', color: '#46C435' },
'1': { text:'待处理', color: '#FF9784' },
'2': { text:'已处理', color: '#46C435' },
'3': { text:'待提交', color: '#FF9784' },
'4': { text:'待定义', color: '#FF9784' }
};
return status[sts] || { text: '未知状态', color: '#666' };
},
function removeByValue(arr, val) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == val) {
arr.splice(i, 1);
break;
removeByValue:function (arr, val) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] == val) {
arr.splice(i, 1);
break;
}
}
}
}
},
function paymentStatus(sts) {
const status = {
'1': '还款中',
'2': '已逾期',
'3': '已还清',
'4': '已结项'
};
return status[sts] || '未知状态';
}
paymentStatus:function (sts) {
const status = {
'1': '还款中',
'2': '已逾期',
'3': '已还清',
'4': '已结项'
};
return status[sts] || '未知状态';
},
function stcStatus(sts) {
const status = {
'1': '待还款',
'2': '已还款',
'3': '已逾期',
'4': '未到期'
};
return status[sts] || '未知状态';
}
stcStatus:function (sts) {
const status = {
'1': '待还款',
'2': '已还款',
'3': '已逾期',
'4': '未到期'
};
return status[sts] || '未知状态';
},
areaStr:function(val){// 区域
const str = {
0:"萨尔图区",
1:"高新区",
2:"龙凤区",
3:"让胡同路区",
4:"大同区",
5:"肇县区",
}
return str[+val]
},
// 判断对象值全为空
objectValueAllEmpty:function (object) {
var isEmpty = true;
Object.keys(object).forEach(function(x) {
if (object[x] != null && object[x] != '') {
isEmpty = false;
}
});
if (isEmpty) {
//值全为空
return true;
}
return false;
},
// 判断对象值全为空
function objectValueAllEmpty(object) {
var isEmpty = true;
Object.keys(object).forEach(function(x) {
if (object[x] != null && object[x] != '') {
isEmpty = false;
// 防抖
debounce:function (func, wait=500) {
let timer;
return function() {
let context = this;
let args = arguments;
if (timer) clearTimeout(timer);
let callNow = !timer;
timer = setTimeout(() => {
timer = null;
}, wait);
if (callNow) func.apply(context, args);
};
},
// 节流函数
throttle:function (fn,wait=500){
var timer = null;
return function(){
var context = this;
var args = arguments;
if(!timer){
timer = setTimeout(function(){
fn.apply(context,args);
timer = null;
},wait)
}
}
});
if (isEmpty) {
//值全为空
return true;
}
return false;
}
},
// 获取出生日期
getBirth:function(idCard) {
var birthday = '';
if (idCard != null && idCard != '') {
if (idCard.length == 15) {
birthday = '19' + idCard.slice(6, 12);
} else if (idCard.length == 18) {
birthday = idCard.slice(6, 14);
}
birthday = birthday.replace(/(.{4})(.{2})/, '$1-$2-');
//通过正则表达式来指定输出格式为:1990-01-01
}
return birthday;
},
// 获取年龄
getAge:function (idCard) {
var birthday = '';
if (idCard != null && idCard != '') {
if (idCard.length == 15) {
birthday = '19' + idCard.slice(6, 8);
} else if (idCard.length == 18) {
birthday = idCard.slice(6, 10);
}
let date = new Date()
birthday = date.getFullYear() - birthday
}
return birthday;
},
// 防抖
function debounce(func, wait) {
let timer;
return function() {
let context = this;
let args = arguments;
if (timer) clearTimeout(timer);
let callNow = !timer;
timer = setTimeout(() => {
timer = null;
}, wait);
if (callNow) func.apply(context, args);
};
}
// 获取出生日期
function getBirth(idCard) {
var birthday = '';
if (idCard != null && idCard != '') {
if (idCard.length == 15) {
birthday = '19' + idCard.slice(6, 12);
} else if (idCard.length == 18) {
birthday = idCard.slice(6, 14);
// 获取性别
getSex:function (idCard) {
var sexStr = '';
if (parseInt(idCard.slice(-2, -1)) % 2 == 1) {
sexStr = 1;//男
} else {
sexStr = 0;//女
}
birthday = birthday.replace(/(.{4})(.{2})/, '$1-$2-');
//通过正则表达式来指定输出格式为:1990-01-01
}
return birthday;
}
// 获取年龄
function getAge(idCard) {
var birthday = '';
if (idCard != null && idCard != '') {
if (idCard.length == 15) {
birthday = '19' + idCard.slice(6, 8);
} else if (idCard.length == 18) {
birthday = idCard.slice(6, 10);
return sexStr;
},
// 下载视频
downMp4:function (url,fileName){
// 可换成axios,项目没封装就用原生请求
// 生成拼接链接
// 传入文件名和路径,下载图片视频,支持跨域,a标签加download不支持跨域
var x = new XMLHttpRequest()
x.open("GET", url, true)
x.responseType = 'blob'
x.onload=function(e) {
var url = window.URL.createObjectURL(x.response)
var a = document.createElement('a')
a.href = url
a.download = fileName
a.click()
}
let date = new Date()
birthday = date.getFullYear() - birthday
}
return birthday;
}
x.send()
},
// 获取性别
function getSex(idCard) {
var sexStr = '';
if (parseInt(idCard.slice(-2, -1)) % 2 == 1) {
sexStr = 1;//男
} else {
sexStr = 0;//女
exportFile(url,name){// 导出
let downloadElement = document.createElement('a');
downloadElement.href = url;
downloadElement.download = name||'导出列表文件';
document.body.appendChild(downloadElement);
downloadElement.click();
document.body.removeChild(downloadElement);
}
return sexStr;
}
// 下载视频
function downMp4(url,fileName){
// 可换成axios,项目没封装就用原生请求
// 生成拼接链接
// 传入文件名和路径,下载图片视频,支持跨域,a标签加download不支持跨域
var x = new XMLHttpRequest()
x.open("GET", url, true)
x.responseType = 'blob'
x.onload=function(e) {
var url = window.URL.createObjectURL(x.response)
var a = document.createElement('a')
a.href = url
a.download = fileName
a.click()
}
x.send()
}
export default {
fMoney,
fMoney2,
fMoney3,
toDateTime,
orderreleaseType,
auditStatus,
businessType,
operationType,
removeByValue,
objectValueAllEmpty,
debounce,
getBirth,
getSex,
getAge,
paymentStatus,
stcStatus,
downMp4
};

@ -5,44 +5,28 @@ import { Message } from 'element-ui'
import router from '../router/index'
// export const Url = 'https://test.feifanhitech.com'// 测试服务器地址
export const Url = 'https://www.feifanhitech.com';// 非凡
// export const Url = 'http://192.168.31.137:8080';//陈赓
// export const Url = 'https://www.feifanhitech.com';// 非凡
export const Url = 'http://192.168.31.137:8080';//陈赓
axios.defaults.baseURL = Url;
const baseurl = Url
// 请求超时时间
axios.defaults.timeout = 30000;
// post请求头
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
// 请求拦截器
axios.interceptors.request.use(config => {
// const token = store.state.token;
// token && (config.headers.Authorization = token);
// return config;
// config.withCredentials= true
if (sessionStorage.getItem('token')) {
// 存在将token写入 request header
config.headers.token = `${sessionStorage.getItem('token')}`;
}
return config;
}, err => {
// return Promise.error(error);
// Message.error({
// message: '退出登陆',
// onClose: function () {
// router.push({name: 'login'});
// }
// })
// console.log(err,'错误捕获61');
return Promise.reject(err);
})
// 响应拦截器
axios.interceptors.response.use(
response => {
// post请求莫得code,直接以文件流形式
if (response.data.code === 10000) {
return Promise.resolve(response);
} else
@ -51,7 +35,6 @@ axios.interceptors.response.use(
// 清除token
sessionStorage.removeItem('token');
localStorage.removeItem('token')
// store.commit('loginSuccess', null);
// 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面
setTimeout(() => {
router.replace({
@ -72,6 +55,7 @@ axios.interceptors.response.use(
// 服务器状态码不是200的情况
error => {
// console.log(error,'错误打印--http.js -98行')
console.log('报错')
if(error.response){
if (error.response.status) {
switch (error.response.status) {

Loading…
Cancel
Save