From 07925905f1a596e20e980de6d42db217abb753b0 Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期五, 12 十二月 2025 18:06:11 +0800
Subject: [PATCH] plugin

---
 pages/modal/3200_view.vue |  363 ++++++++++++++++++++++++++-------------------------
 1 files changed, 185 insertions(+), 178 deletions(-)

diff --git a/pages/modal/3200_view.vue b/pages/modal/3200_view.vue
index d10f7d2..c12b727 100644
--- a/pages/modal/3200_view.vue
+++ b/pages/modal/3200_view.vue
@@ -1,18 +1,14 @@
 <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">
-						<OIForm :form="detail2_styledef.form.items" viewMode></OIForm>
+						<OIForm :form="detail2_styledef.form" viewMode></OIForm>
 
 					</div>
 				</div>
@@ -29,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>
@@ -38,8 +34,16 @@
 </template>
 
 <script>
-	import Base64 from '../../components/js-base64/base64.js'
+	import {
+		Base64
+	} from '@/js/Base64.js';
 	import classUtils from "@/js/utils.js"
+	import {
+		showInfo,
+		showError,
+		showLoading,
+		hideLoading
+	} from "@/js/Page.js"
 	import {
 		appGetInfo,
 		dictGetInfo
@@ -50,17 +54,16 @@
 		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({
@@ -70,6 +73,7 @@
 		},
 		data() {
 			return {
+				largeMode: getApp().globalData.largeMode || false,
 				title: this.translateSys('add2'),
 				param: {},
 				styleDef: {
@@ -94,55 +98,61 @@
 				},
 			};
 		},
+		onReady() {
+			uni.setNavigationBarTitle({
+				title: this.title 
+			}); //璁剧疆椤堕儴鏍囬 
+		},
 		async onLoad(options) {
 			// console.log(options);
-			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);
-			if (this.param.ViewPage.View_UIDef.ui_type == "HTML椤甸潰") {
-				// HTML椤甸潰
-				//鑾峰彇鏁版嵁绫荤殑HTML椤甸潰
-				this.Html_UIstyleGetInfo(this.param.DataCls.id, this.param.ViewPage.View_UIDef.id, 'viewPage');
-			} else {
-				this.Detail2_UIstyleGetInfo(this.param.DataCls.id, this.param.ViewPage.View_UIDef.id);
-			}
-
-
-			//杩涘叆椤甸潰鍚庝簨浠�-			var eventid = this.param.ViewPage.Enter_View_Event?.id;
-			if (eventid) {
-				try {
-					var obj_attr = {
-						'S_ID': this.styleDef.form.objId
-					};
-					this.styleDef.form.attrs.forEach((attr) => {
-						obj_attr[attr.name] = attr.value;
-					});
-					// console.log(obj_attr);
-					var input_param = Base64.encode(JSON.stringify(obj_attr));
-					this.runCustomEvent({
-						ed_type: 0,
-						start_transaction: true,
-						class_id: this.param.DataCls.id,
-						event_id: eventid,
-						data_obj_id: this.styleDef.form.objId,
-						obj_attr,
-						input_param,
-					});
-				} catch (ex) {
-					var tip = typeof ex == "string" ? ex : ex.message;
-					uni.showModal({
-						title: this.translateSys("error"),
-						content: tip,
-						showCancel: false,
-						confirmText: this.translateSys('close')
-					});
+			try {
+				showLoading("loading...")
+			
+				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椤甸潰
+					await this.Html_UIstyleGetInfo(this.param.DataCls.id, this.param.ViewPage.View_UIDef.id,
+						'viewPage');
+				} else {
+					await this.Detail2_UIstyleGetInfo(this.param.DataCls.id, this.param.ViewPage.View_UIDef.id);
 				}
+
+
+				//杩涘叆椤甸潰鍚庝簨浠�+				var eventid = this.param.ViewPage.Enter_View_Event?.id;
+				if (eventid) {
+					try {
+						var obj_attr = {
+							'S_ID': this.styleDef.form.objId
+						};
+						this.styleDef.form.attrs.forEach((attr) => {
+							obj_attr[attr.name] = attr.value;
+						});
+						// console.log(obj_attr);
+						var input_param = Base64.encode(JSON.stringify(obj_attr));
+						await this.runCustomEvent({
+							ed_type: 0,
+							start_transaction: true,
+							class_id: this.param.DataCls.id,
+							event_id: eventid,
+							data_obj_id: this.styleDef.form.objId,
+							obj_attr,
+							input_param,
+						});
+					} catch (ex) {
+						showError(ex, this.translateSys('error'))
+					}
+				}
+				hideLoading()
+			} catch (ex) {
+				
+				hideLoading()
+				showError(ex, this.translateSys("error"));
 			}
 		},
 		methods: {
@@ -184,9 +194,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;
@@ -214,13 +224,7 @@
 					}, 100);
 				} catch (ex) {
 					// console.log(ex);
-					let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex
-					uni.showModal({
-						title: this.translateSys("error") + "1.1",
-						content: tip,
-						showCancel: false,
-						confirmText: this.translateSys('close')
-					});
+					showError(ex, this.translateSys('error') + "1.1")
 				}
 
 			},
@@ -263,13 +267,7 @@
 					});
 				} catch (ex) {
 					// console.log(ex);
-					let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex
-					uni.showModal({
-						title: this.translateSys("error") + "6.1",
-						content: tip,
-						showCancel: false,
-						confirmText: this.translateSys('close')
-					});
+					showError(ex, this.translateSys('error') + "6.1")
 				}
 
 
@@ -308,13 +306,7 @@
 						// console.log($this.detail2_styledef);
 					}
 				} catch (ex) {
-					var tip = typeof ex == "string" ? ex : ex.message;
-					uni.showModal({
-						title: this.translateSys("error") + "5.2",
-						content: tip,
-						showCancel: false,
-						confirmText: this.translateSys('close')
-					});
+					showError(ex, this.translateSys('error') + "5.2")
 				}
 			},
 			onCheckBoxValue(e) { //缁戝畾Model鍊�@@ -353,7 +345,15 @@
 							}
 						}
 					});
-				} else that.onButtonClicked(btn);
+				} else {
+					this.handleButtonClick((done) => {
+						that.onButtonClicked(btn);
+						setTimeout(() => {
+							done(); // 閲嶇疆鐘舵�
+						}, 1000);
+					});
+
+				}
 			},
 			//鐐瑰嚮鎸夐挳鍒楄〃
 			actionSheetTap() {
@@ -388,7 +388,15 @@
 				})
 			},
 			//澶勭悊鐩稿叧鎸夐挳
-			async onButtonClicked(btn) {
+			onButtonClicked(btn) {
+				this.handleButtonClick((done) => {
+					this.buttonClicked(btn);
+					setTimeout(() => {
+						done(); // 閲嶇疆鐘舵�
+					}, 1000);
+				});
+			},
+			async buttonClicked(btn) {
 				var style = this.styleDef || '';
 
 				try {
@@ -404,27 +412,18 @@
 						await this.triggerEvent(btn, style, enviroment);
 					} else {
 						btn.disabled = false
-						uni.showModal({
-							title: this.translateSys("tip"),
-							content: this.translateSys("unrealized"),
-							showCancel: false,
-							confirmText: this.translateSys('close')
-						});
+						showInfo(this.translateSys("unrealized"))
+
 					}
 				} catch (ex) {
 					btn.disabled = false
-					var tip = typeof ex == "string" ? ex : ex.message;
-					uni.showModal({
-						title: this.translateSys("error") + "2",
-						content: tip,
-						showCancel: false,
-						confirmText: this.translateSys('close')
-					});
+					showError(ex, this.translateSys('error') + "2")
 				}
 			},
 			//鎵ц瑙﹀彂浜嬩欢
 			async triggerEvent(btn, style, enviroment) {
 				try {
+					showLoading("loading...")
 					btn.disabled = true
 					var obj_attr = {
 						'S_ID': this.styleDef.form.objId
@@ -435,6 +434,7 @@
 					// console.log(obj_attr);
 					// let input_param = Base64.encode(JSON.stringify(obj_attr));
 					// return;
+					
 					await this.runCustomEvent({
 						ed_type: 0,
 						start_transaction: true,
@@ -444,14 +444,10 @@
 						obj_attr: obj_attr,
 					});
 					btn.disabled = false
+					hideLoading()
 				} catch (ex) {
-					var tip = typeof ex == "string" ? ex : ex.message;
-					uni.showModal({
-						title: this.translateSys("error") + "3",
-						content: tip,
-						showCancel: false,
-						confirmText: this.translateSys('close')
-					});
+					hideLoading()
+					showError(ex, this.translateSys('error') + "3")
 				}
 			},
 			//浜嬩欢
@@ -460,81 +456,82 @@
 					var $this = this;
 					const result = await runCustomEvent(dataInfo)
 					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('close')
-						});
-						else uni.showModal({
-							title: this.translateSys("tip"),
-							content: tip + ',' + this.translateSys('tip') + ':' + result.ret,
-							showCancel: false,
-							confirmText: this.translateSys('close')
-						});
-						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('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();
-									// eventChannel.emit('ExitViewEvent',"");
-									uni.navigateBack({
-										delta: 1, //杩斿洖灞傛暟锛�鍒欎笂涓婇〉
-									});
-								} else if (item.action_type == "hidden_button") { //闅愯棌鎸夐挳
-									var value = item.value;
-									value.forEach(btn => {
-										var index = $this.param.ViewPage.Page_Button
-											.findIndex(button => button.ShowName ==
-												btn)
-										if (index > -1)
-											$this.param.ViewPage.Page_Button.splice(
-												index, 1)
-									})
-								} else if (item.action_type == "set_panel_html") { //鏄剧ずHtml椤甸潰
-									// var value = item.value;
-									$this.ViewHtml_Panel = item.value;
-
-								}
-
-							});
-						} 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('close')
-							});
+					if (result.ret != 0 && result.ret != 1) {
+						let cls_name = result.event_info?.cls_name
+						let event_name = result.event_info?.event_name
+						tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result
+							.err_info
+							.join('\n') : ''
+						if (result.ret == 801) {
+							if (this.param.Only_Script_Error) {
+								let pos = tip.indexOf("锛�);
+								if (pos > -1) tip = tip.substring(pos + 1);
+							}
 						}
+						if (cls_name && event_name) tip = `鎵ц鈥�{cls_name}鈥濇暟鎹被鐨勨�${event_name}鈥濊剼鏈椂杩斿洖閿欒锛�{tip}`
+						if (result.ret == 801) showInfo(tip)
+						else showError(`${tip}锛屾彁绀猴細${result.ret}`, this.translateSys('tip'))
+						this.saving = false
+						return false
+					} else {
+						var tip = result.info ? typeof result.info == 'string' ? result.info :
+							result.info.join('\n') : '';
+						tip = tip || result.err_info
+						let time = result.info_time || 0
+						if (time)
+							showError(tip, this.translateSys('tip'))
+						else
+							showInfo(tip)
+
+						if ([0, 2, 3, 4, -1].includes(result.result_type)) {
+							if (result.result_type == 2) {
+
+							} else if (typeof result.result == 'string') {
+								showInfo(result.result)
+
+							}
+							try {
+								var actionList = result.action || []
+								actionList.forEach(item => {
+									if (item.action_type == "goback_to_pre_page") { //杩斿洖涓婁竴椤�+										var value = item.value;
+										// const eventChannel = this.getOpenerEventChannel();
+										// // const eventChannel = this.getOpenerEventChannel();
+										// eventChannel.emit('ExitViewEvent',"");
+										uni.navigateBack({
+											delta: 1, //杩斿洖灞傛暟锛�鍒欎笂涓婇〉
+										});
+									} else if (item.action_type == "hidden_button") { //闅愯棌鎸夐挳
+										var value = item.value;
+										value.forEach(btn => {
+											var index = $this.param.ViewPage.Page_Button
+												.findIndex(button => button.ShowName ==
+													btn)
+											if (index > -1)
+												$this.param.ViewPage.Page_Button.splice(
+													index, 1)
+										})
+									} else if (item.action_type == "set_panel_html") { //鏄剧ずHtml椤甸潰
+										// var value = item.value;
+										$this.ViewHtml_Panel = item.value;
+
+									}
+
+								});
+
+							} catch (ex) {
+								let actionList = (result.action || []).map(a => a.action_type).join(';')
+								let tip = typeof ex == 'string' ? ex : ex.message
+								tip = `鎵ц鑴氭湰杩斿洖鐨�{actionList}鏃跺嚭鐜板紓甯革紝璇锋鏌ヨ剼鏈繑鍥炵殑鏁版嵁鏍煎紡鏄惁姝g‘銆�{tip}`
+								showError(tip, this.translateSys('tip'))
+								return
+							}
+						}
+
 					}
 
 				} catch (ex) {
-					var tip = typeof ex == "string" ? ex : ex.errMsg;
-					uni.showModal({
-						title: this.translateSys("error") + "4.1",
-						content: this.translate('execute_after_change_event_failed') + this.translateSys(
-								"comma") +
-							this.translate('reason') + this.translateSys("colon") + tip,
-						showCancel: false,
-						confirmText: this.translateSys('close')
-					});
+					showError(ex, this.translateSys('error') + "4.1")
 
 				}
 			},
@@ -700,7 +697,7 @@
 			},
 
 			cancel(e) { //鍙栨秷
-				var eventChannel = this.$scope.eventChannel;
+				const eventChannel = this.getOpenerEventChannel();
 				// const eventChannel = this.getOpenerEventChannel();
 				eventChannel.emit('ExitViewEvent', "");
 				uni.navigateBack({
@@ -807,6 +804,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 {

--
Gitblit v1.9.1