From 3282e95db0207ee133d1e98d9771dec9d83b0fc4 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 02 四月 2026 16:24:38 +0800
Subject: [PATCH] 2026.4.2 新增专题管理功能
---
components/form/index.js | 68 +++++++++++++++++++++++++++------
1 files changed, 55 insertions(+), 13 deletions(-)
diff --git a/components/form/index.js b/components/form/index.js
index c699b42..a149651 100644
--- a/components/form/index.js
+++ b/components/form/index.js
@@ -1,4 +1,9 @@
+import { cascaderNote } from './form-util.js';
+
Component({
+ options: {
+ multipleSlots: true, // 鍦ㄧ粍浠跺畾涔夋椂鐨勯�夐」涓惎鐢ㄥslot鏀寔
+ },
properties: {
/**
* 琛ㄥ崟杈撳叆妗嗛噰鐢═-design妗嗘灦涓嬬殑Input缁勪欢
@@ -10,7 +15,7 @@
* value: 鐪熷疄鍊�,
* status: 杈撳叆妗嗙姸鎬併�傚彲閫夐」锛歴uccess/warning/error,
* tips: 杈撳叆妗嗕笅鏂规彁绀烘枃鏈紝浼氭牴鎹笉鍚岀殑 status 鍛堢幇涓嶅悓鐨勬牱寮�,
- * inputType: 杈撳叆绫诲瀷 锛坱ext: 杈撳叆妗嗭紱switch锛氬垏鎹㈡寜閽�; picker: 涓嬫媺妗嗛�夐」; cascader: 绾ц仈閫夋嫨锛�,
+ * inputType: 杈撳叆绫诲瀷 (text: 杈撳叆妗�; switch: 鍒囨崲鎸夐挳; picker: 涓嬫媺妗嗛�夐」; cascader: 绾ц仈閫夋嫨),
* options: 褰撹緭鍏ョ被鍨嬩负picker鎴朿ascader鏃讹紝鎻愪緵鍙�夐」,
* cascaderTitles: 褰撹緭鍏ョ被鍨嬩负cascader鏃讹紝鎻愪緵姣忎釜閫夐」鐨勬爣棰�,
*/
@@ -20,6 +25,26 @@
observer(v) {
this.setData({ formArray: v });
},
+ },
+ // 纭鏂囨湰
+ submitText: {
+ type: String,
+ value: '淇濆瓨',
+ },
+ // 鍙栨秷鏂囨湰
+ cancelText: {
+ type: String,
+ value: '鍙栨秷',
+ },
+ // 鏄惁鎵ц鏍¢獙
+ validated: {
+ type: Boolean,
+ value: false,
+ },
+ // 鏄惁鍙紪杈�
+ editable: {
+ type: Boolean,
+ value: true,
},
},
@@ -40,9 +65,6 @@
onSwitchChange(e) {
const { index } = e.currentTarget.dataset;
const { value } = e.detail;
- // const { formArray } = this.data;
- // formArray[index].value = value;
- // this.setData({ formArray });
this.setData({
[`formArray[${index}].value`]: value,
});
@@ -57,10 +79,9 @@
const { label, value } = e.detail;
this.setData({
[`formArray[${index}].visible`]: false,
- [`formArray[${index}].value`]: {
- label: label[0],
- value: value[0],
- },
+ [`formArray[${index}]._value`]: value,
+ [`formArray[${index}]._label`]: label[0],
+ [`formArray[${index}].value`]: value[0],
});
},
onPickerCancel(e) {
@@ -75,22 +96,43 @@
this.setData({ [`formArray[${index}].visible`]: true });
},
onCascaderChange(e) {
+ const { index } = e.currentTarget.dataset;
const { selectedOptions, value } = e.detail;
- console.log(selectedOptions);
- console.log(value);
+ const note = cascaderNote(selectedOptions);
+ const v = selectedOptions.map(v => {
+ return v.value;
+ });
+ this.setData({
+ [`formArray[${index}].visible`]: false,
+ [`formArray[${index}]._value`]: value,
+ [`formArray[${index}].note`]: note,
+ [`formArray[${index}].value`]: v,
+ });
},
// 淇濆瓨
onSubmit() {
const formObj = {};
+ let fail = false;
this.data.formArray.forEach(e => {
+ if (e.required && !e.value) {
+ fail = true;
+ this.setData({ validated: true });
+ return;
+ }
if (e.inputType == 'picker') {
- formObj[e.name] = e.value.value;
+ formObj[e.name] = e.value;
+ } else if (e.inputType == 'cascader') {
+ e.referItems.forEach((r, i) => {
+ formObj[r] = e.value[i];
+ });
} else {
formObj[e.name] = e.value;
}
});
- this.triggerEvent('submit', formObj);
+ if (!fail) {
+ this.triggerEvent('submit', formObj);
+ }
},
// 鍙栨秷
onCancel() {
@@ -100,7 +142,7 @@
_note(v) {
let note = '';
v.forEach(o => {
- if (note != o.label && o.value > 0) {
+ if (note != o.label) {
if (note != '') {
note += '/';
}
--
Gitblit v1.9.3