From a2f5317f01290597eb44aaf80aa535ff468a61c5 Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期四, 05 六月 2025 17:10:46 +0800
Subject: [PATCH] 3202 set_subtable_page_content

---
 pages/modal/3200.vue |  343 +++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 248 insertions(+), 95 deletions(-)

diff --git a/pages/modal/3200.vue b/pages/modal/3200.vue
index e8899f1..f5ffc6b 100644
--- a/pages/modal/3200.vue
+++ b/pages/modal/3200.vue
@@ -1,9 +1,9 @@
 <template>
-	<view class="uni-page-modal-3200">
+	<view class="uni-page-modal-3200" :class="largeMode?'large-mode':''">
 		<view class="v-content">
 			<!-- 琛ㄥご鏍峰紡 -->
-			<OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" @focus="ontap"
-				@change="onEnterChange" @click-prefix="onEnterChange" @click-suffix="onEnterChange"></OIForm>
+			<OIForm ref="refBaseForm" class="v-headStyle" :form="head_styledef.form" @on-focus="ontap"
+				@on-change="onEnterChange" @on-click-prefix="onEnterChange" @on-click-suffix="onEnterChange"></OIForm>
 			<view class="v-scroll-view">
 				<scroll-view :scroll-top="scrollTop" :scroll-y="true" class="scroll-y" @scrolltolower="scrolltolower"
 					@scroll="scroll">
@@ -55,7 +55,7 @@
 			<view class="uni-padding-wrap" v-if="param.ListPage.Page_Button.length>0">
 				<view class="uni-btn-v">
 					<a @tap="actionSheetTap">
-						<Icon class="mobox-normal-more" />
+						<text class="mobox-normal-more" />
 					</a>
 				</view>
 			</view>
@@ -64,7 +64,9 @@
 </template>
 
 <script>
-	import Base64 from '../../components/js-base64/base64.js'
+	import {
+		Base64
+	} from '@/js/Base64.js';
 	import classUtils from "@/js/utils.js"
 	import {
 		appGetInfo,
@@ -78,11 +80,10 @@
 	} from "@/api/data.js"
 	import dayjs from "dayjs";
 	import OIForm from '@/components/oi-form/index.vue'
+	import buttonClickMixin from '@/mixins/button-click.js';
 
 	export default {
-		modules: {
-			Base64,
-		},
+		mixins: [buttonClickMixin],
 		components: {
 			OIForm
 		},
@@ -107,6 +108,7 @@
 		},
 		data() {
 			return {
+				largeMode: getApp().globalData.largeMode || false,
 				title: this.translateSys('add2'),
 				isFilter: true,
 				param: {},
@@ -152,8 +154,8 @@
 			uni.setNavigationBarTitle({
 				title: options.titlename
 			}); //璁剧疆椤堕儴鏍囬 
-			this.$data.title = options.titlename;
-			this.$data.param = JSON.parse(options.param);
+			this.title = options.titlename;
+			this.param = JSON.parse(options.param);
 
 
 			this.styledef = {};
@@ -211,7 +213,7 @@
 			//   this.query_id = "";
 			//   await this.loadDataGetList();
 			// }
-			// console.log(this.$data.param);
+			// console.log(this.param);
 			//椤甸潰鍒濆鍖栬幏鍙栫劍鐐� 			// this.focusMateria=true; 
 		},
@@ -251,7 +253,7 @@
 					//浼犲叆鍙傛暟鍊� 					if (paramValue) {
 						const attrs = paramValue.attrs || [];
-						(this.$data.head_styledef?.form?.items || []).forEach(async (ele, index) => {
+						(this.head_styledef?.form?.items || []).forEach(async (ele, index) => {
 							if (ele.name != "Layout") {
 								attrs.forEach(async (ele2, index2) => {
 									if (ele.fieldId == ele2.name) {
@@ -323,9 +325,9 @@
 						if (!result.style_def.includes('"')) styledef = Base64.decode(result
 							.style_def);
 					}
-					$this.$data.head_styledef = result.style_def ? JSON.parse(styledef) : {};
+					$this.head_styledef = result.style_def ? JSON.parse(styledef) : {};
 					// this.form = this.head_styledef.form.model;
-					// console.log($this.$data.head_styledef);
+					// console.log($this.head_styledef);
 					if ($this.head_styledef.form?.items) {
 						$this.head_styledef.form.items.forEach(async (ele, index) => {
 							console.log(ele.useDict);
@@ -340,7 +342,8 @@
 										$this.head_styledef.form
 											.model[ele.fieldId] = itemName;
 									}
-									$this.head_styledef.form.items[index].dict = selections.map((a) => {
+									$this.head_styledef.form.items[index].selections = selections.map((
+										a) => {
 										return {
 											value: a.value,
 											text: a.label
@@ -351,6 +354,25 @@
 							}
 
 						});
+						const app = getApp()
+						if (app.globalData.bindClasses) {
+							$this.head_styledef.form.items.push({
+								name: "Input",
+								label: this.translate("classes"),
+								labelWidth: 100,
+								disabled: true,
+								value: app.globalData.classes,
+								setting: {
+									width: 100,
+									height: 50,
+								},
+								bind: {
+									attr: "",
+								},
+								fieldId: "S_CLASSES",
+							})
+							$this.head_styledef.form.model["S_CLASSES"] = app.globalData.classes
+						}
 
 					}
 				} catch (ex) {
@@ -382,8 +404,8 @@
 						if (!result.style_def.includes('"')) styledef = Base64.decode(result
 							.style_def);
 					}
-					$this.$data.detail1_styledef = result.style_def ? JSON.parse(styledef) : {};
-					$this.$data.detail1_styledef.SelBut_Checked = false;
+					$this.detail1_styledef = result.style_def ? JSON.parse(styledef) : {};
+					$this.detail1_styledef.SelBut_Checked = false;
 				} catch (ex) {
 					// console.log(ex);
 					let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex
@@ -735,7 +757,7 @@
 				//鍒锋柊褰撳墠椤甸潰
 				this.initial();
 				// uni.redirectTo({
-				// 	url:'../modal/3200?param='+JSON.stringify(this.$data.param)+"&titlename="+this.$data.title,
+				// 	url:'../modal/3200?param='+JSON.stringify(this.param)+"&titlename="+this.title,
 				// });
 			},
 			//鐐瑰嚮鏄剧ず娴忚瀵硅薄鏄剧ず椤甸潰
@@ -808,7 +830,14 @@
 							}
 						}
 					});
-				} else that.onButtonClicked(btn, style);
+				} else {
+					this.handleButtonClick((done) => {
+						that.onButtonClicked(btn, style);
+						setTimeout(() => {
+							done(); // 閲嶇疆鐘舵�
+						}, 1000);
+					});
+				}
 			},
 			//鐐瑰嚮鎸夐挳鍒楄〃
 			actionSheetTap() {
@@ -1196,9 +1225,7 @@
 					var $this = this;
 					console.log(item);
 					let newVal = item.value.trim()
-					if (!newVal)
-						return
-					if (item.oldvalue != newVal) {
+					if (newVal) {
 						item.oldvalue = newVal;
 
 						var attr = item.fieldId;
@@ -1289,7 +1316,7 @@
 						var dataInfo = {
 							ed_type: 0,
 							start_transaction: true,
-							class_id: this.$data.head_styledef.form.clsId,
+							class_id: this.head_styledef.form.clsId,
 							class_name: '',
 							event_id: event.id,
 							event_name: '',
@@ -1355,38 +1382,43 @@
 										'close')
 								});
 
-								if (result.result_type == 0 && result
-									.action) {
-									result.action.forEach(item => {
-										if (item.action_type ==
-											"set_dlg_attr") {
-											// value = {"attr":"xxx", "value":"xxx"}
-											var data = item.value;
-											$this.$data
-												.head_styledef.form
-												.items
-												.forEach(
-													async (
-														ele,
-														index
-													) => {
-														data.forEach(
-															async (ele2,
-																index
-															) => {
-																if (ele
-																	.fieldId ==
-																	ele2
-																	.attr
-																) {
-																	ele.value =
-																		ele2
-																		.value;
-																}
-															});
-													});
+								if (result.result_type == 0 && result.action) {
+									var actionlist = result.action;
+									for (var j = 0; j < actionlist.length; j++) {
+										var action = actionlist[j];
+										var action_type = action.action_type;
+										var value = action.value;
+										if (action_type == "set_dlg_attr") {
+											if (value) {
+												this.setFormValues(value)
+											}
+										} else if (action_type == "set_subtable_page_content") {
+											if (value.clear_confirm != false && value.clear == true &&
+												$this.detail1StyleDefList.length > 0
+											) { //鍒ゆ柇鏄惁娓呯┖椤电鍐呭,姝e湪鐮佺洏鏄惁鏈夋暟鎹�+												uni.showModal({
+													title: this.translateSys('tip'),
+													content: this.translate("are_you_sure_clear_data"),
+													cancelText: $this.translateSys('ok'),
+													confirmText: $this.translateSys('cancel'),
+													success: function(res) {
+														if (res.cancel) {
+															$this.detail1StyleDefList = [];
+															$this.viewAceionContent(value);
+														} else if (res.confirm) {
+															$this.detail1StyleDefList = [];
+															$this.viewAceionContent(value);
+														}
+													}
+												});
+											} else {
+												$this.detail1StyleDefList = [];
+												$this.viewAceionContent(value);
+											}
 										}
-									});
+									}
+
+									// value = {"attr":"xxx", "value":"xxx"}
 								} else {
 									if (result.info) {
 										uni.showModal({
@@ -1432,6 +1464,158 @@
 
 				}
 			},
+			setFormValues(attrs) {
+				const head_styledef = this.head_styledef
+				if (JSON.stringify(attrs) == '{}') {
+					return;
+				}
+				attrs.forEach(async (attr, key) => {
+					if (attr.choice_list) {
+						var dictItemList = [];
+						attr.choice_list.forEach(async (val, index) => {
+							dictItemList.push({
+								text: val,
+								value: val
+							});
+						});
+						head_styledef.form.items.forEach(async (attr_item, index) => {
+							if (attr_item.name != "Layout") {
+								if (attr_item.fieldId == attr.attr) {
+									if (attr_item.useDict) {
+										attr_item.dict = dictItemList;
+									} else {
+										attr_item.selections = dictItemList;
+									}
+								}
+							} else if (attr_item.name == "Layout") {
+								attr_item.setting.colList.forEach((col) => {
+									if (col) {
+										if (col.fieldId == attr.attr) {
+											if (col.useDict) {
+												col.dict = dictItemList;
+											} else {
+												col.selections = dictItemList;
+											}
+										}
+									}
+								});
+							}
+						});
+					}
+					if (!head_styledef.form.model[attr.attr]) {
+						head_styledef.form.model[attr.attr] = attr.value;
+					}
+					head_styledef.form.items.forEach(async (ele) => {
+						if (ele.name != "Layout") {
+							if (ele.fieldId == attr.attr) {
+								ele.value = attr.value;
+								ele.oldvalue = attr.value;
+								if (ele.name == "Input") {
+									if (attr.prompt) ele.placeholder = attr.prompt;
+								}
+								if (attr.enable !== undefined) {
+									if (attr.enable) ele.disabled = false;
+									else ele.disabled = true;
+								}
+							}
+						} else if (ele.name == "Layout") {
+							ele.setting.colList.forEach((col) => {
+								if (col) {
+									if (col.fieldId == attr.attr) {
+										col.value = attr.value;
+										col.oldvalue = attr.value;
+										if (col.name == "Input") {
+											if (attr.prompt) col.placeholder = attr.prompt;
+										}
+										if (attr.enable !== undefined) {
+											if (attr.enable) col.disabled = false;
+											else col.disabled = true;
+										}
+									}
+								}
+							});
+						}
+
+					})
+					//鍒ゆ柇琛ㄥ崟閲屾槸鍚︽湁杩斿洖瀛楁锛屾病鏈夊氨瑁呰浇鍒癿odel閲岋紝鐐瑰嚮纭畾鎻愪氦鐨勬椂鍊欏甫涓婅繖浜涙暟鎹�+				})
+				console.log(head_styledef)
+				this.setData({
+					head_styledef: head_styledef
+				})
+			},
+			//鍔犺浇宸茬爜鐩樺唴瀹�+			viewAceionContent(data) {
+				var $this = this;
+				if (JSON.stringify(data.content) == '{}') {
+					return;
+				}
+				var styleStr = JSON.stringify($this.detail1_styledef);
+				var detailStyle = JSON.parse(styleStr);
+				if (detailStyle.form) {
+					data.content.forEach(cont => {
+						detailStyle = JSON.parse(styleStr);
+						detailStyle.SelBut_Checked = data.checkbox ?? true;
+
+						detailStyle.form.objId = cont.id;
+						detailStyle.form.htmlobjId = cont.id ? cont.id.replace(/-/g,
+								'')
+							.replace('{', '').replace('}',
+								'') : 'null';
+						detailStyle.form.attrs = cont.attrs;
+						cont.attrs.forEach(attr => {
+							detailStyle.form.items.forEach(ele => {
+								if (ele.name != 'Layout') {
+									if (ele.fieldId == attr.attr)
+										ele.value = attr.value;
+								} else if (ele.name == 'Layout') {
+									ele.setting.colList.forEach(
+										col => {
+											if (col) {
+												if (col.fieldId ==
+													attr.attr)
+													col.value = attr.value;
+											}
+										});
+								}
+							});
+						});
+						//濡傛灉 clear = false 鍒欎笉闇�娓呴櫎锛屾牴鎹甶d鍒ゆ柇鏄惁瀛樺湪锛屼笉瀛樺湪鎻掑叆鍒伴〉闈紝濡傛灉瀛樺湪鐢ㄦ柊鐨勫睘鎬ц鐩�+						if (data.clear == false) {
+							var isflag = true;
+							$this.detail1StyleDefList.forEach((style, index) => {
+								if (style.form.objId == detailStyle.form.objId) {
+									cont.attrs.forEach(attr => {
+										style.form.items.forEach(ele => {
+											if (ele.name != 'Layout') {
+												if (ele.fieldId == attr.attr)
+													ele.value = attr.value;
+											} else if (ele.name == 'Layout') {
+												ele.setting.colList.forEach(
+													col => {
+														if (col) {
+															if (col.fieldId ==
+																attr
+																.attr)
+																col.value =
+																attr.value;
+														}
+													});
+											}
+										});
+									});
+									isflag = false;
+								}
+							});
+							if (isflag) $this.detail1StyleDefList.push(detailStyle); //寰呭垎鎷�+						} else {
+							$this.detail1StyleDefList.push(detailStyle); //寰呭垎鎷�+						}
+					});
+				}
+
+			},
+
 			onDetail1EnterChange() {},
 			//鐐逛腑琛ㄥ崟
 			onPanelClick(value) { //鐐瑰嚮闈㈡澘楂樹寒鏄剧ず
@@ -1929,6 +2113,16 @@
 			width: 91%;
 			display: inline-block;
 			text-align: left;
+
+			.uni-forms-item {
+				padding-bottom: 5rpx;
+				margin-bottom: 0;
+
+				.uni-forms-item__label {
+					height: 20px !important;
+					padding: 0 10rpx 0 0 !important;
+				}
+			}
 		}
 
 		.dv-panel-buticon {
@@ -1961,47 +2155,6 @@
 			border-radius: 8rpx;
 		}
 
-		.dv-panel .txt_title {
-			font-size: 34rpx;
-			text-align: right;
-			display: inline-block;
-		}
-
-		.dv-panel input {
-			vertical-align: middle;
-			display: inline-block;
-			border: 2rpx solid #d5d5d5;
-			width: 68%;
-			height: 52rpx;
-			line-height: 34rpx;
-			background: #FFF;
-			border-radius: 14rpx !important;
-			color: #2d8cf0;
-			padding: 6rpx 8rpx 8rpx;
-			font-size: 32rpx;
-			font-family: inherit;
-			box-shadow: none !important;
-			transition-duration: 0.1s;
-			margin-top: 0rpx;
-		}
-
-		.dv-panel input::-webkit-input-placeholder {
-			font-size: 10rpx;
-		}
-
-		.dv-panel .form-item-span {
-			vertical-align: text-top;
-			color: #2d8cf0;
-			white-space: normal;
-			word-break: break-all;
-			display: inline-block;
-			width: calc(100% - 100px);
-		}
-
-		.dv-panel .form-item-input {
-
-			width: calc(100% - 100px);
-		}
 
 		.dv-panel-button {
 			display: inline-block;

--
Gitblit v1.9.1