mirror of
https://github.com/certd/certd.git
synced 2026-04-14 12:30:54 +08:00
37 lines
995 B
TypeScript
37 lines
995 B
TypeScript
import { asyncCompute, compute } from "@fast-crud/fast-crud";
|
|
import { merge } from "lodash-es";
|
|
import { computed } from "vue";
|
|
|
|
export type MergeScriptContext = {
|
|
compute: typeof compute;
|
|
asyncCompute: typeof asyncCompute;
|
|
computed: typeof computed;
|
|
};
|
|
|
|
export function useReference(formItem: any) {
|
|
if (formItem.mergeScript) {
|
|
const ctx = {
|
|
compute,
|
|
asyncCompute,
|
|
computed,
|
|
};
|
|
const script = formItem.mergeScript;
|
|
const func = new Function("ctx", script);
|
|
const merged = func(ctx);
|
|
merge(formItem, merged);
|
|
|
|
delete formItem.mergeScript;
|
|
}
|
|
//helper
|
|
if (formItem.helper && typeof formItem.helper === "string") {
|
|
//正则表达式替换 [name](url) 成 <a href="url" >
|
|
let helper = formItem.helper.replace(/\[(.*)\]\((.*)\)/g, '<a href="$2" target="_blank">$1</a>');
|
|
helper = helper.replace(/\n/g, "<br/>");
|
|
formItem.helper = {
|
|
render: () => {
|
|
return <div innerHTML={helper}></div>;
|
|
},
|
|
};
|
|
}
|
|
}
|