299 lines
8.1 KiB
TypeScript
299 lines
8.1 KiB
TypeScript
import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
|
|
import { Router } from '@angular/router';
|
|
import { cacheConf } from '@conf/cache.conf';
|
|
import { STColumn, STComponent } from '@delon/abc/st';
|
|
import { SFComponent, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
|
|
import { EACacheService, EAEnvironmentService, ShipperBaseService } from '@shared';
|
|
import { NzModalRef } from 'ng-zorro-antd/modal';
|
|
import { BankCardManagementService } from '../../../services/bank-card-management.service';
|
|
|
|
@Component({
|
|
selector: 'app-cwc-withdraw-deposit',
|
|
templateUrl: './withdraw-deposit.component.html',
|
|
styleUrls: ['./withdraw-deposit.component.less']
|
|
})
|
|
export class CwcAccountManagementWithdrawDepositComponent implements OnInit {
|
|
accountBalance = 0;
|
|
minWithdrawAmount = 0;
|
|
minWithdrawFee: any = 0;
|
|
code = '';
|
|
bankList: Array<any> = [];
|
|
bankAccount = '';
|
|
count = 0;
|
|
interval$: any;
|
|
ui: SFUISchema = {};
|
|
i: any;
|
|
schema: SFSchema = {};
|
|
totalGJ: any = 0.0;
|
|
cacFee: any = 0;
|
|
columns: STColumn[] = [];
|
|
totalBalance = 200;
|
|
bankCardList: Array<any> = [];
|
|
cardNo = '';
|
|
accountDetail: any = {};
|
|
networkTransporterId = '';
|
|
networkTransporterName = '';
|
|
balanceObj: any = {
|
|
allBalance: 99999999
|
|
};
|
|
@ViewChild('st', { static: false }) st!: STComponent;
|
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
|
@ViewChild('psd') psd!: ElementRef;
|
|
record: any;
|
|
bankType = '2';
|
|
|
|
constructor(
|
|
public service: BankCardManagementService,
|
|
private modal: NzModalRef,
|
|
private shipperSrv: ShipperBaseService,
|
|
public eaCacheSrv: EACacheService,
|
|
public envSrv: EAEnvironmentService,
|
|
public router: Router
|
|
) {
|
|
this.networkTransporterId = this.eaCacheSrv.get(cacheConf.env)?.networkTransporterId;
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.initSF();
|
|
this.getBankList();
|
|
this.getProjectBalanceDetail();
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
* 初始化查询表单
|
|
*/
|
|
initSF() {
|
|
this.schema = {
|
|
properties: {
|
|
ltdName: {
|
|
title: '网络货运人',
|
|
type: 'string',
|
|
default: this.record?.ltdName,
|
|
ui: {
|
|
widget: 'text',
|
|
}
|
|
},
|
|
bankType: {
|
|
title: '银行',
|
|
type: 'string',
|
|
default: this.bankType,
|
|
enum: [
|
|
{ label: '浦发银行', value: '2' }
|
|
],
|
|
ui: {
|
|
widget: 'select',
|
|
containsAllLabel: false,
|
|
showRequired: true,
|
|
change: (value: any) => {
|
|
// if (value && this.sf?.value?.ltdId) {
|
|
// const parmas = { bankType: value, ltdId: this.sf.getValue('/ltdId') };
|
|
// this.getProjectBalanceDetail(parmas);
|
|
// }
|
|
}
|
|
} as SFSelectWidgetSchema
|
|
},
|
|
availableBalance: { title: '可提现余额', type: 'string', ui: { showRequired: false, widget: 'custom' } },
|
|
bankId: {
|
|
title: '提现至',
|
|
type: 'string',
|
|
ui: {
|
|
showRequired: true, widget: 'custom'
|
|
},
|
|
},
|
|
amount: {
|
|
title: '提现金额',
|
|
type: 'string',
|
|
ui: {
|
|
showRequired: true,
|
|
widget: 'custom',
|
|
validator: (val) => {
|
|
if (!val && val !== 0) {
|
|
return [{ keyword: 'required', message: '必填项' }];
|
|
} else if (val > this.balanceObj.allBalance) {
|
|
return [{ keyword: 'required', message: '提现金额超过可提现余额' }];
|
|
}
|
|
return [];
|
|
}
|
|
},
|
|
|
|
},
|
|
payPsd: {
|
|
title: '支付密码',
|
|
type: 'string',
|
|
minLength: 6,
|
|
maxLength: 6,
|
|
ui: { widget: 'custom' },
|
|
},
|
|
payPassword: {
|
|
title: '',
|
|
type: 'string',
|
|
ui: {
|
|
hidden: true
|
|
}
|
|
}
|
|
},
|
|
autocomplete: 'off',
|
|
required: ['bankType', 'payPsd']
|
|
};
|
|
this.ui = {
|
|
'*': { spanLabelFixed: 100, grid: { span: 18, gutter: 2 } },
|
|
$addBankCard1: {
|
|
grid: { span: 24 }
|
|
},
|
|
$addBankCard2: {
|
|
grid: { span: 24 }
|
|
}
|
|
};
|
|
}
|
|
|
|
save(value: any) {
|
|
if (this.sf.valid) {
|
|
const { amount, bankId, bankType, ltdName, payPassword } = value;
|
|
if (amount > this.balanceObj?.allBalance) {
|
|
this.service.msgSrv.warning('提现金额超过可提现余额!');
|
|
return;
|
|
}
|
|
const params = {
|
|
amount,
|
|
bankId,
|
|
bankType,
|
|
ltdId: this.record.ltdId,
|
|
ltdName,
|
|
payPassword
|
|
};
|
|
this.service.request(this.service.$api_apply_withdraw, { ...params })
|
|
.subscribe(res => {
|
|
if (res) {
|
|
this.service.msgSrv.success('提现成功!');
|
|
this.close(true);
|
|
}
|
|
})
|
|
}
|
|
}
|
|
close(flag: boolean) {
|
|
this.modal.destroy(flag);
|
|
}
|
|
|
|
|
|
toAddBankPage() {
|
|
window.open(`/#/financial-management/bank-card-management/index?ltdId=${this.record?.ltdId}<dName=${this.record?.ltdName}`);
|
|
}
|
|
/**
|
|
* 全部提现
|
|
*/
|
|
allWithdrawal() {
|
|
if (!this.sf.getValue('/availableBalance')) {
|
|
this.sf.setValue('/amount', '');
|
|
return;
|
|
}
|
|
this.sf.setValue('/amount', this.balanceObj?.allBalance);
|
|
}
|
|
/**
|
|
* 跳转至忘记密码页
|
|
*/
|
|
toForgetPsdPage() {
|
|
window.open('/#/account/edit-paypassword');
|
|
}
|
|
|
|
/**
|
|
* 切换银行卡
|
|
*/
|
|
checkBankCard(e: any) {
|
|
this.sf.setValue('/bankId', e);
|
|
}
|
|
getBankList() {
|
|
this.service.request(this.service.$api_bank_card_list, { accountType: '3', roleId: this.record?.ltdId }).subscribe((res) => {
|
|
if (res) {
|
|
this.bankCardList = res;
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 获取项目账户余额
|
|
*/
|
|
getProjectBalanceDetail(params = {}) {
|
|
this.service.request(this.service.$api_get_account_available_balance, { bankType: this.bankType, ltdId: this.record?.ltdId }).subscribe(res => {
|
|
if (res) {
|
|
this.balanceObj = res;
|
|
this.sf.setValue('/availableBalance', res?.allBalance);
|
|
// this.sf.getProperty('/amount')?.updateValueAndValidity();
|
|
}
|
|
})
|
|
}
|
|
|
|
keydown(e: any) {
|
|
if (e.keyCode == 37 || e.keyCode == 39) e.preventDefault();
|
|
if (e.keyCode === 8) {
|
|
// const payPswVal = this.sf.getValue('/password');
|
|
// this.sf.setValue('/password', payPswVal.substr(0, payPswVal.length - 1));
|
|
}
|
|
|
|
}
|
|
clickInput(e: any) {
|
|
this.psd.nativeElement.focus();
|
|
}
|
|
changePsd(val: any) {
|
|
this.sf.setValue('/payPsd', val);
|
|
if (val || val !== '') {
|
|
const last = val.substr(val.length - 1);
|
|
const password = this.sf.getValue('/payPassword') || '';
|
|
const start = this.psd?.nativeElement.selectionStart;
|
|
const index = val.lastIndexOf('•');
|
|
if (last !== '•') {
|
|
if (password.length !== 0) {
|
|
// 新增 或 替换
|
|
const pre = password.substr(0, index + 1);
|
|
const detail = val.substr(index + 1, val.length);
|
|
this.sf.setValue('/payPassword', pre + detail);
|
|
} else {
|
|
// 新增
|
|
this.sf.setValue('/payPassword', val);
|
|
}
|
|
} else {
|
|
// 删除
|
|
this.sf.setValue('/payPassword', password.substr(0, val.length));
|
|
}
|
|
const payPswVal = this.sf.getValue('/payPsd');
|
|
this.sf.setValue('/payPsd', payPswVal.replace(/./g, "•"));
|
|
} else {
|
|
this.sf.setValue('/payPassword', '');
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* 设置光标聚焦
|
|
*/
|
|
setFocus() {
|
|
|
|
const len = this.psd?.nativeElement.value.length;
|
|
this.setSelectionRange(this.psd?.nativeElement, len, len); //将光标定位到文本最后
|
|
}
|
|
|
|
/**
|
|
* 设置光标位置
|
|
* @param input dom元素
|
|
* @param selectionStart 起始位置
|
|
* @param selectionEnd 结束位置
|
|
*/
|
|
setSelectionRange(input: ElementRef | any, selectionStart: number, selectionEnd: number) {
|
|
if (input?.setSelectionRange) {
|
|
input.focus();
|
|
input.setSelectionRange(selectionStart, selectionEnd);
|
|
}
|
|
else if (input.createTextRange) {
|
|
var range = input.createTextRange();
|
|
range.collapse(true);
|
|
range.moveEnd('character', selectionEnd);
|
|
range.moveStart('character', selectionStart);
|
|
range.select();
|
|
}
|
|
}
|
|
|
|
|
|
}
|