This commit is contained in:
Taric Xin
2021-11-29 20:09:57 +08:00
23 changed files with 2508 additions and 264 deletions

View File

@ -9,7 +9,6 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import { AccountComponentsCenterComponent } from './components/center/center.component'; import { AccountComponentsCenterComponent } from './components/center/center.component';
import { AccountComponentsEditInfoComponent } from './components/edit-info/edit-info.component';
const routes: Routes = [ const routes: Routes = [
{ path: '', redirectTo: 'center', pathMatch: 'full' }, { path: '', redirectTo: 'center', pathMatch: 'full' },
@ -21,7 +20,6 @@ const routes: Routes = [
titleI18n: 'app.my.center', titleI18n: 'app.my.center',
}, },
}, },
{ path: 'editInfo', component: AccountComponentsEditInfoComponent },
]; ];
@NgModule({ @NgModule({

View File

@ -1,7 +1,7 @@
/* /*
* @Author: your name * @Author: your name
* @Date: 2021-11-29 11:06:01 * @Date: 2021-11-29 11:06:01
* @LastEditTime: 2021-11-29 15:04:25 * @LastEditTime: 2021-11-29 15:42:10
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\account\account.module.ts * @FilePath: \tms-obc-web\src\app\routes\account\account.module.ts
@ -10,14 +10,12 @@ import { NgModule } from '@angular/core';
import { SharedModule } from '@shared'; import { SharedModule } from '@shared';
import { AccountRoutingModule } from './account-routing.module'; import { AccountRoutingModule } from './account-routing.module';
import { AccountComponentsCenterComponent } from './components/center/center.component'; import { AccountComponentsCenterComponent } from './components/center/center.component';
import { AccountComponentsEditInfoComponent } from './components/edit-info/edit-info.component';
import { AccountComponentsEditNameComponent } from './components/edit-name/edit-name.component'; import { AccountComponentsEditNameComponent } from './components/edit-name/edit-name.component';
import { AccountComponentsCenterEditComponent } from './components/edit-password/edit-password.component'; import { AccountComponentsCenterEditComponent } from './components/edit-password/edit-password.component';
const COMPONENTS = [ const COMPONENTS = [
AccountComponentsCenterComponent, AccountComponentsCenterComponent,
AccountComponentsEditNameComponent, AccountComponentsEditNameComponent,
AccountComponentsEditInfoComponent,
AccountComponentsCenterEditComponent AccountComponentsCenterEditComponent
]; ];
const COMPONENTS_NOROUNT = [AccountComponentsEditNameComponent]; const COMPONENTS_NOROUNT = [AccountComponentsEditNameComponent];

View File

@ -1,15 +0,0 @@
<div class="main">
<nz-card nzTitle="修改账户信息" style="margin-top: 20px">
<div class="myForm">
<sf #sf [compact]="true" [ui]="ui" [schema]="schema" [button]="'none'" [formData]="formData"></sf>
<form nz-form>
<nz-form-item>
<nz-form-control [nzSpan]="24" [nzOffset]="5">
<button nz-button type="button" nzType="primary" (click)="formSubmit()">保存</button>
<button nz-button type="button" (click)="goBack()">取消</button>
</nz-form-control>
</nz-form-item>
</form>
</div>
</nz-card>
</div>

View File

@ -1,6 +0,0 @@
:host {
.myForm {
width: 600px;
margin: 5rem auto;
}
}

View File

@ -1,23 +0,0 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { OfficialWebsiteComponentsMemberEditInfoComponent } from './edit-info.component';
describe('OfficialWebsiteComponentsMemberEditInfoComponent', () => {
let component: OfficialWebsiteComponentsMemberEditInfoComponent;
let fixture: ComponentFixture<OfficialWebsiteComponentsMemberEditInfoComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [OfficialWebsiteComponentsMemberEditInfoComponent],
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(OfficialWebsiteComponentsMemberEditInfoComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -1,207 +0,0 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { SFComponent, SFSchema, SFSelectWidgetSchema, SFUISchema, SFUploadWidgetSchema } from '@delon/form';
import { ModalHelper, _HttpClient } from '@delon/theme';
import { environment } from '@env/environment';
import { Observable, Observer } from 'rxjs';
import { AccountService } from '../../services/account.service';
@Component({
selector: 'app-account-components-edit-info',
templateUrl: './edit-info.component.html',
styleUrls: ['./edit-info.component.less'],
})
export class AccountComponentsEditInfoComponent implements OnInit {
@ViewChild('sf', { static: false })
sf!: SFComponent;
i: any;
schema!: SFSchema;
ui!: SFUISchema;
formData: any = {
// avatar:[
// {
// uid: -1,
// name: 'LOGO',
// status: 'done',
// url: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',
// response: {
// url: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',
// },
// },
// ],
// name:'西四'
};
constructor(public service: AccountService, private modal: ModalHelper, private route: ActivatedRoute) {
const { realName, identity } = route.snapshot?.queryParams;
Object.assign(this.formData, { realName, certificateNumber: identity });
}
ngOnInit() {
this.initSF();
this.getInfo();
}
initSF() {
this.schema = {
properties: {
avatar: {
type: 'string',
title: '头像',
ui: {
// action: environment.UPLOAD_URL,
fileType: 'image/png,image/jpeg,image/jpg,image/png,image/gif,image/bmp',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
descriptionI18n: '支持JPG、GIF、PNG、JPEG、BMP格式文件小于2M',
data: {
// appId: environment.appId,
},
name: 'multipartFile',
multiple: false,
listType: 'picture-card',
change: (args) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url,
},
},
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList) => {
return new Observable((observer: Observer<boolean>) => {
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
this.service.msgSrv.warning('图片大小超过2M!');
observer.complete();
return;
}
observer.next(isLt2M);
observer.complete();
});
},
} as SFUploadWidgetSchema,
},
name: {
title: '用户名',
type: 'string',
ui: {
widget: 'text',
},
},
phone: {
title: '手机号',
type: 'string',
ui: {
widget: 'text',
},
},
nickName: {
title: '昵称',
type: 'string',
minLength: 1,
maxLength: 18,
ui: {
placeholder: '请输入昵称',
errors: {
required: '请输入昵称',
},
},
},
sex: {
title: '性别',
type: 'string',
default: 0,
enum: [
{ label: '未知', value: 0 },
{ label: '男', value: 1 },
{ label: '女', value: 2 },
{ label: '保密', value: 3 },
],
ui: {
widget: 'select',
} as SFSelectWidgetSchema,
},
birthday: {
title: '生日',
type: 'string',
format: 'date',
},
realName: {
title: '真实姓名',
type: 'string',
ui: {
widget: 'text',
optionalHelp: '实名认证渠道来自供应商入驻,仅在用户同意的情况下,合理用于相关业务,且平台有义务保障您的信息安全。',
},
},
certificateNumber: {
title: '身份证号码',
type: 'string',
ui: {
widget: 'text',
},
},
},
required: ['nickName', 'sex', 'avatar'],
};
this.ui = {
'*': {
spanLabel: 5,
grid: { span: 24 },
},
};
}
getInfo() {
const params = {
// id: this.i.id,
};
// this.service.http.post(this.service.$api_get_current_user_detail, params).subscribe((res) => {
// this.formData = res.data;
// if (!res.data.birthday) {
// this.formData.birthday = Date;
// }
// this.formData.avatar = [
// {
// uid: -1,
// name: 'LOGO',
// status: 'done',
// url: res.data.avatar,
// response: {
// url: res.data.avatar,
// },
// },
// ];
// this.formData.realName = this.route.snapshot.queryParams.realName;
// // this.formData.phone = this.route.snapshot.queryParams.phone;
// this.formData.certificateNumber = this.route.snapshot.queryParams.certificateNumber;
// this.initSF();
// });
}
formSubmit() {
const params: any = {
...this.sf.value,
};
delete params.realName;
delete params.certificateNumber;
// this.service.http.post(this.service.$api_updateUserInfo, params).subscribe((res) => {
// if (res.data) {
// this.service.msgSrv.success('修改成功');
// this.goBack();
// }
// });
}
goBack() {
history.go(-1);
}
}

View File

@ -14,6 +14,7 @@ import { AccountService } from '../../services/account.service';
}) })
export class AccountComponentsEditNameComponent implements OnInit, AfterViewInit { export class AccountComponentsEditNameComponent implements OnInit, AfterViewInit {
// @ViewChild('dun', { static: false }) // @ViewChild('dun', { static: false })
url = `/rule?_allow_anonymous=true`;
// private dun!: CaptchaComponent; // private dun!: CaptchaComponent;
@ViewChild('sf', { static: false }) sf!: SFComponent; @ViewChild('sf', { static: false }) sf!: SFComponent;
record: any = {}; record: any = {};

View File

@ -1,8 +1,8 @@
/* /*
* @Author: your name * @Author: your name
* @Date: 2021-11-29 10:20:33 * @Date: 2021-11-29 10:20:33
* @LastEditTime: 2021-11-29 11:05:20 * @LastEditTime: 2021-11-29 15:38:35
* @LastEditors: your name * @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\routes-routing.module.ts * @FilePath: \tms-obc-web\src\app\routes\routes-routing.module.ts
*/ */
@ -27,6 +27,10 @@ const routes: Routes = [
path: 'account', path: 'account',
loadChildren: () => import('./account/account.module').then((m) => m.AccountModule), loadChildren: () => import('./account/account.module').then((m) => m.AccountModule),
}, },
{
path: 'usercenter',
loadChildren: () => import('./usercenter/usercenter.module').then((m) => m.UsercenterModule),
},
] ]
}, },
// passport // passport

View File

@ -0,0 +1,77 @@
<!--
* @Author: your name
* @Date: 2021-11-29 15:22:34
* @LastEditTime: 2021-11-29 17:10:36
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\usercenter\components\freight\list\list.component.html
-->
<!-- 页头 -->
<page-header-wrapper [title]="'企业列表'"></page-header-wrapper>
<nz-card>
<!-- 搜索区 -->
<!-- 搜索表单 -->
<div nz-row nzGutter="8">
<!-- 查询字段小于或等于3个时不显示伸缩按钮 -->
<div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4">
<sf
#sf
[schema]="schema"
[ui]="ui"
[mode]="'search'"
[disabled]="!sf?.valid"
(formSubmit)="st?.load(1)"
(formReset)="resetSF()"
></sf>
</div>
<!-- [loading]="service.http.loading" -->
<!-- 查询字段大于3个时根据展开状态调整布局 -->
<ng-container *ngIf="queryFieldCount > 4">
<div nz-col [nzSpan]="_$expand ? 24 : 18">
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
</div>
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand">
<button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="creat()">新建</button>
<button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="st?.load(1)">导出</button>
<button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="service.http.loading" (click)="st?.load(1)">查询</button>
<button nz-button (click)="resetSF()">重置</button>
<button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }}
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
</button>
</div>
</ng-container>
</div>
</nz-card>
<nz-card>
<!-- 数据列表 -->
<!-- [data]="service.$api_get_supplier_page" -->
<st
#st
[bordered]="true"
[columns]="columns"
[data]='datalist'
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' }, process: dataProcess }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
[loadingDelay]="500"
[loading]="service.http.loading"
>
<ng-template st-row="enterpriseName" let-item let-index="index">
<div nz-tooltip [nzTooltipTitle]="item.enterpriseName">
<div
style="display: inline-block; max-width: 280px; margin: 0 auto; overflow: hidden; white-space: nowrap; text-overflow: ellipsis"
>
{{ item.enterpriseName }}
</div>
</div>
</ng-template>
<ng-template st-row="stateCol" let-item let-index="index">
<nz-tag *ngIf="item.stateLocked" nzColor="error">冻结</nz-tag>
<nz-tag *elseBlock nzColor="success">正常</nz-tag>
</ng-template>
</st>
</nz-card>

View File

@ -0,0 +1,23 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { FreightComponentsListComponent } from './list.component';
describe('FreightComponentsListComponent', () => {
let component: FreightComponentsListComponent;
let fixture: ComponentFixture<FreightComponentsListComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [FreightComponentsListComponent],
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(FreightComponentsListComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,224 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STColumn, STColumnBadge, STComponent, STData } from '@delon/abc/st';
import { SFComponent, SFSchema, SFUISchema } from '@delon/form';
import { NzModalService } from 'ng-zorro-antd/modal';
import { UsermanageService } from '../../../services/usercenter.service';
@Component({
selector: 'app-Freight-components-list',
templateUrl: './list.component.html',
})
export class FreightComponentsListComponent implements OnInit {
_$expand = false;
url = `/rule?_allow_anonymous=true`;
ui!: SFUISchema;
schema!: SFSchema;
columns!: STColumn[];
datalist = [
{
storeName: '企业名称',
contactsName: '152746565',
enterpriseName: '湖南',
unifiedSocialCreditCode: '45454',
contactsPhone: '*97889461561',
effectiveDateStr: '废弃eww',
enStatusStr2: '正常',
enStatusStr3: '正常',
unifiedSocialCreditCode3: '常用服务',
unifiedSocialCreditCode2: '正常',
tenantId: 1
},
{
storeName: '企业名称',
contactsName: '152746565',
enterpriseName: '湖南',
unifiedSocialCreditCode: '45454',
contactsPhone: '*97889461561',
effectiveDateStr: '废弃eww',
enStatusStr2: '正常',
enStatusStr3: '正常',
unifiedSocialCreditCode3: '常用服务',
unifiedSocialCreditCode2: '正常',
tenantId: 2
},
]
@ViewChild('st', { static: false }) st!: STComponent;
@ViewChild('sf', { static: false }) sf!: SFComponent;
constructor(public service: UsermanageService, private modal: NzModalService, private router: Router, private ar: ActivatedRoute) {}
/**
* 查询字段个数
*/
get queryFieldCount(): number {
return Object.keys(this.schema?.properties || {}).length;
}
/**
* 查询参数
*/
get reqParams() {
const params: any = {
...(this.sf && this.sf.value),
};
if (this.sf?.value.effectiveDate) {
params.effectiveDateStart = this.sf?.value.effectiveDate[0];
params.effectiveDateEnd = this.sf?.value.effectiveDate[1];
}
delete params.effectiveDate;
delete params.expand;
return params;
}
get selectedRows() {
return this.st?.list.filter((item) => item.checked) || [];
}
ngOnInit() {
this.initSF();
this.initST();
this.ar.url.subscribe((params) => {
this.st?.load(1);
});
}
dataProcess(data: STData[]): STData[] {
return data.map((i, index) => {
i.showSortFlag = false;
return i;
});
}
initSF() {
this.schema = {
properties: {
expand: {
type: 'boolean',
ui: {
hidden: true,
},
},
storeName: { title: '企业名称', type: 'string', ui: { showRequired: false } },
contactsName: {
title: '联系人',
type: 'string',
ui: {
showRequired: false,
},
},
unifiedSocialCreditCode: {
title: '税源地',
type: 'string',
ui: {
showRequired: false,
},
},
enStatus: {
type: 'string',
title: '货主状态',
enum: [
{ label: '全部', value: '' },
{ label: '正常', value: 0 },
{ label: '冻结', value: 1 },
{ label: '废弃', value: 2 },
],
default: '',
ui: {
widget: 'select',
visibleIf: {
expand: (value: boolean) => value,
},
},
},
enStatus2: {
type: 'string',
title: 'CRM审核状态',
enum: [
{ label: '全部', value: '' },
{ label: '正常', value: 0 },
{ label: '冻结', value: 1 },
{ label: '废弃', value: 2 },
],
default: '',
ui: {
widget: 'select',
visibleIf: {
expand: (value: boolean) => value,
},
},
},
},
};
this.ui = { '*': { spanLabelFixed: 90, grid: { span: 8, gutter: 4 }, enter: () => this.st.load() } };
}
initST() {
this.columns = [
// { title: '', type: 'checkbox', className: 'text-center' },
{ title: '企业名称', className: 'text-center', index: 'storeName' },
{ title: '联系人', className: 'text-center', index: 'contactsName' },
{ title: '税源地', className: 'text-center', render: 'enterpriseName' },
{ title: '累计运单金额', className: 'text-center', index: 'unifiedSocialCreditCode' },
{ title: '道运证', className: 'text-center', index: 'contactsPhone' },
{ title: '企业状态', className: 'text-center', index: 'effectiveDateStr',
type: 'badge',
badge: {
: { text: '正常', color: 'success' },
: { text: '冻结', color: 'warning' },
: { text: '废弃', color: 'default' },
},
},
{
title: 'CRM审核状态',
className: 'text-center',
index: 'enStatusStr2',
type: 'badge',
badge: {
: { text: '正常', color: 'success' },
: { text: '冻结', color: 'warning' },
: { text: '废弃', color: 'default' },
},
},
{
title: '代收权限',
className: 'text-center',
index: 'enStatusStr3',
type: 'badge',
badge: {
: { text: '正常', color: 'success' },
: { text: '冻结', color: 'warning' },
: { text: '废弃', color: 'default' },
},
},
{ title: '常用服务', className: 'text-center', index: 'unifiedSocialCreditCode3' },
{ title: '推广业务员', className: 'text-center', index: 'unifiedSocialCreditCode2' },
{
title: '操作',
width: '170px',
className: 'text-center',
buttons: [
{
text: '查看',
click: (item) => {
this.router.navigate(['./view', item.tenantId], { relativeTo: this.ar });
// this.router.navigate(['./view', item.id], { relativeTo: this.ar, queryParams: { tenantId: item.tenantId } });
},
},
],
},
];
}
expandToggle() {
this._$expand = !this._$expand;
this.sf?.setValue('/expand', this._$expand);
}
creat() {
this.router.navigate(['./new',], { relativeTo: this.ar });
}
/**
* 重置表单
*/
resetSF() {
this.sf.reset();
this._$expand = false;
}
}

View File

@ -0,0 +1,109 @@
<page-header-wrapper [title]="'企业认证'"></page-header-wrapper>
<nz-card>
<ng-container>
<sf #sf1 [compact]="true" [ui]="ui" [schema]="schema1" [button]="'none'" [formData]="infoData1">
<ng-template sf-template="title1" let-me let-ui="ui" let-schema="schema">
<div class="form-title">营业执照基本信息</div>
</ng-template>
<ng-template sf-template="title2" let-me let-ui="ui" let-schema="schema">
<div class="form-title" style="margin-top: 40px">营业执照法人信息</div>
</ng-template>
<ng-template sf-template="tips" let-me let-ui="ui" let-schema="schema">
<div class="pr">
请上传营业执照原件的高清照片,若上传复印件,则需加盖公司印章;
<div>上传后系统会自动识别并填写</div>
</div>
</ng-template>
<ng-template sf-template="unit" let-me let-ui="ui" let-schema="schema">
<div class="pr">万元</div>
</ng-template>
<ng-template sf-template="tipsC" let-me let-ui="ui" let-schema="schema">
<div class="pr">
<div>请上传身份证原件的高清照片,若上传复印件,则需申请人签字;</div>
<div>上传后系统会自动识别并填写</div>
</div>
</ng-template>
<ng-template sf-template="tipsA" let-me let-ui="ui" let-schema="schema">
<div class="pr">
<dl class="tips">
<dt>正面照(人像面)</dt>
<dd>示例</dd>
</dl>
<div class="pa"><img width="190" src="/assets/images/eg01.png" /></div>
</div>
</ng-template>
<ng-template sf-template="tipsB" let-me let-ui="ui" let-schema="schema">
<div class="pr">
<dl class="tips">
<dt>背面照(国徽面)</dt>
<dd>示例</dd>
</dl>
<div class="pa"><img width="190" src="/assets/images/eg02.png" /></div>
</div>
</ng-template>
</sf>
<sf #sf [compact]="true" [ui]="ui" [schema]="schema" [button]="'none'" [formData]="infoData">
<ng-template sf-template="title1" let-me let-ui="ui" let-schema="schema">
<div class="form-title">公司其他补充信息</div>
</ng-template>
<ng-template sf-template="title99" let-me let-ui="ui" let-schema="schema">
<div class="form-title">企业管理员信息</div>
</ng-template>
<ng-template sf-template="tipsD" let-me let-ui="ui" let-schema="schema">
<div class="pr">
<div>请上传该企业授权您成为本系统企业管理员的文件的高清照片,需加盖公司印章</div>
<div>上传后系统会自动识别并填写</div>
<div></div>
</div>
</ng-template>
<ng-template sf-template="tipsE" let-me let-ui="ui" let-schema="schema">
<div class="pr">
<dl class="tips">
<dt></dt>
<dd>示例</dd>
</dl>
<div class="pa"><img width="190" src="/assets/images/eg02.png" /></div>
</div>
</ng-template>
<ng-template sf-template="telephone" let-me let-ui="ui" let-schema="schema">
<div class="pr">
<div>{{ telephone }} <span>默认当前登录账号绑定的手机号</span></div>
</div>
</ng-template>
<ng-template sf-template="tips" let-me let-ui="ui" let-schema="schema">
<div class="pr">
<div>请上传身份证原件的高清照片,若上传复印件,则需申请人签字;</div>
<div>上传后系统会自动识别并填写</div>
</div>
</ng-template>
<ng-template sf-template="tipsA" let-me let-ui="ui" let-schema="schema">
<div class="pr">
<dl class="tips">
<dt>正面照(人像面)</dt>
<dd>示例</dd>
</dl>
<div class="pa"><img width="190" src="/assets/images/eg01.png" /></div>
</div>
</ng-template>
<ng-template sf-template="tipsB" let-me let-ui="ui" let-schema="schema">
<div class="pr">
<dl class="tips">
<dt>背面照(国徽面)</dt>
<dd>示例</dd>
</dl>
<div class="pa"><img width="190" src="/assets/images/eg02.png" /></div>
</div>
</ng-template>
</sf>
<div style="padding-left: 379px">
<button nz-button type="button" nzType="primary" (click)="submitForm()" >确认新增</button>
<button nz-button (click)="goBack()">返回</button>
</div>
</ng-container>
</nz-card>

View File

@ -0,0 +1,95 @@
:host {
::ng-deep {
nz-card {
.page-title {
margin-bottom: 39px;
color: #333;
font-weight: 500;
font-size: 20px;
line-height: 28px;
text-align: center;
}
.step-title {
display: block;
width: 800px !important;
margin: 0 auto;
}
.myForm {
width: 680px;
margin: 5rem auto;
}
.steps-content {
min-height: 250px;
}
.btn-submit {
margin-top: 16px;
}
.pr {
position: relative;
}
.pa {
position: absolute;
top: 35px;
left: 150px;
}
.tips {
display: flex;
margin-bottom: 0;
color: #333;
dt {
width: 150px;
}
dd {
width: 190px;
margin-bottom: 0;
text-align: center;
}
}
.form-title {
margin-bottom: 10px;
padding-left: 8px;
color: #333;
font-weight: 700;
font-size: 18px;
line-height: 20px;
border-left: solid 3px #1890ff;
}
.form-content {
padding: 48px 32px;
}
.apply-sv {
margin: 16px 0;
padding: 20px;
background: #f8f8f8;
border-radius: 2px;
}
.result-date {
font-size: 12px;
}
.result-tips {
color: #ff4d4f;
font-size: 14px;
}
.sv-img {
display: inline-block;
width: 104px;
height: 104px;
margin-right: 20px;
padding: 8px;
background: #fff;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 2px;
img {
width: 100%;
height: 100%;
}
}
}
/deep/ .ant-row {
margin-left: 100px;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,49 @@
<!--
* @Author: your name
* @Date: 2021-11-29 15:22:34
* @LastEditTime: 2021-11-29 17:07:37
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\usercenter\components\freight\list\view\view.component.html
-->
<ng-container >
<!-- 页头 -->
<page-header-wrapper [logo]="logo" [content]="content">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
</button>
</ng-template>
<ng-template #content>
<div class="user-info">
<img [src]="detailData?.shoppFeignVO?.logoUrl" />
<div style="flex: 1">
<div style="display: flex;">
<p style="padding-right: 80px; width: 400px;">深圳市xxxx科技有限公司{{ detailData?.shoppFeignVO?.publicity }}</p>
<nz-badge nzStatus="success" nzText="正常" *ngIf="detailData?.status === 0"></nz-badge>
<nz-badge nzStatus="error" nzText="冻结" *ngIf="detailData?.status === 1"></nz-badge>
<nz-badge nzStatus="warning" nzText="废弃" *ngIf="detailData?.status === 2"></nz-badge>
</div>
<div style="display: flex;">
<p style="padding-right: 80px; width: 400px;">4545456655645{{ detailData?.shoppFeignVO?.introduction }}</p>
<p >认证时间2021-09-02 12.53.32</p>
</div>
<div>
服务评级:<nz-rate [ngModel]="2" nzDisabled></nz-rate>
</div>
</div>
</div>
</ng-template>
</page-header-wrapper>
<nz-card>
<h1 style="font-weight: 700; font-size: 16px; margin-left: '15%';">道路运输经营许可证</h1>
<sf #sf [compact]="false" [ui]="ui" [schema]="schema" [button]="'none'" [formData]="detailData?.effectiveDate"></sf>
<div style="display: flex; justify-content: center; align-items: center;">
<button nz-button nzType="default" (click)="handleCancel('suppliersType')">取消</button>
<button nz-button nzType="primary" (click)="handleOK('suppliersType')" [disabled]="!sf.valid">确认</button>
</div>
</nz-card>
</ng-container>

View File

@ -0,0 +1,46 @@
@import '~@delon/theme/index';
:host {
::ng-deep {
.ant-steps-dot {
.ant-steps-item-content {
width: 200px;
}
.ant-steps-item-icon {
margin-left: 96px;
}
.ant-steps-item-tail::after {
margin-left: 40px;
}
}
.success {
color: @success-color;
}
.warning {
color: @warning-color;
}
.error {
color: @error-color;
}
}
.mt16 {
margin-top: 16px;
}
.user-info {
display: flex;
font-size: 16px;
.enterprise-name {
margin-right: 15px;
}
img {
width: 64px;
height: 64px;
margin-right: 15px;
border-radius: 50%;
}
.user-info-des {
margin-bottom: 5px;
}
}
}

View File

@ -0,0 +1,23 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { FreightComponentsListViewComponent } from './view.component';
describe('FreightComponentsListViewComponent', () => {
let component: FreightComponentsListViewComponent;
let fixture: ComponentFixture<FreightComponentsListViewComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [FreightComponentsListViewComponent],
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(FreightComponentsListViewComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,257 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { STColumn, STComponent } from '@delon/abc/st';
import { ModalHelper, _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { UsermanageService } from '../../../../services/usercenter.service';
import { SFComponent, SFSchema, SFDateWidgetSchema, SFUISchema, SFUploadWidgetSchema } from '@delon/form';
import { Observable, Observer } from 'rxjs';
@Component({
selector: 'app-Freight-components-list-view',
templateUrl: './view.component.html',
styleUrls: ['./view.component.less'],
})
export class FreightComponentsListViewComponent implements OnInit {
i: any;
url = `/rule?_allow_anonymous=true`;
@ViewChild('st', { static: false }) st!: STComponent;
detailData: any = {
status: 0
};
isShow = false;
isVisible = false;
modalTitle = '有效期';
modalName = '';
ui!: SFUISchema;
schema!: SFSchema;
@ViewChild('sf', { static: false }) sf!: SFComponent;
@ViewChild('sf1', { static: false }) sf1!: SFComponent;
validData: any = ['FreightsType'];
FreightsData: any = {};
constructor(
private http: _HttpClient,
private modal: ModalHelper,
public service: UsermanageService,
private route: ActivatedRoute,
private modalHelper: ModalHelper,
private msgSrv: NzMessageService,
) {}
ngOnInit() {
console.log(this.route.snapshot);
this.initData();
this.initSF();
// this.launchSign();
}
/**
* 初始化查询表单
*/
initSF() {
this.schema = {
properties: {
name: {
title: '许可证号',
type: 'string',
maxLength: 20,
ui: {
placeholder: '请输入角色名称',
},
},
phone: {
title: '业户名称',
type: 'string',
maxLength: 20,
ui: {
placeholder: '请输入业户名称',
},
},
roleDescription: {
title: '地址',
type: 'string',
maxLength: 30,
ui: {
placeholder: '请输入地址',
widget: 'textarea',
},
},
effectiveDate: {
title: '发证日期',
type: 'string',
ui: {
widget: 'date',
format: 'yyyy-MM-dd 00:00:00',
// hidden: this.modalName === 'effectiveDate' ? false : true,
} as SFDateWidgetSchema,
},
phone3: {
title: '有效期',
type: 'string',
ui: {
placeholder: '请输入业户名称',
},
},
phone4: {
title: '有效期截止',
type: 'string',
ui: {
placeholder: '请输入业户名称',
},
},
phone5: {
title: '经营范围',
type: 'string',
ui: {
placeholder: '请输入业户名称',
},
},
avatar: {
type: 'string',
title: '证照',
ui: {
// action: environment.UPLOAD_URL,
fileType: 'image/png,image/jpeg,image/jpg,image/png,image/gif,image/bmp',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
descriptionI18n: '图片支持jpg、jpeg、png、gif格式大小不超过5M',
data: {
// appId: environment.appId,
},
name: 'multipartFile',
multiple: false,
listType: 'picture-card',
change: (args) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url,
},
},
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList) => {
return new Observable((observer: Observer<boolean>) => {
const isLt2M = file.size / 1024 / 1024 < 5;
if (!isLt2M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt2M);
observer.complete();
});
},
} as SFUploadWidgetSchema,
},
},
required: ['name', 'phone'],
};
this.ui = { '*': { spanLabelFixed: 200, grid: {offset:4, span: 12 } } };
}
showModal(name: any) {
this.modalName = name;
if (name === 'effectiveDate') {
this.isShow = true;
} else {
this.isVisible = true;
}
}
async initData() {
console.log(this.route.snapshot, 'this.route.snapshot');
const params = {
tenantId: this.route.snapshot.params.id,
};
}
/**
* 根据地区code查询地区详情
* @param code 地区代码
*/
async getRegionFullName(code: any) {
const params = {
regionCode: code,
};
const res = await this.service.asyncRequest(this.service.$api_get_region_detailByCode, params, 'POST', true);
// if (res && res.regionFullName) {
// const arr = res.regionFullName.split(',');
// res.regionFullName = arr.reverse().join('-');
// }
return res && res.regionFullName;
}
add() {
// this.modal
// .createStatic(FormEditComponent, { i: { id: 0 } })
// .subscribe(() => this.st.reload());
}
goBack() {
window.history.go(-1);
}
/**
* 冻结
*/
freezeOrResume(type: number) {
this.service.http
.post(this.service.$api_set_freezeOrResume, {
tenantId: this.route.snapshot.params.id,
// tenantId: this.route.snapshot.queryParams.tenantId,
status: type,
})
.subscribe((res) => {
if (res.data === true) {
if (type === 0) {
this.service.msgSrv.success(`启用成功!`);
} else if (type === 1) {
this.service.msgSrv.success(`冻结成功!`);
}
this.ngOnInit();
} else {
this.service.msgSrv.error(res.msg || '操作失败!');
}
});
}
handleCancel(name: any) {
if (name === 'effectiveDate') {
this.isShow = false;
} else {
this.isVisible = false;
}
}
handleOK(name: any) {
const params: any = {
tenantId: this.route.snapshot.params.id,
// tenantId: this.route.snapshot.queryParams.tenantId,
};
if (name === 'effectiveDate') {
params.effectiveDate = this.sf?.value?.effectiveDate;
} else {
Object.assign(params, this.sf1?.value);
}
this.service.http.post(this.service.$api_set_freezeOrResume, params).subscribe((res) => {
if (res.data === true) {
this.service.msgSrv.success(`编辑成功!`);
this.ngOnInit();
} else {
this.service.msgSrv.error(res.msg || '编辑失败!');
}
if (name === 'effectiveDate') {
this.isShow = false;
} else {
this.isVisible = false;
}
});
}
}

View File

@ -0,0 +1,91 @@
/*
* @Author: your name
* @Date: 2021-11-29 15:22:34
* @LastEditTime: 2021-11-29 15:43:42
* @LastEditors: your name
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\usercenter\services\usercenter.service.ts
*/
import { Injectable, Injector } from '@angular/core';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { BaseService } from 'src/app/shared/services/core/base.service';
import { EAFileUtil } from 'src/app/shared/utils/file.util';
@Injectable({
providedIn: 'root',
})
export class UsermanageService extends BaseService {
public $api_add_one!: string;
public $api_add_many!: string;
public $api_edit_one!: string;
public $api_edit_many!: string;
public $api_del_one!: string;
public $api_del_many!: string;
public $api_get_many!: string;
public $api_get_one!: string;
public $api_get_page!: string;
public $api_export!: string;
public $api_import!: string;
public $api_import_download_tpl!: string;
// 平台用户列表
$api_get_page_user = '/cuc/userApp/getOperatorUserList?_allow_anonymous=true';
// 获取供应商采购商应用
$api_get_supplier_purchaserApp = '/cuc/appInfo/getSupplierPurchaserApp?_allow_anonymous=true';
// 供应商列表
$api_get_supplier_page = '/cuc/operator/list/listSupplierPage?_allow_anonymous=true';
// 供应商详情
$api_get_supplier_info = '/cuc/operator/selectSupplierDetailInfo?_allow_anonymous=true';
// 用户冻结或恢复应用用户
$api_set_freezeOrResume = '/cuc/operator/updateSupplierInfo?_allow_anonymous=true';
// 获取一、二、三级地区详情
$api_getRegionToThree = '/cms/region/getRegionToThree?_allow_anonymous=true';
// 根据地区code查询列表
$api_getRegionByCode = '/cms/region/getRegionByCode?_allow_anonymous=true';
// 根据地区code查询地区详情
$api_get_region_detailByCode = '/cms/region/getRegionDetailByCode?_allow_anonymous=true';
// 查询供应商申请列表分页
$api_get_supplier_audit_page = `/cuc/operator/audit/listSupplierPage?_allow_anonymous=true`;
// 查询供应商入驻详情
$api_get_supplier_entryInfo = `/cuc/operator/selectSupplierEntryDetailInfo?_allow_anonymous=true`;
// 审核供应商
$api_auditSupplier = `/cuc/operator/auditSupplier?_allow_anonymous=true`;
// 查询采购商列表分页
$api_get_purchaserList = `/cuc/operator/list/queryPurchaserPage`;
// 查询采购商申请列表分页
$api_get_purchaserAudit = `/cuc/operator/audit/queryPurchaserPage`;
// 查询采购商认证详情
$api_get_purchaser_detailInfo = `/cuc/operator/selectPurchaserDetailInfo`;
// 查询采购商审核总数
$api_query_purchaser_count = `/cuc/operator/queryPurchaserCount`;
// 获取供应商审核总数
$api_query_supplier_count = `/cuc/operator/querySupplierCount`;
// 审核企业详情
$api_get_cache_enterprise_info = '';
// 获取审核进度
$api_get_progress = '/cuc/reviewRecordInfo/getReviewProgress';
// 查询流程信息列表
$api_get_progressInfoList = '/cuc/processInfo/getProcessInfoList';
// 审核通过
$api_set_audit_pass = '/cuc/reviewRecordInfo/reviewPassed';
// 审核拒绝
$api_set_audit_reject = '/cuc/reviewRecordInfo/reviewRejected';
// 发起签约 //撤回签约
$api_get_startSigning = `/cuc/operator/startSigning?_allow_badcode=true`;
// 发起续约 //撤回续约
$api_get_startRenewalContract = `/cuc/operator/startRenewalContract?_allow_badcode=true`;
// 获取审核记录
$api_get_reviewRecordInfoList = '/cuc/reviewRecordInfo/getReviewRecordInfoList';
// 查看合同详情
$api_get_contract_detail = `/scce/etc/etc/contractDetail/getContractByContractNo`;
constructor(public injector: Injector) {
super(injector);
}
}

View File

@ -0,0 +1,29 @@
/*
* @Author: your name
* @Date: 2021-11-29 15:22:34
* @LastEditTime: 2021-11-29 17:28:57
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\usercenter\usercenter-routing.module.ts
*/
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { FreightComponentsListComponent } from './components/freight/list/list.component';
import { FreightComponentsListNewComponent } from './components/freight/list/new/new.component';
import { FreightComponentsListViewComponent } from './components/freight/list/view/view.component';
const routes: Routes = [
{ path: 'freight/list', component: FreightComponentsListComponent },
{ path: 'freight/list/view/:id', component: FreightComponentsListViewComponent },
{ path: 'freight/list/new', component: FreightComponentsListNewComponent },
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
})
export class UsercenterRoutingModule {}

View File

@ -0,0 +1,26 @@
/*
* @Author: your name
* @Date: 2021-11-29 15:22:34
* @LastEditTime: 2021-11-29 17:29:44
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\usercenter\usercenter.module.ts
*/
import { NgModule } from '@angular/core';
import { SharedModule } from '@shared';
import { FreightComponentsListComponent } from './components/freight/list/list.component';
import { FreightComponentsListNewComponent } from './components/freight/list/new/new.component';
import { FreightComponentsListViewComponent } from './components/freight/list/view/view.component';
import { UsercenterRoutingModule } from './usercenter-routing.module';
const COMPONENTS = [
FreightComponentsListComponent,
FreightComponentsListViewComponent,
FreightComponentsListNewComponent
];
@NgModule({
imports: [SharedModule, UsercenterRoutingModule],
declarations: [...COMPONENTS],
})
export class UsercenterModule {}

View File

@ -1,7 +1,11 @@
import { NzProgressModule } from 'ng-zorro-antd/progress';
import { NzPopoverModule } from 'ng-zorro-antd/popover';
import { NzModalModule } from 'ng-zorro-antd/modal';
import { NzToolTipModule } from 'ng-zorro-antd/tooltip';
/* /*
* @Author: your name * @Author: your name
* @Date: 2021-11-29 10:20:33 * @Date: 2021-11-29 10:20:33
* @LastEditTime: 2021-11-29 14:59:56 * @LastEditTime: 2021-11-29 17:25:49
* @LastEditors: Please set LastEditors * @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\shared\shared-zorro.module.ts * @FilePath: \tms-obc-web\src\app\shared\shared-zorro.module.ts
@ -22,7 +26,10 @@ import { NzSelectModule } from 'ng-zorro-antd/select';
import { NzSpinModule } from 'ng-zorro-antd/spin'; import { NzSpinModule } from 'ng-zorro-antd/spin';
import { NzTableModule } from 'ng-zorro-antd/table'; import { NzTableModule } from 'ng-zorro-antd/table';
import { NzListModule } from 'ng-zorro-antd/list'; import { NzListModule } from 'ng-zorro-antd/list';
import { NzTagModule } from 'ng-zorro-antd/tag';
import { NzPopconfirmModule } from 'ng-zorro-antd/popconfirm';
import { NzRateModule } from 'ng-zorro-antd/rate';
import { NzResultModule } from 'ng-zorro-antd/result';
export const SHARED_ZORRO_MODULES = [ export const SHARED_ZORRO_MODULES = [
NzButtonModule, NzButtonModule,
NzGridModule, NzGridModule,
@ -40,4 +47,10 @@ export const SHARED_ZORRO_MODULES = [
NzDividerModule, NzDividerModule,
NzStepsModule, NzStepsModule,
NzListModule, NzListModule,
NzTagModule,
NzToolTipModule,
NzModalModule,
NzPopconfirmModule,
NzRateModule,
NzResultModule
]; ];

View File

@ -26,6 +26,42 @@
} }
] ]
}, },
{
"text": "用户中心",
"icon": "anticon anticon-dashboard",
"group": true,
"children": [
{
"text": "货主管理",
"icon": "anticon anticon-dashboard",
"link": "/demo/zorro",
"children": [
{
"text": "货主列表",
"icon": "anticon anticon-dashboard",
"link": "/usercenter/freight/list"
},
{
"text": "货主详情",
"hide": true,
"icon": "anticon anticon-dashboard",
"link": "/usercenter/freight/list/view/:id"
},
{
"text": "企业认证",
"hide": true,
"icon": "anticon anticon-dashboard",
"link": "/usercenter/freight/new"
},
{
"text": "企业审核",
"icon": "anticon anticon-dashboard",
"link": "/usercenter/freight/list/view/:id"
}
]
}
]
},
{ {
"text": "系统设置", "text": "系统设置",
"icon": "anticon anticon-dashboard", "icon": "anticon anticon-dashboard",
@ -74,10 +110,6 @@
{ {
"text": "系统配置", "text": "系统配置",
"link": "/demo/alain" "link": "/demo/alain"
},
{
"text": "货物名称配置",
"link": "/demo/alain"
} }
] ]
} }