mirror of
				https://gitee.com/hhyykk/ipms-sjy-ui.git
				synced 2025-11-04 20:28:45 +08:00 
			
		
		
		
	!564 【升级插件】升级 form-create 插件版本
Merge pull request !564 from 半栈幼儿员/hotfix/form-create
This commit is contained in:
		@@ -26,8 +26,8 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "@element-plus/icons-vue": "^2.1.0",
 | 
					    "@element-plus/icons-vue": "^2.1.0",
 | 
				
			||||||
    "@form-create/designer": "^3.1.3",
 | 
					    "@form-create/designer": "^3.2.6",
 | 
				
			||||||
    "@form-create/element-ui": "^3.1.24",
 | 
					    "@form-create/element-ui": "^3.2.11",
 | 
				
			||||||
    "@iconify/iconify": "^3.1.1",
 | 
					    "@iconify/iconify": "^3.1.1",
 | 
				
			||||||
    "@microsoft/fetch-event-source": "^2.0.1",
 | 
					    "@microsoft/fetch-event-source": "^2.0.1",
 | 
				
			||||||
    "@videojs-player/vue": "^1.0.0",
 | 
					    "@videojs-player/vue": "^1.0.0",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,37 @@
 | 
				
			|||||||
import type { App } from 'vue'
 | 
					import type { App } from 'vue'
 | 
				
			||||||
// 👇使用 form-create 需额外全局引入 element plus 组件
 | 
					// 👇使用 form-create 需额外全局引入 element plus 组件
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
 | 
					  // ElAutocomplete,
 | 
				
			||||||
 | 
					  // ElButton,
 | 
				
			||||||
 | 
					  // ElCascader,
 | 
				
			||||||
 | 
					  // ElCheckbox,
 | 
				
			||||||
 | 
					  // ElCheckboxButton,
 | 
				
			||||||
 | 
					  // ElCheckboxGroup,
 | 
				
			||||||
 | 
					  // ElCol,
 | 
				
			||||||
 | 
					  // ElColorPicker,
 | 
				
			||||||
 | 
					  // ElDatePicker,
 | 
				
			||||||
 | 
					  // ElDialog,
 | 
				
			||||||
 | 
					  // ElForm,
 | 
				
			||||||
 | 
					  // ElInput,
 | 
				
			||||||
 | 
					  // ElInputNumber,
 | 
				
			||||||
 | 
					  // ElPopover,
 | 
				
			||||||
 | 
					  // ElRadio,
 | 
				
			||||||
 | 
					  // ElRadioButton,
 | 
				
			||||||
 | 
					  // ElRadioGroup,
 | 
				
			||||||
 | 
					  // ElRate,
 | 
				
			||||||
 | 
					  // ElRow,
 | 
				
			||||||
 | 
					  // ElSelect,
 | 
				
			||||||
 | 
					  // ElSlider,
 | 
				
			||||||
 | 
					  // ElSwitch,
 | 
				
			||||||
 | 
					  // ElTimePicker,
 | 
				
			||||||
 | 
					  // ElTooltip,
 | 
				
			||||||
 | 
					  // ElTree,
 | 
				
			||||||
 | 
					  // ElUpload,
 | 
				
			||||||
 | 
					  // ElIcon,
 | 
				
			||||||
 | 
					  // ElProgress,
 | 
				
			||||||
 | 
					  // 以上会由 @form-create/element-ui/auto-import 自动引入
 | 
				
			||||||
  ElAlert,
 | 
					  ElAlert,
 | 
				
			||||||
 | 
					  ElTransfer,
 | 
				
			||||||
  ElAside,
 | 
					  ElAside,
 | 
				
			||||||
  ElContainer,
 | 
					  ElContainer,
 | 
				
			||||||
  ElDivider,
 | 
					  ElDivider,
 | 
				
			||||||
@@ -12,7 +42,18 @@ import {
 | 
				
			|||||||
  ElTableColumn,
 | 
					  ElTableColumn,
 | 
				
			||||||
  ElTabPane,
 | 
					  ElTabPane,
 | 
				
			||||||
  ElTabs,
 | 
					  ElTabs,
 | 
				
			||||||
  ElTransfer
 | 
					  ElDropdown,
 | 
				
			||||||
 | 
					  ElDropdownMenu,
 | 
				
			||||||
 | 
					  ElDropdownItem,
 | 
				
			||||||
 | 
					  ElBadge,
 | 
				
			||||||
 | 
					  ElTag,
 | 
				
			||||||
 | 
					  ElText,
 | 
				
			||||||
 | 
					  ElMenu,
 | 
				
			||||||
 | 
					  ElMenuItem,
 | 
				
			||||||
 | 
					  ElFooter,
 | 
				
			||||||
 | 
					  ElMessage
 | 
				
			||||||
 | 
					  // ElFormItem,
 | 
				
			||||||
 | 
					  // ElOption
 | 
				
			||||||
} from 'element-plus'
 | 
					} from 'element-plus'
 | 
				
			||||||
import FcDesigner from '@form-create/designer'
 | 
					import FcDesigner from '@form-create/designer'
 | 
				
			||||||
import formCreate from '@form-create/element-ui'
 | 
					import formCreate from '@form-create/element-ui'
 | 
				
			||||||
@@ -41,18 +82,30 @@ const ApiSelect = useApiSelect({
 | 
				
			|||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const components = [
 | 
					const components = [
 | 
				
			||||||
 | 
					  ElAlert,
 | 
				
			||||||
 | 
					  ElTransfer,
 | 
				
			||||||
  ElAside,
 | 
					  ElAside,
 | 
				
			||||||
  ElPopconfirm,
 | 
					 | 
				
			||||||
  ElHeader,
 | 
					 | 
				
			||||||
  ElMain,
 | 
					 | 
				
			||||||
  ElContainer,
 | 
					  ElContainer,
 | 
				
			||||||
  ElDivider,
 | 
					  ElDivider,
 | 
				
			||||||
  ElTransfer,
 | 
					  ElHeader,
 | 
				
			||||||
  ElAlert,
 | 
					  ElMain,
 | 
				
			||||||
  ElTabs,
 | 
					  ElPopconfirm,
 | 
				
			||||||
  ElTable,
 | 
					  ElTable,
 | 
				
			||||||
  ElTableColumn,
 | 
					  ElTableColumn,
 | 
				
			||||||
  ElTabPane,
 | 
					  ElTabPane,
 | 
				
			||||||
 | 
					  ElTabs,
 | 
				
			||||||
 | 
					  ElDropdown,
 | 
				
			||||||
 | 
					  ElDropdownMenu,
 | 
				
			||||||
 | 
					  ElDropdownItem,
 | 
				
			||||||
 | 
					  ElBadge,
 | 
				
			||||||
 | 
					  ElTag,
 | 
				
			||||||
 | 
					  ElText,
 | 
				
			||||||
 | 
					  ElMenu,
 | 
				
			||||||
 | 
					  ElMenuItem,
 | 
				
			||||||
 | 
					  ElFooter,
 | 
				
			||||||
 | 
					  ElMessage,
 | 
				
			||||||
 | 
					  // ElFormItem,
 | 
				
			||||||
 | 
					  // ElOption,
 | 
				
			||||||
  UploadImg,
 | 
					  UploadImg,
 | 
				
			||||||
  UploadImgs,
 | 
					  UploadImgs,
 | 
				
			||||||
  UploadFile,
 | 
					  UploadFile,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,14 +1,18 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <ContentWrap>
 | 
					  <ContentWrap :body-style="{ padding: '0px' }" class="!mb-0">
 | 
				
			||||||
    <!-- 表单设计器 -->
 | 
					    <!-- 表单设计器 -->
 | 
				
			||||||
    <FcDesigner ref="designer" height="780px">
 | 
					    <div
 | 
				
			||||||
      <template #handle>
 | 
					      class="h-[calc(100vh-var(--top-tool-height)-var(--tags-view-height)-var(--app-content-padding)-var(--app-content-padding)-2px)]"
 | 
				
			||||||
        <el-button round size="small" type="primary" @click="handleSave">
 | 
					    >
 | 
				
			||||||
          <Icon class="mr-5px" icon="ep:plus" />
 | 
					      <fc-designer class="my-designer" ref="designer" :config="designerConfig">
 | 
				
			||||||
          保存
 | 
					        <template #handle>
 | 
				
			||||||
        </el-button>
 | 
					          <el-button size="small" type="success" plain @click="handleSave">
 | 
				
			||||||
      </template>
 | 
					            <Icon class="mr-5px" icon="ep:plus" />
 | 
				
			||||||
    </FcDesigner>
 | 
					            保存
 | 
				
			||||||
 | 
					          </el-button>
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					      </fc-designer>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
  </ContentWrap>
 | 
					  </ContentWrap>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!-- 表单保存的弹窗 -->
 | 
					  <!-- 表单保存的弹窗 -->
 | 
				
			||||||
@@ -55,6 +59,31 @@ const { push, currentRoute } = useRouter() // 路由
 | 
				
			|||||||
const { query } = useRoute() // 路由信息
 | 
					const { query } = useRoute() // 路由信息
 | 
				
			||||||
const { delView } = useTagsViewStore() // 视图操作
 | 
					const { delView } = useTagsViewStore() // 视图操作
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 表单设计器配置
 | 
				
			||||||
 | 
					const designerConfig = ref({
 | 
				
			||||||
 | 
					  switchType: [], // 是否可以切换组件类型,或者可以相互切换的字段
 | 
				
			||||||
 | 
					  autoActive: true, // 是否自动选中拖入的组件
 | 
				
			||||||
 | 
					  useTemplate: false, // 是否生成vue2语法的模板组件
 | 
				
			||||||
 | 
					  formOptions: {}, // 定义表单配置默认值
 | 
				
			||||||
 | 
					  fieldReadonly: false, // 配置field是否可以编辑
 | 
				
			||||||
 | 
					  hiddenDragMenu: false, // 隐藏拖拽操作按钮
 | 
				
			||||||
 | 
					  hiddenDragBtn: false, // 隐藏拖拽按钮
 | 
				
			||||||
 | 
					  hiddenMenu: [], // 隐藏部分菜单
 | 
				
			||||||
 | 
					  hiddenItem: [], // 隐藏部分组件
 | 
				
			||||||
 | 
					  hiddenItemConfig: {}, // 隐藏组件的部分配置项
 | 
				
			||||||
 | 
					  disabledItemConfig: {}, // 禁用组件的部分配置项
 | 
				
			||||||
 | 
					  showSaveBtn: false, // 是否显示保存按钮
 | 
				
			||||||
 | 
					  showConfig: true, // 是否显示右侧的配置界面
 | 
				
			||||||
 | 
					  showBaseForm: true, // 是否显示组件的基础配置表单
 | 
				
			||||||
 | 
					  showControl: true, // 是否显示组件联动
 | 
				
			||||||
 | 
					  showPropsForm: true, // 是否显示组件的属性配置表单
 | 
				
			||||||
 | 
					  showEventForm: true, // 是否显示组件的事件配置表单
 | 
				
			||||||
 | 
					  showValidateForm: true, // 是否显示组件的验证配置表单
 | 
				
			||||||
 | 
					  showFormConfig: true, // 是否显示表单配置
 | 
				
			||||||
 | 
					  showInputData: true, // 是否显示录入按钮
 | 
				
			||||||
 | 
					  showDevice: true, // 是否显示多端适配选项
 | 
				
			||||||
 | 
					  appendConfigData: [] // 定义渲染规则所需的formData
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
const designer = ref() // 表单设计器
 | 
					const designer = ref() // 表单设计器
 | 
				
			||||||
useFormCreateDesigner(designer) // 表单设计器增强
 | 
					useFormCreateDesigner(designer) // 表单设计器增强
 | 
				
			||||||
const dialogVisible = ref(false) // 弹窗是否展示
 | 
					const dialogVisible = ref(false) // 弹窗是否展示
 | 
				
			||||||
@@ -119,3 +148,13 @@ onMounted(async () => {
 | 
				
			|||||||
  setConfAndFields(designer, data.conf, data.fields)
 | 
					  setConfAndFields(designer, data.conf, data.fields)
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style>
 | 
				
			||||||
 | 
					.my-designer {
 | 
				
			||||||
 | 
					  ._fc-l,
 | 
				
			||||||
 | 
					  ._fc-m,
 | 
				
			||||||
 | 
					  ._fc-r {
 | 
				
			||||||
 | 
					    border-top: none;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,17 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <ContentWrap>
 | 
					  <ContentWrap :body-style="{ padding: '0px' }" class="!mb-0">
 | 
				
			||||||
    <el-row>
 | 
					 | 
				
			||||||
      <el-col>
 | 
					 | 
				
			||||||
        <div class="float-right mb-2">
 | 
					 | 
				
			||||||
          <el-button size="small" type="primary" @click="showJson">生成 JSON</el-button>
 | 
					 | 
				
			||||||
          <el-button size="small" type="success" @click="showOption">生成 Options</el-button>
 | 
					 | 
				
			||||||
          <el-button size="small" type="danger" @click="showTemplate">生成组件</el-button>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
      </el-col>
 | 
					 | 
				
			||||||
    </el-row>
 | 
					 | 
				
			||||||
    <!-- 表单设计器 -->
 | 
					    <!-- 表单设计器 -->
 | 
				
			||||||
    <FcDesigner ref="designer" height="780px" />
 | 
					    <div
 | 
				
			||||||
 | 
					      class="h-[calc(100vh-var(--top-tool-height)-var(--tags-view-height)-var(--app-content-padding)-var(--app-content-padding)-2px)]"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      <fc-designer class="my-designer" ref="designer" :config="designerConfig">
 | 
				
			||||||
 | 
					        <template #handle>
 | 
				
			||||||
 | 
					          <el-button size="small" type="primary" plain @click="showJson">生成JSON</el-button>
 | 
				
			||||||
 | 
					          <el-button size="small" type="success" plain @click="showOption">生成Options</el-button>
 | 
				
			||||||
 | 
					          <el-button size="small" type="danger" plain @click="showTemplate">生成组件</el-button>
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					      </fc-designer>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
  </ContentWrap>
 | 
					  </ContentWrap>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!-- 弹窗:表单预览 -->
 | 
					  <!-- 弹窗:表单预览 -->
 | 
				
			||||||
@@ -43,6 +44,31 @@ defineOptions({ name: 'InfraBuild' })
 | 
				
			|||||||
const { t } = useI18n() // 国际化
 | 
					const { t } = useI18n() // 国际化
 | 
				
			||||||
const message = useMessage() // 消息
 | 
					const message = useMessage() // 消息
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 表单设计器配置
 | 
				
			||||||
 | 
					const designerConfig = ref({
 | 
				
			||||||
 | 
					  switchType: [], // 是否可以切换组件类型,或者可以相互切换的字段
 | 
				
			||||||
 | 
					  autoActive: true, // 是否自动选中拖入的组件
 | 
				
			||||||
 | 
					  useTemplate: false, // 是否生成vue2语法的模板组件
 | 
				
			||||||
 | 
					  formOptions: {}, // 定义表单配置默认值
 | 
				
			||||||
 | 
					  fieldReadonly: false, // 配置field是否可以编辑
 | 
				
			||||||
 | 
					  hiddenDragMenu: false, // 隐藏拖拽操作按钮
 | 
				
			||||||
 | 
					  hiddenDragBtn: false, // 隐藏拖拽按钮
 | 
				
			||||||
 | 
					  hiddenMenu: [], // 隐藏部分菜单
 | 
				
			||||||
 | 
					  hiddenItem: [], // 隐藏部分组件
 | 
				
			||||||
 | 
					  hiddenItemConfig: {}, // 隐藏组件的部分配置项
 | 
				
			||||||
 | 
					  disabledItemConfig: {}, // 禁用组件的部分配置项
 | 
				
			||||||
 | 
					  showSaveBtn: false, // 是否显示保存按钮
 | 
				
			||||||
 | 
					  showConfig: true, // 是否显示右侧的配置界面
 | 
				
			||||||
 | 
					  showBaseForm: true, // 是否显示组件的基础配置表单
 | 
				
			||||||
 | 
					  showControl: true, // 是否显示组件联动
 | 
				
			||||||
 | 
					  showPropsForm: true, // 是否显示组件的属性配置表单
 | 
				
			||||||
 | 
					  showEventForm: true, // 是否显示组件的事件配置表单
 | 
				
			||||||
 | 
					  showValidateForm: true, // 是否显示组件的验证配置表单
 | 
				
			||||||
 | 
					  showFormConfig: true, // 是否显示表单配置
 | 
				
			||||||
 | 
					  showInputData: true, // 是否显示录入按钮
 | 
				
			||||||
 | 
					  showDevice: true, // 是否显示多端适配选项
 | 
				
			||||||
 | 
					  appendConfigData: [] // 定义渲染规则所需的formData
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
const designer = ref() // 表单设计器
 | 
					const designer = ref() // 表单设计器
 | 
				
			||||||
const dialogVisible = ref(false) // 弹窗的是否展示
 | 
					const dialogVisible = ref(false) // 弹窗的是否展示
 | 
				
			||||||
const dialogTitle = ref('') // 弹窗的标题
 | 
					const dialogTitle = ref('') // 弹窗的标题
 | 
				
			||||||
@@ -140,3 +166,13 @@ onMounted(async () => {
 | 
				
			|||||||
  hljs.registerLanguage('json', json)
 | 
					  hljs.registerLanguage('json', json)
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style>
 | 
				
			||||||
 | 
					.my-designer {
 | 
				
			||||||
 | 
					  ._fc-l,
 | 
				
			||||||
 | 
					  ._fc-m,
 | 
				
			||||||
 | 
					  ._fc-r {
 | 
				
			||||||
 | 
					    border-top: none;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user