Эх сурвалжийг харах

feat: 选择角色 自定义表单嵌入

lanceJiang 10 сар өмнө
parent
commit
1f0b85e035

+ 18 - 0
src/components/packages/formEditor/components/FormTypes/SelectRole/mobile.vue

@@ -0,0 +1,18 @@
+<script>
+import hooks from '@ER/hooks'
+export default {
+	name: 'ErSelectRole',
+	inheritAttrs: false,
+	customOptions: {}
+}
+</script>
+<script setup>
+const props = defineProps(['data', 'params'])
+const ns = hooks.useNamespace('FormTypesSelectRole_mobile')
+import SelectRole from '@/components/SelectRole.vue'
+</script>
+<template>
+	<SelectRole v-model="data.options.defaultValue" :class="[ns.b()]" v-bind="params" />
+</template>
+
+<style scoped></style>

+ 18 - 0
src/components/packages/formEditor/components/FormTypes/SelectRole/pc.vue

@@ -0,0 +1,18 @@
+<script>
+import hooks from '@ER/hooks'
+export default {
+	name: 'ErSelectRole',
+	inheritAttrs: false,
+	customOptions: {}
+}
+</script>
+<script setup>
+const props = defineProps(['data', 'params'])
+const ns = hooks.useNamespace('FormTypesSelectRole_pc')
+import SelectRole from '@/components/SelectRole.vue'
+</script>
+<template>
+	<SelectRole v-model="data.options.defaultValue" :class="[ns.b()]" v-bind="params"/>
+</template>
+
+<style scoped></style>

+ 2 - 1
src/components/packages/formEditor/components/Panels/Config/components/PropsPanel.vue

@@ -710,7 +710,8 @@ onMounted(() => {
 		/>
 		<PanelsConfigComponentsCheckboxComponent
 			v-if="
-				(checkTypeBySelected(['input'], 'wordLimit') && target.options.renderType === 1) || checkTypeBySelected(['textarea', 'number', 'selectUser'], 'wordLimit')
+				(checkTypeBySelected(['input'], 'wordLimit') && target.options.renderType === 1) ||
+				checkTypeBySelected(['textarea', 'number', 'selectUser', 'selectRole'], 'wordLimit')
 			"
 			:label="t('er.config.propsPanel.wordLimit')"
 			field="isShowWordLimit"

+ 9 - 7
src/components/packages/formEditor/componentsConfig.js

@@ -134,23 +134,25 @@ export const fieldsConfig = [
 				}
 			},
 			{
-				type: 'select',
+				type: 'selectRole',
 				label: '角色',
-				icon: 'dropdown0',
+				icon: 'employee',
 				key: '',
 				id: '',
 				options: {
 					dataKey: '',
-					filterable: true,
-					multiple: false,
-					defaultValue: '',
+					// filterable: true,
+					// multiple: false,
+					defaultValue: undefined,
 					placeholder: '',
 					labelWidth: 100,
 					isShowLabel: true,
 					disabled: false,
-					clearable: true,
+					// clearable: true,
 					required: false,
-					renderType: 3
+					min: undefined,
+					max: 999999
+					// renderType: 2
 				}
 			},
 			{

+ 1 - 0
src/components/packages/formEditor/locale/en.js

@@ -11,6 +11,7 @@ export default {
 			checkbox: 'Checkbox',
 			select: ['Select', 'Employee', 'Role', 'Dict'], //, 'Department'
 			selectUser: 'Employee',
+			selectRole: 'Role',
 			time: 'Time',
 			date: 'Date',
 			rate: 'Rate',

+ 1 - 0
src/components/packages/formEditor/locale/zh-cn.js

@@ -11,6 +11,7 @@ export default {
 			checkbox: '复选框',
 			select: ['下拉框', '人员', '角色', '字典'], //, '部门'
 			selectUser: '员工',
+			selectRole: '角色',
 			time: '时间',
 			date: '日期',
 			rate: '评分',

+ 1 - 1
src/components/packages/utils/field.js

@@ -2,7 +2,7 @@ import _ from 'lodash-es'
 import { nanoid } from './nanoid'
 // 正则匹配type(itemType 类型)
 const fieldsRe =
-	/^(input|textarea|number|radio|checkbox|select|selectUser|time|date|rate|switch|slider|html|cascader|uploadfile|signature|region|subform|iframe)$/
+	/^(input|textarea|number|radio|checkbox|select|selectUser|selectRole|time|date|rate|switch|slider|html|cascader|uploadfile|signature|region|subform|iframe)$/
 const deepTraversal = (node, fn) => {
 	fn(node)
 	const nodes = node.type === 'subform' ? node.list[0] : node.list || node.rows || node.columns || node.children || []