Browse Source

发起流程

main
kely 12 months ago
parent
commit
a3628a413f
  1. 5
      web-admin-app/README.md
  2. 2
      web-admin-app/src/app/app.config.ts
  3. 13
      web-admin-app/src/app/components/apply-asset-flow/asset-employee-apply/asset-employee-apply.component.html
  4. 0
      web-admin-app/src/app/components/apply-asset-flow/asset-employee-apply/asset-employee-apply.component.less
  5. 103
      web-admin-app/src/app/components/apply-asset-flow/asset-employee-apply/asset-employee-apply.component.ts
  6. 64
      web-admin-app/src/app/components/apply-asset-flow/asset-employee-loss/asset-employee-loss.component.html
  7. 0
      web-admin-app/src/app/components/apply-asset-flow/asset-employee-loss/asset-employee-loss.component.less
  8. 27
      web-admin-app/src/app/components/apply-asset-flow/asset-employee-loss/asset-employee-loss.component.ts
  9. 88
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-handover/eam-asset-employee-handover.component.html
  10. 0
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-handover/eam-asset-employee-handover.component.less
  11. 108
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-handover/eam-asset-employee-handover.component.ts
  12. 80
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-repair/eam-asset-employee-repair.component.html
  13. 0
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-repair/eam-asset-employee-repair.component.less
  14. 107
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-repair/eam-asset-employee-repair.component.ts
  15. 95
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-scrap/eam-asset-employee-scrap.component.html
  16. 0
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-scrap/eam-asset-employee-scrap.component.less
  17. 108
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-scrap/eam-asset-employee-scrap.component.ts
  18. 105
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-equipment-repair/eam-asset-equipment-repair.component.html
  19. 0
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-equipment-repair/eam-asset-equipment-repair.component.less
  20. 113
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-equipment-repair/eam-asset-equipment-repair.component.ts
  21. 139
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-purchase-apply/eam-asset-purchase-apply.component.html
  22. 0
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-purchase-apply/eam-asset-purchase-apply.component.less
  23. 114
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-purchase-apply/eam-asset-purchase-apply.component.ts
  24. 57
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-stock-goods-use/eam-asset-stock-goods-use.component.html
  25. 0
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-stock-goods-use/eam-asset-stock-goods-use.component.less
  26. 103
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-stock-goods-use/eam-asset-stock-goods-use.component.ts
  27. 9
      web-admin-app/src/app/components/index.ts
  28. 6
      web-admin-app/src/app/pages/flow/flow-main/flow-main.component.html
  29. 37
      web-admin-app/src/app/pages/flow/flow-main/flow-main.component.ts
  30. 23
      web-admin-app/src/app/pages/flow/flow-my-apply/flow-my-apply.component.html
  31. 59
      web-admin-app/src/app/pages/flow/flow-my-apply/flow-my-apply.component.ts
  32. 23
      web-admin-app/src/app/pages/flow/flow-my-finished/flow-my-finished.component.html
  33. 10
      web-admin-app/src/app/pages/flow/flow-my-finished/flow-my-finished.component.ts
  34. 23
      web-admin-app/src/app/pages/flow/flow-my-todo/flow-my-todo.component.html
  35. 10
      web-admin-app/src/app/pages/flow/flow-my-todo/flow-my-todo.component.ts
  36. 3
      web-admin-app/src/app/services/api.service.ts
  37. 5
      web-admin-app/src/styles.less

5
web-admin-app/README.md

@ -54,6 +54,11 @@
-【申请人】 -【申请人】
## 05-09
- 作废任务 & 使用删除任务接口?传递参数
- 流程的几个列表中需要返回 formKey
# 待解决问题 # 待解决问题

2
web-admin-app/src/app/app.config.ts

@ -31,7 +31,7 @@ export function initializeApp(configService: ServerPaginatedTableService) {
total: v.body.total, total: v.body.total,
// totalPages: Math.ceil(v.body.rows / 5), // totalPages: Math.ceil(v.body.rows / 5),
totalPages: 0, totalPages: 0,
data: v.body.rows, data: v.body.rows ?? v.body.records,
} }
}, },
}) })

13
web-admin-app/src/app/components/apply-asset-flow/apply-asset-flow.component.html → web-admin-app/src/app/components/apply-asset-flow/asset-employee-apply/asset-employee-apply.component.html

@ -1,4 +1,4 @@
<div class="modal"> <div class="modal-lg-container">
<form nz-form [formGroup]="formGroup" nzLayout="vertical"> <form nz-form [formGroup]="formGroup" nzLayout="vertical">
<div class="overflow-hidden"> <div class="overflow-hidden">
<div nz-row [nzGutter]="24"> <div nz-row [nzGutter]="24">
@ -26,6 +26,17 @@
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
</div> </div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>紧急程度</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-radio-group formControlName="urgency">
<label nz-radio [nzValue]="1">普通</label>
<label nz-radio [nzValue]="2">紧急</label>
</nz-radio-group>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24"> <div nz-col [nzSpan]="24">
<nz-form-item> <nz-form-item>

0
web-admin-app/src/app/components/apply-asset-flow/apply-asset-flow.component.less → web-admin-app/src/app/components/apply-asset-flow/asset-employee-apply/asset-employee-apply.component.less

103
web-admin-app/src/app/components/apply-asset-flow/asset-employee-apply/asset-employee-apply.component.ts

@ -0,0 +1,103 @@
import { Component, Input, OnInit, inject } from '@angular/core'
import { FormBuilder, FormGroup } from '@angular/forms'
import { ApiService } from 'app/services'
import { SharedModule } from 'app/shared/shared.module'
import { FormValidators, Utils } from 'app/utils'
import { NzMessageService } from 'ng-zorro-antd/message'
import { OrgSelectComponent } from '../../org-select/org-select.component'
import { SelectUserByOrgComponent } from '../../select-user-by-org/select-user-by-org.component'
import { PositionSelectComponent } from '../../position-select/position-select.component'
import { NzSafeAny } from 'ng-zorro-antd/core/types'
import { NZ_MODAL_DATA } from 'ng-zorro-antd/modal'
import { SupplierSelectComponent } from '../../supplier-select/supplier-select.component'
import { AssetSelectComponent } from '../../asset-select/asset-select.component'
import { WarehouseSelectComponent } from '../../warehouse-select/warehouse-select.component'
@Component({
selector: 'app-asset-employee-apply',
standalone: true,
imports: [
SharedModule,
SelectUserByOrgComponent,
SupplierSelectComponent,
AssetSelectComponent,
OrgSelectComponent,
PositionSelectComponent,
WarehouseSelectComponent,
],
templateUrl: './asset-employee-apply.component.html',
styleUrl: './asset-employee-apply.component.less',
})
export class AssetEmployeeApplyComponent {
constructor(
private fb: FormBuilder,
private api: ApiService,
private msg: NzMessageService,
) {}
readonly data: NzSafeAny = inject(NZ_MODAL_DATA)
formGroup!: FormGroup
groupIndex = 0
uploadLoading = false
ngOnInit(): void {
console.log('this.data', this.data)
this.formGroup = this.fb.group({
id: this.fb.control(null, []),
title: this.fb.control(this.data.value?.name, [FormValidators.required('请输入')]),
// useUserId: this.fb.control(null, [FormValidators.required('请选择')]),
applyDepartmentId: this.fb.control(null, [FormValidators.required('请选择')]),
applicant: this.fb.control({ value: this.api.authInfo?.userName, disabled: true }, [
FormValidators.required('请选择'),
]),
// businessGeneratedDate: this.fb.control(null, [FormValidators.required('请选择')]),
notes: this.fb.control(null, [FormValidators.required('请输入')]),
urgency: this.fb.control(1, []),
})
this.patchValues()
}
patchValues() {
const { value: data, preview } = this.data
if (data) {
this.formGroup.patchValue({
...data.procVars,
applyDepartmentId: data.procVars?.applyDepartmentId + '',
})
}
if (preview) {
this.formGroup.disable()
}
}
public getValues() {
let values = null
if (FormValidators.validateFormGroup(this.formGroup)) {
const v = this.formGroup.value
values = {
...v,
applyDepartmentId: Number(v.applyDepartmentId?.[0]),
}
}
return values
}
onFileChange(e: Event) {
const target = e.target as HTMLInputElement
const file = target.files![0]
target.value = ''
const formdata = new FormData()
formdata.append('file', file)
this.api.upload(formdata).subscribe((res) => {
this.formGroup.get('attach')?.setValue(res.body.fileName)
})
}
}

64
web-admin-app/src/app/components/apply-asset-flow/asset-employee-loss/asset-employee-loss.component.html

@ -0,0 +1,64 @@
<div class="modal-lg-container">
<form nz-form [formGroup]="formGroup" nzLayout="vertical">
<div class="overflow-hidden">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>流程标题</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入流程标题" formControlName="title" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>申请部门</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-org-select formControlName="applyDepartmentId" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>申请人</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入申请人" formControlName="applicant" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>紧急程度</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-radio-group formControlName="urgency">
<label nz-radio [nzValue]="1">普通</label>
<label nz-radio [nzValue]="2">紧急</label>
</nz-radio-group>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzRequired]="true">原因</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<textarea nz-input placeholder="请输入原因" formControlName="notes"></textarea>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label>资产列表</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-asset-select formControlName="assetIdList" />
</nz-form-control>
</nz-form-item>
</div>
</div>
</div>
</form>
<ng-template #errorTpl let-control>
<form-error-tips [control]="control"></form-error-tips>
</ng-template>
</div>

0
web-admin-app/src/app/components/apply-asset-flow/asset-employee-loss/asset-employee-loss.component.less

27
web-admin-app/src/app/components/apply-asset-flow/apply-asset-flow.component.ts → web-admin-app/src/app/components/apply-asset-flow/asset-employee-loss/asset-employee-loss.component.ts

@ -4,17 +4,17 @@ import { ApiService } from 'app/services'
import { SharedModule } from 'app/shared/shared.module' import { SharedModule } from 'app/shared/shared.module'
import { FormValidators, Utils } from 'app/utils' import { FormValidators, Utils } from 'app/utils'
import { NzMessageService } from 'ng-zorro-antd/message' import { NzMessageService } from 'ng-zorro-antd/message'
import { OrgSelectComponent } from '../org-select/org-select.component' import { OrgSelectComponent } from '../../org-select/org-select.component'
import { SelectUserByOrgComponent } from '../select-user-by-org/select-user-by-org.component' import { SelectUserByOrgComponent } from '../../select-user-by-org/select-user-by-org.component'
import { PositionSelectComponent } from '../position-select/position-select.component' import { PositionSelectComponent } from '../../position-select/position-select.component'
import { NzSafeAny } from 'ng-zorro-antd/core/types' import { NzSafeAny } from 'ng-zorro-antd/core/types'
import { NZ_MODAL_DATA } from 'ng-zorro-antd/modal' import { NZ_MODAL_DATA } from 'ng-zorro-antd/modal'
import { SupplierSelectComponent } from '../supplier-select/supplier-select.component' import { SupplierSelectComponent } from '../../supplier-select/supplier-select.component'
import { AssetSelectComponent } from '../asset-select/asset-select.component' import { AssetSelectComponent } from '../../asset-select/asset-select.component'
import { WarehouseSelectComponent } from '../warehouse-select/warehouse-select.component' import { WarehouseSelectComponent } from '../../warehouse-select/warehouse-select.component'
@Component({ @Component({
selector: 'app-apply-asset-flow', selector: 'app-asset-employee-loss',
standalone: true, standalone: true,
imports: [ imports: [
SharedModule, SharedModule,
@ -25,10 +25,10 @@ import { WarehouseSelectComponent } from '../warehouse-select/warehouse-select.c
PositionSelectComponent, PositionSelectComponent,
WarehouseSelectComponent, WarehouseSelectComponent,
], ],
templateUrl: './apply-asset-flow.component.html', templateUrl: './asset-employee-loss.component.html',
styleUrl: './apply-asset-flow.component.less', styleUrl: './asset-employee-loss.component.less',
}) })
export class ApplyAssetFlowComponent { export class AssetEmployeeLossComponent {
constructor( constructor(
private fb: FormBuilder, private fb: FormBuilder,
private api: ApiService, private api: ApiService,
@ -46,7 +46,7 @@ export class ApplyAssetFlowComponent {
ngOnInit(): void { ngOnInit(): void {
this.formGroup = this.fb.group({ this.formGroup = this.fb.group({
id: this.fb.control(null, []), id: this.fb.control(null, []),
title: this.fb.control('', [FormValidators.required('请输入')]), title: this.fb.control(this.data.value?.name, [FormValidators.required('请输入')]),
// useUserId: this.fb.control(null, [FormValidators.required('请选择')]), // useUserId: this.fb.control(null, [FormValidators.required('请选择')]),
applyDepartmentId: this.fb.control(null, [FormValidators.required('请选择')]), applyDepartmentId: this.fb.control(null, [FormValidators.required('请选择')]),
applicant: this.fb.control({ value: this.api.authInfo?.userName, disabled: true }, [ applicant: this.fb.control({ value: this.api.authInfo?.userName, disabled: true }, [
@ -55,6 +55,8 @@ export class ApplyAssetFlowComponent {
// businessGeneratedDate: this.fb.control(null, [FormValidators.required('请选择')]), // businessGeneratedDate: this.fb.control(null, [FormValidators.required('请选择')]),
notes: this.fb.control(null, [FormValidators.required('请输入')]), notes: this.fb.control(null, [FormValidators.required('请输入')]),
urgency: this.fb.control(1, []),
assetIdList: this.fb.control([], []),
}) })
this.patchValues() this.patchValues()
@ -64,7 +66,8 @@ export class ApplyAssetFlowComponent {
const { value: data, preview } = this.data const { value: data, preview } = this.data
if (data) { if (data) {
this.formGroup.patchValue({ this.formGroup.patchValue({
...data, ...data.procVars,
applyDepartmentId: data.procVars?.applyDepartmentId + '',
}) })
} }
if (preview) { if (preview) {

88
web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-handover/eam-asset-employee-handover.component.html

@ -0,0 +1,88 @@
<div class="modal-lg-container">
<form nz-form [formGroup]="formGroup" nzLayout="vertical">
<div class="overflow-hidden">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>流程标题</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入流程标题" formControlName="title" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>紧急程度</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-radio-group formControlName="urgency">
<label nz-radio [nzValue]="1">普通</label>
<label nz-radio [nzValue]="2">紧急</label>
</nz-radio-group>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>申请部门</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-org-select formControlName="applyDepartmentId" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>申请人</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入申请人" formControlName="applicant" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>交接部门</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-org-select formControlName="handoverDepartmentId" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>交接人</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-select-user-by-org formControlName="handoverUserId" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzRequired]="true">内容</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<textarea nz-input placeholder="请输入内容" formControlName="content"></textarea>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label>备注</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<textarea nz-input placeholder="请输入备注" formControlName="notes"></textarea>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label>资产列表</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-asset-select formControlName="assetIdList" />
</nz-form-control>
</nz-form-item>
</div>
</div>
</div>
</form>
<ng-template #errorTpl let-control>
<form-error-tips [control]="control"></form-error-tips>
</ng-template>
</div>

0
web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-handover/eam-asset-employee-handover.component.less

108
web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-handover/eam-asset-employee-handover.component.ts

@ -0,0 +1,108 @@
import { Component, Input, OnInit, inject } from '@angular/core'
import { FormBuilder, FormGroup } from '@angular/forms'
import { ApiService } from 'app/services'
import { SharedModule } from 'app/shared/shared.module'
import { FormValidators, Utils } from 'app/utils'
import { NzMessageService } from 'ng-zorro-antd/message'
import { OrgSelectComponent } from '../../org-select/org-select.component'
import { SelectUserByOrgComponent } from '../../select-user-by-org/select-user-by-org.component'
import { PositionSelectComponent } from '../../position-select/position-select.component'
import { NzSafeAny } from 'ng-zorro-antd/core/types'
import { NZ_MODAL_DATA } from 'ng-zorro-antd/modal'
import { SupplierSelectComponent } from '../../supplier-select/supplier-select.component'
import { AssetSelectComponent } from '../../asset-select/asset-select.component'
import { WarehouseSelectComponent } from '../../warehouse-select/warehouse-select.component'
@Component({
selector: 'app-eam-asset-employee-handover',
standalone: true,
imports: [
SharedModule,
SelectUserByOrgComponent,
SupplierSelectComponent,
AssetSelectComponent,
OrgSelectComponent,
PositionSelectComponent,
WarehouseSelectComponent,
],
templateUrl: './eam-asset-employee-handover.component.html',
styleUrl: './eam-asset-employee-handover.component.less',
})
export class EamAssetEmployeeHandoverComponent {
constructor(
private fb: FormBuilder,
private api: ApiService,
private msg: NzMessageService,
) {}
readonly data: NzSafeAny = inject(NZ_MODAL_DATA)
formGroup!: FormGroup
groupIndex = 0
uploadLoading = false
ngOnInit(): void {
this.formGroup = this.fb.group({
id: this.fb.control(null, []),
title: this.fb.control(this.data.value?.name, [FormValidators.required('请输入')]),
// useUserId: this.fb.control(null, [FormValidators.required('请选择')]),
applyDepartmentId: this.fb.control(null, [FormValidators.required('请选择')]),
handoverDepartmentId: this.fb.control(null, [FormValidators.required('请选择')]),
handoverUserId: this.fb.control(null, [FormValidators.required('请选择')]),
applicant: this.fb.control({ value: this.api.authInfo?.userName, disabled: true }, [
FormValidators.required('请选择'),
]),
// businessGeneratedDate: this.fb.control(null, [FormValidators.required('请选择')]),
content: this.fb.control(null, [FormValidators.required('请输入')]),
notes: this.fb.control(null, []),
urgency: this.fb.control(1, []),
assetIdList: this.fb.control([], []),
})
this.patchValues()
}
patchValues() {
const { value: data, preview } = this.data
if (data) {
this.formGroup.patchValue({
...data.procVars,
handoverUserId: data.procVars?.handoverUserId ? [data.procVars?.handoverUserId] : [],
applyDepartmentId: data.procVars?.applyDepartmentId + '',
handoverDepartmentId: data.procVars?.handoverDepartmentId + '',
})
}
if (preview) {
this.formGroup.disable()
}
}
public getValues() {
let values = null
if (FormValidators.validateFormGroup(this.formGroup)) {
const v = this.formGroup.value
values = {
...v,
handoverUserId: Number(v.handoverUserId?.[0]),
applyDepartmentId: Number(v.applyDepartmentId?.[0]),
}
}
return values
}
onFileChange(e: Event) {
const target = e.target as HTMLInputElement
const file = target.files![0]
target.value = ''
const formdata = new FormData()
formdata.append('file', file)
this.api.upload(formdata).subscribe((res) => {
this.formGroup.get('attach')?.setValue(res.body.fileName)
})
}
}

80
web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-repair/eam-asset-employee-repair.component.html

@ -0,0 +1,80 @@
<div class="modal-lg-container">
<form nz-form [formGroup]="formGroup" nzLayout="vertical">
<div class="overflow-hidden">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>流程标题</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入流程标题" formControlName="title" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>申请部门</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-org-select formControlName="applyDepartmentId" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>申请人</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入申请人" formControlName="applicant" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>紧急程度</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-radio-group formControlName="urgency">
<label nz-radio [nzValue]="1">普通</label>
<label nz-radio [nzValue]="2">紧急</label>
</nz-radio-group>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzRequired]="true">原因</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<textarea nz-input placeholder="请输入原因" formControlName="notes"></textarea>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label>图片</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input type="hidden" nz-input formControlName="img" />
<div class="mb-2" *ngIf="iconPreview">
<img [src]="iconPreview" class="h-20 w-20" />
</div>
<button class="upload-btn" nz-button [nzLoading]="uploadLoading">
<i nz-icon nzType="upload"></i>
上传图片
<input type="file" (change)="onFileChange($event)" accept=".jpg,.jpeg,.png" />
</button>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label>资产列表</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-asset-select formControlName="assetIdList" />
</nz-form-control>
</nz-form-item>
</div>
</div>
</div>
</form>
<ng-template #errorTpl let-control>
<form-error-tips [control]="control"></form-error-tips>
</ng-template>
</div>

0
web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-repair/eam-asset-employee-repair.component.less

107
web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-repair/eam-asset-employee-repair.component.ts

@ -0,0 +1,107 @@
import { Component, Input, OnInit, inject } from '@angular/core'
import { FormBuilder, FormGroup } from '@angular/forms'
import { ApiService } from 'app/services'
import { SharedModule } from 'app/shared/shared.module'
import { FormValidators, Utils } from 'app/utils'
import { NzMessageService } from 'ng-zorro-antd/message'
import { OrgSelectComponent } from '../../org-select/org-select.component'
import { SelectUserByOrgComponent } from '../../select-user-by-org/select-user-by-org.component'
import { PositionSelectComponent } from '../../position-select/position-select.component'
import { NzSafeAny } from 'ng-zorro-antd/core/types'
import { NZ_MODAL_DATA } from 'ng-zorro-antd/modal'
import { SupplierSelectComponent } from '../../supplier-select/supplier-select.component'
import { AssetSelectComponent } from '../../asset-select/asset-select.component'
import { WarehouseSelectComponent } from '../../warehouse-select/warehouse-select.component'
@Component({
selector: 'app-eam-asset-employee-repair',
standalone: true,
imports: [
SharedModule,
SelectUserByOrgComponent,
SupplierSelectComponent,
AssetSelectComponent,
OrgSelectComponent,
PositionSelectComponent,
WarehouseSelectComponent,
],
templateUrl: './eam-asset-employee-repair.component.html',
styleUrl: './eam-asset-employee-repair.component.less',
})
export class EamAssetEmployeeRepairComponent {
constructor(
private fb: FormBuilder,
private api: ApiService,
private msg: NzMessageService,
) {}
readonly data: NzSafeAny = inject(NZ_MODAL_DATA)
formGroup!: FormGroup
groupIndex = 0
uploadLoading = false
iconPreview = ''
ngOnInit(): void {
this.formGroup = this.fb.group({
id: this.fb.control(null, []),
title: this.fb.control(this.data.value?.name, [FormValidators.required('请输入')]),
// useUserId: this.fb.control(null, [FormValidators.required('请选择')]),
applyDepartmentId: this.fb.control(null, [FormValidators.required('请选择')]),
applicant: this.fb.control({ value: this.api.authInfo?.userName, disabled: true }, [
FormValidators.required('请选择'),
]),
// businessGeneratedDate: this.fb.control(null, [FormValidators.required('请选择')]),
notes: this.fb.control(null, [FormValidators.required('请输入')]),
urgency: this.fb.control(1, []),
assetIdList: this.fb.control([], []),
img: this.fb.control(null, []),
})
this.patchValues()
}
patchValues() {
const { value: data, preview } = this.data
if (data) {
this.iconPreview = data.procVars?.img
this.formGroup.patchValue({
...data.procVars,
applyDepartmentId: data.procVars?.applyDepartmentId + '',
})
}
if (preview) {
this.formGroup.disable()
}
}
public getValues() {
let values = null
if (FormValidators.validateFormGroup(this.formGroup)) {
const v = this.formGroup.value
values = {
...v,
applyDepartmentId: Number(v.applyDepartmentId?.[0]),
}
}
return values
}
onFileChange(e: Event) {
const target = e.target as HTMLInputElement
const file = target.files![0]
target.value = ''
const formdata = new FormData()
formdata.append('file', file)
this.api.upload(formdata).subscribe((res) => {
this.formGroup.get('img')?.setValue(res.body.fileName)
})
}
}

95
web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-scrap/eam-asset-employee-scrap.component.html

@ -0,0 +1,95 @@
<div class="modal-lg-container">
<form nz-form [formGroup]="formGroup" nzLayout="vertical">
<div class="overflow-hidden">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>流程标题</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入流程标题" formControlName="title" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>报废方式</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-select nzPlaceHolder="请选择报废方式" formControlName="scrapType">
<nz-option nzLabel="损坏" [nzValue]="1"></nz-option>
<nz-option nzLabel="过期" [nzValue]="2"></nz-option>
<nz-option nzLabel="丢失" [nzValue]="3"></nz-option>
</nz-select>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>报废时间</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-date-picker class="w-full" nzPlaceHolder="请选择报废时间" formControlName="scrapTime" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>申请人</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入申请人" formControlName="applicant" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>紧急程度</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-radio-group formControlName="urgency">
<label nz-radio [nzValue]="1">普通</label>
<label nz-radio [nzValue]="2">紧急</label>
</nz-radio-group>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzRequired]="true">原因</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<textarea nz-input placeholder="请输入原因" formControlName="notes"></textarea>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label>附件</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<button class="upload-btn" nz-button [nzLoading]="uploadLoading">
<i nz-icon nzType="upload"></i>
选择文件
<input type="file" (change)="onFileChange($event)" />
</button>
@if (formGroup.get('attach')?.value) {
<div class="mt-1">
<nz-tag class="break-words w-full !whitespace-pre-wrap">
{{ formGroup.get('attach')?.value }}
</nz-tag>
</div>
}
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label>资产列表</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-asset-select formControlName="assetIdList" />
</nz-form-control>
</nz-form-item>
</div>
</div>
</div>
</form>
<ng-template #errorTpl let-control>
<form-error-tips [control]="control"></form-error-tips>
</ng-template>
</div>

0
web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-scrap/eam-asset-employee-scrap.component.less

108
web-admin-app/src/app/components/apply-asset-flow/eam-asset-employee-scrap/eam-asset-employee-scrap.component.ts

@ -0,0 +1,108 @@
import { Component, Input, OnInit, inject } from '@angular/core'
import { FormBuilder, FormGroup } from '@angular/forms'
import { ApiService } from 'app/services'
import { SharedModule } from 'app/shared/shared.module'
import { FormValidators, Utils } from 'app/utils'
import { NzMessageService } from 'ng-zorro-antd/message'
import { OrgSelectComponent } from '../../org-select/org-select.component'
import { SelectUserByOrgComponent } from '../../select-user-by-org/select-user-by-org.component'
import { PositionSelectComponent } from '../../position-select/position-select.component'
import { NzSafeAny } from 'ng-zorro-antd/core/types'
import { NZ_MODAL_DATA } from 'ng-zorro-antd/modal'
import { SupplierSelectComponent } from '../../supplier-select/supplier-select.component'
import { AssetSelectComponent } from '../../asset-select/asset-select.component'
import { WarehouseSelectComponent } from '../../warehouse-select/warehouse-select.component'
@Component({
selector: 'app-eam-asset-employee-scrap',
standalone: true,
imports: [
SharedModule,
SelectUserByOrgComponent,
SupplierSelectComponent,
AssetSelectComponent,
OrgSelectComponent,
PositionSelectComponent,
WarehouseSelectComponent,
],
templateUrl: './eam-asset-employee-scrap.component.html',
styleUrl: './eam-asset-employee-scrap.component.less',
})
export class EamAssetEmployeeScrapComponent {
constructor(
private fb: FormBuilder,
private api: ApiService,
private msg: NzMessageService,
) {}
readonly data: NzSafeAny = inject(NZ_MODAL_DATA)
formGroup!: FormGroup
groupIndex = 0
uploadLoading = false
iconPreview = ''
ngOnInit(): void {
this.formGroup = this.fb.group({
id: this.fb.control(null, []),
title: this.fb.control(this.data.value?.name, [FormValidators.required('请输入')]),
// useUserId: this.fb.control(null, [FormValidators.required('请选择')]),
scrapType: this.fb.control(null, [FormValidators.required('请选择')]),
scrapTime: this.fb.control(null, [FormValidators.required('请选择')]),
applicant: this.fb.control({ value: this.api.authInfo?.userName, disabled: true }, [
FormValidators.required('请选择'),
]),
// businessGeneratedDate: this.fb.control(null, [FormValidators.required('请选择')]),
notes: this.fb.control(null, [FormValidators.required('请输入')]),
urgency: this.fb.control(1, []),
assetIdList: this.fb.control([], []),
attach: this.fb.control(null, []),
})
this.patchValues()
}
patchValues() {
const { value: data, preview } = this.data
if (data) {
this.iconPreview = data.procVars?.img
this.formGroup.patchValue({
...data.procVars,
applyDepartmentId: data.procVars?.applyDepartmentId + '',
})
}
if (preview) {
this.formGroup.disable()
}
}
public getValues() {
let values = null
if (FormValidators.validateFormGroup(this.formGroup)) {
const v = this.formGroup.value
values = {
...v,
// applyDepartmentId: Number(v.applyDepartmentId?.[0]),
}
}
return values
}
onFileChange(e: Event) {
const target = e.target as HTMLInputElement
const file = target.files![0]
target.value = ''
const formdata = new FormData()
formdata.append('file', file)
this.api.upload(formdata).subscribe((res) => {
this.formGroup.get('attach')?.setValue(res.body.fileName)
})
}
}

105
web-admin-app/src/app/components/apply-asset-flow/eam-asset-equipment-repair/eam-asset-equipment-repair.component.html

@ -0,0 +1,105 @@
<div class="modal-lg-container">
<form nz-form [formGroup]="formGroup" nzLayout="vertical">
<div class="overflow-hidden">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>流程标题</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入流程标题" formControlName="title" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>紧急程度</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-radio-group formControlName="urgency">
<label nz-radio [nzValue]="1">普通</label>
<label nz-radio [nzValue]="2">紧急</label>
</nz-radio-group>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>报修部门</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-org-select formControlName="repairDepartmentId" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>报修人</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-select-user-by-org formControlName="repairer" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>维修类型</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-radio-group formControlName="repairType">
<label nz-radio [nzValue]="1">自修</label>
<label nz-radio [nzValue]="2">外部维修</label>
</nz-radio-group>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label>计划完成时间</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-date-picker
class="w-full"
nzPlaceHolder="请选择计划完成时间"
formControlName="planCompleteTime"
/>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzRequired]="true">报修内容</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<textarea nz-input placeholder="请输入报修内容" formControlName="content"></textarea>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label>图片</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input type="hidden" nz-input formControlName="img" />
<div class="mb-2" *ngIf="iconPreview">
<img [src]="iconPreview" class="h-20 w-20" />
</div>
<button class="upload-btn" nz-button [nzLoading]="uploadLoading">
<i nz-icon nzType="upload"></i>
上传图片
<input type="file" (change)="onFileChange($event)" accept=".jpg,.jpeg,.png" />
</button>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label>资产列表</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-asset-select formControlName="assetIdList" />
</nz-form-control>
</nz-form-item>
</div>
</div>
</div>
</form>
<ng-template #errorTpl let-control>
<form-error-tips [control]="control"></form-error-tips>
</ng-template>
</div>

0
web-admin-app/src/app/components/apply-asset-flow/eam-asset-equipment-repair/eam-asset-equipment-repair.component.less

113
web-admin-app/src/app/components/apply-asset-flow/eam-asset-equipment-repair/eam-asset-equipment-repair.component.ts

@ -0,0 +1,113 @@
import { Component, Input, OnInit, inject } from '@angular/core'
import { FormBuilder, FormGroup } from '@angular/forms'
import { ApiService } from 'app/services'
import { SharedModule } from 'app/shared/shared.module'
import { FormValidators, Utils } from 'app/utils'
import { NzMessageService } from 'ng-zorro-antd/message'
import { OrgSelectComponent } from '../../org-select/org-select.component'
import { SelectUserByOrgComponent } from '../../select-user-by-org/select-user-by-org.component'
import { PositionSelectComponent } from '../../position-select/position-select.component'
import { NzSafeAny } from 'ng-zorro-antd/core/types'
import { NZ_MODAL_DATA } from 'ng-zorro-antd/modal'
import { SupplierSelectComponent } from '../../supplier-select/supplier-select.component'
import { AssetSelectComponent } from '../../asset-select/asset-select.component'
import { WarehouseSelectComponent } from '../../warehouse-select/warehouse-select.component'
@Component({
selector: 'app-eam-asset-equipment-repair',
standalone: true,
imports: [
SharedModule,
SelectUserByOrgComponent,
SupplierSelectComponent,
AssetSelectComponent,
OrgSelectComponent,
PositionSelectComponent,
WarehouseSelectComponent,
],
templateUrl: './eam-asset-equipment-repair.component.html',
styleUrl: './eam-asset-equipment-repair.component.less',
})
export class EamAssetEquipmentRepairComponent {
constructor(
private fb: FormBuilder,
private api: ApiService,
private msg: NzMessageService,
) {}
readonly data: NzSafeAny = inject(NZ_MODAL_DATA)
formGroup!: FormGroup
groupIndex = 0
uploadLoading = false
iconPreview = ''
ngOnInit(): void {
this.formGroup = this.fb.group({
id: this.fb.control(null, []),
title: this.fb.control(this.data.value?.name, [FormValidators.required('请输入')]),
repairDepartmentId: this.fb.control(null, [FormValidators.required('请选择')]),
applicant: this.fb.control({ value: this.api.authInfo?.userName, disabled: true }, [
FormValidators.required('请选择'),
]),
urgency: this.fb.control(1, []),
assetIdList: this.fb.control([], []),
img: this.fb.control(null, []),
planCompleteTime: this.fb.control(null),
content: this.fb.control(null, [FormValidators.required('请输入')]),
repairer: this.fb.control(null, [FormValidators.required('请选择')]),
repairType: this.fb.control(1, [FormValidators.required('请选择')]),
// businessGeneratedDate: this.fb.control(null, [FormValidators.required('请选择')]),
notes: this.fb.control(null, []),
})
this.patchValues()
}
patchValues() {
const { value: data, preview } = this.data
if (data) {
this.iconPreview = data.procVars?.img
this.formGroup.patchValue({
...data.procVars,
repairDepartmentId: data.procVars?.repairDepartmentId + '',
})
}
if (preview) {
this.formGroup.disable()
}
}
public getValues() {
let values = null
if (FormValidators.validateFormGroup(this.formGroup)) {
const v = this.formGroup.value
values = {
...v,
repairer: Number(v.repairer?.[0]),
applyDepartmentId: Number(v.applyDepartmentId?.[0]),
}
}
return values
}
onFileChange(e: Event) {
const target = e.target as HTMLInputElement
const file = target.files![0]
target.value = ''
const formdata = new FormData()
formdata.append('file', file)
this.api.upload(formdata).subscribe((res) => {
this.formGroup.get('img')?.setValue(res.body.fileName)
})
}
}

139
web-admin-app/src/app/components/apply-asset-flow/eam-asset-purchase-apply/eam-asset-purchase-apply.component.html

@ -0,0 +1,139 @@
<div class="modal-lg-container">
<form nz-form [formGroup]="formGroup" nzLayout="vertical">
<div class="overflow-hidden">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>流程标题</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入流程标题" formControlName="title" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>申请部门</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-org-select formControlName="applyDepartmentId" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>申请人</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入申请人" formControlName="applicant" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>紧急程度</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-radio-group formControlName="urgency">
<label nz-radio [nzValue]="1">普通</label>
<label nz-radio [nzValue]="2">紧急</label>
</nz-radio-group>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>业务名称</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入流程标题" formControlName="businessName" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label>采购人</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-select-user-by-org formControlName="purchase" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label>采购日期</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-date-picker
class="w-full"
nzPlaceHolder="请选择采购日期"
formControlName="purchaseTime"
/>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label>供应商</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-supplier-select formControlName="supplier" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label>到货日期</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-date-picker
class="w-full"
nzPlaceHolder="请选择到货日期"
formControlName="arrivalTime"
/>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzRequired]="true">说明</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<textarea nz-input placeholder="请输入说明" formControlName="desc"></textarea>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label>备注</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<textarea nz-input placeholder="请输入原因" formControlName="notes"></textarea>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label>附件</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<button class="upload-btn" nz-button [nzLoading]="uploadLoading">
<i nz-icon nzType="upload"></i>
选择文件
<input type="file" (change)="onFileChange($event)" />
</button>
@if (formGroup.get('attach')?.value) {
<div class="mt-1">
<nz-tag class="break-words w-full !whitespace-pre-wrap">
{{ formGroup.get('attach')?.value }}
</nz-tag>
</div>
}
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label>资产列表</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-asset-select formControlName="assetIdList" />
</nz-form-control>
</nz-form-item>
</div>
</div>
</div>
</form>
<ng-template #errorTpl let-control>
<form-error-tips [control]="control"></form-error-tips>
</ng-template>
</div>

0
web-admin-app/src/app/components/apply-asset-flow/eam-asset-purchase-apply/eam-asset-purchase-apply.component.less

114
web-admin-app/src/app/components/apply-asset-flow/eam-asset-purchase-apply/eam-asset-purchase-apply.component.ts

@ -0,0 +1,114 @@
import { Component, Input, OnInit, inject } from '@angular/core'
import { FormBuilder, FormGroup } from '@angular/forms'
import { ApiService } from 'app/services'
import { SharedModule } from 'app/shared/shared.module'
import { FormValidators, Utils } from 'app/utils'
import { NzMessageService } from 'ng-zorro-antd/message'
import { OrgSelectComponent } from '../../org-select/org-select.component'
import { SelectUserByOrgComponent } from '../../select-user-by-org/select-user-by-org.component'
import { PositionSelectComponent } from '../../position-select/position-select.component'
import { NzSafeAny } from 'ng-zorro-antd/core/types'
import { NZ_MODAL_DATA } from 'ng-zorro-antd/modal'
import { SupplierSelectComponent } from '../../supplier-select/supplier-select.component'
import { AssetSelectComponent } from '../../asset-select/asset-select.component'
import { WarehouseSelectComponent } from '../../warehouse-select/warehouse-select.component'
@Component({
selector: 'app-eam-asset-purchase-apply',
standalone: true,
imports: [
SharedModule,
SelectUserByOrgComponent,
SupplierSelectComponent,
AssetSelectComponent,
OrgSelectComponent,
PositionSelectComponent,
WarehouseSelectComponent,
],
templateUrl: './eam-asset-purchase-apply.component.html',
styleUrl: './eam-asset-purchase-apply.component.less',
})
export class EamAssetPurchaseApplyComponent {
constructor(
private fb: FormBuilder,
private api: ApiService,
private msg: NzMessageService,
) {}
readonly data: NzSafeAny = inject(NZ_MODAL_DATA)
formGroup!: FormGroup
groupIndex = 0
uploadLoading = false
iconPreview = ''
ngOnInit(): void {
this.formGroup = this.fb.group({
id: this.fb.control(null, []),
title: this.fb.control(this.data.value?.name, [FormValidators.required('请输入')]),
businessName: this.fb.control('', [FormValidators.required('请输入')]),
applyDepartmentId: this.fb.control(null, [FormValidators.required('请选择')]),
// useUserId: this.fb.control(null, [FormValidators.required('请选择')]),
purchaseTime: this.fb.control(null, []),
purchase: this.fb.control(null, []),
arrivalTime: this.fb.control(null),
supplier: this.fb.control(null),
applicant: this.fb.control({ value: this.api.authInfo?.userName, disabled: true }, [
FormValidators.required('请选择'),
]),
// businessGeneratedDate: this.fb.control(null, [FormValidators.required('请选择')]),
desc: this.fb.control(null, [FormValidators.required('请输入')]),
notes: this.fb.control(null, []),
urgency: this.fb.control(1, []),
assetIdList: this.fb.control([], []),
attach: this.fb.control(null, []),
})
this.patchValues()
}
patchValues() {
const { value: data, preview } = this.data
if (data) {
this.iconPreview = data.procVars?.img
this.formGroup.patchValue({
...data.procVars,
applyDepartmentId: data.procVars?.applyDepartmentId + '',
})
}
if (preview) {
this.formGroup.disable()
}
}
public getValues() {
let values = null
if (FormValidators.validateFormGroup(this.formGroup)) {
const v = this.formGroup.value
values = {
...v,
purchase: Number(v.purchase?.[0]),
applyDepartmentId: Number(v.applyDepartmentId?.[0]),
}
}
return values
}
onFileChange(e: Event) {
const target = e.target as HTMLInputElement
const file = target.files![0]
target.value = ''
const formdata = new FormData()
formdata.append('file', file)
this.api.upload(formdata).subscribe((res) => {
this.formGroup.get('attach')?.setValue(res.body.fileName)
})
}
}

57
web-admin-app/src/app/components/apply-asset-flow/eam-asset-stock-goods-use/eam-asset-stock-goods-use.component.html

@ -0,0 +1,57 @@
<div class="modal-lg-container">
<form nz-form [formGroup]="formGroup" nzLayout="vertical">
<div class="overflow-hidden">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>流程标题</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入流程标题" formControlName="title" />
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>业务日期</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-date-picker class="w-full" formControlName="businessDate"></nz-date-picker>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="6">
<nz-form-item>
<nz-form-label nzRequired>紧急程度</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-radio-group formControlName="urgency">
<label nz-radio [nzValue]="1">普通</label>
<label nz-radio [nzValue]="2">紧急</label>
</nz-radio-group>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label [nzRequired]="true">领用说明</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<textarea nz-input placeholder="请输入领用说明" formControlName="notes"></textarea>
</nz-form-control>
</nz-form-item>
</div>
<div nz-col [nzSpan]="24">
<nz-form-item>
<nz-form-label>资产列表</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<app-asset-select formControlName="assetIdList" />
</nz-form-control>
</nz-form-item>
</div>
</div>
</div>
</form>
<ng-template #errorTpl let-control>
<form-error-tips [control]="control"></form-error-tips>
</ng-template>
</div>

0
web-admin-app/src/app/components/apply-asset-flow/eam-asset-stock-goods-use/eam-asset-stock-goods-use.component.less

103
web-admin-app/src/app/components/apply-asset-flow/eam-asset-stock-goods-use/eam-asset-stock-goods-use.component.ts

@ -0,0 +1,103 @@
import { Component, Input, OnInit, inject } from '@angular/core'
import { FormBuilder, FormGroup } from '@angular/forms'
import { ApiService } from 'app/services'
import { SharedModule } from 'app/shared/shared.module'
import { FormValidators, Utils } from 'app/utils'
import { NzMessageService } from 'ng-zorro-antd/message'
import { OrgSelectComponent } from '../../org-select/org-select.component'
import { SelectUserByOrgComponent } from '../../select-user-by-org/select-user-by-org.component'
import { PositionSelectComponent } from '../../position-select/position-select.component'
import { NzSafeAny } from 'ng-zorro-antd/core/types'
import { NZ_MODAL_DATA } from 'ng-zorro-antd/modal'
import { SupplierSelectComponent } from '../../supplier-select/supplier-select.component'
import { AssetSelectComponent } from '../../asset-select/asset-select.component'
import { WarehouseSelectComponent } from '../../warehouse-select/warehouse-select.component'
@Component({
selector: 'app-eam-asset-stock-goods-use',
standalone: true,
imports: [
SharedModule,
SelectUserByOrgComponent,
SupplierSelectComponent,
AssetSelectComponent,
OrgSelectComponent,
PositionSelectComponent,
WarehouseSelectComponent,
],
templateUrl: './eam-asset-stock-goods-use.component.html',
styleUrl: './eam-asset-stock-goods-use.component.less',
})
export class EamAssetStockGoodsUseComponent {
constructor(
private fb: FormBuilder,
private api: ApiService,
private msg: NzMessageService,
) {}
readonly data: NzSafeAny = inject(NZ_MODAL_DATA)
formGroup!: FormGroup
groupIndex = 0
uploadLoading = false
ngOnInit(): void {
console.log('this.data', this.data)
this.formGroup = this.fb.group({
id: this.fb.control(null, []),
title: this.fb.control(this.data.value?.name, [FormValidators.required('请输入')]),
// useUserId: this.fb.control(null, [FormValidators.required('请选择')]),
businessDate: this.fb.control(null, [FormValidators.required('请选择')]),
// applicant: this.fb.control({ value: this.api.authInfo?.userName, disabled: true }, [
// FormValidators.required('请选择'),
// ]),
// businessGeneratedDate: this.fb.control(null, [FormValidators.required('请选择')]),
notes: this.fb.control(null, [FormValidators.required('请输入')]),
urgency: this.fb.control(1, []),
})
this.patchValues()
}
patchValues() {
const { value: data, preview } = this.data
if (data) {
this.formGroup.patchValue({
...data.procVars,
applyDepartmentId: data.procVars?.applyDepartmentId + '',
})
}
if (preview) {
this.formGroup.disable()
}
}
public getValues() {
let values = null
if (FormValidators.validateFormGroup(this.formGroup)) {
const v = this.formGroup.value
values = {
...v,
applyDepartmentId: Number(v.applyDepartmentId?.[0]),
}
}
return values
}
onFileChange(e: Event) {
const target = e.target as HTMLInputElement
const file = target.files![0]
target.value = ''
const formdata = new FormData()
formdata.append('file', file)
this.api.upload(formdata).subscribe((res) => {
this.formGroup.get('attach')?.setValue(res.body.fileName)
})
}
}

9
web-admin-app/src/app/components/index.ts

@ -27,4 +27,11 @@ export * from './repair-fault-form/repair-fault-form.component'
export * from './position-tree/position-tree.component' export * from './position-tree/position-tree.component'
export * from './stocktaking-detail-form/stocktaking-detail-form.component' export * from './stocktaking-detail-form/stocktaking-detail-form.component'
export * from './apply-asset-flow/apply-asset-flow.component' export * from './apply-asset-flow/asset-employee-apply/asset-employee-apply.component'
export * from './apply-asset-flow/asset-employee-loss/asset-employee-loss.component'
export * from './apply-asset-flow/eam-asset-employee-repair/eam-asset-employee-repair.component'
export * from './apply-asset-flow/eam-asset-employee-scrap/eam-asset-employee-scrap.component'
export * from './apply-asset-flow/eam-asset-purchase-apply/eam-asset-purchase-apply.component'
export * from './apply-asset-flow/eam-asset-employee-handover/eam-asset-employee-handover.component'
export * from './apply-asset-flow/eam-asset-equipment-repair/eam-asset-equipment-repair.component'
export * from './apply-asset-flow/eam-asset-stock-goods-use/eam-asset-stock-goods-use.component'

6
web-admin-app/src/app/pages/flow/flow-main/flow-main.component.html

@ -23,7 +23,11 @@
</div> </div>
</div> </div>
<ng-template #actionSetting> <ng-template #actionSetting>
<div (click)="onStart(item)">发起流程</div> @if (item.enabled) {
<div (click)="onStart(item)">发起流程</div>
} @else {
<div>没有表单</div>
}
</ng-template> </ng-template>
</nz-card> </nz-card>
</div> </div>

37
web-admin-app/src/app/pages/flow/flow-main/flow-main.component.ts

@ -1,5 +1,14 @@
import { Component, OnInit } from '@angular/core' import { Component, OnInit } from '@angular/core'
import { ApplyAssetFlowComponent } from 'app/components' import {
AssetEmployeeApplyComponent,
AssetEmployeeLossComponent,
EamAssetEmployeeHandoverComponent,
EamAssetEmployeeRepairComponent,
EamAssetEmployeeScrapComponent,
EamAssetEquipmentRepairComponent,
EamAssetPurchaseApplyComponent,
EamAssetStockGoodsUseComponent,
} from 'app/components'
import { ApiService } from 'app/services' import { ApiService } from 'app/services'
import { SharedModule } from 'app/shared/shared.module' import { SharedModule } from 'app/shared/shared.module'
import { NzSafeAny } from 'ng-zorro-antd/core/types' import { NzSafeAny } from 'ng-zorro-antd/core/types'
@ -7,6 +16,17 @@ import { NzMessageService } from 'ng-zorro-antd/message'
import { NzModalService } from 'ng-zorro-antd/modal' import { NzModalService } from 'ng-zorro-antd/modal'
import { finalize, lastValueFrom } from 'rxjs' import { finalize, lastValueFrom } from 'rxjs'
export const comsMap: Record<string, NzSafeAny> = {
eam_asset_employee_apply: AssetEmployeeApplyComponent,
eam_asset_employee_loss: AssetEmployeeLossComponent,
eam_asset_employee_repair: EamAssetEmployeeRepairComponent,
eam_asset_scrap: EamAssetEmployeeScrapComponent,
eam_asset_purchase_apply: EamAssetPurchaseApplyComponent,
eam_asset_equipment_repair: EamAssetEquipmentRepairComponent,
eam_asset_employee_handover: EamAssetEmployeeHandoverComponent,
eam_asset_stock_goods_use: EamAssetStockGoodsUseComponent,
}
@Component({ @Component({
selector: 'app-flow-main', selector: 'app-flow-main',
standalone: true, standalone: true,
@ -35,25 +55,26 @@ export class FlowMainComponent implements OnInit {
}), }),
) )
.subscribe((res) => { .subscribe((res) => {
this.assetFlows = res.body this.assetFlows = res.body.map((i: NzSafeAny) => {
return {
...i,
enabled: Boolean(comsMap[i.formKey as keyof typeof comsMap]),
}
})
}) })
} }
comsMap = {
eam_asset_employee_apply: ApplyAssetFlowComponent,
}
onStart(model: NzSafeAny) { onStart(model: NzSafeAny) {
this.modal.create({ this.modal.create({
nzTitle: '开始流程', nzTitle: '开始流程',
nzContent: this.comsMap[model.formKey as keyof typeof this.comsMap], nzContent: comsMap[model.formKey as keyof typeof comsMap],
nzWrapClassName: 'modal-lg', nzWrapClassName: 'modal-lg',
nzWidth: '80vw', nzWidth: '80vw',
nzData: { nzData: {
value: model, value: model,
preview: false, preview: false,
}, },
nzOnOk: async (e) => { nzOnOk: async (e: NzSafeAny) => {
const vals = e.getValues() const vals = e.getValues()
if (vals) { if (vals) {
const res = await lastValueFrom(this.api.startFlow(vals, model.formKey)) const res = await lastValueFrom(this.api.startFlow(vals, model.formKey))

23
web-admin-app/src/app/pages/flow/flow-my-apply/flow-my-apply.component.html

@ -6,6 +6,14 @@
@case ('_assignee') { @case ('_assignee') {
<nz-tag> {{ data.userName }} </nz-tag> <nz-tag> {{ data.userName }} </nz-tag>
} }
@case ('procVars') {
{{ data.title }}
}
@case ('urgency') {
<nz-tag>
{{ data === 2 ? '紧急' : '普通' }}
</nz-tag>
}
@default { @default {
{{ data }} {{ data }}
} }
@ -14,18 +22,3 @@
</app-server-paginated-table> </app-server-paginated-table>
</div> </div>
</app-page> </app-page>
<ng-template #createFormTpl>
<form nz-form [formGroup]="createForm">
<nz-form-item>
<nz-form-label [nzSpan]="6" [nzRequired]="true">审批人</nz-form-label>
<nz-form-control [nzSpan]="12" [nzErrorTip]="errorTpl">
<app-select-user-by-org formControlName="userId" />
</nz-form-control>
</nz-form-item>
</form>
</ng-template>
<ng-template #errorTpl let-control>
<form-error-tips [control]="control"></form-error-tips>
</ng-template>

59
web-admin-app/src/app/pages/flow/flow-my-apply/flow-my-apply.component.ts

@ -10,6 +10,7 @@ import { NzSafeAny } from 'ng-zorro-antd/core/types'
import { NzModalService } from 'ng-zorro-antd/modal' import { NzModalService } from 'ng-zorro-antd/modal'
import { NzMessageService } from 'ng-zorro-antd/message' import { NzMessageService } from 'ng-zorro-antd/message'
import { FormValidators } from 'app/utils' import { FormValidators } from 'app/utils'
import { AssetEmployeeApplyComponent } from 'app/components'
@Component({ @Component({
selector: 'app-flow-my-apply', selector: 'app-flow-my-apply',
@ -41,50 +42,46 @@ export class FlowMyApplyComponent {
// rowKey: 'id', // rowKey: 'id',
// }) // })
.setColumn([ .setColumn([
{ key: 'taskName', title: '标识', visible: true }, { key: 'procVars', title: '名称', visible: true },
{ key: 'name', title: '名称', visible: true }, // { key: 'status', title: '审批状态', visible: true },
{ key: 'status', title: '审批状态', visible: true }, { key: 'urgency', title: '紧急程度', visible: true },
{ key: 'category', title: '流程类型', visible: true }, { key: 'procDefName', title: '流程类型', visible: true },
{ key: 'assigneeName', title: '审批人', visible: true }, { key: 'assigneeName', title: '审批人', visible: true },
{ key: 'createTime', title: '提交时间', visible: true }, { key: 'createTime', title: '提交时间', visible: true },
// { key: 'createTime', title: '作废时间', visible: true }, // { key: 'createTime', title: '作废时间', visible: true },
// { key: 'createTime', title: '完成时间', visible: true }, // { key: 'createTime', title: '完成时间', visible: true },
]) ])
.setRowOperate([{ title: '详情' }, { title: '作废' }]) .setRowOperate([
{ title: '查看', onClick: this.onDetail.bind(this) },
{ title: '作废', onClick: this.cancleFlow.bind(this) },
])
} }
fetchData(p: {}, q: AnyObject) { fetchData(p: {}, q: AnyObject) {
return this.api.getMyApplyAssetFlow({ ...p, ...q }) return this.api.getMyApplyAssetFlow({ ...p, ...q })
} }
onSetApprover(data?: NzSafeAny) { onDetail(model: NzSafeAny) {
if (data) {
console.log('data._assignee.userId', data._assignee.userId)
this.createForm.patchValue({
userId: data._assignee.userId ? [data._assignee.userId] : [],
})
}
this.modal.create({ this.modal.create({
nzTitle: '设置审批人', nzTitle: '查看任务',
nzContent: this.createFormTpl, nzContent: AssetEmployeeApplyComponent,
nzOnOk: async () => { nzWrapClassName: 'modal-lg',
if (FormValidators.validateFormGroup(this.createForm)) { nzWidth: '80vw',
const vals = this.createForm.value nzData: {
const res = await lastValueFrom( value: model,
this.api.setFlowFormsAssignee({ preview: true,
...vals,
userId: vals.userId?.[0],
}),
)
this.msg.success(res.desc)
this.table.ref.reload()
this.createForm.reset()
return true
}
return false
}, },
nzOnCancel: () => { })
this.createForm.reset() }
cancleFlow() {
this.modal.confirm({
nzTitle: '作废',
nzContent: '是否要作废该申请?',
nzOnOk: async () => {
const res = await lastValueFrom(this.api.deleteAssetFlow({}))
this.msg.success('作废成功')
this.table.ref.reload()
}, },
}) })
} }

23
web-admin-app/src/app/pages/flow/flow-my-finished/flow-my-finished.component.html

@ -6,6 +6,14 @@
@case ('_assignee') { @case ('_assignee') {
<nz-tag> {{ data.userName }} </nz-tag> <nz-tag> {{ data.userName }} </nz-tag>
} }
@case ('procVars') {
{{ data.title }}
}
@case ('urgency') {
<nz-tag>
{{ data === 2 ? '紧急' : '普通' }}
</nz-tag>
}
@default { @default {
{{ data }} {{ data }}
} }
@ -14,18 +22,3 @@
</app-server-paginated-table> </app-server-paginated-table>
</div> </div>
</app-page> </app-page>
<ng-template #createFormTpl>
<form nz-form [formGroup]="createForm">
<nz-form-item>
<nz-form-label [nzSpan]="6" [nzRequired]="true">审批人</nz-form-label>
<nz-form-control [nzSpan]="12" [nzErrorTip]="errorTpl">
<app-select-user-by-org formControlName="userId" />
</nz-form-control>
</nz-form-item>
</form>
</ng-template>
<ng-template #errorTpl let-control>
<form-error-tips [control]="control"></form-error-tips>
</ng-template>

10
web-admin-app/src/app/pages/flow/flow-my-finished/flow-my-finished.component.ts

@ -41,16 +41,16 @@ export class FlowMyFinishedComponent {
// rowKey: 'id', // rowKey: 'id',
// }) // })
.setColumn([ .setColumn([
{ key: 'taskName', title: '标识', visible: true }, { key: 'procVars', title: '名称', visible: true },
{ key: 'name', title: '名称', visible: true }, // { key: 'status', title: '审批状态', visible: true },
{ key: 'status', title: '审批状态', visible: true }, { key: 'urgency', title: '紧急程度', visible: true },
{ key: 'category', title: '流程类型', visible: true }, { key: 'procDefName', title: '流程类型', visible: true },
{ key: 'assigneeName', title: '审批人', visible: true }, { key: 'assigneeName', title: '审批人', visible: true },
{ key: 'createTime', title: '提交时间', visible: true }, { key: 'createTime', title: '提交时间', visible: true },
// { key: 'createTime', title: '作废时间', visible: true }, // { key: 'createTime', title: '作废时间', visible: true },
// { key: 'createTime', title: '完成时间', visible: true }, // { key: 'createTime', title: '完成时间', visible: true },
]) ])
.setRowOperate([{ title: '详情' }, { title: '作废' }]) .setRowOperate([{ title: '详情' }])
} }
fetchData(p: {}, q: AnyObject) { fetchData(p: {}, q: AnyObject) {

23
web-admin-app/src/app/pages/flow/flow-my-todo/flow-my-todo.component.html

@ -6,6 +6,14 @@
@case ('_assignee') { @case ('_assignee') {
<nz-tag> {{ data.userName }} </nz-tag> <nz-tag> {{ data.userName }} </nz-tag>
} }
@case ('procVars') {
{{ data.title }}
}
@case ('urgency') {
<nz-tag>
{{ data === 2 ? '紧急' : '普通' }}
</nz-tag>
}
@default { @default {
{{ data }} {{ data }}
} }
@ -14,18 +22,3 @@
</app-server-paginated-table> </app-server-paginated-table>
</div> </div>
</app-page> </app-page>
<ng-template #createFormTpl>
<form nz-form [formGroup]="createForm">
<nz-form-item>
<nz-form-label [nzSpan]="6" [nzRequired]="true">审批人</nz-form-label>
<nz-form-control [nzSpan]="12" [nzErrorTip]="errorTpl">
<app-select-user-by-org formControlName="userId" />
</nz-form-control>
</nz-form-item>
</form>
</ng-template>
<ng-template #errorTpl let-control>
<form-error-tips [control]="control"></form-error-tips>
</ng-template>

10
web-admin-app/src/app/pages/flow/flow-my-todo/flow-my-todo.component.ts

@ -41,11 +41,11 @@ export class FlowMyTodoComponent {
// rowKey: 'id', // rowKey: 'id',
// }) // })
.setColumn([ .setColumn([
{ key: 'taskName', title: '标识', visible: true }, { key: 'procVars', title: '名称', visible: true },
{ key: 'name', title: '名称', visible: true }, // { key: 'status', title: '审批状态', visible: true },
{ key: 'status', title: '审批状态', visible: true }, { key: 'urgency', title: '紧急程度', visible: true },
{ key: 'category', title: '流程类型', visible: true }, { key: 'procDefName', title: '流程类型', visible: true },
{ key: 'assigneeName', title: '审批人', visible: true }, // { key: 'assigneeName', title: '审批人', visible: true },
{ key: 'createTime', title: '提交时间', visible: true }, { key: 'createTime', title: '提交时间', visible: true },
// { key: 'createTime', title: '作废时间', visible: true }, // { key: 'createTime', title: '作废时间', visible: true },
// { key: 'createTime', title: '完成时间', visible: true }, // { key: 'createTime', title: '完成时间', visible: true },

3
web-admin-app/src/app/services/api.service.ts

@ -483,6 +483,9 @@ export class ApiService {
getMyApplyAssetFlow(data: {}) { getMyApplyAssetFlow(data: {}) {
return this.http.post<JwResponse>(`/api/flowable/task/myProcess`, data) return this.http.post<JwResponse>(`/api/flowable/task/myProcess`, data)
} }
deleteAssetFlow(data: {}) {
return this.http.post<JwResponse>(`/api/flowable/task/delete`, data)
}
getMyTodoAssetFlow(data: {}) { getMyTodoAssetFlow(data: {}) {
return this.http.post<JwResponse>(`/api/flowable/task/todoList`, data) return this.http.post<JwResponse>(`/api/flowable/task/todoList`, data)
} }

5
web-admin-app/src/styles.less

@ -71,6 +71,11 @@ body {
// padding: 0; // padding: 0;
// } // }
} }
.modal-lg-container {
height: 70vh;
overflow: auto;
}
} }
.upload-btn { .upload-btn {

Loading…
Cancel
Save