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 () => (
)
}
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
+ }
}
]
}