diff --git a/package.json b/package.json index 8a8749b..5e9442e 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.10", + "@cool-vue/crud": "^7.0.11", "@element-plus/icons-vue": "^2.1.0", "@vueuse/core": "^10.4.0", "@wangeditor/editor": "^5.1.23", diff --git a/packages/crud/package.json b/packages/crud/package.json index a3af521..9e329a7 100644 --- a/packages/crud/package.json +++ b/packages/crud/package.json @@ -1,6 +1,6 @@ { "name": "@cool-vue/crud", - "version": "7.0.10", + "version": "7.0.11", "private": false, "main": "./dist/index.umd.min.js", "typings": "types/index.d.ts", diff --git a/packages/crud/src/components/form/helper/tabs.ts b/packages/crud/src/components/form/helper/tabs.ts index 5b63e8d..e067616 100644 --- a/packages/crud/src/components/form/helper/tabs.ts +++ b/packages/crud/src/components/form/helper/tabs.ts @@ -51,7 +51,9 @@ export function useTabs({ config, Form }: { config: ClForm.Config; Form: Vue.Ref config.items.forEach(deep); } - set(name); + if (name) { + set(name); + } } } diff --git a/packages/crud/src/components/form/index.tsx b/packages/crud/src/components/form/index.tsx index 782d577..0f79298 100644 --- a/packages/crud/src/components/form/index.tsx +++ b/packages/crud/src/components/form/index.tsx @@ -357,7 +357,8 @@ export default defineComponent({ label={e.label} prop={e.prop} rules={isDisabled ? null : e.rules} - v-show={inGroup} + required={e._hidden ? false : e.required} + v-show={inGroup && !e._hidden} />, e.props, { @@ -432,11 +433,6 @@ export default defineComponent({ ) : null; - // 隐藏 - if (e._hidden) { - return null; - } - // 行内 if (props.inline) { return FormItem; diff --git a/src/modules/base/components/select/index.tsx b/src/modules/base/components/select/index.tsx index 05463f7..2f8bb8e 100644 --- a/src/modules/base/components/select/index.tsx +++ b/src/modules/base/components/select/index.tsx @@ -1,7 +1,8 @@ import { useCrud } from "@cool-vue/crud"; -import { isString } from "lodash-es"; -import { computed, defineComponent, isRef, PropType, Ref, ref, watch } from "vue"; +import { isEmpty, isString } from "lodash-es"; +import { computed, defineComponent, isRef, type PropType, type Ref, ref, watch } from "vue"; import { parsePx } from "/@/cool/utils"; +import { Dict } from "/$/dict/types"; export default defineComponent({ name: "cl-select", @@ -24,7 +25,11 @@ export default defineComponent({ width: { type: [String, Number], default: "auto" - } + }, + // 是否树形 + tree: Boolean, + // 是否返回选中层级下的所有值 + allLevelsId: Boolean }, emits: ["update:modelValue", "change"], @@ -41,9 +46,37 @@ export default defineComponent({ return (isRef(props.options) ? props.options.value : props.options) || []; }); + // 获取值 + function getValue(val: any): any | any[] { + if (props.allLevelsId) { + const ids: any[] = []; + + // 获取所有的值 + function deep(arr: Dict.Item[], f: boolean) { + arr.forEach((e) => { + const f2 = e[props.valueKey] == val; + + if (f || f2) { + ids.push(e[props.valueKey]); + } + + if (e.children) { + deep(e.children, f || f2); + } + }); + } + + deep(list.value, false); + + return isEmpty(ids) ? undefined : ids; + } else { + return val === "" ? undefined : val; + } + } + // 值改变 - function onChange(val: string) { - const v = val === "" ? undefined : val; + function onChange(val: any) { + const v = getValue(val); emit("update:modelValue", v); emit("change", v); @@ -64,15 +97,40 @@ export default defineComponent({ ); return () => { - return ( + // 样式 + const style = { + width: parsePx(props.width) + }; + + // 占位符 + const placeholder = props.prop ? "选择搜索" : "请选择"; + + // 树形下拉框 + const TreeSelect = ( + + ); + + // 普通下拉框 + const Select = ( {list.value?.map((e) => { return isString(e) ? ( @@ -87,6 +145,8 @@ export default defineComponent({ })} ); + + return props.tree ? TreeSelect : Select; }; } }); diff --git a/src/modules/extend/editor/monaco/index.vue b/src/modules/extend/editor/monaco/index.vue index c6ced34..52b3798 100644 --- a/src/modules/extend/editor/monaco/index.vue +++ b/src/modules/extend/editor/monaco/index.vue @@ -22,7 +22,7 @@ import { useCool } from "/@/cool"; import { isObject, merge } from "lodash-es"; const props = defineProps({ - modelValue: String, + modelValue: null, options: Object, height: { type: [String, Number], @@ -65,7 +65,7 @@ function setContent(value: string = "") { if (isObject(value)) { value = JSON.stringify(value); } else { - value = value.toString(); + value = (value || "").toString(); } if (value != getContent()) { diff --git a/yarn.lock b/yarn.lock index 73e2c99..06ffb7a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -344,10 +344,10 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@cool-vue/crud@^7.0.10": - version "7.0.10" - resolved "https://registry.yarnpkg.com/@cool-vue/crud/-/crud-7.0.10.tgz#b4448414b43b8bfcbd4c9860c7ef9e5c1c89bb28" - integrity sha512-gsmnwUTOxhplbKdJu1RWyRa+auq3M9w83RdgLhFLrJg6aqoobT9qPmGxzVDpwIIDDyFmJTolTLbOK6kSRtnJSQ== +"@cool-vue/crud@^7.0.11": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@cool-vue/crud/-/crud-7.0.11.tgz#69b2d5a361dc162d342bd73ca286921725169c80" + integrity sha512-ROf42Odza3hjzpvRTOXi0ovC9YKYbR6rd0uRjyh0fbb0jX/a2CActyOEly28J2O+Mo8Mm8EsvrDRy1O1mmwaAg== dependencies: array.prototype.flat "^1.2.4" core-js "^3.21.1"