diff --git a/build/cool/eps/index.ts b/build/cool/eps/index.ts index e10eae9..10cddaf 100644 --- a/build/cool/eps/index.ts +++ b/build/cool/eps/index.ts @@ -2,7 +2,7 @@ import { createDir, error, firstUpperCase, readFile, toCamel } from "../utils"; import { join } from "path"; import { Entity, DistPath } from "./config"; import axios from "axios"; -import { isArray, isEmpty, last, merge, unionBy } from "lodash"; +import { isArray, isEmpty, last, merge, unionBy } from "lodash-es"; import { createWriteStream } from "fs"; import prettier from "prettier"; import { proxy } from "../../../src/config/proxy"; diff --git a/package.json b/package.json index 173c9f6..7de075f 100644 --- a/package.json +++ b/package.json @@ -9,17 +9,17 @@ "lint:eslint": "eslint \"./src/**/*.{vue,ts,tsx}\" --fix" }, "dependencies": { - "@cool-vue/crud": "^7.1.10", + "@cool-vue/crud": "^7.1.11", "@element-plus/icons-vue": "^2.1.0", "@vueuse/core": "^10.4.0", "@wangeditor/editor": "^5.1.23", "@wangeditor/editor-for-vue": "^5.1.12", "axios": "^1.6.7", - "chardet": "^1.6.0", + "chardet": "^2.0.0", "core-js": "^3.32.1", "dayjs": "^1.11.10", "echarts": "^5.4.3", - "element-plus": "^2.4.3", + "element-plus": "^2.5.4", "file-saver": "^2.0.5", "lodash-es": "^4.17.21", "marked": "^11.1.1", @@ -31,8 +31,7 @@ "pinia": "^2.1.7", "socket.io-client": "^4.7.2", "store": "^2.0.12", - "ts-wps": "^1.0.5", - "vue": "^3.3.9", + "vue": "^3.4.15", "vue-echarts": "^6.6.1", "vue-router": "^4.2.5", "vuedraggable": "^4.1.0", @@ -43,26 +42,24 @@ "@types/mockjs": "^1.0.7", "@types/node": "^20.5.6", "@types/nprogress": "^0.2.0", - "@types/prettier": "^3.0.0", "@types/store": "^2.0.2", - "@typescript-eslint/eslint-plugin": "^6.4.1", + "@typescript-eslint/eslint-plugin": "^6.20.0", "@typescript-eslint/parser": "^6.4.1", - "@vitejs/plugin-vue": "^4.3.3", - "@vitejs/plugin-vue-jsx": "^3.0.2", - "@vue/compiler-sfc": "^3.3.4", + "@vitejs/plugin-vue": "^5.0.3", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "@vue/compiler-sfc": "^3.4.15", "eslint": "^8.48.0", "eslint-config-prettier": "^9.0.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-vue": "^9.17.0", "glob": "^10.3.10", - "lodash": "^4.17.21", "magic-string": "^0.30.3", "prettier": "^3.1.0", "rollup-plugin-visualizer": "^5.9.2", "sass": "^1.66.1", - "terser": "^5.19.2", + "terser": "^5.27.0", "typescript": "^5.2.2", - "vite": "^4.5.0", + "vite": "^5.0.12", "vite-plugin-compression": "^0.5.1" } } diff --git a/packages/crud/README.md b/packages/crud/README.md index 00d92e8..bec621d 100644 --- a/packages/crud/README.md +++ b/packages/crud/README.md @@ -10,7 +10,7 @@ Vue.js 是一套用于构建用户界面的渐进式框架。与其它大型框 -v6.0.0 新增 Ai 极速编码 ~~~~ +v7.0.0 新增 Ai 极速编码 ~~~~ diff --git a/packages/crud/index.d.ts b/packages/crud/index.d.ts index 6b44a00..38cef6f 100644 --- a/packages/crud/index.d.ts +++ b/packages/crud/index.d.ts @@ -113,6 +113,9 @@ declare namespace Render { // 获取keys type PropKey = keyof RemoveIndex | (string & {}); +// 任意字符串 +type AnyString = string & {}; + declare namespace ClCrud { interface Label { op: string; @@ -291,10 +294,12 @@ declare namespace ClCrud { } declare namespace ClTable { - type OpButton = Array<"info" | "edit" | "delete" | Render.OpButton>; + type OpButton = Array<"info" | "edit" | "delete" | AnyString | Render.OpButton>; + + type ColumnType = "index" | "selection" | "expand" | "op" | AnyString; interface Column { - type: "index" | "selection" | "expand" | "op"; + type: ColumnType; hidden: boolean | Vue.Ref; component: Render.Component; search: { @@ -352,10 +357,12 @@ declare namespace ClTable { | "order-asc" >; + type Plugin = (options: { exposed: Ref }) => void; + interface Config { columns: Column[]; autoHeight: boolean; - height: string | number; + height: any; contextMenu: ContextMenu; defaultSort: { prop: string; @@ -364,6 +371,7 @@ declare namespace ClTable { sortRefresh: boolean; emptyText: string; rowKey: string; + plugins?: Plugin[]; onRowContextmenu?(row: T, column: any, event: any): void; } @@ -412,7 +420,7 @@ declare namespace ClFormTabs { } declare namespace ClForm { - type CloseAction = "close" | "save"; + type CloseAction = "close" | "save" | AnyString; interface Rule { type?: @@ -456,7 +464,7 @@ declare namespace ClForm { | "splitJoin" | "json" | "empty" - | (string & {}); + | AnyString; type HookPipe = HookKey | HookFn; @@ -512,8 +520,8 @@ declare namespace ClForm { interface Config { title?: any; - height?: string; - width?: string; + height?: any; + width?: any; props: ElementPlus.FormProps; items: Item[]; form: obj; @@ -535,7 +543,7 @@ declare namespace ClForm { height?: string; width?: string; hideHeader?: boolean; - controls?: Array<"fullscreen" | "close">; + controls?: Array<"fullscreen" | "close" | AnyString>; [key: string]: any; }; [key: string]: any; @@ -616,7 +624,7 @@ declare namespace ClUpsert { } interface Ref extends ClForm.Ref { - mode: "add" | "update" | "info"; + mode: "add" | "update" | "info" | AnyString; } interface Options extends DeepPartial> { @@ -720,6 +728,7 @@ declare interface Config { labelPosition: ElementPlus.FormProps["labelPosition"]; labelWidth: ElementPlus.FormProps["labelWidth"]; span: number; + plugins: ClForm.Plugin[]; }; table: { stripe: boolean; @@ -733,6 +742,7 @@ declare interface Config { align: ElementPlus.Align; headerAlign: ElementPlus.Align; }; + plugins: ClTable.Plugin[]; }; }; } diff --git a/packages/crud/package.json b/packages/crud/package.json index fadd536..270dfa8 100644 --- a/packages/crud/package.json +++ b/packages/crud/package.json @@ -1,6 +1,6 @@ { "name": "@cool-vue/crud", - "version": "7.1.10", + "version": "7.1.11", "private": false, "main": "./dist/index.umd.min.js", "typings": "types/index.d.ts", @@ -13,10 +13,10 @@ "dependencies": { "array.prototype.flat": "^1.2.4", "core-js": "^3.21.1", - "element-plus": "^2.4.3", + "element-plus": "^2.5.4", "lodash-es": "^4.17.21", "mitt": "^3.0.1", - "vue": "^3.3.9" + "vue": "^3.4.15" }, "devDependencies": { "@types/array.prototype.flat": "^1.2.1", @@ -28,7 +28,7 @@ "prettier": "^3.1.0", "sass": "^1.55.0", "sass-loader": "^12.6.0", - "typescript": "^4.6.2" + "typescript": "^5.3.3" }, "files": [ "dist", diff --git a/packages/crud/src/App.vue b/packages/crud/src/App.vue index 1c7835f..f4e8d1f 100644 --- a/packages/crud/src/App.vue +++ b/packages/crud/src/App.vue @@ -9,7 +9,7 @@ - + @@ -30,7 +30,6 @@ diff --git a/src/modules/base/pages/main/components/topbar.vue b/src/modules/base/pages/main/components/topbar.vue index e17dd62..7c11719 100644 --- a/src/modules/base/pages/main/components/topbar.vue +++ b/src/modules/base/pages/main/components/topbar.vue @@ -51,7 +51,7 @@ diff --git a/src/modules/base/views/role.vue b/src/modules/base/views/role.vue index 5756ade..e5d7270 100644 --- a/src/modules/base/views/role.vue +++ b/src/modules/base/views/role.vue @@ -47,8 +47,8 @@ - diff --git a/src/modules/demo/components/copy.vue b/src/modules/demo/components/copy.vue deleted file mode 100644 index 71be34d..0000000 --- a/src/modules/demo/components/copy.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/modules/demo/components/crud.vue b/src/modules/demo/components/crud.vue deleted file mode 100644 index ce32e0d..0000000 --- a/src/modules/demo/components/crud.vue +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/src/modules/demo/components/design.vue b/src/modules/demo/components/design.vue deleted file mode 100644 index eb113a4..0000000 --- a/src/modules/demo/components/design.vue +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/src/modules/demo/components/editor.vue b/src/modules/demo/components/editor.vue deleted file mode 100644 index 087f8d4..0000000 --- a/src/modules/demo/components/editor.vue +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/src/modules/demo/components/file.vue b/src/modules/demo/components/file.vue deleted file mode 100644 index d75e567..0000000 --- a/src/modules/demo/components/file.vue +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/src/modules/demo/components/form.vue b/src/modules/demo/components/form.vue deleted file mode 100644 index 108d693..0000000 --- a/src/modules/demo/components/form.vue +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/src/modules/demo/components/svg.vue b/src/modules/demo/components/svg.vue deleted file mode 100644 index 1a09ce6..0000000 --- a/src/modules/demo/components/svg.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - - - diff --git a/src/modules/demo/components/upload.vue b/src/modules/demo/components/upload.vue deleted file mode 100644 index 2a3fea4..0000000 --- a/src/modules/demo/components/upload.vue +++ /dev/null @@ -1,14 +0,0 @@ - diff --git a/src/modules/demo/views/crud/components/crud/all.vue b/src/modules/demo/views/crud/components/crud/all.vue index 5e1c0a4..81b8760 100644 --- a/src/modules/demo/views/crud/components/crud/all.vue +++ b/src/modules/demo/views/crud/components/crud/all.vue @@ -120,14 +120,12 @@ diff --git a/src/modules/demo/views/crud/index.vue b/src/modules/demo/views/crud/index.vue index 9b76e0b..bf650a8 100644 --- a/src/modules/demo/views/crud/index.vue +++ b/src/modules/demo/views/crud/index.vue @@ -60,6 +60,7 @@ import TableDict from "./components/table/dict.vue"; import TableSpanMethod from "./components/table/span-method.vue"; import TableColumnCustom from "./components/table/column-custom.vue"; import TableComponent from "./components/table/component/index.vue"; +import TablePlugin from "./components/table/plugin/index.vue"; import UpsertBase from "./components/upsert/base.vue"; import UpsertEvent from "./components/upsert/event.vue"; @@ -115,7 +116,7 @@ const list = [ }, { label: "高级", - children: [TableColumnCustom, TableComponent] + children: [TableColumnCustom, TableComponent, TablePlugin] } ] }, diff --git a/src/modules/demo/views/demo.vue b/src/modules/demo/views/demo.vue deleted file mode 100644 index 86ac4b0..0000000 --- a/src/modules/demo/views/demo.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - - diff --git a/src/modules/demo/views/editor.vue b/src/modules/demo/views/editor.vue deleted file mode 100644 index 327c917..0000000 --- a/src/modules/demo/views/editor.vue +++ /dev/null @@ -1,40 +0,0 @@ - - - - - diff --git a/src/modules/demo/views/upload.vue b/src/modules/demo/views/upload.vue deleted file mode 100644 index b51a2b9..0000000 --- a/src/modules/demo/views/upload.vue +++ /dev/null @@ -1,144 +0,0 @@ - - - - - diff --git a/src/modules/helper/hooks/ai.ts b/src/modules/helper/hooks/ai.ts index eff02f3..9267b95 100644 --- a/src/modules/helper/hooks/ai.ts +++ b/src/modules/helper/hooks/ai.ts @@ -57,8 +57,8 @@ export function useAi() { // 拼接内容 content += msg.content || ""; - } catch (e) { - console.error(e); + } catch (err) { + console.error(err); } } diff --git a/src/modules/helper/static/index.scss b/src/modules/helper/static/index.scss new file mode 100644 index 0000000..ac2df77 --- /dev/null +++ b/src/modules/helper/static/index.scss @@ -0,0 +1,109 @@ +.plugins { + overflow-x: hidden; + background-color: var(--el-bg-color); + padding: 10px; + height: 100%; + box-sizing: border-box; + + .scope { + border-radius: 8px; + margin-bottom: 10px; + border: 1px solid var(--el-border-color-light); + height: 200px; + width: 100%; + box-sizing: border-box; + cursor: pointer; + + .c { + display: flex; + box-sizing: border-box; + padding: 15px; + height: calc(100% - 50px); + position: relative; + + .set { + position: absolute; + right: 10px; + top: 10px; + font-size: 18px; + color: var(--el-color-info); + } + + .logo { + height: 40px; + width: 40px; + margin-right: 15px; + } + + .det { + display: flex; + flex-direction: column; + flex: 1; + + .tag { + margin-bottom: 10px; + + .el-tag { + margin-right: 5px; + } + } + + .title { + display: flex; + align-items: center; + margin-bottom: 5px; + font-size: 14px; + line-height: 1; + font-weight: bold; + } + + .desc { + font-size: 12px; + flex: 1; + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + overflow: hidden; + color: var(--el-text-color-regular); + } + + .link { + display: flex; + align-items: center; + } + + .author { + font-size: 12px; + color: var(--el-text-color-secondary); + } + } + } + + .f { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px; + height: 30px; + } + + &.is-add { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: var(--el-disabled-bg-color); + border-color: var(--el-disabled-bg-color); + width: 180px; + + .el-icon { + font-size: 36px; + color: #666; + } + } + + &:not(.is-add):hover { + box-shadow: 0px 0px 10px 1px var(--el-color-info-light-9); + } + } +} diff --git a/src/modules/helper/static/svg/icon-vue.svg b/src/modules/helper/static/svg/icon-vue.svg new file mode 100644 index 0000000..6e08773 --- /dev/null +++ b/src/modules/helper/static/svg/icon-vue.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/modules/helper/views/ai-code.vue b/src/modules/helper/views/ai-code.vue index 107b929..a011b04 100644 --- a/src/modules/helper/views/ai-code.vue +++ b/src/modules/helper/views/ai-code.vue @@ -6,32 +6,38 @@
- +
CRUD
-
- - - -
+ + + + + + + + + + + + +
其他你想做的事?
@@ -75,7 +81,13 @@ Copy - + 生成Vue代码 @@ -161,7 +173,7 @@
- diff --git a/src/modules/space/components/space.vue b/src/modules/space/components/space.vue index ad11f69..f4c90ac 100644 --- a/src/modules/space/components/space.vue +++ b/src/modules/space/components/space.vue @@ -18,6 +18,7 @@ width="1070px" padding="0" keep-alive + :scrollbar="false" :close-on-click-modal="false" :close-on-press-escape="false" > diff --git a/src/modules/task/views/list.vue b/src/modules/task/views/list.vue index 87d4aa7..304dea9 100644 --- a/src/modules/task/views/list.vue +++ b/src/modules/task/views/list.vue @@ -91,7 +91,7 @@ import { onActivated, ref } from "vue"; import { useBrowser, useCool } from "/@/cool"; import { VideoPlay, VideoPause, Plus, Tickets, Delete } from "@element-plus/icons-vue"; -import { ContextMenu, setFocus, useForm } from "@cool-vue/crud"; +import { ContextMenu, useForm } from "@cool-vue/crud"; import { ElMessage, ElMessageBox } from "element-plus"; import TaskLogs from "../components/logs.vue"; @@ -179,135 +179,132 @@ async function edit(item?: Eps.TaskInfoEntity) { return false; } - Form.value?.open( - { - title: "编辑计划任务", - width: "600px", - props: { - labelWidth: "80px" + Form.value?.open({ + title: "编辑计划任务", + width: "600px", + props: { + labelWidth: "80px" + }, + items: [ + { + label: "名称", + prop: "name", + component: { + name: "el-input", + props: { + placeholder: "请输入名称" + } + }, + required: true }, - items: [ - { - label: "名称", - prop: "name", - component: { - name: "el-input", - props: { - placeholder: "请输入名称" - } - }, - required: true - }, - { - label: "类型", - prop: "taskType", - value: 0, - component: { - name: "el-radio-group", - options: [ - { - label: "cron", - value: 0 - }, - { - label: "时间间隔", - value: 1 - } - ] - }, - required: true - }, - { - label: "cron", - prop: "cron", - hidden: ({ scope }) => scope.taskType == 1, - component: { - name: "el-input", - props: { - placeholder: "* * * * * *" - } - }, - required: true - }, - { - label: "间隔(秒)", - prop: "every", - hidden: ({ scope }) => scope.taskType == 0, - hook: { - bind(value) { - return value / 1000; + { + label: "类型", + prop: "taskType", + value: 0, + component: { + name: "el-radio-group", + options: [ + { + label: "cron", + value: 0 }, - submit(value) { - return value * 1000; + { + label: "时间间隔", + value: 1 } - }, - component: { - name: "el-input-number", - props: { - min: 1, - max: 100000000 - } - }, - required: true + ] }, - { - label: "service", - prop: "service", - component: { - name: "el-input", - props: { - placeholder: "taskDemoService.test([1, 2])" - } + required: true + }, + { + label: "cron", + prop: "cron", + hidden: ({ scope }) => scope.taskType == 1, + component: { + name: "el-input", + props: { + placeholder: "* * * * * *" } }, - { - label: "开始时间", - prop: "startDate", - hidden: ({ scope }) => scope.taskType == 1, - component: { - name: "el-date-picker", - props: { - type: "datetime", - "value-format": "YYYY-MM-DD HH:mm:ss" - } + required: true + }, + { + label: "间隔(秒)", + prop: "every", + hidden: ({ scope }) => scope.taskType == 0, + hook: { + bind(value) { + return value / 1000; + }, + submit(value) { + return value * 1000; } }, - { - label: "备注", - prop: "remark", - component: { - name: "el-input", - props: { - type: "textarea", - rows: 3 - } + component: { + name: "el-input-number", + props: { + min: 1, + max: 100000000 + } + }, + required: true + }, + { + label: "service", + prop: "service", + component: { + name: "el-input", + props: { + placeholder: "taskDemoService.test([1, 2])" } } - ], - form: { - ...item }, - on: { - submit: (data, { close, done }) => { - if (!data.limit) { - data.limit = null; + { + label: "开始时间", + prop: "startDate", + hidden: ({ scope }) => scope.taskType == 1, + component: { + name: "el-date-picker", + props: { + type: "datetime", + "value-format": "YYYY-MM-DD HH:mm:ss" + } + } + }, + { + label: "备注", + prop: "remark", + component: { + name: "el-input", + props: { + type: "textarea", + rows: 3 } - - service.task.info[item?.id ? "update" : "add"](data) - .then(() => { - refresh(); - ElMessage.success("保存成功"); - close(); - }) - .catch((err) => { - ElMessage.error(err.message); - done(); - }); } } + ], + form: { + ...item }, - [setFocus()] - ); + on: { + submit: (data, { close, done }) => { + if (!data.limit) { + data.limit = null; + } + + service.task.info[item?.id ? "update" : "add"](data) + .then(() => { + refresh(); + ElMessage.success("保存成功"); + close(); + }) + .catch((err) => { + ElMessage.error(err.message); + done(); + }); + } + } + }); } // 执行一次 diff --git a/src/modules/user/views/list.vue b/src/modules/user/views/list.vue index c624080..a1aa653 100644 --- a/src/modules/user/views/list.vue +++ b/src/modules/user/views/list.vue @@ -13,6 +13,10 @@ + + + + @@ -78,12 +82,19 @@ const options = reactive({ ], status: [ { - label: "启用", - value: 1 + label: "禁用", + value: 0, + type: "danger" }, { - label: "禁用", - value: 0 + label: "正常", + value: 1, + type: "success" + }, + { + label: "已注销", + value: 2, + type: "warning" } ] }); @@ -128,10 +139,8 @@ const Table = useTable({ { label: "状态", prop: "status", - minWidth: 100, - component: { - name: "cl-switch" - } + minWidth: 120, + dict: options.status }, { label: "创建时间", diff --git a/src/plugins/crud/config.ts b/src/plugins/crud/config.ts index 6aa8776..5d5a1ca 100644 --- a/src/plugins/crud/config.ts +++ b/src/plugins/crud/config.ts @@ -1,15 +1,22 @@ import { Merge, ModuleConfig } from "/@/cool"; // npm -// import Crud, { locale } from "@cool-vue/crud"; -// import "@cool-vue/crud/dist/index.css"; +import Crud, { locale, setFocus } from "@cool-vue/crud"; +import "@cool-vue/crud/dist/index.css"; // 调试、自定义crud -import Crud, { locale } from "../../../packages/crud/src"; -import "../../../packages/crud/src/static/index.scss"; +// import Crud, { locale } from "../../../packages/crud/src"; +// import "../../../packages/crud/src/static/index.scss"; export default (): Merge => { return { + label: "CRUD", + description: "快速增删改查及一系列辅助组件", + author: "COOL", + version: "7.1.11", + updateTime: "2024-02-01", + demo: "/demo/crud", + // 组件全注册 components: Object.values(import.meta.glob("./components/**/*.{vue,tsx}")), @@ -17,7 +24,16 @@ export default (): Merge => { options: { style: { table: { + // 插件列表 + plugins: [] // contextMenu: [], 是否关闭表格右键菜单 + }, + form: { + // 插件列表 + plugins: [ + // 自动聚焦插件 + setFocus() + ] } }, dict: { diff --git a/src/plugins/distpicker/config.ts b/src/plugins/distpicker/config.ts index 8e0e3bc..d67ba1f 100644 --- a/src/plugins/distpicker/config.ts +++ b/src/plugins/distpicker/config.ts @@ -16,6 +16,18 @@ registerFormHook("pca", (value, { method, form, prop }) => { export default (): ModuleConfig => { return { + label: "省市区选择器", + description: "快速增删改查及一系列辅助组件", + author: "COOL", + version: "1.0.0", + updateTime: "2024-02-01", + demo: [ + { + name: "基础用法", + component: () => import("./demo/base.vue") + } + ], + components: [ // 省市区选择 https://github.com/modood/Administrative-divisions-of-China () => import("./components/index") diff --git a/src/plugins/distpicker/demo/base.vue b/src/plugins/distpicker/demo/base.vue new file mode 100644 index 0000000..75e18d1 --- /dev/null +++ b/src/plugins/distpicker/demo/base.vue @@ -0,0 +1,10 @@ + + + diff --git a/src/plugins/editor-monaco/components/index.vue b/src/plugins/editor-monaco/components/monaco.vue similarity index 98% rename from src/plugins/editor-monaco/components/index.vue rename to src/plugins/editor-monaco/components/monaco.vue index d9f07a0..139c219 100644 --- a/src/plugins/editor-monaco/components/index.vue +++ b/src/plugins/editor-monaco/components/monaco.vue @@ -26,7 +26,7 @@ const props = defineProps({ options: Object, height: { type: [String, Number], - default: 400 + default: 500 }, autofocus: { type: Boolean, @@ -86,7 +86,7 @@ function create() { theme: "default", language: props.language, minimap: { - enabled: true + enabled: false }, automaticLayout: true, scrollbar: { diff --git a/src/plugins/editor-monaco/config.ts b/src/plugins/editor-monaco/config.ts index 83832ef..96207fb 100644 --- a/src/plugins/editor-monaco/config.ts +++ b/src/plugins/editor-monaco/config.ts @@ -2,9 +2,21 @@ import { ModuleConfig } from "/@/cool"; export default (): ModuleConfig => { return { + label: "代码编辑器", + description: "基于 monaco 封装的代码编辑器", + author: "COOL", + version: "1.0.0", + updateTime: "2024-02-01", + demo: [ + { + name: "基础用法", + component: () => import("./demo/base.vue") + } + ], + components: [ // 代码编辑器 https://www.npmjs.com/package/monaco-editor - () => import("./components/index.vue") + () => import("./components/monaco.vue") ] }; }; diff --git a/src/plugins/editor-monaco/demo/base.vue b/src/plugins/editor-monaco/demo/base.vue new file mode 100644 index 0000000..a6052b7 --- /dev/null +++ b/src/plugins/editor-monaco/demo/base.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/plugins/editor-preview/config.ts b/src/plugins/editor-preview/config.ts index 188c944..edff83c 100644 --- a/src/plugins/editor-preview/config.ts +++ b/src/plugins/editor-preview/config.ts @@ -2,6 +2,18 @@ import { ModuleConfig } from "/@/cool"; export default (): ModuleConfig => { return { + label: "编辑器内容预览", + description: "基于 monaco、wang 等编辑器的内容预览组件", + author: "COOL", + version: "1.0.0", + updateTime: "2024-02-01", + demo: [ + { + name: "基础用法", + component: () => import("./demo/base.vue") + } + ], + components: [() => import("./components/preview.vue")] }; }; diff --git a/src/plugins/editor-preview/demo/base.vue b/src/plugins/editor-preview/demo/base.vue new file mode 100644 index 0000000..57d3bc6 --- /dev/null +++ b/src/plugins/editor-preview/demo/base.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/plugins/editor-wang/components/wang.vue b/src/plugins/editor-wang/components/wang.vue index febe9cc..b46af3c 100644 --- a/src/plugins/editor-wang/components/wang.vue +++ b/src/plugins/editor-wang/components/wang.vue @@ -68,7 +68,7 @@ export default defineComponent({ // 高度 height: { type: [String, Number], - default: 400 + default: 500 }, // 禁用 disabled: Boolean, diff --git a/src/plugins/editor-wang/config.ts b/src/plugins/editor-wang/config.ts index 6fd33d3..50d8eea 100644 --- a/src/plugins/editor-wang/config.ts +++ b/src/plugins/editor-wang/config.ts @@ -2,6 +2,18 @@ import { ModuleConfig } from "/@/cool"; export default (): ModuleConfig => { return { + label: "富文本编辑器", + description: "基于 wangEditor 封装的富文本编辑器", + author: "COOL", + version: "1.0.0", + updateTime: "2024-02-01", + demo: [ + { + name: "基础用法", + component: () => import("./demo/base.vue") + } + ], + components: [() => import("./components/wang.vue")] }; }; diff --git a/src/plugins/editor-wang/demo/base.vue b/src/plugins/editor-wang/demo/base.vue new file mode 100644 index 0000000..d252552 --- /dev/null +++ b/src/plugins/editor-wang/demo/base.vue @@ -0,0 +1,11 @@ + + + diff --git a/src/plugins/excel/components/export-btn.tsx b/src/plugins/excel/components/export-btn.tsx index c5086ee..5bc7a15 100644 --- a/src/plugins/excel/components/export-btn.tsx +++ b/src/plugins/excel/components/export-btn.tsx @@ -141,7 +141,7 @@ export default defineComponent({ function open() { if (!props.columns) { - return console.error("columns is required"); + return console.error(" columns is required"); } // 表格列 diff --git a/src/plugins/excel/components/import-btn.vue b/src/plugins/excel/components/import-btn.vue index 5530d8e..7a4c50d 100644 --- a/src/plugins/excel/components/import-btn.vue +++ b/src/plugins/excel/components/import-btn.vue @@ -3,7 +3,7 @@ -
- + @@ -33,7 +119,7 @@ @@ -229,9 +372,15 @@ defineExpose({ } } -.progress { - margin-top: 20px; - display: flex; - justify-content: center; +.data-table { + .head { + margin-bottom: 10px; + } + + .pagination { + display: flex; + justify-content: flex-end; + margin-top: 10px; + } } diff --git a/src/plugins/excel/config.ts b/src/plugins/excel/config.ts index a078a25..cd96e85 100644 --- a/src/plugins/excel/config.ts +++ b/src/plugins/excel/config.ts @@ -2,6 +2,18 @@ import { ModuleConfig } from "/@/cool"; export default (): ModuleConfig => { return { + label: "Excel", + description: "表格的导入、导出组件", + author: "COOL", + version: "1.0.0", + updateTime: "2024-02-01", + demo: [ + { + name: "基础用法", + component: () => import("./demo/base.vue") + } + ], + components: [ () => import("./components/import-btn.vue"), () => import("./components/export-btn") diff --git a/src/plugins/excel/demo/base.vue b/src/plugins/excel/demo/base.vue new file mode 100644 index 0000000..b2af212 --- /dev/null +++ b/src/plugins/excel/demo/base.vue @@ -0,0 +1,80 @@ + + + diff --git a/src/plugins/upload/components/upload-item/viewer.vue b/src/plugins/upload/components/upload-item/viewer.vue index 459347f..38a53e5 100644 --- a/src/plugins/upload/components/upload-item/viewer.vue +++ b/src/plugins/upload/components/upload-item/viewer.vue @@ -1,5 +1,5 @@