UNPKG

@zhsz/cool-design-crud

Version:

102 lines (101 loc) 2.37 kB
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 };