mirror of https://github.com/certd/certd
102 lines
2.6 KiB
TypeScript
102 lines
2.6 KiB
TypeScript
import { ColumnCompositionProps, dict } from "@fast-crud/fast-crud";
|
|
// @ts-ignore
|
|
import * as api from "./api";
|
|
// @ts-ignore
|
|
import _ from "lodash-es";
|
|
import { toRef } from "vue";
|
|
|
|
export function getCommonColumnDefine(crudExpose: any, typeRef: any) {
|
|
const AccessTypeDictRef = dict({
|
|
url: "/pi/access/accessTypeDict"
|
|
});
|
|
const defaultPluginConfig = {
|
|
component: {
|
|
name: "a-input",
|
|
vModel: "value"
|
|
}
|
|
};
|
|
|
|
function buildDefineFields(define: any, form: any) {
|
|
const formWrapperRef = crudExpose.getFormWrapperRef();
|
|
const columnsRef = toRef(formWrapperRef.formOptions, "columns");
|
|
|
|
for (const key in columnsRef.value) {
|
|
if (key.indexOf(".") >= 0) {
|
|
delete columnsRef.value[key];
|
|
}
|
|
}
|
|
console.log('crudBinding.value[mode + "Form"].columns', columnsRef.value);
|
|
_.forEach(define.input, (value: any, mapKey: any) => {
|
|
const key = "access." + mapKey;
|
|
const field = {
|
|
...value,
|
|
key
|
|
};
|
|
const column = _.merge({ title: key }, defaultPluginConfig, field);
|
|
if (column.value != null && _.get(form, key) == null) {
|
|
//设置默认值
|
|
_.set(form, key, column.value);
|
|
}
|
|
columnsRef.value[key] = column;
|
|
console.log("form", columnsRef.value);
|
|
});
|
|
}
|
|
|
|
return {
|
|
type: {
|
|
title: "类型",
|
|
type: "dict-select",
|
|
dict: AccessTypeDictRef,
|
|
search: {
|
|
show: false
|
|
},
|
|
column: {
|
|
width: 120
|
|
},
|
|
form: {
|
|
component: {
|
|
disabled: false
|
|
},
|
|
rules: [{ required: true, message: "请选择类型" }],
|
|
valueChange: {
|
|
immediate: true,
|
|
async handle({ value, mode, form, immediate }) {
|
|
if (value == null) {
|
|
return;
|
|
}
|
|
const define = await api.GetProviderDefine(value);
|
|
console.log("define", define);
|
|
if (!immediate) {
|
|
form.access = {};
|
|
}
|
|
buildDefineFields(define, form);
|
|
}
|
|
}
|
|
},
|
|
addForm: {
|
|
value: typeRef
|
|
}
|
|
} as ColumnCompositionProps,
|
|
setting: {
|
|
column: { show: false },
|
|
form: {
|
|
show: false,
|
|
valueBuilder({ value, form }) {
|
|
form.access = {};
|
|
if (!value) {
|
|
return;
|
|
}
|
|
const setting = JSON.parse(value);
|
|
for (const key in setting) {
|
|
form.access[key] = setting[key];
|
|
}
|
|
},
|
|
valueResolve({ form }) {
|
|
const setting = form.access;
|
|
form.setting = JSON.stringify(setting);
|
|
}
|
|
}
|
|
} as ColumnCompositionProps
|
|
};
|
|
}
|