@zhsz/cool-design-crud
Version:
102 lines (101 loc) • 2.37 kB
JavaScript
import { defineComponent, getCurrentInstance, reactive, inject, provide, createVNode } from "vue";
import { merge } from "merge";
import { useHelper } from "./helper.mjs";
import Mitt from "../../utils/mitt.mjs";
import { mergeConfig, deepMerge } from "../../utils/index.mjs";
import { crudList } from "../../emitter.mjs";
import "../../utils/test.mjs";
import { useGlobal } from "../../hooks/core.mjs";
import "@formily/core";
import "lodash-es";
import "../../hooks/table.mjs";
import cloneDeep from "clone-deep";
const index = /* @__PURE__ */ defineComponent({
name: "cl-crud",
props: {
/** Crud 组件唯一ID */
name: String,
/** 接口对象 */
service: Object,
/** 权限 */
permission: Object,
/** 字典 */
dict: Object,
/** 监听刷新事件 */
onRefresh: Function,
/** 监听删除事件 */
onDelete: Function,
/** 是否有边框 */
border: Boolean,
/** 内间距 */
padding: {
type: String,
default: "10px"
}
},
setup(props, {
slots,
expose
}) {
const {
uid
} = getCurrentInstance();
const config = reactive(mergeConfig(inject("useCrud__options") || {}));
const mitt = new Mitt(uid);
const {
dict,
permission
} = useGlobal();
const crud = reactive(deepMerge({
id: props.name || uid,
// 绑定的路由地址
routePath: location.pathname || "/",
// 表格配置
table: {
headerMenu: true,
contextMenu: true,
border: true
},
// 表格加载状态
loading: false,
// 表格已选列
selection: [],
// 请求参数
params: {
page: 1,
size: 10
},
// 请求服务
service: {},
// 字典
dict: {},
// 权限
permission: {}
}, cloneDeep({
dict,
permission
})));
crudList.push(merge(crud, useHelper({
mitt,
config,
crud
})));
provide("crud", crud);
provide("mitt", mitt);
expose(crud);
return () => {
var _a;
return createVNode("div", {
"class": ["cl-crud", {
"is-border": props.border
}],
"style": {
padding: props.padding
}
}, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
};
}
});
export {
index as default
};