diff --git a/src/renderer/src/components/Form/dsSwitch.tsx b/src/renderer/src/components/Form/dsSwitch.tsx new file mode 100644 index 0000000..fb4d8e0 --- /dev/null +++ b/src/renderer/src/components/Form/dsSwitch.tsx @@ -0,0 +1,122 @@ +/* + * @Author: donghao donghao@supervision.ltd + * @Date: 2025-07-29 10:48:37 + * @LastEditors: donghao donghao@supervision.ltd + * @LastEditTime: 2025-07-30 14:32:45 + * @FilePath: \Robot-Al-Platform-Web\src\renderer\src\components\Form\switch.tsx + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import { defineComponent, h, withDefaults, computed, normalizeClass } from 'vue' +import { ElSwitch } from 'element-plus' +import type { SwitchProps } from 'element-plus' +import { spawn } from 'child_process' + +interface DsSwitchProps extends SwitchProps { + /** + * switch 前面的文案 + */ + label?: string + + /** + * switch 前面的文案 + */ + prefixRender?: (...ags: any[]) => any // 前缀内容 render渲染 + /** + * switch 后面的文案 + */ + suffixRender?: (...ags: any[]) => any // 后缀内容 render渲染 + + /** + * container容器样式 + */ + containerClassName?: string + + /** + * 整体容器样式 + */ + componentClassName?: string +} + +export default defineComponent({ + name: 'DsSwitch', + props: { + modelValue: { + type: [Boolean, String, Number], + default: false + }, + label: { + type: String, + default: '' + }, + suffixRender: { + type: Function as DsSwitchProps['suffixRender'], + default: null + }, + containerClassName: { + type: String, + default: '' + }, + componentClassName: { + type: String, + default: '' + }, + ...ElSwitch.props // 继承 ElSwitch 的所有 props + }, + emits: ['update:modelValue', 'change'], + setup(props, { emit, attrs }) { + const { containerClassName, componentClassName, ...restProps } = props + // 处理自定义类名和 Vue 的 class 属性 + const componentClasses = computed(() => { + const classes = ['flex items-center ds-switch-box', componentClassName] + // 处理 Vue 的 class 属性(支持字符串/数组/对象) + if (attrs.class) { + classes.push(normalizeClass(attrs.class)) + } + return classes.filter((c) => c).join(' ') + }) + // 处理自定义类名和 Vue 的 class 属性 + const containerClasses = computed(() => { + const classes = ['flex items-center justify-between w-[136px]', containerClassName] + // 处理 Vue 的 class 属性(支持字符串/数组/对象) + if (attrs.class) { + classes.push(normalizeClass(attrs.class)) + } + return classes.filter((c) => c).join(' ') + }) + + const handleChange = (val: boolean | string | number) => { + emit('update:modelValue', val) + emit('change', val) + } + // 渲染自定义前缀内容 + const renderPrefix = () => { + if (props.prefixRender) { + return props?.prefixRender?.() + } + return ( + + {props?.label} + + ) + } + // 渲染自定义后缀内容 + const renderSuffix = () => { + if (props.suffixRender) { + return props?.suffixRender?.() + } + return null + } + + return () => ( +
+
+ {/* 添加前缀插槽 */} + {renderPrefix()} + +
+ {/* 添加后缀插槽 */} + {renderSuffix()} +
+ ) + } +}) diff --git a/src/renderer/src/components/Form/index.ts b/src/renderer/src/components/Form/index.ts index 61e81fb..a07a003 100644 --- a/src/renderer/src/components/Form/index.ts +++ b/src/renderer/src/components/Form/index.ts @@ -2,9 +2,11 @@ * @Author: donghao donghao@supervision.ltd * @Date: 2025-07-28 10:07:16 * @LastEditors: donghao donghao@supervision.ltd - * @LastEditTime: 2025-07-28 16:54:10 + * @LastEditTime: 2025-07-30 11:29:49 * @FilePath: \Robot-Al-Platform-Web\src\renderer\src\components\Form\index.ts * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ import inputNumber from './inputNumber' -export const DSInputNumber = inputNumber \ No newline at end of file +import dsSwitch from './dsSwitch' +export const DSInputNumber = inputNumber +export const DsSwitch = dsSwitch \ No newline at end of file diff --git a/src/renderer/src/components/Form/inputNumber copy.tsx b/src/renderer/src/components/Form/inputNumber copy.tsx deleted file mode 100644 index 1de4b97..0000000 --- a/src/renderer/src/components/Form/inputNumber copy.tsx +++ /dev/null @@ -1,107 +0,0 @@ -/* - * @Author: donghao donghao@supervision.ltd - * @Date: 2025-07-29 10:49:30 - * @LastEditors: donghao donghao@supervision.ltd - * @LastEditTime: 2025-07-29 10:50:25 - * @FilePath: \Robot-Al-Platform-Web\src\renderer\src\components\Form\inputNumber copy.tsx - * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE - */ -import { defineComponent, ref, watch, computed } from 'vue' -import { ElInputNumber, ElButton } from 'element-plus' - -export default defineComponent({ - name: 'DSInputNumber', - - props: { - modelValue: { - type: Number, - default: 0 - }, - min: { - type: Number, - default: 0 - }, - max: { - type: Number, - default: 100000 - }, - placeholder: { - type: String, - default: '请输入' - }, - disabled: { - type: Boolean, - default: false - }, - controls: { - type: Boolean, - default: true - }, - label: { - type: String, - default: '' - }, - randomValue: { - type: Number, - default: 10 - }, - controlsPosition: { - type: String, - default: 'top' - }, - icon: { - type: String || Object, - default: '' - } - }, - - emits: ['update:modelValue', 'change'], - - setup(props, { slots, emit }) { - const innerValue = ref(props?.modelValue || props?.min || 0) - - watch( - () => props.modelValue, - (newVal) => { - innerValue.value = newVal - } - ) - - const handleChange = (value: number) => { - console.log('handleChange_ds_inputNumber', value) - emit('update:modelValue', value) - emit('change', value) - } - - // const setRandomValue = () => { - // const randomVal = props.randomValue - // innerValue.value = randomVal - // emit('update:modelValue', randomVal) - // emit('change', randomVal) - // } - - const containerClass = computed(() => [ - 'input-number-container', - props.disabled ? 'disabled-state' : '' - ]) - - return () => ( -
-
- (innerValue.value = val)} - min={props.min} - max={props.max} - controls-position={props.controlsPosition} - placeholder={props.placeholder} - disabled={props.disabled} - controls={props.controls} - onChange={handleChange} - /> - -
-
- ) - } -}) diff --git a/src/renderer/src/components/Form/inputNumber.tsx b/src/renderer/src/components/Form/inputNumber.tsx index 61d6b43..ce58812 100644 --- a/src/renderer/src/components/Form/inputNumber.tsx +++ b/src/renderer/src/components/Form/inputNumber.tsx @@ -2,28 +2,32 @@ * @Author: donghao donghao@supervision.ltd * @Date: 2025-07-28 16:45:11 * @LastEditors: donghao donghao@supervision.ltd - * @LastEditTime: 2025-07-30 09:32:36 + * @LastEditTime: 2025-07-30 14:30:36 * @FilePath: \Robot-Al-Platform-Web\src\renderer\src\components\Form\inputNumber.tsx * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ import { defineComponent, getCurrentInstance, ComputedRef, computed } from 'vue' -import { ELIcon, ElInputNumber, inputNumberProps, InputNumberProps } from 'element-plus' +import { ElInputNumber, inputNumberProps, InputNumberProps } from 'element-plus' import type { InputNumberEmits } from 'element-plus' -import { Refresh } from '@element-plus/icons-vue' +import { RefreshRight } from '@element-plus/icons-vue' // 定义组件属性类型(保留所有 ElInputNumber 属性) type DSInputNumberProps = InputNumberProps & { // 可在此处添加自定义属性 - prefixContent?: () => JSX.Element - suffixIconType?: string + prefixRender?: (...ags: any[]) => any // 前置内容 render渲染 + suffixRender?: (...ags: any[]) => any // 后置内容 render渲染 } export default defineComponent({ name: 'DSInputNumber', props: { ...inputNumberProps, // 继承所有 ElInputNumber 属性 - prefixContent: Function as DSInputNumberProps['prefixContent'], - suffixIconType: String as 'plus' | 'default' + prefixRender: Function as DSInputNumberProps['prefixRender'], + suffixRender: Function as DSInputNumberProps['suffixRender'], + controlsPosition: { + type: String, + default: 'right' + } }, emits: [ 'update:modelValue', @@ -44,7 +48,7 @@ export default defineComponent({ // 创建计算属性以包含所有属性 const inputNumberAttrs: ComputedRef> = computed(() => { - const { prefixContent, suffixIconType, ...propsRest } = props + const { prefixRender, suffixRender, ...propsRest } = props return { ...attrs, ...propsRest, @@ -58,34 +62,35 @@ export default defineComponent({ } }) - // 渲染自定义后缀图标 - const renderSuffixIcon = () => { - // if (props.loading) { - // return - // } - if (props?.suffixIconType === 'default') { - return + // 渲染自定义前缀内容 + const renderPrefix = () => { + // props?.suffixRender && + if (props.prefixRender) { + return props?.prefixRender?.() } return null } + // 渲染自定义后缀内容 + const renderSuffix = () => { + // props?.suffixRender && + if (props.suffixRender) { + return props?.suffixRender?.() + } + return ( +
+ +
+ ) + } + return () => (
{/* 添加前缀插槽 */} - {/* {props?.prefixContent && props?.prefixContent()} */} + {renderPrefix()} - {/* 图标区 */} -
- -
- {props?.suffixIconType && renderSuffixIcon()} {/* 添加后缀插槽 */} - {/* {props.suffixContent && ( -
- test - {props.suffixContent()} -
- )} */} + {renderSuffix()}
) } diff --git a/src/renderer/src/components/Form/switch.tsx b/src/renderer/src/components/Form/switch.tsx deleted file mode 100644 index e69de29..0000000 diff --git a/src/renderer/src/styles/ds-dialog.scss b/src/renderer/src/styles/ds-dialog.scss index 302b70d..c8860f3 100644 --- a/src/renderer/src/styles/ds-dialog.scss +++ b/src/renderer/src/styles/ds-dialog.scss @@ -35,5 +35,15 @@ .el-dialog__header { height: var(--ds-dialog-header-height); } + // 弹窗图标 + .ds-dialog-icon-box { + width: 48px; + height: 32px; + background-color: var(--ds-dialog-icon-background-color); + font-size: 14px !important; + cursor: pointer; + svg { + width: 28px; + } + } } - diff --git a/src/renderer/src/styles/ds-from.scss b/src/renderer/src/styles/ds-from.scss index 9ef367c..0a74b14 100644 --- a/src/renderer/src/styles/ds-from.scss +++ b/src/renderer/src/styles/ds-from.scss @@ -1,7 +1,7 @@ // 表单弹框 .ds-dialog-form-container { .el-select__wrapper { - background: var(--ds-dialog-form-background-color) !important; + background: var(--ds-form-item-background-color) !important; .el-select__selected-item { color: var(--ds-color-info) !important; } @@ -28,4 +28,24 @@ min-height: 32px; padding: 4px 16px; } + // el-switch + .el-switch--large .el-switch__core { + border-radius: 16px; + height: 20px; + line-height: 20; + min-width: 40px; + width: 40px; + } +} + +.el-input__wrapper { + background: var(--ds-form-item-background-color) !important; +} +// 描述字体 +.ds-form-des-text { + color: var(--ds-des-text-1); +} +// 描述字体 +.ds-form-normal-text { + color: var(--ds-color-info); } diff --git a/src/renderer/src/styles/element-plus.scss b/src/renderer/src/styles/element-plus.scss index e184b9e..02e9b19 100644 --- a/src/renderer/src/styles/element-plus.scss +++ b/src/renderer/src/styles/element-plus.scss @@ -13,6 +13,12 @@ --el-border-radius-base: var(--ds-border-radius-base); // 边框圆角 --el-collapse-header-height: 28px; // 折叠面板标题高度 --el-component-size-large: 32px; // 大组件尺寸 + --el-text-color-regular: var(--ds-text-color-regular); // 次文本色 + --el-border-color: var(--ds-border-color); // 边框色 + --el-border-width: var(--ds-border-width); // 边框宽度 + --el-border-style: var(--ds-border-style); // 边框样式 + --el-box-shadow: var(--ds-box-shadow); // 阴影 + --el-border: var(-ds-border-width) var(--ds-border-style) var(--ds-border-color); } /* button */ .el-button--info { @@ -53,8 +59,6 @@ height: 20px; } - - /* tabs */ .ds-tabs { background-color: transparent; diff --git a/src/renderer/src/styles/global.scss b/src/renderer/src/styles/global.scss index b05cdf3..4e91b28 100644 --- a/src/renderer/src/styles/global.scss +++ b/src/renderer/src/styles/global.scss @@ -12,12 +12,14 @@ --ds-clort-text-1: #333; // 文本色1 --ds-clort-text-2: #666; // 文本色2 --ds-clort-text-3: #999; // 文本色3 + --ds-text-color-regular: #333; // 文本色4 --ds-button-border-radius: 2px; --ds-button-border-color: #c9cdd4; --ds-button-info-border-color: #dcdcdc; --ds-background-color: #363940; // 背景色 --ds-dialog-background-color: #363940; // 弹框背景色 - --ds-dialog-form-background-color: #303136; // 弹框背景色 + --ds-form-item-background-color: #303136; // 表单项背景色 + --ds-dialog-icon-background-color: #4e5969; // 弹框内图标背景色 --ds-dialog-header-padding: 24px; // 背景色 --ds-dialog-header-height: 54px; // 背景色 --ds-bg-color-light-1: #151515; // 背景色 @@ -27,6 +29,12 @@ --ds-bg-color-light-5: #565656; // 背景色 // #4E5969 --ds-light-0: #00b429; // 浅色1 + --ds-des-text-1: #86909c; // 描述色8 + --ds-border-width: 1px; // 边框宽度 + --ds-border-color: #4e5969; // 边框色 + --ds-border-style: solid; // 边框样式 + --ds-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1); // 阴影 + // --ds-light-2: #eaeaea; // 浅色2 // --ds-light-3: #dcdcdc; // 浅色3 // --ds-light-4: #c9cdd4; // 浅色4 diff --git a/src/renderer/src/styles/t-element-plus.scss b/src/renderer/src/styles/t-element-plus.scss index a89cfbc..5a9bd7b 100644 --- a/src/renderer/src/styles/t-element-plus.scss +++ b/src/renderer/src/styles/t-element-plus.scss @@ -245,7 +245,7 @@ border: none; } .t_module_form .scroll_wrap .t_detail .el-collapse .el-collapse-item { - background-color: var(--el-bg-color); + // background-color: var(--el-bg-color); border: none; margin-top: 10px; } diff --git a/src/renderer/src/views/Design/FlowImagesCapture/imageNodeModel.vue b/src/renderer/src/views/Design/FlowImagesCapture/imageNodeModel.vue index 0f7eaca..4a46b16 100644 --- a/src/renderer/src/views/Design/FlowImagesCapture/imageNodeModel.vue +++ b/src/renderer/src/views/Design/FlowImagesCapture/imageNodeModel.vue @@ -2,7 +2,7 @@ * @Author: donghao donghao@supervision.ltd * @Date: 2025-07-03 11:12:04 * @LastEditors: donghao donghao@supervision.ltd - * @LastEditTime: 2025-07-30 09:44:01 + * @LastEditTime: 2025-07-30 15:52:28 * @FilePath: \electron-project\Robot-Al\Robot-Al-Platform-Web\src\renderer\src\views\Design\FlowImagesCapture\imageNodeModel.vue * @Description: 图像源节点 --> @@ -112,32 +112,29 @@ const formOpts: any = reactive({ opts: { labelPosition: 'top', // 标签对齐方式 formData: { - // id: "", // *唯一ID imageSource: '本地图像', // *图片来源 + /**基础参数-本地图像字段**/ pixelFormat: '', // *像素格式 captureInterval: '', // *取图间隔 - displayImageName: false, - snInitialValue: 10, - imageCache: '', - stitchingEnabled: false, - startHeight: 0, - stitchingHeight: 0, - triggerClear: false, - triggerVariable: '', - autoSwitch: false, - stopOnLast: false, - characterTriggerFilter: false, - inputCharacter: '', - triggerCharacter: '', - // TODO 待删除 - password: null, // *用户密码 - name: null, // *用户昵称 - sex: null, // *性别: 0:男 1:女 - hobby: [], // *爱好: 0:男 1:女 - accountType: null, // *用户类型: 0: 手机注册 1: 论坛注册 2: 管理平台添加 - status: null // *状态: 0:停用,1:启用(默认为1)', + displayImageName: false, // *显示图像名称 + displaySaveImage: false, // *方案存图 + snInitialValue: 10, // *SN初始值 + imageCache: '', // *图片缓存 + stitchingEnabled: false, // *拼接使能 + startHeight: 0, // *起始高度 + stitchingHeight: 0, // *拼接高度 + triggerClear: false, // *触发清空 + triggerVariable: '', // *触发变量 + + /**基础参数-相机字段**/ + relatedCamera: '选择相机', // *关联相机 + controlExposure: '', // *控制曝光 + controlGain: '', // *控制增益 + outputMono8: true // *输出Mono8 }, fieldList: [ + /**基础参数-表单项**/ + // 通用字段 { label: '图像源', value: 'imageSource', @@ -151,86 +148,253 @@ const formOpts: any = reactive({ change: (val: any) => { if (val === '本地图像') { formOpts.baseConfig.widthSize = 3 + formOpts.eventConfig.widthSize = 3 } else { formOpts.baseConfig.widthSize = 2 + formOpts.eventConfig.widthSize = 2 } console.log(val, 'selectChange_imageSource') } }, bind: { clearable: false } }, + // 图像源为本地图像 { label: '像素格式', value: 'pixelFormat', type: 'select-arr', comp: 'el-select', list: 'testList', - arrLabel: 'key', + arrLabel: 'label', arrKey: 'value', placeholder: '请选择像素格式', isHideItem: (data) => { - return data.imageSource === '本地图像' + return data.imageSource === '本地图像' } }, + // 图像源为本地图像 { label: '取图间隔', value: 'captureInterval', + placeholder: '测试自定义组件1', + comp: 'DSInputNumber', + isSelfCom: true, + bind: { + min: 1, + max: 10 + }, + eventHandle: { + change: (val: any) => {} + }, + isHideItem: (data) => { + return data.imageSource === '本地图像' + } + }, + // 图像源为本地图像 + { + value: 'displayImageName', + comp: 'DsSwitch', + isSelfCom: true, + widthSize: 1, + bind: { + label: '显示图像名称' + }, + isHideItem: (data) => { + return data.imageSource === '本地图像' + } + }, + // 图像源为本地图像 + { + value: 'displaySaveImage', + comp: 'DsSwitch', + isSelfCom: true, + widthSize: 1, + bind: { + label: '方案存图', + suffixRender: () => { + return
(最多保存120张)
+ } + }, + isHideItem: (data) => { + return data.imageSource === '本地图像' + } + }, + // 图像源为相机、sdk + { + labelRender: () => { + return ( +
+ 关联相机 + + (请先在“相机管理”中新建相机) + +
+ ) + }, + value: 'relatedCamera', type: 'select-arr', comp: 'el-select', list: 'testList', - arrLabel: 'key', + arrLabel: 'label', arrKey: 'value', - placeholder: '请选择取图间隔', + placeholder: '请选择关联相机', + isHideItem: (data) => { + return data.imageSource !== '本地图像' + } + }, + // 图像源为相机、sdk + { + label: '控制曝光', + value: 'controlExposure', + type: 'input', + comp: 'el-input', + bind: { maxlength: 100 }, + isHideItem: (data) => { + return data.imageSource !== '本地图像' + } + }, + // 图像源为相机、sdk + { + label: '控制增益', + value: 'controlGain', + type: 'input', + comp: 'el-input', + bind: { maxlength: 100 }, + isHideItem: (data) => { + return data.imageSource !== '本地图像' + } + }, + // 通用字段 + { + placeholder: '请输入SN初始值', + labelRender: () => { + return ( +
+ SN初始值 + (上限不超过100000) +
+ ) + }, + value: 'snInitialValue', + comp: 'DSInputNumber', + isSelfCom: true, + bind: { + min: 0, + max: 99999 + } + }, + // 图像源为相机、sdk + { + value: 'outputMono8', + comp: 'DsSwitch', + isSelfCom: true, + widthSize: 1, + bind: { + label: '输出Mono8' + }, + isHideItem: (data) => { + return data.imageSource !== '本地图像' + } + }, + // 图像源为本地图像 + { + label: '图片缓存', + value: 'imageCache', + type: 'input', + comp: 'el-input', + bind: { maxlength: 100 }, isHideItem: (data) => { return data.imageSource === '本地图像' } }, - + // 通用字段 { - label: '', - value: 'accountType', - type: 'select-obj', - comp: 'el-switch', - list: 'accountTypeList', + value: 'stitchingEnabled', + comp: 'DsSwitch', + isSelfCom: true, widthSize: 1, - append: 'ms' + bind: { + label: '拼接使能' + } }, + // 通用字段 { - label: '状态', - value: 'status', - type: 'select-arr', - list: 'statusList', - comp: 'el-select', - arrLabel: 'key', - arrKey: 'value' + placeholder: '请输入起始高度', + labelRender: () => { + return ( +
+ 起始高度 + (上限不超过20000) +
+ ) + }, + value: 'startHeight', + comp: 'DSInputNumber', + isSelfCom: true, + bind: { + min: 0, + max: 19999 + }, + isHideItem: (data) => { + return data.stitchingEnabled + } }, + // 通用字段 { - placeholder: '请输入', + placeholder: '拼接高度', labelRender: () => { - return
SN初始值 (上限不超过100000)
+ return ( +
+ 拼接高度 + (上限不超过20000) +
+ ) }, - value: 'snInitialValue', - type: 'input-number', - comp: 'el-input-number', + value: 'stitchingHeight', + comp: 'DSInputNumber', + isSelfCom: true, bind: { min: 0, - max: 99999, - controlsPosition: 'right', - clearable: false, - suffix: () => { - return ms - } + max: 19999 + }, + isHideItem: (data) => { + return data.stitchingEnabled } }, + // 通用字段 { - label: '爱好', - value: 'hobby', - type: 'checkbox', - comp: 'el-checkbox-group', - list: 'hobbyList', - event: 'checkbox', - arrKey: 'value', - widthSize: 1 + value: 'triggerClear', + comp: 'DsSwitch', + isSelfCom: true, + widthSize: 1, + bind: { + label: '触发清空' + }, + isHideItem: (data) => { + return data.stitchingEnabled + } + }, + // 通用字段 + { + label: '触发变量', + value: 'triggerVariable', + type: 'input', + comp: 'el-input', + bind: { maxlength: 100 }, + isHideItem: (data) => { + return data.stitchingEnabled && data.triggerClear + } + }, + // 通用字段 + { + label: '触发值', + value: 'triggerValue', + type: 'input', + comp: 'el-input', + bind: { maxlength: 100 }, + isHideItem: (data) => { + return data.stitchingEnabled && data.triggerClear + } } ], // 相关列表 @@ -240,26 +404,6 @@ const formOpts: any = reactive({ { key: '本地图像', value: '本地图像' }, { key: '相机', value: '相机' }, { key: 'SDK', value: 'SDK' } - ], - hobbyList: [ - { label: '吉他', value: '0' }, - { label: '看书', value: '1' }, - { label: '美剧', value: '2' }, - { label: '旅游', value: '3' }, - { label: '音乐', value: '4' } - ], - sexList: [ - { key: '女', value: 1 }, - { key: '男', value: 0 } - ], - accountTypeList: { - 0: '手机用户', - 1: '论坛用户', - 2: '平台用户' - }, - statusList: [ - { key: '启用', value: 1 }, - { key: '停用', value: 0 } ] } } @@ -271,74 +415,66 @@ const formOpts: any = reactive({ opts: { labelPosition: 'top', // 标签对齐方式 formData: { - phone: null, // 手机号码 - createDate: null, // 创建时间 - valDate: null, // el日期选择范围 - wechat: 0, // 微信 - qq: null, // qq - email: null, // 邮箱 - desc: null, // 描述 - number: 2 // 计算器 + /**触发设置-本地图像字段**/ + autoSwitch: false, // *自动切换 + stopOnLast: false, // *最后一张停止 + characterTriggerFilter: false, // *字符触发过滤 + inputCharacter: '', // *输入字符 + triggerCharacter: '' // *触发字符 }, fieldList: [ { - label: '手机号码', - value: 'phone', - type: 'input', - comp: 'el-input', - bind: { maxlength: 11 } - }, - { - label: '创建时间', - value: 'createDate', - type: 'year', - bind: { valueFormat: 'YYYY' }, - comp: 'el-date-picker' + value: 'autoSwitch', + comp: 'DsSwitch', + isSelfCom: true, + widthSize: 3, + bind: { + label: '自动切换' + }, + isHideItem: (data) => { + return formOpts.baseConfig.opts.formData.imageSource === '本地图像' + } }, { - label: 'element日期', - value: 'valDate', - type: 'daterange', - comp: 'el-date-picker', + value: 'stopOnLast', + comp: 'DsSwitch', + isSelfCom: true, + widthSize: 3, bind: { - rangeSeparator: '-', - startPlaceholder: '开始日期', - endPlaceholder: '结束日期', - valueFormat: 'YYYY-MM-DD' + label: '最后一张停止' + }, + isHideItem: (data) => { + return formOpts.baseConfig.opts.formData.imageSource === '本地图像' && data.autoSwitch } }, { - label: '测试自定义组件1', - value: 'wechat', - placeholder: '测试自定义组件1', - comp: 'DSInputNumber', + value: 'characterTriggerFilter', + comp: 'DsSwitch', isSelfCom: true, + widthSize: 1, bind: { - min: 1, - max: 10, - controlsPosition: 'right', - clearable: false, - suffixIconType: 'default' - }, - eventHandle: { - change: (val: any) => {} + label: '字符触发过滤' } }, - { label: 'QQ', value: 'qq', type: 'input', comp: 'el-input' }, - { label: '邮箱', value: 'email', type: 'input', comp: 'el-input' }, { - label: '计数器', - value: 'number', - type: 'inputNumber', - bind: { controlsPosition: 'right', min: 2, max: 99, append: '123' }, - comp: 'el-input-number' + label: '输入字符', + value: 'inputCharacter', + type: 'input', + comp: 'el-input', + bind: { maxlength: 100 }, + isHideItem: (data) => { + return data.characterTriggerFilter + } }, { - label: '描述', - value: 'desc', - type: 'textarea', + label: '触发字符', + value: 'triggerCharacter', + type: 'input', comp: 'el-input', - widthSize: 1 + bind: { maxlength: 100 }, + isHideItem: (data) => { + return data.characterTriggerFilter + } } ] }