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_view.vue |  359 ++++++++++++++---------------------------------------------
 1 files changed, 85 insertions(+), 274 deletions(-)

diff --git a/pages/modal/3200_view.vue b/pages/modal/3200_view.vue
index 9a14985..8eb16dd 100644
--- a/pages/modal/3200_view.vue
+++ b/pages/modal/3200_view.vue
@@ -1,134 +1,15 @@
 <template>
-	<view class="uni-page-modal-3200-view">
+	<view class="uni-page-modal-3200-view" :class="largeMode?'large-mode':''">
 		<view class="v-content">
 			<view class="dv-panel dv-panel-bkcolor">
 				<div class="dv-panel-input">
 					<!-- HTML椤甸潰绫诲瀷鏄剧ず -->
-					<div class="dv-viewHtml-Panel" v-if="ViewHtml_Panel" v-html="ViewHtml_Panel">
-						<!-- <div>
-						  <label class="item-label">浠诲姟缂栫爜:</label>
-						  <span class="item-span">TA240318-00005</span>
-						</div> -->
-					</div>
+					<view class="dv-viewHtml-Panel" v-if="ViewHtml_Panel" v-html="ViewHtml_Panel"></view>
+
 					<!-- 鑷畾涔夎〃鍗曠被鍨嬫樉绀�-->
 					<div v-if="!ViewHtml_Panel">
-						<div v-for="(item,index) in detail2_styledef.form.items">
-							<!-- 鏅�甯冨眬 -->
-							<view v-if="item.name!='Layout'">
-								<text class="txt_title" :style="{'width':item.labelWidth+'px'}">{{item.label}}锛�/text>
-								<span class="form-item-span"
-									v-if="item.disabled">{{item.value2?'#'+item.value+'#'+item.value2:item.value}}</span>
-								<!-- 鏂囨湰妗�鏁板瓧妗�-->
-								<view class="dv_input"
-									v-if="(item.name=='Input' || item.name=='InputNumber') && !item.disabled">
-									<text v-if="item.setting.prefix" class="uni-icon" :class="[item.setting.prefix]"
-										@change="onChange(item)">&#xe568;</text>
-									<input class="uni-input" :class="item.disabled?'input-disabled':''"
-										:type="item.name=='Input'?'text':item.name=='InputNumber'?'number':'text'"
-										v-model="item.value" :disabled="item.disabled" :placeholder="item.placeholder"
-										:style="{'width':item.setting.prefix && item.setting.suffix?'78%':item.setting.prefix || item.setting.suffix?'87%':'96%'}"
-										:focus="focusMateria" @focus="ontap(item)" @blur="onevent(item)" />
-									<text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]"
-										@click="onChange(item)">&#xe568;</text>
-								</view>
-								<!-- 涓嬫媺妗�鍗曢� item.useDict?item.dict:item.selections-->
-								<uni-data-select id="dv_select" v-if="item.name=='Select' && !item.disabled"
-									:class="item.disabled?'input-disabled':''" v-model="item.value"
-									:localdata="item.dict" @change="onChange(item)" :disabled="item.disabled"
-									:clear="false"></uni-data-select>
-								<!-- 澶氳鏂囨湰 -->
-								<view class="input-wrapper" v-if="item.name=='Textarea' && !item.disabled">
-									<textarea class="uni-input" :value="item.value"
-										:class="item.disabled?'input-disabled':''" :placeholder="item.placeholder"
-										@blur="onModelValue(item)" style="height:60px;" :style="{'width':'96%'}"
-										:disabled="item.disabled"></textarea>
-								</view>
-								<!-- 澶嶉�妗�-->
-								<checkbox-group class="check_rememberPwd" v-if="item.name=='Checkbox'"
-									:class="item.disabled?'input-disabled':''" @change="onModelValue(item)"
-									:data-ischeck="item.value" :disabled="item.disabled"
-									:style="{'margin-left':'10rpx'}">
-									<label>
-										<checkbox :value="item.value" :checked="item.value" />
-										<text>{{item.label}}</text>
-									</label>
-								</checkbox-group>
-								<!-- Switch寮�叧 -->
-								<switch v-if="item.name=='Switch'" :class="item.disabled?'input-disabled':''"
-									:disabled="item.disabled" v-model="item.value" @change="onModelValue(item)"
-									:style="{'margin-left':'10rpx'}" />
-								<!-- 鏃ユ湡鏃堕棿 -->
-								<view class="input-wrapper"
-									v-if="(item.name=='TimePicker' || item.name=='DatePicker') && !item.disabled">
-									<picker mode="date" class="date_iput" :class="item.disabled?'input-disabled':''"
-										:disabled="item.disabled" :value="item.value" @change="onModelValue(item)">
-										<view class="picker">{{item.value}}</view>
-									</picker>
-								</view>
-							</view>
-							<!-- 鏍呮牸甯冨眬 -->
-							<uni-row class="demo-uni-row" v-if="item.name=='Layout'">
-								<uni-col v-for="(cols,key) in item.setting.colList"
-									:span="item.setting.spanList?item.setting.spanList[key]:24 / item.setting.col">
-									<view v-if="cols!=null">
-										<text class="txt_title"
-											:style="{'width':cols.labelWidth+'px'}">{{cols.label}}锛�/text>
-										<span class="form-item-span"
-											v-if="cols.disabled">{{cols.value2?'#'+cols.value+'#'+cols.value2:cols.value}}</span>
-										<view class="dv_input"
-											v-if="(cols.name=='Input' || cols.name=='InputNumber') && !cols.disabled">
-											<text v-if="cols.setting.prefix" class="uni-icon"
-												:class="[cols.setting.prefix]" @change="onChange(cols)">&#xe568;</text>
-											<input class="uni-input" :class="cols.disabled?'input-disabled':''"
-												:type="cols.name=='Input'?'text':cols.name=='InputNumber'?'number':'text'"
-												v-model="cols.value" :disabled="cols.disabled"
-												:placeholder="cols.placeholder"
-												:style="{'width':cols.setting.prefix && cols.setting.suffix?'78%':cols.setting.prefix || cols.setting.suffix?'87%':'96%'}"
-												:focus="focusMateria" @focus="ontap(cols)" @blur="onevent(cols)" />
-											<text v-if="cols.setting.suffix" class="uni-icon"
-												:class="[cols.setting.suffix]" @click="onChange(cols)">&#xe568;</text>
-										</view>
-										<!-- 涓嬫媺妗�鍗曢� cols.useDict?cols.dict:cols.selections-->
-										<uni-data-select id="dv_select" v-if="cols.name=='Select' && !cols.disabled"
-											:class="cols.disabled?'input-disabled':''" v-model="cols.value"
-											:localdata="cols.dict" @change="onChange(cols)" :disabled="cols.disabled"
-											:clear="false"></uni-data-select>
-										<!-- 澶氳鏂囨湰 -->
-										<view class="input-wrapper" v-if="cols.name=='Textarea' && !cols.disabled">
-											<textarea class="uni-input" :value="cols.value"
-												:class="cols.disabled?'input-disabled':''"
-												:placeholder="cols.placeholder" @blur="onModelValue(cols)"
-												style="height:60px;" :style="{'width':'96%'}"
-												:disabled="cols.disabled"></textarea>
-										</view>
-										<!-- 澶嶉�妗�-->
-										<checkbox-group class="check_rememberPwd" v-if="cols.name=='Checkbox'"
-											:class="cols.disabled?'input-disabled':''" :disabled="item.disabled"
-											@change="onModelValue(cols)" :data-ischeck="cols.value"
-											:style="{'margin-left':'10rpx'}">
-											<label>
-												<checkbox :value="cols.value" :checked="cols.value" />
-												<text>{{cols.label}}</text>
-											</label>
-										</checkbox-group>
-										<!-- Switch寮�叧 -->
-										<switch v-if="cols.name=='Switch'" :class="cols.disabled?'input-disabled':''"
-											:disabled="item.disabled" v-model="cols.value" @change="onModelValue(cols)"
-											:style="{'margin-left':'10rpx'}" />
-										<!-- 鏃ユ湡鏃堕棿 -->
-										<view class="input-wrapper"
-											v-if="(cols.name=='TimePicker' || cols.name=='DatePicker') && !cols.disabled">
-											<picker mode="date" class="date_iput"
-												:class="cols.disabled?'input-disabled':''" :disabled="item.disabled"
-												:value="cols.value" @change="onModelValue(cols)">
-												<view class="picker">{{cols.value}}</view>
-											</picker>
-										</view>
+						<OIForm :form="detail2_styledef.form" viewMode></OIForm>
 
-									</view>
-								</uni-col>
-							</uni-row>
-						</div>
 					</div>
 				</div>
 			</view>
@@ -144,7 +25,7 @@
 			<view class="uni-padding-wrap" v-if="param.ViewPage.Page_Button.length>2">
 				<view class="uni-btn-v">
 					<a @tap="actionSheetTap">
-						<Icon class="mobox-normal-more" />
+						<text class="mobox-normal-more" />
 					</a>
 				</view>
 			</view>
@@ -153,7 +34,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,
@@ -164,14 +47,17 @@
 		runCustomEvent,
 		dataObjQuery
 	} from "@/api/data.js"
+	import OIForm from '@/components/oi-form/index.vue'
+	import buttonClickMixin from '@/mixins/button-click.js';
 
 	export default {
-		modules: {
-			Base64,
+		mixins: [buttonClickMixin],
+		components: {
+			OIForm
 		},
 		onBackPress(e) {
 			// console.log("鐩戝惉杩斿洖鎸夐挳浜嬩欢",e);
-			var eventChannel = this.$scope.eventChannel;
+			const eventChannel = this.getOpenerEventChannel();
 			// const eventChannel = this.getOpenerEventChannel();
 			eventChannel.emit('ExitViewEvent', "");
 			// uni.navigateBack({
@@ -181,6 +67,7 @@
 		},
 		data() {
 			return {
+					largeMode: getApp().globalData.largeMode || false,
 				title: this.translateSys('add2'),
 				param: {},
 				styleDef: {
@@ -210,11 +97,11 @@
 			uni.setNavigationBarTitle({
 				title: options.titlename
 			}); //璁剧疆椤堕儴鏍囬 
-			this.$data.title = options.titlename;
-			this.$data.param = JSON.parse(options.param);
-			console.log(this.$data.param);
-			this.$data.styleDef = JSON.parse(options.style);
-			// console.log(this.$data.styleDef);
+			this.title = options.titlename;
+			this.param = JSON.parse(options.param);
+			console.log(this.param);
+			this.styleDef = JSON.parse(options.style);
+			// console.log(this.styleDef);
 			if (this.param.ViewPage.View_UIDef.ui_type == "HTML椤甸潰") {
 				// HTML椤甸潰
 				//鑾峰彇鏁版嵁绫荤殑HTML椤甸潰
@@ -251,7 +138,7 @@
 						title: this.translateSys("error"),
 						content: tip,
 						showCancel: false,
-						confirmText: this.translateSys('cancel')
+						confirmText: this.translateSys('close')
 					});
 				}
 			}
@@ -295,9 +182,9 @@
 						if (!result.style_def.includes('"')) styledef = Base64.decode(result
 							.style_def);
 					}
-					$this.$data.detail2_styledef = result.style_def ? JSON.parse(styledef) : {};
-					$this.$data.detail2_styledef.SelBut_Checked = false;
-					// console.log($this.$data.detail2_styledef);
+					$this.detail2_styledef = result.style_def ? JSON.parse(styledef) : {};
+					$this.detail2_styledef.SelBut_Checked = false;
+					// console.log($this.detail2_styledef);
 					if ($this.detail2_styledef.form?.items) {
 						$this.styleDef.form.attrs.forEach((attr) => {
 							// info[attr.name]=attr.value;
@@ -330,7 +217,7 @@
 						title: this.translateSys("error") + "1.1",
 						content: tip,
 						showCancel: false,
-						confirmText: this.translateSys("cancel")
+						confirmText: this.translateSys('close')
 					});
 				}
 
@@ -379,7 +266,7 @@
 						title: this.translateSys("error") + "6.1",
 						content: tip,
 						showCancel: false,
-						confirmText: this.translateSys("cancel")
+						confirmText: this.translateSys('close')
 					});
 				}
 
@@ -424,127 +311,28 @@
 						title: this.translateSys("error") + "5.2",
 						content: tip,
 						showCancel: false,
-						confirmText: this.translateSys('cancel')
+						confirmText: this.translateSys('close')
 					});
 				}
 			},
+			onCheckBoxValue(e) { //缁戝畾Model鍊�+				let values = e.detail.value || []
+				var attr = item.fieldId;
+				this.detail2_styledef.form.model[attr] = values;
 
-			// 鍐呭鍙樺寲鍚庝簨浠�-			async onChange(event) {
-				try {
-					if (event.id) {
-						var obj_attr = this.detail2_styledef.form.model;
-						// console.log(obj_attr);
-						var input_param = Base64.encode(
-							JSON.stringify(
-								Object.keys(obj_attr).map((a) => ({
-									attr: a,
-									value: obj_attr[a] || "",
-								}))
-							)
-						);
-						var $this = this;
-						var dataInfo = {
-							ed_type: 0,
-							start_transaction: true,
-							class_id: this.$data.detail2_styledef.form.clsId,
-							class_name: '',
-							event_id: event.id,
-							event_name: '',
-							data_obj_id: "",
-							obj_attr: obj_attr,
-							prj_id: '',
-							ref_cls_id: '',
-							rel_obj_id: '',
-							user_login: '',
-							data_json: '',
-							compose_info: '',
-							ext_info: '',
-							global_attr: '',
-							input_param: input_param,
-						};
-						runCustomEvent(dataInfo).then(result => {
-							// console.log(result);
-							if (result.ret != 0) {
-								var tip = result.err_info ? typeof result.err_info == 'string' ? result
-									.err_info : result.err_info.join('<br/>') : '';
-								if (result.ret == 801) uni.showModal({
-									title: this.translateSys("tip"),
-									content: tip,
-									showCancel: false,
-									confirmText: this.translateSys('cancel')
-								});
-								else uni.showModal({
-									title: this.translateSys("tip"),
-									content: tip + ',' + this.translateSys('tip') + ':' + result
-										.ret,
-									showCancel: false,
-									confirmText: this.translateSys('cancel')
-								});
-								return false;
-							} else {
-								var tip = result.info ? typeof result.info == 'string' ? result.info :
-									result.info.join('<br/>') : '';
-								if (tip) uni.showModal({
-									title: this.translateSys("tip"),
-									content: tip,
-									showCancel: false,
-									confirmText: this.translateSys('cancel')
-								});
-
-								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.detail2_styledef.form.items.forEach(async (
-												ele, index) => {
-												data.forEach(async (ele2, index) => {
-													if (ele.fieldId == ele2
-														.attr) {
-														ele.value = ele2
-															.value;
-													}
-												});
-											});
-										}
-									});
-								} else {
-									// this.detail2StyleDefList=[];
-									if (result.info) {
-										uni.showModal({
-											title: this.translateSys("tip"),
-											content: result.info,
-											showCancel: false,
-											confirmText: this.translateSys('cancel')
-										});
-									}
-								}
-							}
-
-
-						}).catch(ex => {
-							// console.log(ex);
-							uni.showModal({
-								title: this.translateSys("error") + "8.1",
-								content: ex.errMsg,
-								showCancel: false,
-								confirmText: this.translateSys('cancel')
-							});
-						});
-					}
-				} catch (ex) {
-					var tip = typeof ex == "string" ? ex : ex.message;
-					uni.showModal({
-						title: this.translateSys("error") + "8.2",
-						content: this.translate('execute_after_change_event_failed') + this.translateSys(
-								"comma") +
-							this.translate('reason') + this.translateSys("colon") + tip,
-						showCancel: false,
-						confirmText: this.translateSys('cancel')
-					});
-
-				}
+			},
+			onRadioBoxValue(e) { //缁戝畾Model鍊�+				let values = e.detail.value || ""
+				var attr = item.fieldId;
+				this.detail2_styledef.form.model[attr] = values;
+			},
+			onModelValue(item) {
+				var attr = item.fieldId;
+				this.detail2_styledef.form.model[attr] = item.value;
+			},
+			onEnterChange(item) {
+				var attr = item.fieldId;
+				this.detail2_styledef.form.model[attr] = item.value;
 			},
 			//鐐瑰嚮鎸夐挳
 			onBtnClick(btn) {
@@ -553,15 +341,25 @@
 					uni.showModal({
 						title: this.translateSys("tip"),
 						content: btn.PromptContent || this.translate("are_you_sure"),
+						cancelText: this.translateSys('ok'),
+						confirmText: this.translateSys('cancel'),
 						success: function(res) {
-							if (res.confirm) {
+							if (res.cancel) {
 								that.onButtonClicked(btn);
 								// } else if (res.cancel) {
 								// 	console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷');
 							}
 						}
 					});
-				} else that.onButtonClicked(btn);
+				} else {
+					this.handleButtonClick((done) => {
+						that.onButtonClicked(btn);
+						setTimeout(() => {
+							done(); // 閲嶇疆鐘舵�
+						}, 1000);
+					});
+
+				}
 			},
 			//鐐瑰嚮鎸夐挳鍒楄〃
 			actionSheetTap() {
@@ -581,8 +379,10 @@
 							uni.showModal({
 								title: this.translateSys("tip"),
 								content: btn.PromptContent || this.translate("are_you_sure"),
+								cancelText: this.translateSys('ok'),
+								confirmText: this.translateSys('cancel'),
 								success: function(res) {
-									if (res.confirm) {
+									if (res.cancel) {
 										that.onButtonClicked(btn);
 										// } else if (res.cancel) {
 										// 	console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷');
@@ -614,7 +414,7 @@
 							title: this.translateSys("tip"),
 							content: this.translateSys("unrealized"),
 							showCancel: false,
-							confirmText: this.translateSys('cancel')
+							confirmText: this.translateSys('close')
 						});
 					}
 				} catch (ex) {
@@ -624,7 +424,7 @@
 						title: this.translateSys("error") + "2",
 						content: tip,
 						showCancel: false,
-						confirmText: this.translateSys('cancel')
+						confirmText: this.translateSys('close')
 					});
 				}
 			},
@@ -656,7 +456,7 @@
 						title: this.translateSys("error") + "3",
 						content: tip,
 						showCancel: false,
-						confirmText: this.translateSys('cancel')
+						confirmText: this.translateSys('close')
 					});
 				}
 			},
@@ -673,13 +473,13 @@
 							title: this.translateSys("tip"),
 							content: tip,
 							showCancel: false,
-							confirmText: this.translateSys('cancel')
+							confirmText: this.translateSys('close')
 						});
 						else uni.showModal({
 							title: this.translateSys("tip"),
 							content: tip + ',' + this.translateSys('tip') + ':' + result.ret,
 							showCancel: false,
-							confirmText: this.translateSys('cancel')
+							confirmText: this.translateSys('close')
 						});
 						return false;
 					} else {
@@ -689,14 +489,14 @@
 							title: this.translateSys("tip"),
 							content: tip,
 							showCancel: false,
-							confirmText: this.translateSys('cancel')
+							confirmText: this.translateSys('close')
 						});
 
 						if (result.result_type == 0 && result.action) {
 							result.action.forEach(item => {
 								if (item.action_type == "goback_to_pre_page") { //杩斿洖涓婁竴椤� 									var value = item.value;
-									// const eventChannel = this.$scope.eventChannel;
+									// const eventChannel = this.getOpenerEventChannel();
 									// // const eventChannel = this.getOpenerEventChannel();
 									// eventChannel.emit('ExitViewEvent',"");
 									uni.navigateBack({
@@ -726,7 +526,7 @@
 								title: this.translateSys("tip"),
 								content: tip,
 								showCancel: false,
-								confirmText: this.translateSys('cancel')
+								confirmText: this.translateSys('close')
 							});
 						}
 					}
@@ -739,7 +539,7 @@
 								"comma") +
 							this.translate('reason') + this.translateSys("colon") + tip,
 						showCancel: false,
-						confirmText: this.translateSys('cancel')
+						confirmText: this.translateSys('close')
 					});
 
 				}
@@ -906,7 +706,7 @@
 			},
 
 			cancel(e) { //鍙栨秷
-				var eventChannel = this.$scope.eventChannel;
+				const eventChannel = this.getOpenerEventChannel();
 				// const eventChannel = this.getOpenerEventChannel();
 				eventChannel.emit('ExitViewEvent', "");
 				uni.navigateBack({
@@ -976,7 +776,8 @@
 
 		.uni-icon {
 			/* border: 1px solid red; */
-			width: 8%;
+			width: 30rpx;
+			padding: 10rpx 5rpx;
 			font-family: uniicons;
 			font-size: 40rpx;
 			font-weight: 400;
@@ -1012,6 +813,16 @@
 			width: 100%;
 			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 {
@@ -1111,7 +922,7 @@
 			margin-top: 25rpx;
 			padding: 20rpx;
 			line-height: 1.5;
-			background: #4D6AF4;
+			background: #27A6E1;
 			border: none;
 			color: #fff;
 			font-size: 38rpx;
@@ -1131,9 +942,9 @@
 			margin-top: 25rpx;
 			padding: 20rpx;
 			line-height: 1.5;
-			background: #fff;
-			border: none;
-			color: #000;
+			// background: #fff;
+			// border: none;
+			// color: #000;
 			font-size: 38rpx;
 			font-weight: bold;
 			float: left;

--
Gitblit v1.9.1