mirror of
https://github.com/cool-team-official/cool-admin-vue.git
synced 2024-11-01 14:10:27 +08:00
解决表单动态 hidden 无法提交问题
This commit is contained in:
parent
43fdb3034b
commit
e46264437c
@ -9,7 +9,7 @@
|
|||||||
"lint:eslint": "eslint \"./src/**/*.{vue,ts,tsx}\" --fix"
|
"lint:eslint": "eslint \"./src/**/*.{vue,ts,tsx}\" --fix"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cool-vue/crud": "^7.0.10",
|
"@cool-vue/crud": "^7.0.11",
|
||||||
"@element-plus/icons-vue": "^2.1.0",
|
"@element-plus/icons-vue": "^2.1.0",
|
||||||
"@vueuse/core": "^10.4.0",
|
"@vueuse/core": "^10.4.0",
|
||||||
"@wangeditor/editor": "^5.1.23",
|
"@wangeditor/editor": "^5.1.23",
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@cool-vue/crud",
|
"name": "@cool-vue/crud",
|
||||||
"version": "7.0.10",
|
"version": "7.0.11",
|
||||||
"private": false,
|
"private": false,
|
||||||
"main": "./dist/index.umd.min.js",
|
"main": "./dist/index.umd.min.js",
|
||||||
"typings": "types/index.d.ts",
|
"typings": "types/index.d.ts",
|
||||||
|
@ -51,7 +51,9 @@ export function useTabs({ config, Form }: { config: ClForm.Config; Form: Vue.Ref
|
|||||||
config.items.forEach(deep);
|
config.items.forEach(deep);
|
||||||
}
|
}
|
||||||
|
|
||||||
set(name);
|
if (name) {
|
||||||
|
set(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -357,7 +357,8 @@ export default defineComponent({
|
|||||||
label={e.label}
|
label={e.label}
|
||||||
prop={e.prop}
|
prop={e.prop}
|
||||||
rules={isDisabled ? null : e.rules}
|
rules={isDisabled ? null : e.rules}
|
||||||
v-show={inGroup}
|
required={e._hidden ? false : e.required}
|
||||||
|
v-show={inGroup && !e._hidden}
|
||||||
/>,
|
/>,
|
||||||
e.props,
|
e.props,
|
||||||
{
|
{
|
||||||
@ -432,11 +433,6 @@ export default defineComponent({
|
|||||||
)
|
)
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
// 隐藏
|
|
||||||
if (e._hidden) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 行内
|
// 行内
|
||||||
if (props.inline) {
|
if (props.inline) {
|
||||||
return FormItem;
|
return FormItem;
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import { useCrud } from "@cool-vue/crud";
|
import { useCrud } from "@cool-vue/crud";
|
||||||
import { isString } from "lodash-es";
|
import { isEmpty, isString } from "lodash-es";
|
||||||
import { computed, defineComponent, isRef, PropType, Ref, ref, watch } from "vue";
|
import { computed, defineComponent, isRef, type PropType, type Ref, ref, watch } from "vue";
|
||||||
import { parsePx } from "/@/cool/utils";
|
import { parsePx } from "/@/cool/utils";
|
||||||
|
import { Dict } from "/$/dict/types";
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "cl-select",
|
name: "cl-select",
|
||||||
@ -24,7 +25,11 @@ export default defineComponent({
|
|||||||
width: {
|
width: {
|
||||||
type: [String, Number],
|
type: [String, Number],
|
||||||
default: "auto"
|
default: "auto"
|
||||||
}
|
},
|
||||||
|
// 是否树形
|
||||||
|
tree: Boolean,
|
||||||
|
// 是否返回选中层级下的所有值
|
||||||
|
allLevelsId: Boolean
|
||||||
},
|
},
|
||||||
|
|
||||||
emits: ["update:modelValue", "change"],
|
emits: ["update:modelValue", "change"],
|
||||||
@ -41,9 +46,37 @@ export default defineComponent({
|
|||||||
return (isRef(props.options) ? props.options.value : props.options) || [];
|
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) {
|
function onChange(val: any) {
|
||||||
const v = val === "" ? undefined : val;
|
const v = getValue(val);
|
||||||
|
|
||||||
emit("update:modelValue", v);
|
emit("update:modelValue", v);
|
||||||
emit("change", v);
|
emit("change", v);
|
||||||
@ -64,15 +97,40 @@ export default defineComponent({
|
|||||||
);
|
);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
return (
|
// 样式
|
||||||
|
const style = {
|
||||||
|
width: parsePx(props.width)
|
||||||
|
};
|
||||||
|
|
||||||
|
// 占位符
|
||||||
|
const placeholder = props.prop ? "选择搜索" : "请选择";
|
||||||
|
|
||||||
|
// 树形下拉框
|
||||||
|
const TreeSelect = (
|
||||||
|
<el-tree-select
|
||||||
|
v-model={value.value}
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
placeholder={placeholder}
|
||||||
|
data={list.value}
|
||||||
|
props={{
|
||||||
|
label: props.labelKey,
|
||||||
|
value: props.valueKey
|
||||||
|
}}
|
||||||
|
style={style}
|
||||||
|
onChange={onChange}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
// 普通下拉框
|
||||||
|
const Select = (
|
||||||
<el-select
|
<el-select
|
||||||
v-model={value.value}
|
v-model={value.value}
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
|
placeholder={placeholder}
|
||||||
|
style={style}
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
style={{
|
|
||||||
width: parsePx(props.width)
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
{list.value?.map((e) => {
|
{list.value?.map((e) => {
|
||||||
return isString(e) ? (
|
return isString(e) ? (
|
||||||
@ -87,6 +145,8 @@ export default defineComponent({
|
|||||||
})}
|
})}
|
||||||
</el-select>
|
</el-select>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return props.tree ? TreeSelect : Select;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -22,7 +22,7 @@ import { useCool } from "/@/cool";
|
|||||||
import { isObject, merge } from "lodash-es";
|
import { isObject, merge } from "lodash-es";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
modelValue: String,
|
modelValue: null,
|
||||||
options: Object,
|
options: Object,
|
||||||
height: {
|
height: {
|
||||||
type: [String, Number],
|
type: [String, Number],
|
||||||
@ -65,7 +65,7 @@ function setContent(value: string = "") {
|
|||||||
if (isObject(value)) {
|
if (isObject(value)) {
|
||||||
value = JSON.stringify(value);
|
value = JSON.stringify(value);
|
||||||
} else {
|
} else {
|
||||||
value = value.toString();
|
value = (value || "").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value != getContent()) {
|
if (value != getContent()) {
|
||||||
|
@ -344,10 +344,10 @@
|
|||||||
"@babel/helper-validator-identifier" "^7.22.20"
|
"@babel/helper-validator-identifier" "^7.22.20"
|
||||||
to-fast-properties "^2.0.0"
|
to-fast-properties "^2.0.0"
|
||||||
|
|
||||||
"@cool-vue/crud@^7.0.10":
|
"@cool-vue/crud@^7.0.11":
|
||||||
version "7.0.10"
|
version "7.0.11"
|
||||||
resolved "https://registry.yarnpkg.com/@cool-vue/crud/-/crud-7.0.10.tgz#b4448414b43b8bfcbd4c9860c7ef9e5c1c89bb28"
|
resolved "https://registry.yarnpkg.com/@cool-vue/crud/-/crud-7.0.11.tgz#69b2d5a361dc162d342bd73ca286921725169c80"
|
||||||
integrity sha512-gsmnwUTOxhplbKdJu1RWyRa+auq3M9w83RdgLhFLrJg6aqoobT9qPmGxzVDpwIIDDyFmJTolTLbOK6kSRtnJSQ==
|
integrity sha512-ROf42Odza3hjzpvRTOXi0ovC9YKYbR6rd0uRjyh0fbb0jX/a2CActyOEly28J2O+Mo8Mm8EsvrDRy1O1mmwaAg==
|
||||||
dependencies:
|
dependencies:
|
||||||
array.prototype.flat "^1.2.4"
|
array.prototype.flat "^1.2.4"
|
||||||
core-js "^3.21.1"
|
core-js "^3.21.1"
|
||||||
|
Loading…
Reference in New Issue
Block a user