Browse Source

[新增]用户手机号

master
邵佳豪 2 weeks ago
parent
commit
2e9f15c5e9
  1. 3892
      package-lock.json
  2. 4
      package.json
  3. 7
      src/app/app.component.ts
  4. 3
      src/app/home/system-management/user/adduser/adduser.component.html
  5. 37
      src/app/home/system-management/user/adduser/adduser.component.ts
  6. 3
      src/app/home/system-management/user/edituser/edituser.component.html
  7. 49
      src/app/home/system-management/user/edituser/edituser.component.ts
  8. 6
      src/app/home/system-management/user/user.component.html
  9. 312
      src/app/home/system-management/user/user.component.ts
  10. 6
      src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.html
  11. 2
      src/app/home/task/station-task-execution/station-task-execution.component.html

3892
package-lock.json generated

File diff suppressed because it is too large Load Diff

4
package.json

@ -30,6 +30,8 @@
"ngx-echarts": "^14.0.0", "ngx-echarts": "^14.0.0",
"qs": "^6.11.0", "qs": "^6.11.0",
"rxjs": "~7.4.0", "rxjs": "~7.4.0",
"sm-crypto": "^0.3.13",
"sm-crypto-v2": "^1.9.3",
"tslib": "^2.3.0", "tslib": "^2.3.0",
"viewerjs": "^1.10.5", "viewerjs": "^1.10.5",
"zone.js": "~0.11.4" "zone.js": "~0.11.4"
@ -48,6 +50,6 @@
"karma-jasmine": "~4.0.0", "karma-jasmine": "~4.0.0",
"karma-jasmine-html-reporter": "~1.7.0", "karma-jasmine-html-reporter": "~1.7.0",
"resize-observer-polyfill": "^1.5.1", "resize-observer-polyfill": "^1.5.1",
"typescript": "~4.5.2" "typescript": "4.5"
} }
} }

7
src/app/app.component.ts

@ -4,14 +4,15 @@ import { CacheTokenService } from './service/cache-token.service';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',
templateUrl: './app.component.html', templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'] styleUrls: ['./app.component.scss'],
}) })
export class AppComponent { export class AppComponent {
constructor(public token: CacheTokenService) { } constructor(public token: CacheTokenService) {}
ngOnInit() { ngOnInit() {
console.log('更新时间', 20241118);
if (sessionStorage.getItem('token') && !this.token.timer) { if (sessionStorage.getItem('token') && !this.token.timer) {
//调用服务中的function刷新token //调用服务中的function刷新token
this.token.startUp() this.token.startUp();
} }
} }
} }

3
src/app/home/system-management/user/adduser/adduser.component.html

@ -60,5 +60,8 @@
</nz-select> </nz-select>
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
</form> </form>
<div (click)="addPhone()" style="cursor: pointer;">添加手机号</div>
<input *ngFor="let item of phone; let i = index" [(ngModel)]="item.num" nz-input type="text" placeholder="请添加手机号" />
</div> </div>

37
src/app/home/system-management/user/adduser/adduser.component.ts

@ -7,14 +7,17 @@ import { TreeService } from 'src/app/service/tree.service';
@Component({ @Component({
selector: 'app-adduser', selector: 'app-adduser',
templateUrl: './adduser.component.html', templateUrl: './adduser.component.html',
styleUrls: ['./adduser.component.scss'] styleUrls: ['./adduser.component.scss'],
}) })
export class AdduserComponent implements OnInit { export class AdduserComponent implements OnInit {
@Input() nodes?: any; @Input() nodes?: any;
@Input() roleList?: any; @Input() roleList?: any;
validateForm!: FormGroup; validateForm!: FormGroup;
constructor(private modal: NzModalRef, private fb: FormBuilder, private http: HttpClient) { } constructor(
private modal: NzModalRef,
private fb: FormBuilder,
private http: HttpClient
) {}
ngOnInit(): void { ngOnInit(): void {
this.validateForm = this.fb.group({ this.validateForm = this.fb.group({
@ -23,15 +26,14 @@ export class AdduserComponent implements OnInit {
email: [null], email: [null],
organization: [null, [Validators.required]], organization: [null, [Validators.required]],
role: [[]], role: [[]],
posts: [[]] posts: [[]],
}); });
if (this.roleList.length == 0) { if (this.roleList.length == 0) {
this.getAllRoles() this.getAllRoles();
} else { } else {
this.listOfData = this.roleList this.listOfData = this.roleList;
} }
} }
destroyModal(): void { destroyModal(): void {
this.modal.destroy({ data: 'this the result data' }); this.modal.destroy({ data: 'this the result data' });
@ -42,13 +44,18 @@ export class AdduserComponent implements OnInit {
getAllRoles() { getAllRoles() {
let params = { let params = {
PageNumber: 1, PageNumber: 1,
PageSize: 100 PageSize: 100,
} };
this.http.get('/api/Roles', { this.http
params: params .get('/api/Roles', {
}).subscribe((data: any) => { params: params,
this.listOfData = data.items })
}) .subscribe((data: any) => {
this.listOfData = data.items;
});
}
phone = [];
addPhone() {
this.phone.push({ num: '' });
} }
} }

3
src/app/home/system-management/user/edituser/edituser.component.html

@ -60,5 +60,8 @@
</nz-select> </nz-select>
</nz-form-control> </nz-form-control>
</nz-form-item> </nz-form-item>
</form> </form>
<div (click)="addPhone()" style="cursor: pointer;">添加手机号</div>
<input *ngFor="let item of phone; let i = index" [(ngModel)]="item.num" nz-input type="text" placeholder="请添加手机号" />
</div> </div>

49
src/app/home/system-management/user/edituser/edituser.component.ts

@ -5,21 +5,24 @@ import { HttpClient } from '@angular/common/http';
@Component({ @Component({
selector: 'app-edituser', selector: 'app-edituser',
templateUrl: './edituser.component.html', templateUrl: './edituser.component.html',
styleUrls: ['./edituser.component.scss'] styleUrls: ['./edituser.component.scss'],
}) })
export class EdituserComponent implements OnInit { export class EdituserComponent implements OnInit {
@Input() nodes?: any; @Input() nodes?: any;
@Input() data?: any; @Input() data?: any;
@Input() roleList?: any; @Input() roleList?: any;
validateForm!: FormGroup; validateForm!: FormGroup;
constructor(private modal: NzModalRef, private fb: FormBuilder, private http: HttpClient) { } constructor(
private modal: NzModalRef,
private fb: FormBuilder,
private http: HttpClient
) {}
ngOnInit(): void { ngOnInit(): void {
console.log(this.data) console.log(this.data);
let rolesId = [] let rolesId = [];
this.data.roles.forEach(element => { this.data.roles.forEach((element) => {
rolesId.push(element.id) rolesId.push(element.id);
}); });
this.validateForm = this.fb.group({ this.validateForm = this.fb.group({
account: [this.data.username, [Validators.required]], account: [this.data.username, [Validators.required]],
@ -27,13 +30,19 @@ export class EdituserComponent implements OnInit {
email: [this.data.email], email: [this.data.email],
organization: [this.data.organizationId, [Validators.required]], organization: [this.data.organizationId, [Validators.required]],
role: [rolesId], role: [rolesId],
posts: [this.data.posts] posts: [this.data.posts],
}); });
if (this.roleList.length == 0) { if (this.roleList.length == 0) {
this.getAllRoles() this.getAllRoles();
} else { } else {
this.listOfData = this.roleList this.listOfData = this.roleList;
} }
this.phone = this.data.phone.map((v) => {
return {
num: v,
};
});
} }
destroyModal(): void { destroyModal(): void {
this.modal.destroy({ data: 'this the result data' }); this.modal.destroy({ data: 'this the result data' });
@ -44,13 +53,19 @@ export class EdituserComponent implements OnInit {
getAllRoles() { getAllRoles() {
let params = { let params = {
PageNumber: 1, PageNumber: 1,
PageSize: 100 PageSize: 100,
} };
this.http.get('/api/Roles', { this.http
params: params .get('/api/Roles', {
}).subscribe((data: any) => { params: params,
this.listOfData = data.items })
}) .subscribe((data: any) => {
this.listOfData = data.items;
});
} }
phone = [];
addPhone() {
this.phone.push({ num: '' });
}
} }

6
src/app/home/system-management/user/user.component.html

@ -39,6 +39,7 @@
<th>角色</th> <th>角色</th>
<th>职位</th> <th>职位</th>
<th>创建时间</th> <th>创建时间</th>
<th>绑定手机号</th>
<th>状态</th> <th>状态</th>
<th [width]="'18%'">操作</th> <th [width]="'18%'">操作</th>
</tr> </tr>
@ -67,6 +68,11 @@
<td> <td>
{{item.creationTime | date:"yyyy-MM-dd"}} {{item.creationTime | date:"yyyy-MM-dd"}}
</td> </td>
<td>
<span *ngFor="let i of item.phone">
{{i}}
</span>
</td>
<td> <td>
<ng-container *ngIf="item.enabled; else elseTemplate"> <ng-container *ngIf="item.enabled; else elseTemplate">
<span class="green">已启用</span> <span class="green">已启用</span>

312
src/app/home/system-management/user/user.component.ts

@ -1,60 +1,78 @@
import { Component, OnInit, TemplateRef, ViewContainerRef } from '@angular/core'; import {
Component,
OnInit,
TemplateRef,
ViewContainerRef,
} from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { NzFormatEmitEvent, NzTreeComponent, NzTreeNodeOptions } from 'ng-zorro-antd/tree'; import {
NzFormatEmitEvent,
NzTreeComponent,
NzTreeNodeOptions,
} from 'ng-zorro-antd/tree';
import { NzModalService } from 'ng-zorro-antd/modal'; import { NzModalService } from 'ng-zorro-antd/modal';
import { AdduserComponent } from './adduser/adduser.component'; import { AdduserComponent } from './adduser/adduser.component';
import { NzMessageService } from 'ng-zorro-antd/message'; import { NzMessageService } from 'ng-zorro-antd/message';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { EdituserComponent } from './edituser/edituser.component'; import { EdituserComponent } from './edituser/edituser.component';
import { TreeService } from 'src/app/service/tree.service'; import { TreeService } from 'src/app/service/tree.service';
import { sm4 } from 'sm-crypto';
@Component({ @Component({
selector: 'app-user', selector: 'app-user',
templateUrl: './user.component.html', templateUrl: './user.component.html',
styleUrls: ['./user.component.scss'] styleUrls: ['./user.component.scss'],
}) })
export class UserComponent implements OnInit { export class UserComponent implements OnInit {
constructor(
constructor(private fb: FormBuilder, private modal: NzModalService, private viewContainerRef: ViewContainerRef, private message: NzMessageService, private http: HttpClient, private toTree: TreeService) { } private fb: FormBuilder,
private modal: NzModalService,
private viewContainerRef: ViewContainerRef,
private message: NzMessageService,
private http: HttpClient,
private toTree: TreeService
) {}
searchForm = { searchForm = {
Username: '', Username: '',
RoleName: '', RoleName: '',
name: '', name: '',
or: '' or: '',
} };
loading loading;
userList = [] userList = [];
ngOnInit(): void { ngOnInit(): void {
this.getAllOrganization() this.getAllOrganization();
this.getAllRoles() this.getAllRoles();
} }
//获取角色列表 //获取角色列表
roleList roleList;
getAllRoles() { getAllRoles() {
let params = { let params = {
PageNumber: 1, PageNumber: 1,
PageSize: 100 PageSize: 100,
} };
this.http.get('/api/Roles', { this.http
params: params .get('/api/Roles', {
}).subscribe((data: any) => { params: params,
this.roleList = data.items })
}) .subscribe((data: any) => {
this.roleList = data.items;
});
} }
pageChange($event) { pageChange($event) {
this.PageNumber = $event this.PageNumber = $event;
this.getAllUsers() this.getAllUsers();
} }
//获取用户列表 //获取用户列表
isLoading = false isLoading = false;
totalCount totalCount;
PageNumber = 1 PageNumber = 1;
PageSize = 16 PageSize = 16;
async getAllUsers() { async getAllUsers() {
this.isLoading = true this.isLoading = true;
let params = { let params = {
Username: this.searchForm.Username, Username: this.searchForm.Username,
RoleName: this.searchForm.RoleName, RoleName: this.searchForm.RoleName,
@ -62,73 +80,90 @@ export class UserComponent implements OnInit {
OrganizationId: this.searchForm.or, OrganizationId: this.searchForm.or,
PageNumber: this.PageNumber, PageNumber: this.PageNumber,
PageSize: this.PageSize, PageSize: this.PageSize,
ContainsChildren: 'true' ContainsChildren: 'true',
} };
await new Promise<void>((resolve, reject) => { await new Promise<void>((resolve, reject) => {
this.http.get('/api/Users', { this.http
params: params .get('/api/Users', {
}).subscribe((data: any) => { params: params,
this.isLoading = false responseType: 'text',
this.userList = data.items })
this.totalCount = data.totalCount .subscribe((res: any) => {
console.log('用户列表', data) const key = '258e0ec35ea5c5d2479156be98e9b3e2';
resolve(data) function base64ToHex(base64: string): string {
}) const binary = atob(base64); // Base64 解码成二进制字符串
}) return Array.from(binary) // 转换成字节数组
.map((byte) => ('0' + byte.charCodeAt(0).toString(16)).slice(-2)) // 转16进制
.join('');
}
const publicKeyHex = base64ToHex(res);
const data = JSON.parse(sm4.decrypt(publicKeyHex, key) as any);
this.isLoading = false;
this.userList = data.items;
this.totalCount = data.totalCount;
console.log('用户列表', data);
resolve(data);
});
});
} }
search() { search() {
this.PageNumber = 1 this.PageNumber = 1;
this.getAllUsers() this.getAllUsers();
} }
reset() { reset() {
this.PageNumber = 1 this.PageNumber = 1;
this.searchForm = { this.searchForm = {
Username: '', Username: '',
RoleName: '', RoleName: '',
name: '', name: '',
or: JSON.parse(sessionStorage.getItem('userData')).organizationId or: JSON.parse(sessionStorage.getItem('userData')).organizationId,
} };
this.getAllUsers() this.getAllUsers();
} }
expandKeys expandKeys;
defaultOrId: string defaultOrId: string;
//获取所有组织机构 //获取所有组织机构
nodes: any = [] nodes: any = [];
getAllOrganization() { getAllOrganization() {
let organizationId = JSON.parse(sessionStorage.getItem('userData')).organizationId let organizationId = JSON.parse(
sessionStorage.getItem('userData')
).organizationId;
let params = { let params = {
ContainsChildren: "true", ContainsChildren: 'true',
PageNumber: 1, PageNumber: 1,
PageSize: 9999, PageSize: 9999,
code: '0000' code: '0000',
} };
this.http.get('/api/Organizations', { this.http
params: params .get('/api/Organizations', {
}).subscribe((data: any) => { params: params,
console.log(data.items) })
data.items.forEach(element => { .subscribe((data: any) => {
console.log(data.items);
if (element.id == organizationId) { data.items.forEach((element) => {
element.parentId = null if (element.id == organizationId) {
} element.parentId = null;
element.key = element.id }
element.title = element.name element.key = element.id;
if (element.level == 'squadron') { element.title = element.name;
element.isLeaf = true if (element.level == 'squadron') {
} element.isLeaf = true;
}
});
this.nodes = [...this.toTree.toTree(data.items)];
this.searchForm.or = JSON.parse(
sessionStorage.getItem('userData')
).organizationId;
this.getAllUsers();
}); });
this.nodes = [...this.toTree.toTree(data.items)]
this.searchForm.or = JSON.parse(sessionStorage.getItem('userData')).organizationId
this.getAllUsers()
})
} }
//新增用户 //新增用户
addUser(): void { addUser(): void {
if (this.nodes.length == 0) { if (this.nodes.length == 0) {
this.message.create('warning', '请组织机构加载完毕后重试'); this.message.create('warning', '请组织机构加载完毕后重试');
return return;
} }
const modal = this.modal.create({ const modal = this.modal.create({
nzTitle: '新增用户', nzTitle: '新增用户',
@ -138,7 +173,7 @@ export class UserComponent implements OnInit {
nzMaskClosable: false, nzMaskClosable: false,
nzComponentParams: { nzComponentParams: {
nodes: this.nodes, nodes: this.nodes,
roleList: this.roleList roleList: this.roleList,
}, },
nzOnOk: async () => { nzOnOk: async () => {
if (instance.validateForm.valid) { if (instance.validateForm.valid) {
@ -150,38 +185,40 @@ export class UserComponent implements OnInit {
organizationId: instance.validateForm.value.organization, organizationId: instance.validateForm.value.organization,
roleIds: instance.validateForm.value.role, roleIds: instance.validateForm.value.role,
posts: instance.validateForm.value.posts, posts: instance.validateForm.value.posts,
} };
this.http.post('/api/Users', body).subscribe({ this.http.post('/api/Users', body).subscribe({
next: async (data) => { next: async (data) => {
this.message.create('success', '创建成功'); this.message.create('success', '创建成功');
resolve(data) resolve(data);
await this.getAllUsers() await this.getAllUsers();
return true return true;
}, },
error: (err) => { error: (err) => {
this.isLoading = false this.isLoading = false;
this.message.create('warning', '创建失败'); this.message.create('warning', '创建失败');
reject(err) reject(err);
return false return false;
} },
}) });
}) });
} else { } else {
this.message.create('warning', '请填写完整!'); this.message.create('warning', '请填写完整!');
return false return false;
} }
} },
}); });
const instance = modal.getContentComponent(); const instance = modal.getContentComponent();
modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!')); modal.afterOpen.subscribe(() => console.log('[afterOpen] emitted!'));
modal.afterClose.subscribe(result => console.log('[afterClose] The result is:', result)); modal.afterClose.subscribe((result) =>
console.log('[afterClose] The result is:', result)
);
} }
//编辑用户 //编辑用户
editUser(item): void { editUser(item): void {
if (this.nodes.length == 0) { if (this.nodes.length == 0) {
this.message.create('warning', '请组织机构加载完毕后重试'); this.message.create('warning', '请组织机构加载完毕后重试');
return return;
} }
const modal = this.modal.create({ const modal = this.modal.create({
nzTitle: '编辑用户', nzTitle: '编辑用户',
@ -192,11 +229,12 @@ export class UserComponent implements OnInit {
nzComponentParams: { nzComponentParams: {
nodes: this.nodes, nodes: this.nodes,
data: JSON.parse(JSON.stringify(item)), data: JSON.parse(JSON.stringify(item)),
roleList: this.roleList roleList: this.roleList,
}, },
nzOnOk: async () => { nzOnOk: async () => {
if (instance.validateForm.valid) { if (instance.validateForm.valid) {
await new Promise(resolve => { await new Promise((resolve) => {
let phoneArr = instance.phone.map((v) => v.num);
let body = { let body = {
username: instance.validateForm.value.account, username: instance.validateForm.value.account,
name: instance.validateForm.value.name, name: instance.validateForm.value.name,
@ -204,26 +242,27 @@ export class UserComponent implements OnInit {
organizationId: instance.validateForm.value.organization, organizationId: instance.validateForm.value.organization,
roleIds: instance.validateForm.value.role, roleIds: instance.validateForm.value.role,
posts: instance.validateForm.value.posts, posts: instance.validateForm.value.posts,
} phone: phoneArr,
};
this.http.patch(`/api/Users/${item.id}`, body).subscribe({ this.http.patch(`/api/Users/${item.id}`, body).subscribe({
next: async (data) => { next: async (data) => {
this.message.create('success', '创建成功'); this.message.create('success', '编辑成功');
resolve(data) resolve(data);
await this.getAllUsers() await this.getAllUsers();
return true return true;
}, },
error: (err) => { error: (err) => {
this.isLoading = false this.isLoading = false;
this.message.create('warning', '创建失败'); this.message.create('warning', '编辑失败');
return true return true;
} },
}) });
}) });
} else { } else {
this.message.create('warning', '请填写完整!'); this.message.create('warning', '请填写完整!');
return false return false;
} }
} },
}); });
const instance = modal.getContentComponent(); const instance = modal.getContentComponent();
} }
@ -235,31 +274,31 @@ export class UserComponent implements OnInit {
nzOkText: '确定', nzOkText: '确定',
nzOkType: 'primary', nzOkType: 'primary',
nzOnOk: () => { nzOnOk: () => {
this.http.patch(`/api/Users/${item.id}/Password`, null).subscribe(data => { this.http
this.message.create('success', '重置成功!'); .patch(`/api/Users/${item.id}/Password`, null)
}) .subscribe((data) => {
this.message.create('success', '重置成功!');
});
}, },
nzCancelText: '取消', nzCancelText: '取消',
nzOnCancel: () => { nzOnCancel: () => {},
}
}); });
} }
//禁用 //禁用
cancel(item, type) { cancel(item, type) {
this.isLoading = true this.isLoading = true;
let body = { let body = {
enabled: type enabled: type,
} };
this.http.patch(`/api/Users/${item.id}`, body).subscribe({ this.http.patch(`/api/Users/${item.id}`, body).subscribe({
next: (data) => { next: (data) => {
this.isLoading = false this.isLoading = false;
item.enabled = type item.enabled = type;
}, },
error: (err) => { error: (err) => {
this.isLoading = false this.isLoading = false;
} },
}) });
} }
delete(item) { delete(item) {
this.modal.confirm({ this.modal.confirm({
@ -267,12 +306,12 @@ export class UserComponent implements OnInit {
nzOkText: '确定', nzOkText: '确定',
nzOkType: 'default', nzOkType: 'default',
nzOnOk: () => { nzOnOk: () => {
this.http.delete(`/api/Users/${item.id}`).subscribe(data => { this.http.delete(`/api/Users/${item.id}`).subscribe((data) => {
this.message.create('success', '删除成功!'); this.message.create('success', '删除成功!');
this.getAllUsers() this.getAllUsers();
}) });
}, },
nzCancelText: '取消' nzCancelText: '取消',
}); });
} }
@ -283,22 +322,23 @@ export class UserComponent implements OnInit {
Name: this.searchForm.name, Name: this.searchForm.name,
OrganizationId: this.searchForm.or, OrganizationId: this.searchForm.or,
ContainsChildren: 'true', ContainsChildren: 'true',
ExportToExcel: 'true' ExportToExcel: 'true',
} };
this.http.get('/api/Users', { this.http
params: params, .get('/api/Users', {
responseType: 'blob' as 'json' params: params,
}).subscribe((data: any) => { responseType: 'blob' as 'json',
const link = document.createElement('a'); })
const blob = new Blob([data], { type: 'application/vnd.ms-excel' }); .subscribe((data: any) => {
link.setAttribute('href', window.URL.createObjectURL(blob)); const link = document.createElement('a');
link.setAttribute('download', '用户列表' + '.xls'); const blob = new Blob([data], { type: 'application/vnd.ms-excel' });
link.style.visibility = 'hidden'; link.setAttribute('href', window.URL.createObjectURL(blob));
document.body.appendChild(link); link.setAttribute('download', '用户列表' + '.xls');
link.click(); link.style.visibility = 'hidden';
document.body.removeChild(link); document.body.appendChild(link);
this.message.create('success', '导出成功!'); link.click();
}) document.body.removeChild(link);
this.message.create('success', '导出成功!');
});
} }
} }

6
src/app/home/task/da-monthly-task-overview/da-monthly-task-overview.component.html

@ -458,7 +458,7 @@
</span> </span>
</div> </div>
<div class="flexcol" style="flex: 2;"> <!-- <div class="flexcol" style="flex: 2;">
<span class="ellipsi"> <span class="ellipsi">
<nz-date-picker nzShowTime nzFormat="yyyy-MM-dd HH:mm:ss" <nz-date-picker nzShowTime nzFormat="yyyy-MM-dd HH:mm:ss"
[(ngModel)]="i.planTime" nzPlaceHolder="请选择检查日期" nzBorderless [(ngModel)]="i.planTime" nzPlaceHolder="请选择检查日期" nzBorderless
@ -468,12 +468,12 @@
<span> <span>
检查时间 检查时间
</span> </span>
</div> </div> -->
<div class="flexcol" style="flex: 1;"> <div class="flexcol" style="flex: 1;">
<span class="ellipsi"> <span class="ellipsi">
<span style="cursor: pointer;margin-right: 5px;" (click)="look(i)">查看</span> <span style="cursor: pointer;margin-right: 5px;" (click)="look(i)">查看</span>
<span style="cursor: pointer;color: rgb(255, 64, 77);" (click)="deleteTask(item,i)">删除</span> <!-- <span style="cursor: pointer;color: rgb(255, 64, 77);" (click)="deleteTask(item,i)">删除</span> -->
</span> </span>
<span> <span>
操作 操作

2
src/app/home/task/station-task-execution/station-task-execution.component.html

@ -195,7 +195,7 @@
<a class="blue" (click)="complete(item)" style="margin-right: 5px;">完成</a> <a class="blue" (click)="complete(item)" style="margin-right: 5px;">完成</a>
<a *ngIf="item.creationType != '自主任务' && item.approvalStatus != '已检查' && item.approvalStatus != '检查中'" <a *ngIf="item.creationType != '自主任务' && item.approvalStatus != '已检查' && item.approvalStatus != '检查中'"
class="red" (click)="cancel(item)">驳回</a> class="red" (click)="cancel(item)">驳回</a>
<a *ngIf="item.creationType == '自主任务' && item.approvalStatus != '已检查' && item.approvalStatus != '检查中'" <a
class="red" (click)="delete(item)">删除</a> class="red" (click)="delete(item)">删除</a>
</span> </span>
<span> <span>

Loading…
Cancel
Save