From a06da14463e406280c470684aae5cbbb03e0c038 Mon Sep 17 00:00:00 2001 From: zhang zhuo Date: Wed, 10 Dec 2025 17:39:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/model/tools.ts | 5 + src/assets/icons/Json.vue | 3 + src/assets/icons/QieHuan.vue | 3 + src/assets/icons/ZanCun.vue | 3 + src/views/tools/flow/index.vue | 6 +- src/views/tools/form/center.vue | 145 +++++++++++++++---- src/views/tools/form/config.ts | 190 ++++++++++++++++++++++++ src/views/tools/form/demo.vue | 76 ++++++++++ src/views/tools/form/drag.vue | 83 ++++------- src/views/tools/form/formBuild.ts | 60 ++++++++ src/views/tools/form/index.vue | 62 +++----- src/views/tools/form/left.vue | 233 +++--------------------------- src/views/tools/form/right.vue | 112 +++++++------- 13 files changed, 576 insertions(+), 405 deletions(-) create mode 100644 src/assets/icons/Json.vue create mode 100644 src/assets/icons/QieHuan.vue create mode 100644 src/assets/icons/ZanCun.vue create mode 100644 src/views/tools/form/demo.vue create mode 100644 src/views/tools/form/formBuild.ts diff --git a/src/api/model/tools.ts b/src/api/model/tools.ts index 921b4de..ab29d79 100644 --- a/src/api/model/tools.ts +++ b/src/api/model/tools.ts @@ -29,5 +29,10 @@ export default { show: async function (data = {}) { return await http.get("gen_table/show", data); }, + }, + form: { + build: async function (data = {}) { + return await http.post("form/build", data); + }, } } diff --git a/src/assets/icons/Json.vue b/src/assets/icons/Json.vue new file mode 100644 index 0000000..94d277e --- /dev/null +++ b/src/assets/icons/Json.vue @@ -0,0 +1,3 @@ + diff --git a/src/assets/icons/QieHuan.vue b/src/assets/icons/QieHuan.vue new file mode 100644 index 0000000..02d659c --- /dev/null +++ b/src/assets/icons/QieHuan.vue @@ -0,0 +1,3 @@ + diff --git a/src/assets/icons/ZanCun.vue b/src/assets/icons/ZanCun.vue new file mode 100644 index 0000000..c79f52b --- /dev/null +++ b/src/assets/icons/ZanCun.vue @@ -0,0 +1,3 @@ + diff --git a/src/views/tools/flow/index.vue b/src/views/tools/flow/index.vue index 6c8befc..f45fd6f 100644 --- a/src/views/tools/flow/index.vue +++ b/src/views/tools/flow/index.vue @@ -25,6 +25,10 @@ import {CustomLineModel, CustomLine, CUSTOM_LINE} from "./model/CustomLine" import {ElMessageBox} from 'element-plus' import {useI18n} from "vue-i18n" +defineOptions({ + name: 'toolsFlow' +}) + const containerRef = ref(HTMLElement | null); const {t} = useI18n() let lf = ref(LogicFlow | null); @@ -256,7 +260,7 @@ const handleKeydown = (event) => { .right-panel { width: 320px; background: #fff; - border-left: 1px solid #ddd; + border-left: 1px solid var(--el-border-color-light); padding: 10px; } diff --git a/src/views/tools/form/center.vue b/src/views/tools/form/center.vue index 9a00887..e960908 100644 --- a/src/views/tools/form/center.vue +++ b/src/views/tools/form/center.vue @@ -1,67 +1,148 @@ diff --git a/src/views/tools/form/config.ts b/src/views/tools/form/config.ts index 8b431e4..6986c9a 100644 --- a/src/views/tools/form/config.ts +++ b/src/views/tools/form/config.ts @@ -246,3 +246,193 @@ export function setByPath(obj, path, value) { keys.slice(0, -1).forEach(k => o = o[k]) o[keys[keys.length - 1]] = value } + +export const inputComps = [{ + title: "单行文本", + icon: "pi-icon-line-input", + name: "text", + props: { + type: 'text' + }, + rules: [], + width: "100%", + required: false +}, { + title: "多行文本", + icon: "pi-icon-multi-input", + name: "textarea", + props: { + type: 'textarea' + }, + rules: [], + width: "100%", + required: false +}, { + title: "密码", + icon: "pi-icon-lock", + name: "password", + props: { + type: 'password', + showPassword: true + }, + rules: [], + width: "100%", + required: false +}, { + title: "计数器", + icon: "pi-icon-number-input", + name: "number", + props: { + controlsPosition: '' + }, + rules: [], + width: "100%", + required: false, + value: 1 +}] +export const choiceComps = [{ + title: "下拉组件", + icon: "pi-icon-select", + name: "select", + props: {}, + rules: [], + options: [], + width: "100%", + required: false, +}, { + title: "级联组件", + icon: "pi-icon-cascader", + name: "cascader", + props: { + props: { + label: 'label', + value: 'value', + multiple: false, + }, + options: [{label: '一号楼', value: 'r1', children: [{label: '二单元', value: 'c2'}]}] + }, + rules: [], + width: "100%", + required: false, +}, { + title: "单选组件", + icon: "pi-icon-radio", + name: "radio", + props: {}, + rules: [], + options: [], + width: "100%", + style: '', + required: false, +}, { + title: "多选组件", + icon: "pi-icon-checkbox", + name: "checkbox", + props: {}, + rules: [], + options: [], + style: '', + required: false, +}, { + title: "开关", + icon: "pi-icon-switch", + name: "switch", + props: {}, + rules: [], + required: false, +}, { + title: "滑块", + icon: "pi-icon-slider", + name: "slider", + props: {}, + rules: [], + width: "100%", + required: false, +}, { + title: "时间选择", + icon: "pi-icon-time-picker", + name: "time", + props: { + format: 'HH:mm:ss', + valueFormat: 'HH:mm:ss' + }, + rules: [] +}, { + title: "时间范围", + icon: "pi-icon-time-range", + name: "timerange", + props: { + isRange: true, + format: 'HH:mm:ss', + valueFormat: 'HH:mm:ss' + }, + rules: [], + width: "100%", + required: false, +}, { + title: "日期选择", + icon: "pi-icon-date-picker", + name: "date", + props: { + type: "date", + format: 'YYYY-MM-DD', + valueFormat: 'YYYY-MM-DD' + }, + rules: [], + width: "100%", + required: false, +}, { + title: "日期范围", + icon: "pi-icon-date-range", + name: "daterange", + props: { + type: "daterange", + format: 'YYYY-MM-DD', + valueFormat: 'YYYY-MM-DD' + }, + rules: [], + width: "100%", + required: false, +}, { + title: "评分", + icon: "pi-icon-rate", + name: "rate", + props: {}, + rules: [], + required: false, +}, { + title: "颜色选择", + icon: "pi-icon-color-picker", + name: "color", + props: {}, + rules: [], + required: false, +}, { + title: "上传", + icon: "pi-icon-upload-file", + name: "upload", + props: { + listType: 'text', + name: 'file' + }, + rules: [], + required: false, + btnText: "点击上传" +}] +export const layoutComps = [{ + title: "行容器", + icon: "pi-icon-row-layout", + name: "layout", + props: { + gutter: 15 + }, + children: [] +}, { + title: "按钮", + icon: "pi-icon-button", + name: "button", + props: { + type: 'primary' + }, + btnText: "按钮文字" +}]; diff --git a/src/views/tools/form/demo.vue b/src/views/tools/form/demo.vue new file mode 100644 index 0000000..218bb97 --- /dev/null +++ b/src/views/tools/form/demo.vue @@ -0,0 +1,76 @@ + + + diff --git a/src/views/tools/form/drag.vue b/src/views/tools/form/drag.vue index b1dce77..61b8305 100644 --- a/src/views/tools/form/drag.vue +++ b/src/views/tools/form/drag.vue @@ -1,18 +1,18 @@