diff --git a/manager/src/views/page-decoration/wap/controls/ColorField.vue b/manager/src/views/page-decoration/wap/controls/ColorField.vue
new file mode 100644
index 000000000..3b6bcd8a9
--- /dev/null
+++ b/manager/src/views/page-decoration/wap/controls/ColorField.vue
@@ -0,0 +1,42 @@
+
+
+
{{ label }}
+
+
+
+ 重置
+
+
+
+
+
+
+
diff --git a/manager/src/views/page-decoration/wap/controls/SegmentField.vue b/manager/src/views/page-decoration/wap/controls/SegmentField.vue
new file mode 100644
index 000000000..b9e526563
--- /dev/null
+++ b/manager/src/views/page-decoration/wap/controls/SegmentField.vue
@@ -0,0 +1,42 @@
+
+
+
{{ label }}
+
+
+ {{ opt.label }}
+
+
+
+
+
+
+
+
diff --git a/manager/src/views/page-decoration/wap/controls/SliderField.vue b/manager/src/views/page-decoration/wap/controls/SliderField.vue
new file mode 100644
index 000000000..0ee688600
--- /dev/null
+++ b/manager/src/views/page-decoration/wap/controls/SliderField.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
diff --git a/manager/src/views/page-decoration/wap/controls/field-common.scss b/manager/src/views/page-decoration/wap/controls/field-common.scss
new file mode 100644
index 000000000..953be6693
--- /dev/null
+++ b/manager/src/views/page-decoration/wap/controls/field-common.scss
@@ -0,0 +1,27 @@
+.ctrl-row {
+ display: flex;
+ align-items: flex-start;
+ margin-bottom: 16px;
+ gap: 12px;
+}
+
+.ctrl-label {
+ width: 72px;
+ flex-shrink: 0;
+ line-height: 32px;
+ color: #606266;
+ font-size: 13px;
+}
+
+.ctrl-body {
+ flex: 1;
+ min-width: 0;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ flex-wrap: wrap;
+}
+
+.ctrl-color-input {
+ width: 110px;
+}