Files
bbq/src/app/routes/usercenter/components/freight/enterprise-audit/add/add.component.ts
wangshiming 30dcfbb4f1 fix bug
2021-11-30 10:17:00 +08:00

261 lines
7.5 KiB
TypeScript

import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { SFComponent, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
import { ModalHelper } from '@delon/theme';
import { GoodsService } from 'src/app/routes/cmc/services/goods.service';
@Component({
selector: 'app-cmc-components-add',
templateUrl: './add.component.html',
styleUrls: ['./add.component.less'],
})
export class CmcComponentsTagsAddComponent implements OnInit {
@ViewChild('sf', { static: false })
sf!: SFComponent;
i: any;
schema!: SFSchema;
ui!: SFUISchema;
cateData: any = [];
formTitle: any = '新增标签';
formData: any = {
// avatar:[
// {
// uid: -1,
// name: 'LOGO',
// status: 'done',
// url: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',
// response: {
// url: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',
// },
// },
// ],
// name:'西四'
};
constructor(public service: GoodsService, private modal: ModalHelper, private route: ActivatedRoute) {
const { flag, type, id } = route.snapshot?.queryParams;
Object.assign(this.formData, { flag, type, id });
}
ngOnInit() {
this.initSF();
if (this.formData.flag !== '3') {
this.getCates();
} else {
this.getBusinessCates();
}
// console.log(this.formData, 'this.formData');
if (this.formData.type === 'edit') {
this.formTitle = '编辑标签';
}
if (this.formData.type === 'view') {
this.formTitle = '查看标签';
}
if (this.formData.type !== 'add') {
if (this.formData.flag !== '3') {
this.getInfo();
} else {
this.getBusinessInfo();
}
}
}
initSF() {
this.schema = {
properties: {
name: {
title: '标签名称',
type: 'string',
maxLength: 8,
},
categoryId: {
title: '关联分类',
type: 'string',
default: this.formData?.categoryId || [],
enum: this.cateData,
ui: {
widget: 'tree-select',
checkable: true, // 节点前添加 Checkbox 复选框
allowClear: true, // 支持清除
virtualHeight: '480px',
// checkStrictly: true, // checkable 状态下节点选择完全受控(父子节点选中状态不再关联)
// defaultExpandAll: false, // 默认展开所有树节点
// expandedKeys: this.formData?.categoryId || [], // 默认展开指定的树节点
change: (e) => {
console.log(e);
},
// valueProperty: 'key',
// labelProperty: 'title',
// asyncData: () =>
// this.service.request(this.service.$api_get_labelCategorys).pipe(
// map((data: any) => {
// return data.map((m: any) => {
// return { title: m.name, key: m.id };
// });
// }),
// ),
} as SFSelectWidgetSchema,
},
remark: {
title: '标签介绍',
type: 'string',
maxLength: 50,
ui: {
widget: 'textarea',
placeholder: '请输入标签介绍',
autosize: { minRows: 3, maxRows: 6 },
errors: {
required: '请输入标签介绍',
},
},
},
},
required: ['name', 'categoryId', 'remark'],
};
this.ui = {
'*': {
spanLabel: 5,
grid: { span: 24 },
},
};
}
getCates() {
const params = {
flag: this.formData.flag,
};
const cateApi = this.service.$api_get_category_treeList;
this.service.request(cateApi, params).subscribe((res) => {
// res.map((i: any) => {
// i.key = i.id;
// i.title = i.name;
// if (i.children) {
// i.children.map((j: any) => {
// j.key = j.id;
// j.title = j.name;
// if (j.children) {
// j.children.map((k: any) => {
// k.key = k.id;
// k.title = k.name;
// });
// }
// });
// }
// });
this.cateData = res;
this.initSF();
});
}
getBusinessCates() {
const params = {
flag: this.formData.flag,
};
const cateApi = this.service.$api_get_business_cateList;
this.service.request(cateApi, params).subscribe((res) => {
// res.map((i: any) => {
// i.key = i.id;
// i.title = i.name;
// if (i.children) {
// i.children.map((j: any) => {
// j.key = j.id;
// j.title = j.name;
// if (j.children) {
// j.children.map((k: any) => {
// k.key = k.id;
// k.title = k.name;
// });
// }
// });
// }
// });
this.cateData = res;
this.initSF();
});
}
getInfo() {
const params = {
labelId: this.formData.id,
};
this.service.http.post(this.service.$api_get_labelDetail, params).subscribe((res) => {
const resData = res.data;
if (res.data?.categoryIds) {
resData.categoryId = res.data?.categoryIds.split(',');
}
delete resData.categoryIds;
Object.assign(this.formData, resData);
// console.log(this.formData, 'this.formData');
this.initSF();
});
}
getBusinessInfo() {
const params = {
id: this.formData.id,
};
this.service.http.post(this.service.$api_get_business_labelDetail, params).subscribe((res) => {
const resData = res.data;
if (res.data?.categoryIdList) {
resData.categoryId = res.data?.categoryIdList;
}
delete resData.categoryIdList;
Object.assign(this.formData, resData);
this.initSF();
});
}
formSubmit() {
const cateIds: any[] = [];
let saveApi = this.service.$api_label_save;
if (this.formData.flag !== '3') {
this.sf.value.categoryId.map((i: any) => {
this.cateData.map((j: any) => {
if (j.children) {
if (i === j.key) {
j.children.map((k: any) => {
if (k.children) {
k.children.map((m: any) => {
cateIds.push(m.key);
});
} else {
cateIds.push(k.key);
}
});
} else if (i !== j.key) {
j.children.map((k: any) => {
if (i === k.key && k.children) {
k.children.map((m: any) => {
cateIds.push(m.key);
});
} else {
cateIds.push(i);
}
});
}
} else {
if (i === j.key) {
cateIds.push(i);
}
}
});
});
}
const params: any = {
...this.sf.value,
};
if (this.formData.flag !== '3') {
const uniqueArr = [...new Set(cateIds)];
params.categoryId = uniqueArr.toString();
saveApi = this.service.$api_label_save;
} else {
saveApi = this.service.$api_business_label_save;
params.categoryIdList = this.sf.value.categoryId;
delete params.categoryId;
}
this.service.http.post(saveApi, params).subscribe((res) => {
if (res.data) {
this.service.msgSrv.success('提交成功');
this.goBack();
}
});
}
goBack() {
history.go(-1);
}
}