157 lines
4.7 KiB
TypeScript
157 lines
4.7 KiB
TypeScript
import { AfterViewInit, ChangeDetectorRef, Component, OnChanges, OnInit, ViewChild } from '@angular/core';
|
|
import { ActivatedRoute } from '@angular/router';
|
|
import { SFAutoCompleteWidgetSchema, SFComponent, SFRadioWidgetSchema, SFSchema, SFSchemaEnumType, SFSelectWidgetSchema, SFTextareaWidgetSchema, SFUISchema } from '@delon/form';
|
|
import { _HttpClient } from '@delon/theme';
|
|
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
|
|
import { map } from 'rxjs/operators';
|
|
import { AmapPoiPickerComponent } from 'src/app/shared/components/amap';
|
|
import { ChannelSalesService } from '../../services/channel-sales.service';
|
|
|
|
@Component({
|
|
selector: 'app-parter-channel-sales-edit',
|
|
templateUrl: './edit.component.html'
|
|
})
|
|
export class ParterChannelSalesEditComponent implements OnInit {
|
|
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
|
schema!: SFSchema;
|
|
ui!: SFUISchema;
|
|
i: any;
|
|
type: any;
|
|
record:any;
|
|
currentOAItem:any;
|
|
constructor(
|
|
public http: _HttpClient,
|
|
private cdr: ChangeDetectorRef,
|
|
private route: ActivatedRoute,
|
|
private modalService: NzModalService,
|
|
public service: ChannelSalesService,
|
|
private modalRef: NzModalRef
|
|
) {}
|
|
|
|
ngOnInit(): void {
|
|
|
|
this.service.request(this.service.$api_getChannelSalesInfo, {id:this.i?.id}).subscribe(res => {
|
|
if(res){
|
|
this.record = res;
|
|
}
|
|
this.initSF();
|
|
});
|
|
|
|
}
|
|
initSF() {
|
|
this.schema = {
|
|
properties: {
|
|
id: {
|
|
type: 'string',
|
|
title: '',
|
|
ui: { hidden: true }
|
|
},
|
|
name: {
|
|
title: '渠道销售姓名',
|
|
type: 'string',
|
|
maxLength: 12,
|
|
ui: {
|
|
placeholder:'请输入'
|
|
}
|
|
},
|
|
phoneNumber: {
|
|
title: '手机号',
|
|
type: 'string',
|
|
maxLength: 11,
|
|
ui: {
|
|
placeholder:'请输入'
|
|
}
|
|
},
|
|
employeeVO: {
|
|
title: '关联OA员工',
|
|
type: 'string',
|
|
ui: {
|
|
widget: 'autocomplete',
|
|
placeholder:'请选择',
|
|
asyncData: (input:string) => this.service.request(this.service.$api_fuzzyQuery,{name:input}).pipe(
|
|
map((res: any) => {
|
|
return res.map((item:any)=>{
|
|
return {label: item.empName+"/"+item.empNo, value: item.empNo, obj: item}
|
|
})
|
|
})
|
|
),
|
|
change:(item:any, org:any)=>{
|
|
this.currentOAItem = org.obj;
|
|
}
|
|
} as SFAutoCompleteWidgetSchema,
|
|
},
|
|
isAuthorization: {
|
|
type: 'string',
|
|
title: '授权登录运营后台',
|
|
enum: [
|
|
{ label: '否', value: '0' },
|
|
{ label: '是', value: '1' }
|
|
],
|
|
ui: {
|
|
widget: 'radio',
|
|
} as SFRadioWidgetSchema,
|
|
default: '0',
|
|
},
|
|
roleIds: {
|
|
title: '',
|
|
type: 'string',
|
|
ui: {
|
|
widget: 'select',
|
|
placeholder: '授权角色',
|
|
mode: 'multiple',
|
|
maxMultipleCount: 5,
|
|
asyncData: () => {
|
|
return this.service.request(this.service.$api_getAppRoleList).pipe(
|
|
map((res: any) => {
|
|
return res
|
|
.filter((role: any) => role.roleCode !== 'Administrator')
|
|
.map((item: any) => {
|
|
return { label: item.roleName, value: item.id };
|
|
});
|
|
})
|
|
);
|
|
},
|
|
visibleIf: { isAuthorization: (value: string) => value === '1' }
|
|
},
|
|
},
|
|
remark: {
|
|
type: 'string',
|
|
title: '备注',
|
|
maxLength: 50,
|
|
ui: {
|
|
widget: 'textarea',
|
|
autosize: { minRows: 3, maxRows: 6 },
|
|
placeholder:'请输入50字符'
|
|
} as SFTextareaWidgetSchema,
|
|
},
|
|
},
|
|
required: ['name', 'phoneNumber', 'employeeVO', 'roleIds', 'remark']
|
|
};
|
|
this.ui = {
|
|
'*': {
|
|
spanLabelFixed: 150,
|
|
grid: { span: 24 }
|
|
},
|
|
$isAuthorization:{ grid: { span: 12 }},
|
|
$roleIds:{ spanLabelFixed: 10, grid: { span: 12 }},
|
|
|
|
|
|
};
|
|
}
|
|
|
|
close() {
|
|
this.modalRef.destroy();
|
|
}
|
|
save() {
|
|
this.sf.validator({ emitError: true });
|
|
if(!this.sf.valid) return;
|
|
this.service.request(this.service.$api_save, { ...this.sf.value, employeeVO: this.currentOAItem}).subscribe(res => {
|
|
if (res) {
|
|
this.modalRef.destroy(true);
|
|
} else {
|
|
this.service.msgSrv.error(res.msg);
|
|
}
|
|
});
|
|
}
|
|
}
|