Browse Source

修复 bug

main
kely 11 months ago
parent
commit
265a6e2c8b
  1. 3
      web-admin-app/src/app/components/select-user-by-org/select-user-by-org.component.ts
  2. 6
      web-admin-app/src/app/pages/dashboard/dashboard.component.html
  3. 2
      web-admin-app/src/app/pages/dashboard/dashboard.component.ts
  4. 8
      web-admin-app/src/app/pages/fixed-asset/stocktaking/stockaking-job/stockaking-job.component.ts
  5. 14
      web-admin-app/src/app/pages/fixed-asset/stocktaking/stockaking-plan/stockaking-plan.component.ts
  6. 57
      web-admin-app/src/app/pages/fixed-asset/stocktaking/stocktaking-detail/stocktaking-detail.component.html
  7. 102
      web-admin-app/src/app/pages/fixed-asset/stocktaking/stocktaking-detail/stocktaking-detail.component.ts
  8. 5
      web-admin-app/src/app/services/api.service.ts

3
web-admin-app/src/app/components/select-user-by-org/select-user-by-org.component.ts

@ -90,7 +90,8 @@ export class SelectUserByOrgComponent implements ControlValueAccessor, OnInit {
onOrgSelectedChange(v?: NzSafeAny, uid?: number) { onOrgSelectedChange(v?: NzSafeAny, uid?: number) {
this.api this.api
.getUserPage({ .getUserPage({
tree: Boolean(v?.organizationId), // tree: Boolean(v?.organizationId),
tree: false,
pageSize: MAX_PAGE_SIZE, pageSize: MAX_PAGE_SIZE,
pageNum: 1, pageNum: 1,
userId: uid, userId: uid,

6
web-admin-app/src/app/pages/dashboard/dashboard.component.html

@ -21,7 +21,7 @@
<span nz-icon nzType="caret-down" nzTheme="outline"></span> <span nz-icon nzType="caret-down" nzTheme="outline"></span>
</span> </span>
<span>{{ data.assetTotal.change }}</span> <span>{{ Math.abs(data.assetTotal.change) }}</span>
</span> </span>
<span class="ml-2 text-black opacity-40"> 今日变化 </span> <span class="ml-2 text-black opacity-40"> 今日变化 </span>
</div> </div>
@ -49,7 +49,7 @@
<span nz-icon nzType="caret-down" nzTheme="outline"></span> <span nz-icon nzType="caret-down" nzTheme="outline"></span>
</span> </span>
<span>{{ data.borrowWarning.change }}</span> <span>{{ Math.abs(data.borrowWarning.change) }}</span>
</span> </span>
<span class="ml-2 text-black opacity-40"> 今日变化 </span> <span class="ml-2 text-black opacity-40"> 今日变化 </span>
</div> </div>
@ -77,7 +77,7 @@
<span nz-icon nzType="caret-down" nzTheme="outline"></span> <span nz-icon nzType="caret-down" nzTheme="outline"></span>
</span> </span>
<span>{{ data.maintenanceWarning.change }}</span> <span>{{ Math.abs(data.maintenanceWarning.change) }}</span>
</span> </span>
<span class="ml-2 text-black opacity-40"> 今日变化 </span> <span class="ml-2 text-black opacity-40"> 今日变化 </span>
</div> </div>

2
web-admin-app/src/app/pages/dashboard/dashboard.component.ts

@ -126,6 +126,8 @@ export class DashboardComponent implements OnInit, AfterViewInit {
quickAction: NzSafeAny[] = [] quickAction: NzSafeAny[] = []
Math = Math
ngOnInit(): void { ngOnInit(): void {
this.api.getHomeData().subscribe((res) => { this.api.getHomeData().subscribe((res) => {
this.data = res.body this.data = res.body

8
web-admin-app/src/app/pages/fixed-asset/stocktaking/stockaking-job/stockaking-job.component.ts

@ -161,10 +161,10 @@ export class StockakingJobComponent {
stocktakingUserId: data._stocktakingUser?.userId ? [data._stocktakingUser?.userId] : [], stocktakingUserId: data._stocktakingUser?.userId ? [data._stocktakingUser?.userId] : [],
head: data._head?.userId ? [data._head?.userId] : [], head: data._head?.userId ? [data._head?.userId] : [],
useUserId: data._useUser?.userId ? [data._useUser?.userId] : [], useUserId: data._useUser?.userId ? [data._useUser?.userId] : [],
categoryId: data._category?.categoryId + '', categoryId: data._category?.categoryId,
positionId: data._position?.positionId + '', positionId: data._position?.positionId,
ownCompanyId: data._ownCompany?.organizationId + '', ownCompanyId: data._ownCompany?.organizationId,
useOrganizationId: data._useOrganization?.organizationId + '', useOrganizationId: data._useOrganization?.organizationId,
warehouseId: data._warehouse?.warehouseId, warehouseId: data._warehouse?.warehouseId,
}) })
} }

14
web-admin-app/src/app/pages/fixed-asset/stocktaking/stockaking-plan/stockaking-plan.component.ts

@ -54,7 +54,7 @@ export class StockakingPlanComponent {
initCreateForm() { initCreateForm() {
this.createForm = this.fb.group({ this.createForm = this.fb.group({
stocktakingJobId: [], stocktakingPlanId: [],
name: ['', [FormValidators.required('请输入')]], name: ['', [FormValidators.required('请输入')]],
notes: ['', []], notes: ['', []],
stocktakingUserId: [[], []], stocktakingUserId: [[], []],
@ -83,7 +83,7 @@ export class StockakingPlanComponent {
this.table this.table
.setConfig({ .setConfig({
selectable: true, selectable: true,
rowKey: 'stocktakingJobId', rowKey: 'stocktakingPlanId',
}) })
.setColumn([ .setColumn([
{ key: 'name', title: '名称' }, { key: 'name', title: '名称' },
@ -158,10 +158,10 @@ export class StockakingPlanComponent {
stocktakingUserId: data._stocktakingUser?.userId ? [data._stocktakingUser?.userId] : [], stocktakingUserId: data._stocktakingUser?.userId ? [data._stocktakingUser?.userId] : [],
head: data._head?.userId ? [data._head?.userId] : [], head: data._head?.userId ? [data._head?.userId] : [],
useUserId: data._useUser?.userId ? [data._useUser?.userId] : [], useUserId: data._useUser?.userId ? [data._useUser?.userId] : [],
categoryId: data._category?.categoryId + '', categoryId: data._category?.categoryId,
positionId: data._position?.positionId + '', positionId: data._position?.positionId,
ownCompanyId: data._ownCompany?.organizationId + '', ownCompanyId: data._ownCompany?.organizationId,
useOrganizationId: data._useOrganization?.organizationId + '', useOrganizationId: data._useOrganization?.organizationId,
warehouseId: data._warehouse?.warehouseId, warehouseId: data._warehouse?.warehouseId,
status: data.status === 1, status: data.status === 1,
}) })
@ -216,7 +216,7 @@ export class StockakingPlanComponent {
nzTitle: '警告', nzTitle: '警告',
nzContent: '是否要删除该盘点任务?', nzContent: '是否要删除该盘点任务?',
nzOnOk: async () => { nzOnOk: async () => {
const res = await lastValueFrom(this.api.deleteStocktakingPlan([item.stocktakingJobId])) const res = await lastValueFrom(this.api.deleteStocktakingPlan([item.stocktakingPlanId]))
this.msg.success(res.desc) this.msg.success(res.desc)
this.table.ref.reload() this.table.ref.reload()
}, },

57
web-admin-app/src/app/pages/fixed-asset/stocktaking/stocktaking-detail/stocktaking-detail.component.html

@ -95,3 +95,60 @@
</app-server-paginated-table> </app-server-paginated-table>
</div> </div>
</app-page> </app-page>
<ng-template #startTpl>
<form nz-form nzLayout="vertical" [formGroup]="startForm">
<nz-form-item>
<nz-form-label [nzRequired]="true">盘点状态</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<nz-select [nzPlaceHolder]="'请选择状态'" formControlName="status">
@for (item of STOCKTAKING_JOB_STATUS_MAP | keyvalue; track $index) {
<nz-option [nzLabel]="item.value" [nzValue]="item.key"></nz-option>
}
</nz-select>
</nz-form-control>
</nz-form-item>
<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]="uploadImgLoading">
<i nz-icon nzType="upload"></i>
上传图片
<input type="file" (change)="onImgChange($event)" accept=".jpg,.jpeg,.png" />
</button>
</nz-form-control>
</nz-form-item>
<nz-form-item>
<nz-form-label>附件</nz-form-label>
<nz-form-control [nzErrorTip]="errorTpl">
<input type="hidden" formControlName="attachment" />
<button class="upload-btn" nz-button [nzLoading]="uploadLoading">
<i nz-icon nzType="upload"></i>
选择文件
<input type="file" (change)="onFileChange($event)" />
</button>
@if (startForm.get('attachment')?.value) {
<div class="mt-1">
<nz-tag class="break-words w-full !whitespace-pre-wrap">
{{ startForm.get('attachment')?.value }}
</nz-tag>
</div>
}
</nz-form-control>
</nz-form-item>
<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>
</form>
</ng-template>
<ng-template #errorTpl let-control>
<form-error-tips [control]="control"></form-error-tips>
</ng-template>

102
web-admin-app/src/app/pages/fixed-asset/stocktaking/stocktaking-detail/stocktaking-detail.component.ts

@ -20,7 +20,7 @@ import { ApiService } from 'app/services'
import { NzMessageService } from 'ng-zorro-antd/message' import { NzMessageService } from 'ng-zorro-antd/message'
import { SharedModule } from 'app/shared/shared.module' import { SharedModule } from 'app/shared/shared.module'
import { Utils } from 'app/utils' import { FormValidators, Utils } from 'app/utils'
import { NzFormatEmitEvent, NzTreeNode } from 'ng-zorro-antd/tree' import { NzFormatEmitEvent, NzTreeNode } from 'ng-zorro-antd/tree'
import { NzTreeSelectComponent } from 'ng-zorro-antd/tree-select' import { NzTreeSelectComponent } from 'ng-zorro-antd/tree-select'
import { ASSET_SOURCE_MAP, ASSET_STATUS_MAP, MAX_PAGE_SIZE } from 'app/constants' import { ASSET_SOURCE_MAP, ASSET_STATUS_MAP, MAX_PAGE_SIZE } from 'app/constants'
@ -44,6 +44,8 @@ export class StocktakingDetailComponent {
private route: ActivatedRoute, private route: ActivatedRoute,
) {} ) {}
@ViewChild('startTpl') startTpl!: TemplateRef<{}>
originData: NzSafeAny[] = [] originData: NzSafeAny[] = []
loading = false loading = false
@ -56,6 +58,12 @@ export class StocktakingDetailComponent {
table = new TableOption(this.fetchData.bind(this)) table = new TableOption(this.fetchData.bind(this))
uploadImgLoading = false
uploadLoading = false
iconPreview = ''
queryForm = new FormGroup({ queryForm = new FormGroup({
name: new FormControl(), name: new FormControl(),
model: new FormControl(), model: new FormControl(),
@ -67,10 +75,48 @@ export class StocktakingDetailComponent {
manufacturersVendorId: new FormControl(), manufacturersVendorId: new FormControl(),
}) })
ngOnInit(): void { onImgChange(e: Event) {
this.api.getBasicSupplierVendorPage({ pageSize: MAX_PAGE_SIZE, pageNum: 1 }).subscribe((res) => { const target = e.target as HTMLInputElement
this.originData = res.body.rows const file = target.files![0]
target.value = ''
if (file.size / 1024 / 1024 >= 2) {
this.msg.error('图片大小不能超过2M')
return
}
const fileReader = new FileReader()
fileReader.onload = () => {
const base64 = fileReader.result as string
this.iconPreview = base64
}
fileReader.readAsDataURL(file)
const formdata = new FormData()
formdata.append('file', file)
this.api.upload(formdata).subscribe((res) => {
this.startForm.get('img')?.setValue(res.body.fileName)
})
}
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.startForm.get('attachment')?.setValue(res.body.fileName)
}) })
}
ngOnInit(): void {
this.api
.getBasicSupplierVendorPage({
pageSize: MAX_PAGE_SIZE,
pageNum: 1,
})
.subscribe((res) => {
this.originData = res.body.rows
})
this.table this.table
.setConfig({ .setConfig({
selectable: true, selectable: true,
@ -86,10 +132,22 @@ export class StocktakingDetailComponent {
// { key: '_useOrganization', title: '使用组织', visible: true }, // { key: '_useOrganization', title: '使用组织', visible: true },
// { key: '_position', title: '存放位置', visible: true }, // { key: '_position', title: '存放位置', visible: true },
]) ])
.setRowOperate([
{
title: '开始盘点',
onClick: this.onStart.bind(this),
},
])
} }
fetchData(p: {}, q: AnyObject) { fetchData(p: {}, q: AnyObject) {
return this.api.getStocktakingJobDetailPage({ ...p, ...q }).pipe() return this.api
.getStocktakingJobDetailPage({
...p,
...q,
stocktakingJobId: Number(this.route.snapshot.paramMap.get('id')),
})
.pipe()
} }
add(data?: NzSafeAny) { add(data?: NzSafeAny) {
@ -122,6 +180,40 @@ export class StocktakingDetailComponent {
}) })
} }
startForm = new FormGroup({
status: new FormControl(null, [FormValidators.required('请选择盘点状态')]),
img: new FormControl(null, []),
attachment: new FormControl(null, []),
notes: new FormControl(null, []),
})
onStart(data: NzSafeAny) {
this.modal.create({
nzTitle: '开始盘点',
nzContent: this.startTpl,
nzOnOk: async () => {
if (FormValidators.validateFormGroup(this.startForm)) {
const res = await lastValueFrom(
this.api.startStocktakingJob({
...this.startForm.value,
stocktakingJobId: Number(this.route.snapshot.paramMap.get('id')),
assetId: data._asset.assetId,
id: data.id,
}),
)
this.msg.success(res.desc)
this.table.ref.reload()
this.startForm.reset()
return true
}
return false
},
nzOnCancel: () => {
this.startForm.reset()
},
})
}
deleteItem() { deleteItem() {
this.modal.confirm({ this.modal.confirm({
nzTitle: '警告', nzTitle: '警告',

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

@ -317,7 +317,7 @@ export class ApiService {
return this.http.post<JwResponse>('/api/eamStocktakingPlan/list', data) return this.http.post<JwResponse>('/api/eamStocktakingPlan/list', data)
} }
saveStocktakingPlan(data: NzSafeAny) { saveStocktakingPlan(data: NzSafeAny) {
if (Utils.isEmpty(data.stocktakingJobId)) { if (Utils.isEmpty(data.stocktakingPlanId)) {
return this.http.post<JwResponse>('/api/eamStocktakingPlan/add', data) return this.http.post<JwResponse>('/api/eamStocktakingPlan/add', data)
} }
return this.http.post<JwResponse>('/api/eamStocktakingPlan/update', data) return this.http.post<JwResponse>('/api/eamStocktakingPlan/update', data)
@ -343,6 +343,9 @@ export class ApiService {
deleteStocktakingDetail(ids: number[]) { deleteStocktakingDetail(ids: number[]) {
return this.http.post<JwResponse>(`/api/eamStocktakingDetails/delete`, ids) return this.http.post<JwResponse>(`/api/eamStocktakingDetails/delete`, ids)
} }
startStocktakingJob(data: {}) {
return this.http.post<JwResponse>(`/api/eamStocktakingDetails/update`, data)
}
getStocktakingJobPage(data: {}) { getStocktakingJobPage(data: {}) {
return this.http.post<JwResponse>('/api/eamStocktakingJob/list', data) return this.http.post<JwResponse>('/api/eamStocktakingJob/list', data)

Loading…
Cancel
Save