import { ref } from 'vue'; import { http } from '/nerv-lib/util'; import { origanizemanage } from '/@/api/origanizemanage'; import { carbonEmissionFactorLibrary } from '/@/api/carbonEmissionFactorLibrary'; export const formConfig = (disabled) => { return ref([ { field: 'fields', component: 'NsChildForm', componentProps: { schemas: [ { label: '排放源', field: 'emissionSources', component: 'NsInput', componentProps: { placeholder: '请输入排放源', maxLength: 20, }, // rules: [ // { // required: true, // message: '请输入排放源', // }, // ], }, { field: 'emissionType', label: '排放分类', component: 'NsCascader', fieldMap: ['emissionType'], componentProps: { placeholder: '请选择排放分类', api: carbonEmissionFactorLibrary.getCarbonFactorTree, defaultParams: { orgId: sessionStorage.getItem('ORGID'), }, fieldNames: { label: 'emissionName', value: 'id' }, showSearch: true, }, // rules: [ // { // required: true, // message: '请选择排放分类', // }, // ], }, { field: 'emissionGas', label: '排放气体', component: 'NsSelect', componentProps: { allowClear: true, placeholder: '请选择排放气体', options: [ { label: 'CO2', value: 1, }, { label: 'CO2e', value: 2, }, { label: 'SF6', value: 3, }, { label: 'CH4', value: 4, }, { label: 'PFCs', value: 5, }, { label: 'HFCs', value: 6, }, ], }, // rules: [ // { // required: true, // message: '请选择排放气体', // }, // ], }, { label: '排放环节', field: 'emissionProcess', component: 'NsInput', componentProps: { placeholder: '请输入排放环节', maxLength: 20, }, // rules: [ // { // required: true, // message: '请输入排放环节', // }, // ], }, { label: '排放因子', field: 'emissionFactors', component: 'NsInputNumber', componentProps: { placeholder: '请输入排放因子值', maxLength: 20, }, // rules: [ // { // required: true, // message: '请输入排放因子值', // trigger: 'change', // }, // ], }, { field: 'carbonEmissionPrefix', label: '碳排前缀', component: 'NsSelect', componentProps: { disabled: true, allowClear: true, defaultValue: 't', placeholder: '请选择碳排前缀', options: [ { label: 'g', value: 'g', }, { label: 'kg', value: 'kg', }, { label: 't', value: 't', }, ], }, // rules: [ // { // required: true, // message: '请选择碳排前缀', // }, // ], }, { label: '碳排后缀', field: 'carbonEmissionSuffix', component: 'NsInput', componentProps: { placeholder: '请输入碳排后缀', maxLength: 20, }, // rules: [ // { // required: true, // message: '请输入碳排后缀', // }, // ], }, { label: '已引用数', field: 'numberOfReferences', component: 'NsInput', componentProps: { defaultValue: '', disabled: true, maxLength: 20, }, }, { label: '参考文献(选填)', field: 'bibliography', component: 'NsTextarea', componentProps: { placeholder: '请输入参考文献', maxLength: 300, showCount: true, }, }, ], }, }, ]); }; 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]; }); } }, }, }, ]); };