From d066a9659f793dee40ac7fa0bc399ebd30664b4a Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期四, 14 八月 2025 10:01:10 +0800
Subject: [PATCH] 3202加列表按钮跳转功能点

---
 pages/modal/3202.vue |  353 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 337 insertions(+), 16 deletions(-)

diff --git a/pages/modal/3202.vue b/pages/modal/3202.vue
index 967c3b5..5ac47af 100644
--- a/pages/modal/3202.vue
+++ b/pages/modal/3202.vue
@@ -13,8 +13,16 @@
 							:class="activeItem == style?'bk-active':''">
 							<div class="dv-panel-input">
 								<OIForm class="v-area dv-panel" :form="style.form" viewMode></OIForm>
+								<div class="dv-panel-button" v-if="rowButtons.length > 0">
+
+									<button size="mini" v-for="(btn,btnIndex) in rowButtons" :key="btnIndex"
+										type="primary" @click="onRowBtnClick(btn, ii)">
+										<text v-if="btn.Style == 'img' || btn.Style == 'img_text'" class="img"></text>
+										{{btn.ShowName}}
+									</button>
+								</div>
 							</div>
-							<div class="dv-panel-button" v-if="click_item_view">
+							<div class="dv-panel-right-button" v-if="click_item_view">
 								<a @click="onViewPageClick(style)"><i class="mobox-normal-right-arrow" /></a>
 							</div>
 						</view>
@@ -90,6 +98,9 @@
 					name: this.param?.ClickItem_Event?.name,
 					id: this.param?.ClickItem_Event?.id,
 				};
+			},
+			rowButtons() {
+				return this.param?.ListItem_Button || [];
 			},
 
 		},
@@ -489,7 +500,7 @@
 					data_json,
 				}).then(result => {
 					// console.log(result);
-					if (result.ret != 0&& result.ret != 1) {
+					if (result.ret != 0 && result.ret != 1) {
 						var tip = result.err_info ? typeof result
 							.err_info ==
 							'string' ?
@@ -597,9 +608,303 @@
 							'close')
 					});
 				});
+			},
+			onRowBtnClick(btn, index) {
+				const $this = this
+				if (btn.Prompt) {
+					const sContent = btn.PromptContent || this.translate("confirm")
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: btn.PromptContent || this.translate("confirm"),
+						cancelText: this.translateSys('ok'),
+						confirmText: this.translateSys('cancel'),
+						success: function(res) {
+							if (res.cancel) {
+								$this.onButtonClicked(btn, index);
+							}
+
+						},
+					})
+
+				} else {
+					this.handleButtonClick((done) => {
+						this.onButtonClicked(btn, index);
+						setTimeout(() => {
+							done(); // 閲嶇疆鐘舵�
+						}, 1000);
+					});
+
+				}
+			},
+			onButtonClicked(btn, index) {
+
+				let enviroment = {
+					button: "row",
+					button_name: btn.ShowName,
+					cls_id: btn.Cls_ID,
+					function: "3022",
+					master: {},
+				};
+				if (btn.FunCode == "TriggerEvent") {
+					const style = this.detail1StyleDefList[index];
+					this.triggerEvent(btn, style, enviroment);
+				} else if (btn.FunCode == "RelatedFunction") {
+					const style = this.detail1StyleDefList[index];
+					this.relatedFunction(btn, style, enviroment);
+				} else {
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: this.translateSys("unrealized"),
+						showCancel: false,
+						confirmText: this.translateSys('close')
+					});
+				}
+			},
+			//鎵ц瑙﹀彂浜嬩欢
+			async triggerEvent(btn, style, enviroment) {
+				const $this = this
+
+				var obj_attr = this.head_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] || "",
+						}))
+					)
+				);
+				let detail_attr = {};
+				style.form.items.forEach((item) => {
+					if (item.name == "Layout") {
+						item.setting.colList.forEach((cols) => {
+							if (cols != null) detail_attr[cols.fieldId] = cols.value;
+						});
+					} else detail_attr[item.fieldId] = item.value;
+				});
+				detail_attr["id"] = style.form.objId;
+
+				const attrs = Object.keys(detail_attr)
+					.map((a) => ({
+						attr: a,
+						value: detail_attr[a] || "",
+					}))
+					.filter((a) => {
+						return a.attr != "id";
+					});
+				let data_json = Base64.encode(JSON.stringify(attrs));
+				runCustomEvent({
+					ed_type: 0,
+					start_transaction: true,
+					class_id: btn.Cls_ID,
+					event_id: btn.Event.ID,
+					input_param,
+					data_json,
+				}).then(result => {
+					// console.log(result);
+					if (result.ret != 0 && result.ret != 1) {
+						var tip = result.err_info ? typeof result
+							.err_info ==
+							'string' ?
+							result
+							.err_info : result.err_info.join(
+								'<br/>') : '';
+						if (result.ret == 801) {
+							if (this.param.Only_Script_Error) {
+								let pos = tip.indexOf("锛�);
+								if (pos > -1) tip = tip.substring(
+									pos + 1);
+							}
+							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/>') : '';
+						tip = tip || result.err_info
+						if (tip) uni.showModal({
+							title: this.translateSys(
+								"tip"),
+							content: tip,
+							showCancel: false,
+							confirmText: this.translateSys(
+								'close')
+						});
+						if ([0, 2, 3, 4, -1].includes(result.result_type)) {
+							if (result.result_type == 2) {
+
+							} else if (typeof result.result == 'string') {
+								if (result.result) {
+									uni.showModal({
+										title: this.translateSys('tip'),
+										content: result.result,
+										showCancel: false,
+										confirmText: this.translateSys('close')
+									});
+								}
+							}
+							try {
+								var actionList = result.action || []
+								actionList.forEach(item => {
+									if (item.action_type == "jump_pda_page") {
+										// value = {"attr":"xxx", "value":"xxx"}
+										var data = item.value;
+										uni.navigateTo({
+											url: `../modal/3202_view?param=${JSON.stringify($this.param)}&titlename=${data.page?.page_name || ""}&dataObj=${JSON.stringify(data)}`,
+											events: {
+												// 涓烘寚瀹氫簨浠舵坊鍔犱竴涓洃鍚櫒锛岃幏鍙栬鎵撳紑椤甸潰浼犻�鍒板綋鍓嶉〉闈㈢殑鏁版嵁
+												ExitViewEvent: function(data) {
+													console.log(data);
+													this.runCustomEvent(data);
+												}
+											}
+										});
+									}
+								})
+							} catch (ex) {
+								let actionList = (result.action || []).map(a => a.action_type).join(';')
+								let tip = typeof ex == 'string' ? ex : ex.message
+								tip = `鎵ц鑴氭湰杩斿洖鐨�{actionList}鏃跺嚭鐜板紓甯革紝璇锋鏌ヨ剼鏈繑鍥炵殑鏁版嵁鏍煎紡鏄惁姝g‘銆�{tip}`
+								uni.showModal({
+									title: this.translateSys('tip'),
+									content: tip,
+									showCancel: false,
+									confirmText: this.translateSys('close')
+								});
+								console.log(ex)
+								return
+							}
+						}
+
+					}
 
 
+				}).catch(ex => {
+					// console.log(ex);
+					uni.showModal({
+						title: this.translateSys("error") +
+							"8.1",
+						content: ex.errMsg,
+						showCancel: false,
+						confirmText: this.translateSys(
+							'close')
+					});
+				});
+			},
+			async relatedFunction(btn, style, enviroment) {
+				//璺宠浆鍔熻兘鐐�+				try {
+					const defCode = btn.Related_Function?.Def_Code
+					var $this = this;
+					if (
+						defCode == "3018" ||
+						defCode == "3037" ||
+						defCode == "3200" ||
+						defCode == "3201" ||
+						defCode == "5600" ||
+						defCode == "5601" ||
+						defCode == "5602"
+					) {
 
+						let name = defCode
+						if (defCode == "3018" || defCode == "3037")
+							name = defCode + "_2"
+						var json = {
+							app_id: [btn.Related_Function.ID],
+						};
+						const result = await appGetInfo(json)
+						if ((result || []).length > 0) {
+							var app = result[0];
+							var param = "";
+							var appName = app.list_name || app.name
+								.Name;
+							var paramStr = app.param
+							if (paramStr) {
+								//mobox2鐨刾aram鏄痡son瀛楃涓�+								param = paramStr.replace(/\\/g, "");
+								//mobox3鐨刾aram鏄痓ase64瀛楃涓�+								if (!paramStr.includes('"')) param = Base64.decode(
+									paramStr);
+							}
+							if (!param) {
+								uni.showModal({
+									title: this.translateSys("tip"),
+									content: this.translate(
+										'tip_no_app_param'),
+									showCancel: false,
+									confirmText: this.translateSys(
+										'close')
+								});
+								return;
+							}
+
+							uni.navigateTo({
+								url: '../modal/' + name + '?param=' +
+									param + "&titlename=" +
+									appName +
+									"&type=relatedFunction&paramValue=" +
+									JSON.stringify(style
+										.form),
+								events: {
+									relatedFunction: function(data) {
+										console.log(data);
+										$this.Refresh();
+									},
+								}
+							});
+						} else {
+							uni.showModal({
+								title: this.translateSys("error"),
+								content: this.translate(
+									"function_not_exist"),
+								showCancel: false,
+								confirmText: this.translateSys('close')
+							});
+						}
+
+					} else {
+						uni.showModal({
+							title: this.translateSys("error"),
+							content: this.translate("cannot_related_function"),
+							showCancel: false,
+							confirmText: this.translateSys('close')
+						});
+
+					}
+				} catch (ex) {
+					console.log(ex);
+					let exStr = JSON.stringify(ex)
+					if (exStr == "{}")
+						exStr = ex
+					let tip = typeof ex.errMsg == "string" ? ex.errMsg : exStr
+					uni.showModal({
+						title: this.translateSys("error"),
+						content: tip,
+						showCancel: false,
+						confirmText: this.translateSys('close')
+					});
+					return undefined
+				}
 			},
 			ontap(item) { //鎵爜鍔熻兘
 				// var $ele = e;
@@ -642,7 +947,7 @@
 			},
 
 			onEnterChange(item) { //鍥炶溅锛岀偣鍑绘寜閽紝鍙栨秷鑺傜偣浜嬩欢
-				// console.log(item);
+				console.log(item);
 				let newVal = item.value
 				if (typeof item.value == "string") {
 					newVal = item.value.trim()
@@ -676,7 +981,7 @@
 				try {
 					if (event.id) {
 						var obj_attr = this.head_styledef.form.model;
-						// console.log(obj_attr);
+						console.log(obj_attr);
 						var input_param = Base64.encode(
 							JSON.stringify(
 								Object.keys(obj_attr).map((a) => ({
@@ -706,8 +1011,8 @@
 							input_param: input_param,
 						};
 						runCustomEvent(dataInfo).then(result => {
-							// console.log(result);
-							if (result.ret != 0&& result.ret != 1) {
+							console.log(result);
+							if (result.ret != 0 && result.ret != 1) {
 								var tip = result.err_info ? typeof result
 									.err_info ==
 									'string' ?
@@ -1034,7 +1339,7 @@
 					runCustomEvent(dataInfo).then(result => {
 						console.log(result);
 
-						if (result.ret != 0&& result.ret != 1) {
+						if (result.ret != 0 && result.ret != 1) {
 							var tip = result.err_info ? typeof result
 								.err_info ==
 								'string' ?
@@ -1465,7 +1770,7 @@
 		.dv-panel-bkcolor {
 			border: 1px solid #ccc;
 			border-radius: 5px;
-			background-color: #F5F5F5;
+			background-color: #F8F8F8;
 		}
 
 		.dv-panel {
@@ -1494,17 +1799,33 @@
 
 
 		.dv-panel-button {
+			width: 100%;
+			min-height: 16px;
+			padding-bottom: 10rpx;
+			display: flex;
+			flex-direction: row;
+			// justify-content: right;
+
+			button {
+				 line-height:1.6;
+				// border: none;
+				// margin-right: 10rpx;
+				// text-align: center;
+			}
+		}
+
+		.dv-panel-right-button {
 			display: inline-block;
-		}
 
-		.dv-panel-button a i {
-			font-size: 36rpx;
-		}
+			a i {
+				font-size: 36rpx;
+			}
 
-		.dv-panel-button button {
-			height: 50rpx;
-			font-size: 26rpx;
-			padding: 0 24rpx;
+			button {
+				height: 50rpx;
+				font-size: 26rpx;
+				padding: 0 24rpx;
+			}
 		}
 
 		.bk-active {

--
Gitblit v1.9.1