diff --git a/src/assets/images/form-bg.png b/src/assets/images/form-bg.png new file mode 100644 index 0000000..986ecdd Binary files /dev/null and b/src/assets/images/form-bg.png differ diff --git a/src/assets/styles/form/home.scss b/src/assets/styles/form/home.scss index 22faecf..2b7f01f 100644 --- a/src/assets/styles/form/home.scss +++ b/src/assets/styles/form/home.scss @@ -87,7 +87,7 @@ $lighterBlue: #1890ff; } .empty-info { position: absolute; - top: 46%; + top: 36%; left: 0; right: 0; text-align: center; diff --git a/src/components/generator/config.js b/src/components/generator/config.js index d3a6974..702a6a8 100644 --- a/src/components/generator/config.js +++ b/src/components/generator/config.js @@ -11,7 +11,7 @@ export const formConf = { span: 24, title: '问卷名称', description: '为了给您提供更好的服务,希望您能抽出几分钟时间,将您的感受和建议告诉我们,我们非常重视每位\n' + - '用户的宝贵意见,期待您的参与!现在我们就马上开始吧!', + '用户的宝贵意见,期待您的参与!现在我们就马上开始吧!', formBtns: true, unFocusedComponentBorder: true } @@ -19,7 +19,7 @@ export const formConf = { // 输入型组件 【左面板】 export const inputComponents = [ { - // 组件的自定义配置 + // 组件的自定义配置 typeId: 'INPUT', __config__: { label: '单行文本', @@ -795,6 +795,7 @@ export const personalInfoComponents = [ layout: 'colFormItem', span: 24, showRegList: false, + regList: [], document: 'https://element.eleme.cn/#/zh-CN/component/input' }, placeholder: '请选择省市县', @@ -814,6 +815,7 @@ export const personalInfoComponents = [ layout: 'colFormItem', span: 24, showRegList: false, + regList: [], document: 'https://element.eleme.cn/#/zh-CN/component/input' }, placeholder: '请选择位置', @@ -833,6 +835,7 @@ export const personalInfoComponents = [ layout: 'colFormItem', span: 24, showRegList: false, + regList: [], document: 'https://element.eleme.cn/#/zh-CN/component/input' }, placeholder: '请验证手机号', diff --git a/src/components/parser/Parser.vue b/src/components/parser/Parser.vue index cbd1e93..5792294 100644 --- a/src/components/parser/Parser.vue +++ b/src/components/parser/Parser.vue @@ -31,6 +31,7 @@ const layouts = { let labelWidth = config.labelWidth ? `${config.labelWidth}px` : null if (config.showLabel === false) labelWidth = '0' let label = config.label + // 显示序号 if (formConfCopy.showNumber) { label = scheme.serialNumber + ': ' + label } @@ -404,7 +405,25 @@ export default { }, trigger: 'change' }) } + // 处理其他输入必填校验 + const validateOtherInput = (rule, value, callback) => { + // 0 等于选中其他 + if (value == 0 || (Array.isArray(value) && value.includes(0))) { + if (!this[this.formConf.labelFormModel][`${rule.field}other`]) { + callback(new Error('请输入其他内容')) + } else { + callback() + } + } else { + callback() + } + } if (Array.isArray(config.regList)) { + // 必填其他输入框校验 + if (['RADIO', 'CHECKBOX'].includes(cur.typeId)) { + const required = {validator: validateOtherInput, message: cur.placeholder} + config.regList.push(required) + } if (config.required) { const required = {required: config.required, message: cur.placeholder} if (Array.isArray(config.defaultValue)) { @@ -457,29 +476,33 @@ export default { diff --git a/src/views/form/editor/index.vue b/src/views/form/editor/index.vue index 7ca758d..c32d1af 100644 --- a/src/views/form/editor/index.vue +++ b/src/views/form/editor/index.vue @@ -89,7 +89,8 @@ />
- 从左侧拖入或点选组件进行表单设计 + +

从左侧拖入或点选组件进行表单设计

diff --git a/src/views/form/setting/index.vue b/src/views/form/setting/index.vue index d3e59e2..a9a21fb 100644 --- a/src/views/form/setting/index.vue +++ b/src/views/form/setting/index.vue @@ -1,11 +1,11 @@