From 7bfd30373bec211cb594f597ff37d6adce7f3c4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E4=BB=99=E9=83=BD=E6=B2=A1=E7=94=A8?= <615206459@qq.com> Date: Thu, 26 Oct 2023 16:09:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- packages/crud/index.d.ts | 1 + packages/crud/package.json | 3 +- packages/crud/src/utils/parse.tsx | 35 +++++++--- .../types/components/table/helper/index.d.ts | 1 + packages/crud/yarn.lock | 13 ++++ .../base/pages/main/components/slider.vue | 1 + src/modules/base/views/menu/index.vue | 65 +++++++++---------- yarn.lock | 8 +-- 9 files changed, 78 insertions(+), 51 deletions(-) diff --git a/package.json b/package.json index 29a99a0..9da2efd 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "lint:eslint": "eslint \"{src}/**/*.{vue,ts,tsx}\" --fix" }, "dependencies": { - "@cool-vue/crud": "^7.0.1-beta9", + "@cool-vue/crud": "^7.0.1-beta14", "@element-plus/icons-vue": "^2.1.0", "@vueuse/core": "^10.4.0", "@wangeditor/editor": "^5.1.23", diff --git a/packages/crud/index.d.ts b/packages/crud/index.d.ts index 217e177..d784677 100644 --- a/packages/crud/index.d.ts +++ b/packages/crud/index.d.ts @@ -329,6 +329,7 @@ declare namespace ClTable { dict: DictOptions | Vue.Ref; dictFormatter: (values: DictOptions) => string; dictColor: boolean; + dictSeparator: string; buttons: OpButton | ((options: { scope: obj }) => OpButton); align: "left" | "center" | "right"; label: string | Vue.Ref; diff --git a/packages/crud/package.json b/packages/crud/package.json index bd28a60..362804e 100644 --- a/packages/crud/package.json +++ b/packages/crud/package.json @@ -1,6 +1,6 @@ { "name": "@cool-vue/crud", - "version": "7.0.1-beta11", + "version": "7.0.1-beta14", "private": false, "main": "./dist/index.umd.min.js", "typings": "types/index.d.ts", @@ -10,6 +10,7 @@ "dist": "tsc && yarn build --target lib --name index ./src/index.ts" }, "dependencies": { + "@cool-vue/crud": "^7.0.1-beta14", "array.prototype.flat": "^1.2.4", "core-js": "^3.21.1", "element-plus": "^2.3.9", diff --git a/packages/crud/src/utils/parse.tsx b/packages/crud/src/utils/parse.tsx index a979a6f..d960eb9 100644 --- a/packages/crud/src/utils/parse.tsx +++ b/packages/crud/src/utils/parse.tsx @@ -26,6 +26,9 @@ export function parseTableDict(value: any, item: ClTable.Column) { // 选项列表 const options: DictOptions = cloneDeep(getValue(item.dict || [])); + // 字符串分隔符 + const separator = item.dictSeparator === undefined ? "," : item.dictSeparator; + // 设置颜色 if (item.dictColor) { options.forEach((e, i) => { @@ -36,22 +39,36 @@ export function parseTableDict(value: any, item: ClTable.Column) { } // 绑定值 - const values = (isArray(value) ? value : [value]).filter( - (e) => e !== undefined && e !== null && e !== "" - ); + let values = []; + + // 格式化值 + if (isArray(value)) { + values = value; + } else if (isString(value)) { + if (separator) { + values = value.split(separator); + } else { + values = [value]; + } + } else { + values = [value]; + } // 返回值 - const list = values.map((v) => { - const d = deepFind(v, options) || { label: v, value: v }; - delete d.children; + const list = values + .filter((e) => e !== undefined && e !== null && e !== "") + .map((v) => { + const d = deepFind(v, options) || { label: v, value: v }; + delete d.children; - return d; - }); + return d; + }); - // 是否格式化 + // 格式化返回 if (item.dictFormatter) { return item.dictFormatter(list); } else { + // tag 返回 return list.map((e) => { return h( , diff --git a/packages/crud/types/components/table/helper/index.d.ts b/packages/crud/types/components/table/helper/index.d.ts index 8324774..6b2f40a 100644 --- a/packages/crud/types/components/table/helper/index.d.ts +++ b/packages/crud/types/components/table/helper/index.d.ts @@ -56,6 +56,7 @@ export declare function useTable(props: any): { }; dictFormatter: (values: DictOptions) => string; dictColor: boolean; + dictSeparator: string; buttons: ((options: { scope: obj; }) => ClTable.OpButton) | ("info" | "delete" | "edit" | `slot-${string}` | { diff --git a/packages/crud/yarn.lock b/packages/crud/yarn.lock index 9072be2..3a38ce8 100644 --- a/packages/crud/yarn.lock +++ b/packages/crud/yarn.lock @@ -961,6 +961,19 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@cool-vue/crud@^7.0.1-beta14": + version "7.0.1-beta14" + resolved "https://registry.yarnpkg.com/@cool-vue/crud/-/crud-7.0.1-beta14.tgz#5e6b28d67090fc36118cf3b79da2ccbe7db56266" + integrity sha512-/fM382tuvdS2xOVCfnBx/ZdltwJrKdmcXJcZufWf3y0SYv9TU/QSNB91vBJlxLvv2N3VabjeYgfn8TB86HT3gg== + dependencies: + array.prototype.flat "^1.2.4" + core-js "^3.21.1" + element-plus "^2.3.9" + lodash "^4.17.21" + lodash-es "^4.17.21" + mitt "^3.0.1" + vue "^3.3.4" + "@ctrl/tinycolor@^3.4.1": version "3.6.0" resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.6.0.tgz#53fa5fe9c34faee89469e48f91d51a3766108bc8" diff --git a/src/modules/base/pages/main/components/slider.vue b/src/modules/base/pages/main/components/slider.vue index dc2a183..508ac95 100644 --- a/src/modules/base/pages/main/components/slider.vue +++ b/src/modules/base/pages/main/components/slider.vue @@ -43,6 +43,7 @@ const { app } = useBase(); font-weight: bold; font-size: 26px; margin-left: 10px; + line-height: 1; white-space: nowrap; } } diff --git a/src/modules/base/views/menu/index.vue b/src/modules/base/views/menu/index.vue index 10b47c3..81217cc 100644 --- a/src/modules/base/views/menu/index.vue +++ b/src/modules/base/views/menu/index.vue @@ -29,16 +29,32 @@ - - - - -