Browse Source

bug & 优化

main
kely 10 months ago
parent
commit
e4030628f9
  1. 11
      web-admin-app/src/app/app.routes.ts
  2. 2
      web-admin-app/src/app/components/apply-asset-flow/eam-asset-purchase-apply/eam-asset-purchase-apply.component.html
  3. 8
      web-admin-app/src/app/components/apply-asset-flow/flow-result/flow-result.component.html
  4. 5
      web-admin-app/src/app/components/asset-select/asset-select.component.html
  5. 28
      web-admin-app/src/app/components/asset-select/asset-select.component.ts
  6. 2
      web-admin-app/src/app/components/component-basic-category-tree/component-basic-category-tree.component.html
  7. 28
      web-admin-app/src/app/pages/fixed-asset/fixed-asset.component.html
  8. 6
      web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-myown/fixed-asset-myown.component.html
  9. 22
      web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-myown/fixed-asset-myown.component.ts
  10. 2
      web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-position/fixed-asset-position.component.html
  11. 2
      web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-storage/fixed-asset-storage.component.ts
  12. 2
      web-admin-app/src/app/pages/fixed-asset/manage/fixed-asset-manage/fixed-asset-manage.component.html
  13. 11
      web-admin-app/src/app/pages/flow/flow-my-todo/flow-my-todo.component.html
  14. 33
      web-admin-app/src/app/pages/flow/flow-my-todo/flow-my-todo.component.ts

11
web-admin-app/src/app/app.routes.ts

@ -320,11 +320,7 @@ export const routes: Routes = [
redirectTo: 'list',
pathMatch: 'full',
},
{
path: 'type',
component: RepairTypeComponent,
title: '维修类型',
},
{
path: 'list',
component: RepairListComponent,
@ -402,6 +398,11 @@ export const routes: Routes = [
pathMatch: 'full',
redirectTo: 'goods-stock',
},
{
path: 'repair-type',
component: RepairTypeComponent,
title: '维修类型',
},
{
path: 'goods-stock',
component: BasicGoodsStockComponent,

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

@ -42,7 +42,7 @@
<nz-form-item>
<nz-form-label nzRequired>业务名称</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input nz-input placeholder="请输入流程标题" formControlName="businessName" />
<input nz-input placeholder="请输入业务名称" formControlName="businessName" />
</nz-form-control>
</nz-form-item>
</div>

8
web-admin-app/src/app/components/apply-asset-flow/flow-result/flow-result.component.html

@ -6,12 +6,14 @@
<nz-timeline-item [nzDot]="item.finishTime ? undefined : dotTemplate">
<div>
{{ item.createTime }}
<span>
{{ item.comment?.comment }}
</span>
</div>
<div>任务名称:{{ item.taskName }}</div>
<div>审批人:{{ item?.assigneeName ?? '-' }}</div>
<div>
审批意见:<span>
{{ item.comment?.comment ?? '-' }}
</span>
</div>
@if (item.finishTime) {
<div>
<span> 流程完成时间:{{ item.finishTime }} </span>

5
web-admin-app/src/app/components/asset-select/asset-select.component.html

@ -127,10 +127,10 @@
<tbody>
<tr *ngFor="let data of basicTable.data">
<td
[nzChecked]="setOfCheckedId.has(data.assetId)"
[nzChecked]="setOfCheckedId.has(data.key)"
[nzDisabled]="data.disabled"
[nzLabel]="data.name"
(nzCheckedChange)="onItemChecked(data.assetId, $event)"
(nzCheckedChange)="onItemChecked(data.key, $event)"
></td>
<td>{{ data.assetCode }}</td>
@ -146,6 +146,7 @@
[nzMax]="storage ? undefined : data.max"
[nzDisabled]="disabled"
[(ngModel)]="data.count"
(ngModelChange)="onCountChange()"
/>
</td>
<td>{{ data.model }}</td>

28
web-admin-app/src/app/components/asset-select/asset-select.component.ts

@ -26,7 +26,7 @@ import { ASSET_SOURCE_MAP, ASSET_STATUS_MAP, MAX_PAGE_SIZE } from 'app/constants
import { AnyObject, TableOption } from 'app/shared/components/server-paginated-table'
import { PositionSelectComponent } from '../position-select/position-select.component'
import { ManufacturerSelectComponent } from '../manufacturer-select/manufacturer-select.component'
import { tap } from 'rxjs'
import { map, tap } from 'rxjs'
@Component({
selector: 'app-asset-select',
@ -99,7 +99,7 @@ export class AssetSelectComponent {
this.table
.setConfig({
selectable: true,
rowKey: 'assetId',
rowKey: 'key',
radio: this.radio,
noneCache: true,
})
@ -115,10 +115,12 @@ export class AssetSelectComponent {
fetchData(p: {}, q: AnyObject) {
const fn = this.storage ? 'getAeamBusinessStorageList' : 'getAssetStroagePage'
return this.api[fn]({ ...p, ...q }).pipe(
tap((res) => {
map((res) => {
res.body.rows.forEach((item: NzSafeAny) => {
this.allGetedDataMap.set(item.assetId, item)
item['key'] = item.assetId + '_' + item.warehouseId
this.allGetedDataMap.set(item.key, item)
})
return res
}),
)
}
@ -134,8 +136,8 @@ export class AssetSelectComponent {
this.selectedDataList = []
}
this.allGetedDataMap.forEach((i: NzSafeAny) => {
if (this.table.ref.selected.has(String(i.assetId))) {
if (!this.selectedDataList.some((s) => s.assetId === i.assetId)) {
if (this.table.ref.selected.has(String(i.key))) {
if (!this.selectedDataList.some((s) => s.key === i.key)) {
this.selectedDataList.push({ ...i, count: i.count === 0 ? 0 : 1, max: i.count })
}
}
@ -148,11 +150,15 @@ export class AssetSelectComponent {
}
onRemove() {
this.selectedDataList = this.selectedDataList.filter((i) => !this.setOfCheckedId.has(i.assetId))
this.selectedDataList = this.selectedDataList.filter((i) => !this.setOfCheckedId.has(i.key))
this.refreshCheckedStatus()
this.onChange(this.selectedDataList)
}
onCountChange() {
this.onChange(this.selectedDataList)
}
updateCheckedSet(id: number, checked: boolean): void {
if (checked) {
this.setOfCheckedId.add(id)
@ -163,9 +169,8 @@ export class AssetSelectComponent {
refreshCheckedStatus(): void {
const listOfEnabledData = this.selectedDataList.filter(({ disabled }) => !disabled)
this.checkedAll = listOfEnabledData.every(({ assetId }) => this.setOfCheckedId.has(assetId))
this.indeterminate =
listOfEnabledData.some(({ assetId }) => this.setOfCheckedId.has(assetId)) && !this.checkedAll
this.checkedAll = listOfEnabledData.every(({ key }) => this.setOfCheckedId.has(key))
this.indeterminate = listOfEnabledData.some(({ key }) => this.setOfCheckedId.has(key)) && !this.checkedAll
}
onItemChecked(id: number, checked: boolean): void {
@ -176,7 +181,7 @@ export class AssetSelectComponent {
onAllChecked(checked: boolean): void {
this.selectedDataList
.filter(({ disabled }) => !disabled)
.forEach(({ assetId }) => this.updateCheckedSet(assetId, checked))
.forEach(({ key }) => this.updateCheckedSet(key, checked))
this.refreshCheckedStatus()
}
@ -195,6 +200,7 @@ export class AssetSelectComponent {
// const ids = vals.map((i: NzSafeAny) => i.assetId)
this.api.getAssetStorageListByIds(vals).subscribe((res) => {
this.selectedDataList = res.body.rows.map((item: NzSafeAny) => {
item['key'] = item.assetId + '_' + item.warehouseId
this.allGetedDataMap.set(item.assetId, item)
return item
})

2
web-admin-app/src/app/components/component-basic-category-tree/component-basic-category-tree.component.html

@ -40,6 +40,7 @@
}
<span class="ml-2 overflow-hidden text-ellipsis">{{ node.title }}</span>
</div>
@if (createable) {
<button
nz-button
nz-dropdown
@ -57,6 +58,7 @@
<li nz-menu-item (click)="onDelete(origin.categoryId)">删除</li>
</ul>
</nz-dropdown-menu>
}
</div>
</ng-template>
</nz-tree>

28
web-admin-app/src/app/pages/fixed-asset/fixed-asset.component.html

@ -154,23 +154,11 @@
[nzPaddingLeft]="12"
nz-submenu
nzTitle="维护维保"
*appPermission="[
'fixed-asset-repair-type:view',
'fixed-asset-repair-list:view',
'fixed-asset-repair-fault:view'
]"
*appPermission="['fixed-asset-repair-list:view', 'fixed-asset-repair-fault:view']"
[nzOpen]="openedSubmenu.startsWith('/fixed-asset/repair/')"
>
<!-- 'fixed-asset-repair-type:view', -->
<ul>
<li
*appPermission="['fixed-asset-repair-type:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/repair/type']"
nzMatchRouter
>
维修类型
</li>
<li
*appPermission="['fixed-asset-repair-list:view']"
nz-menu-item
@ -313,7 +301,8 @@
'basic-supplier:view',
'basic-maintainer:view',
'basic-save-position:view',
'basic-warehouse:view'
'basic-warehouse:view',
'fixed-asset-repair-type:view'
]"
>
<ul>
@ -374,6 +363,15 @@
>
存放仓库
</li>
<li
*appPermission="['fixed-asset-repair-type:view']"
nz-menu-item
[nzPaddingLeft]="24"
[routerLink]="['/fixed-asset/basic/repair-type']"
nzMatchRouter
>
维修类型
</li>
</ul>
</li>

6
web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-myown/fixed-asset-myown.component.html

@ -10,6 +10,9 @@
@case ('_useUser') {
{{ data?.userName ?? '-' }}
}
@case ('_manager') {
{{ data?.userName ?? '-' }}
}
@case ('_warehouse') {
{{ data?.name ?? '-' }}
}
@ -52,6 +55,9 @@
<app-query-item label="序列号">
<input nz-input placeholder="请输入" formControlName="serialNumber" />
</app-query-item>
<app-query-item label="管理人员">
<app-select-user-by-org formControlName="manager" />
</app-query-item>
<app-query-item label="资产状态">
<nz-select

22
web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-myown/fixed-asset-myown.component.ts

@ -6,7 +6,12 @@ import { ApiService } from 'app/services'
import { SharedModule } from 'app/shared/shared.module'
import { format } from 'date-fns'
import { lastValueFrom, of } from 'rxjs'
import { AssetFormComponent, ManufacturerSelectComponent, PositionSelectComponent } from 'app/components'
import {
AssetFormComponent,
ManufacturerSelectComponent,
PositionSelectComponent,
SelectUserByOrgComponent,
} from 'app/components'
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal'
import { NzMessageService } from 'ng-zorro-antd/message'
import { NzSafeAny } from 'ng-zorro-antd/core/types'
@ -16,7 +21,13 @@ import { Utils } from 'app/utils'
@Component({
selector: 'app-fixed-asset-myown',
standalone: true,
imports: [SharedModule, AssetFormComponent, PositionSelectComponent, ManufacturerSelectComponent],
imports: [
SharedModule,
AssetFormComponent,
PositionSelectComponent,
ManufacturerSelectComponent,
SelectUserByOrgComponent,
],
templateUrl: './fixed-asset-myown.component.html',
styleUrl: './fixed-asset-myown.component.less',
})
@ -35,6 +46,7 @@ export class FixedAssetMyownComponent {
serialNumber: new FormControl(),
sourceId: new FormControl(),
positionId: new FormControl(),
manager: new FormControl(),
manufacturersVendorId: new FormControl(),
})
@ -57,7 +69,8 @@ export class FixedAssetMyownComponent {
{ key: 'assetCode', title: '资产编号', visible: true },
{ key: 'name', title: '资产名称', visible: true },
{ key: '_category', title: '资产分类', visible: true },
{ key: 'status', title: '资产状态', visible: true },
{ key: 'status', title: '资产状态', visible: true, width: '120px' },
{ key: '_manager', title: '管理人员', visible: true },
{ key: '_ownCompany', title: '所属公司', visible: true },
{ key: '_useOrganization', title: '使用组织', visible: true },
{ key: '_position', title: '存放位置', visible: true },
@ -73,7 +86,8 @@ export class FixedAssetMyownComponent {
}
fetchData(p: {}, q: AnyObject) {
return this.api.getAssetPage({ ...p, ...q })
const manager = Array.isArray(q['manager']) ? q['manager'][0] : null
return this.api.getAssetPage({ ...p, ...q, manager })
}
onCreate(data?: NzSafeAny, preview?: boolean) {

2
web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-position/fixed-asset-position.component.html

@ -1,7 +1,7 @@
<div class="flex flex-1 overflow-hidden h-full">
<div class="mr-3 p-3 bg-white shadow rounded">
<div class="w-56">
<app-position-tree (onSelectedChange)="onSelectedChange($event)" />
<app-position-tree [createable]="false" (onSelectedChange)="onSelectedChange($event)" />
</div>
</div>
<div class="flex-1 overflow-hidden">

2
web-admin-app/src/app/pages/fixed-asset/ledger/fixed-asset-storage/fixed-asset-storage.component.ts

@ -61,7 +61,7 @@ export class FixedAssetStorageComponent {
{ key: 'count', title: '库存数量', visible: true },
{ key: 'safetyLimit', title: '安全数量', visible: true },
{ key: 'upperLimit', title: '库存上限', visible: true },
{ key: 'lowerLimit', title: '库存下线', visible: true },
{ key: 'lowerLimit', title: '库存下', visible: true },
{ key: 'warehouseName', title: '存放仓库', visible: true },
])

2
web-admin-app/src/app/pages/fixed-asset/manage/fixed-asset-manage/fixed-asset-manage.component.html

@ -4,7 +4,7 @@
<button *nzSpaceItem nz-button nzType="primary" (click)="onCreate()">
<span>登记</span>
</button>
<button *nzSpaceItem nz-button>
<button *nzSpaceItem nz-button [disabled]="table.ref.selected.size === 0" (click)="deleteItem()">
<span>删除</span>
</button>
<button *nzSpaceItem nz-button [disabled]="table.ref.selected.size === 0" (click)="confirmAsset()">

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

@ -32,3 +32,14 @@
</app-server-paginated-table>
</div>
</app-page>
<ng-template #commentTpl>
<div nz-form nzLayout="vertical">
<nz-form-item>
<nz-form-label [nzRequired]="true"> 审批意见 </nz-form-label>
<nz-form-control>
<textarea nz-input rows="4" [(ngModel)]="comment" [nzAutosize]="{ minRows: 2, maxRows: 4 }"></textarea>
</nz-form-control>
</nz-form-item>
</div>
</ng-template>

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

@ -7,7 +7,7 @@ import { SharedModule } from 'app/shared/shared.module'
import { lastValueFrom, map, of } from 'rxjs'
import { NzSafeAny } from 'ng-zorro-antd/core/types'
import { NzModalService } from 'ng-zorro-antd/modal'
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal'
import { NzMessageService } from 'ng-zorro-antd/message'
import { FormValidators } from 'app/utils'
import { comsMap } from '../flow-main/flow-main.component'
@ -29,11 +29,15 @@ export class FlowMyTodoComponent {
@ViewChild('createFormTpl') createFormTpl!: TemplateRef<{}>
@ViewChild('commentTpl') commentTpl!: TemplateRef<{}>
createForm = new FormGroup({
formId: new FormControl(''),
userId: new FormControl<NzSafeAny[]>([], [FormValidators.required('请选择')]),
})
comment = ''
table = new TableOption(this.fetchData.bind(this))
queryForm = new FormGroup({
@ -68,8 +72,9 @@ export class FlowMyTodoComponent {
return this.api.getMyTodoAssetFlow({ ...p, ...q })
}
detailRef?: NzModalRef
onDetail(model: NzSafeAny) {
this.modal.create({
this.detailRef = this.modal.create({
nzTitle: '查看任务',
nzContent: comsMap[model.procDefKey],
nzWrapClassName: 'modal-lg',
@ -81,12 +86,15 @@ export class FlowMyTodoComponent {
nzFooter: [
{
label: '通过',
type: 'primary',
onClick: async () => {
this.completeFlow(model)
},
},
{
label: '驳回',
danger: true,
type: 'primary',
onClick: async () => {
return this.rejectProcessFlow(model)
},
@ -96,34 +104,45 @@ export class FlowMyTodoComponent {
}
completeFlow(d: NzSafeAny) {
this.modal.confirm({
this.modal.create({
nzTitle: '审核通过',
nzContent: '是否要审核通过该申请?',
// nzContent: '是否要审核通过该申请?',
nzContent: this.commentTpl,
nzOnOk: async () => {
await lastValueFrom(
this.api.completeProcessFlow({
instanceId: d.procInsId,
taskId: d.taskId,
comment: this.comment,
}),
)
this.msg.success('通过成功')
this.table.ref.reload()
this.detailRef?.close()
},
})
}
rejectProcessFlow(d: NzSafeAny) {
this.modal.confirm({
nzTitle: '作废',
nzContent: '是否要驳回该申请?',
this.modal.create({
nzTitle: '驳回',
nzContent: this.commentTpl,
nzOnOk: async () => {
if (!this.comment) {
this.msg.error('请输入驳回意见')
return false
}
await lastValueFrom(
this.api.rejectProcessFlow({
instanceId: d.procInsId,
taskId: d.taskId,
comment: this.comment,
}),
)
this.msg.success('驳回成功')
this.table.ref.reload()
this.detailRef?.close()
return true
},
})
}

Loading…
Cancel
Save