Files
SaaS-lib/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionFactorLibrary/config.ts

284 lines
8.0 KiB
TypeScript
Raw Normal View History

2024-07-08 09:48:44 +08:00
import { ref } from 'vue';
import { http } from '/nerv-lib/util';
import { origanizemanage } from '/@/api/origanizemanage';
2024-07-10 11:01:46 +08:00
import { carbonEmissionFactorLibrary } from '/@/api/carbonEmissionFactorLibrary';
2024-07-08 09:48:44 +08:00
export const formConfig = (disabled) => {
return ref([
{
2024-07-10 11:01:46 +08:00
field: 'fields',
2024-07-08 09:48:44 +08:00
component: 'NsChildForm',
componentProps: {
schemas: [
{
label: '排放源',
2024-07-10 11:01:46 +08:00
field: 'emissionSources',
2024-07-08 09:48:44 +08:00
component: 'NsInput',
componentProps: {
placeholder: '请输入排放源',
maxLength: 20,
},
rules: [
{
required: true,
message: '请输入排放源',
},
],
},
{
2024-07-10 11:01:46 +08:00
field: 'emissionType',
label: '排放分类',
component: 'NsCascader',
fieldMap: ['emissionType'],
componentProps: {
placeholder: '请选择排放分类',
api: carbonEmissionFactorLibrary.getCarbonFactorTree,
fieldNames: { label: 'emissionName', value: 'id' },
showSearch: true,
},
rules: [
{
required: true,
message: '请选择排放分类',
},
],
},
{
field: 'emissionGas',
2024-07-08 09:48:44 +08:00
label: '排放气体',
component: 'NsSelect',
componentProps: {
allowClear: true,
placeholder: '请选择排放气体',
options: [
{
2024-07-10 11:01:46 +08:00
label: 'CO2',
value: 'CO2',
},
{
label: 'CO2e',
value: 'CO2e',
},
{
label: 'SF6',
value:'SF6',
},
{
label: 'CH4',
value: 'CH4',
2024-07-08 09:48:44 +08:00
},
{
2024-07-10 11:01:46 +08:00
label: 'PFCs',
value: 'PFCs',
},
{
label: 'HFCs',
value: 'HFCs',
2024-07-08 09:48:44 +08:00
},
],
},
rules: [
{
required: true,
message: '请选择排放气体',
},
],
},
2024-07-11 09:17:20 +08:00
// {
// field: 'emissionProcess',
// label: '排放环节',
// component: 'NsSelectApi',
// componentProps: {
// api: carbonEmissionFactorLibrary.getEmissionProcess,
// params: {
// emissionType: sessionStorage.getItem('checkedTreeNode'),
// },
// resultField: 'data',
// labelField: 'emissionProcess',
// valueField: 'emissionProcess',
// immediate: true,
// autoSelectFirst: false,
// filterOption:false,
// showSearch:true,
// autoClearSearchValue:false
// },
// },
2024-07-08 09:48:44 +08:00
{
label: '排放环节',
2024-07-11 09:17:20 +08:00
field: 'emissionProcess',
component: 'NsInput',
2024-07-08 09:48:44 +08:00
componentProps: {
2024-07-11 09:17:20 +08:00
placeholder: '请输入排放环节',
maxLength: 20,
2024-07-08 09:48:44 +08:00
},
2024-07-11 09:17:20 +08:00
rules: [
{
required: true,
message: '请输入排放环节',
},
],
2024-07-08 09:48:44 +08:00
},
{
label: '排放因子',
2024-07-10 11:01:46 +08:00
field: 'emissionFactors',
component: 'NsInputNumber',
2024-07-08 09:48:44 +08:00
componentProps: {
placeholder: '请输入排放因子值',
maxLength: 20,
},
rules: [
{
required: true,
message: '请输入排放因子值',
2024-07-10 11:01:46 +08:00
trigger: 'change',
2024-07-08 09:48:44 +08:00
},
],
},
{
2024-07-10 11:01:46 +08:00
field: 'carbonEmissionPrefix',
2024-07-08 09:48:44 +08:00
label: '碳排前缀',
component: 'NsSelect',
componentProps: {
2024-07-10 11:01:46 +08:00
disabled: true,
2024-07-08 09:48:44 +08:00
allowClear: true,
2024-07-10 11:01:46 +08:00
defaultValue: 't',
2024-07-08 09:48:44 +08:00
placeholder: '请选择碳排前缀',
options: [
{
2024-07-10 11:01:46 +08:00
label: 'g',
value: 'g',
},
{
label: 'kg',
value: 'kg',
2024-07-08 09:48:44 +08:00
},
{
2024-07-10 11:01:46 +08:00
label: 't',
value: 't',
2024-07-08 09:48:44 +08:00
},
],
},
rules: [
{
required: true,
message: '请选择碳排前缀',
},
],
},
{
label: '碳排后缀',
2024-07-10 11:01:46 +08:00
field: 'carbonEmissionSuffix',
2024-07-08 09:48:44 +08:00
component: 'NsInput',
componentProps: {
placeholder: '请输入碳排后缀',
maxLength: 20,
},
rules: [
{
required: true,
message: '请输入碳排后缀',
},
],
},
{
label: '已引用数',
2024-07-10 11:01:46 +08:00
field: 'numberOfReferences',
2024-07-08 09:48:44 +08:00
component: 'NsInput',
componentProps: {
2024-07-10 11:01:46 +08:00
defaultValue: 10,
2024-07-08 09:48:44 +08:00
disabled: true,
maxLength: 20,
},
},
{
label: '参考文献',
2024-07-10 11:01:46 +08:00
field: 'reference',
2024-07-08 09:48:44 +08:00
component: 'NsTextarea',
componentProps: {
placeholder: '请输入参考文献',
maxLength: 20,
},
},
],
},
},
]);
};
const options = ref([]);
const getUserPerList = (transform, params = {}) => {
return http.post(origanizemanage.queryUserPerList, { ...params }).then((res) => {
return res.data?.map((item) => {
item = { ...item, ...transform(item) };
return item;
});
});
};
export const formConfig2 = (casData: any) => {
return ref([
{
field: 'information',
component: 'NsCascader',
componentProps: {
placeholder: '请选择',
displayRender: ({ labels, selectedOptions }: any) => {
console.log(labels, selectedOptions);
casData.value = selectedOptions.map(({ label, value }) => {
return { label, value };
});
return labels.join('/');
},
loadData: (selectedOptions, options) => {
console.log(selectedOptions, options, 'selectedOptions, options');
const targetOption = selectedOptions[selectedOptions.length - 1];
let transForm, params;
// load options lazily
if (!selectedOptions.length) {
transForm = (data) => {
data['label'] = data.orgName;
data['value'] = data.orgId;
data['isLeaf'] = false;
data['level'] = 1;
return data;
};
getUserPerList(transForm).then((res) => {
options.value = [...res];
});
}
const id = targetOption?.value;
const level = targetOption?.level;
if (targetOption) {
targetOption.loading = true;
}
if (level === 1) {
transForm = (data) => {
data['label'] = data.deptName;
data['value'] = data.deptId;
data['isLeaf'] = false;
data['level'] = 2;
return data;
};
params = { orgId: id };
} else if (level === 2) {
transForm = (data) => {
data['label'] = data.roleName;
data['value'] = data.roleId;
data['level'] = 3;
return data;
};
params = { deptId: id };
}
if (targetOption) {
getUserPerList(transForm, { ...params }).then((res) => {
targetOption.loading = false;
targetOption.children = [...res];
});
}
},
},
},
]);
};