From f85708dcab378fe8d12fbf95933d00883c36fe3d Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期四, 27 二月 2025 16:20:12 +0800
Subject: [PATCH] 5601 button

---
 pages/modal/5601.vue      |  340 ++++-
 pages/modal/form/form.vue | 3548 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 manifest.json             |    4 
 3 files changed, 3,821 insertions(+), 71 deletions(-)

diff --git a/manifest.json b/manifest.json
index 2169946..c821d6f 100644
--- a/manifest.json
+++ b/manifest.json
@@ -2,8 +2,8 @@
     "name" : "MoboxPDA",
     "appid" : "__UNI__56D451E",
     "description" : "",
-    "versionName" : "1.1.40",
-    "versionCode" : 1140,
+    "versionName" : "1.1.41",
+    "versionCode" : 1141,
     "transformPx" : false,
     /* 5+App鐗规湁鐩稿叧 */
     "app-plus" : {
diff --git a/pages/modal/5601.vue b/pages/modal/5601.vue
index d019952..e1d05fc 100644
--- a/pages/modal/5601.vue
+++ b/pages/modal/5601.vue
@@ -144,25 +144,42 @@
 												</uni-row>
 											</div>
 										</div>
-										<div class="dv-panel-button">
+										<div class="dv-panel-button"
+											v-if="pageData.Select_Button==true || pageData.Row_Button.length > 0">
 
 											<checkbox v-if="pageData.Select_Button==true" :model="ii"
 												:checked="style.SelBut_Checked" />
 											<!-- <text></text> -->
-
 											<!-- <button type="primary" @click="savaItem(ii)" v-if="param.Sub_Page[0].OK_Button==true">淇濆瓨</Button> -->
-											<button type="warn" @tap="delItem(pageData,ii)"
-												v-if="pageData.Del_Button==true">{{translateSys('delete')}}</button>
+											<button size="mini" v-for="(btn,btnIndex) in pageData.Row_Button"
+												:key="btnIndex" :type="btn.FunCode == 'Delete' ? 'warn' : 'primary'"
+												@click="onRowBtnClick(btn, pageData,ii)">
+												<Icon v-if="btn.Style == 'img' || btn.Style == 'img_text'"
+													class="Img" />
+												{{(btn.Style == 'text'|| btn.Style == 'img_text') ? btn.ShowName :""}}
+											</button>
 										</div>
 									</div>
 								</checkbox-group>
 							</view>
-							<view class="view-bottom" v-if="pageData.OK_Button==true">
-								<button type="default" @tap="cancel"
-									class="btn_cancel">{{translateSys('cancel')}}</button>
-								<button type="primary" @tap="ok(pageData)" class="btn_add"
-									:class="pageData.okLoading?'btn_disabled':''"
-									:disabled="pageData.okLoading? true:false">{{translateSys('ok')}}</button>
+							<view class="view-bottom" v-if="pageData.Button.length >0 ">
+								<button v-for="(btn,btnIndex) in pageData.Button" :key="btnIndex"
+									:type="btn.FunCode == 'Cancel' ? 'default' : 'primary'"
+									:class="{'btn-disabled':(btn.FunCode != 'Cancel' && pageData.okLoading),
+													'btn-one':pageData.Button.length == 1,
+													'btn-left':(btnIndex < pageData.Button.length - 1),
+													'btn-right': btnIndex > 0 && btnIndex == pageData.Button.length - 1 ,
+													'width-50':(pageData.Button.length == 2),'width-32':(pageData.Button.length == 3),'width-30':(pageData.DropDownButton.length> 0)}"
+									:disabled="(btn.FunCode != 'Cancel' && pageData.okLoading)? true:false"
+									@click="onBtnClick(btn, pageData)">
+									<Icon v-if="btn.Style == 'img' || btn.Style == 'img_text'" class="Img" />
+									{{(btn.Style == 'text'|| btn.Style == 'img_text') ? btn.ShowName :""}}
+								</button>
+								<view class="btn-right" v-if="pageData.DropDownButton.length >0 ">
+									<a @click="clickDropdownBtns(pageData)">
+										<Icon class="mobox-normal-more" />
+									</a>
+								</view>
 							</view>
 						</view>
 					</swiper-item>
@@ -236,11 +253,7 @@
 				pageDetail: [], //{StyleDef{}:,DefList:[],ExtData:{}}
 				// 鍒嗘鍣ㄦ暟鎹� 				current: 0,
-				Before_OK_Event: {},
 				After_OK_Event: {},
-				Before_Del_Event: {},
-				After_Del_Event: {},
-
 				active_id: '',
 				selectAttrObj: {},
 
@@ -308,7 +321,6 @@
 				});
 			},
 			async loadData(paramValue) {
-
 				//鑾峰彇鏁版嵁绫荤殑鑷畾涔夎〃鍗曞弬鏁� 				await this.Head_UIStyleGetInfo(this.ClsID, this.param.Input_UI_Style.ID);
 				//浼犲叆鍙傛暟鍊�@@ -351,6 +363,33 @@
 						this.ClsID,
 						page.UI_Style.ID
 					);
+					const buttons = this.pageButtonList(page)
+					page.Button = buttons
+					page.DropDownButton = []
+					if (buttons.length > 3) {
+						let cancelBtn = undefined
+						const btns = []
+						buttons.forEach((btn) => {
+							if (btn.FunCode == "Cancel") {
+								cancelBtn = btn
+							} else {
+								btns.push(btn)
+							}
+						})
+						if (cancelBtn) {
+							if (btns.length > 2) {
+								page.DropDownButton = btns.splice(2)
+								page.Button = btns
+							}
+							page.Button.push(cancelBtn)
+						} else {
+							if (btns.length > 3) {
+								page.DropDownButton = btns.splice(3)
+								page.Button = btns
+							}
+						}
+					}
+					page.Row_Button = this.rowButtonList(page)
 				}
 
 				this.setData({
@@ -365,6 +404,89 @@
 					current: index
 				})
 			},
+			pageButtonList(page) {
+				if (this.param?.ver == "2.0") {
+					return page?.Button || []
+
+				} else {
+					if (page?.OK_Button) {
+						let evt = {};
+						if (page.Before_ok?.ID) {
+							evt = {
+								ID: page.Before_ok?.ID,
+								Name: page.Before_ok?.Name
+							};
+						} else if (page.After_ok?.ID) {
+							evt = {
+								ID: page.After_ok?.ID,
+								Name: page.After_ok?.Name
+							};
+						}
+						let btnCancel = {
+							Cls_Name: this.param?.master_cls?.name || "",
+							Cls_ID: this.param?.master_cls?.id || "",
+							FunCode: "Cancel",
+							ShowName: this.$t("sys.cancel"),
+							Style: "text",
+							Prompt: false,
+						};
+						if (evt.ID) {
+							let btn = {
+								Cls_Name: this.param?.master_cls?.name || "",
+								Cls_ID: this.param?.master_cls?.id || "",
+								FunCode: "TriggerEvent",
+								ShowName: this.$t("sys.ok"),
+								Style: "text",
+								Prompt: false,
+								NotTriggerSYSEvent: false,
+								DataStateVerify: false,
+								AttrVerify: false,
+								Event: evt,
+							};
+							return [btn, btnCancel];
+						} else return [btnCancel];
+					} else {
+						return [];
+					}
+				}
+			},
+			rowButtonList(page) {
+				if (this.param?.ver == "2.0") {
+					return page?.Row_Button || [];
+				} else {
+					if (page?.Del_Button) {
+						let evt = {};
+						if (page.Before_Delete?.ID) {
+							evt = {
+								ID: page.Before_Delete?.ID,
+								Name: page.Before_Delete?.Name,
+							};
+						} else if (page.After_Delete?.ID) {
+							evt = {
+								ID: page.After_Delete?.ID,
+								Name: page.After_Delete?.Name
+							};
+						}
+
+						if (evt.ID) {
+							return [{
+								Cls_Name: this.param?.master_cls?.name || "",
+								Cls_ID: this.param?.master_cls?.id || "",
+								FunCode: "Delete",
+								ShowName: this.$t("sys.delete"),
+								Style: "text",
+								Prompt: false,
+								NotTriggerSYSEvent: false,
+								DataStateVerify: false,
+								AttrVerify: false,
+								AfterProcess_Event: evt,
+							}];
+						}
+					}
+					return [];
+				}
+			},
+
 			checkboxChange(e) {
 
 				var items = this.pageDetail[this.current]?.DefList || []
@@ -477,6 +599,8 @@
 					this.setData({
 						head_styledef: styledefHead
 					})
+					console.log("Head_UIStyleGetInfo", this.head_styledef)
+
 				} catch (ex) {
 					// console.log(ex);
 					uni.showModal({
@@ -1704,21 +1828,6 @@
 			onDetail1EnterChange(item) { //鐮佺洏涓牱寮忓洖杞︿簨浠� 				console.log(item);
 			},
-			delItem(pageData, index) { //鍒犻櫎鐮佺洏涓牱寮忛潰鏉�-
-				//鍒犻櫎鐮佺洏涓牱寮忛潰鏉�-				this.Before_Del_Event = pageData.Before_Delete;
-				this.After_Del_Event = pageData.After_Delete;
-				const style = pageData.DefList[index];
-				//鍒犻櫎鐮佺洏涓牱寮忛潰鏉�-				pageData.DefList.splice(index, 1);
-				if (this.Before_Del_Event?.ID)
-					//鏄惁鏈夊垹闄ゅ墠浜嬩欢
-					this.del(pageData, style, this.Before_Del_Event);
-				else if (this.After_Del_Event?.ID)
-					//鏄惁鏈夊垹闄ゅ悗浜嬩欢
-					this.del(pageData, style, this.After_Del_Event);
-			},
 			async del(pageData, style, event) {
 				//鑾峰彇琛ㄥご灞炴�
 				var head_attr = {};
@@ -2442,6 +2551,82 @@
 				// console.log(value);
 				this.active_id = id;
 			},
+			//鐐瑰嚮鎸夐挳鍒楄〃
+			clickDropdownBtns(pageData) {
+				const that = this
+				const itemlist = [];
+				const btnList = pageData.DropDownButton || []
+
+				for (let i in btnList) {
+					itemlist.push(btnList[i].ShowName || "");
+				}
+				uni.showActionSheet({
+					// title: '鎸夐挳鍒楄〃',
+					itemList: itemlist,
+					success: (e) => {
+						console.log(e.tapIndex);
+						var btn = btnList[e.tapIndex];
+						that.onBtnClick(btn, pageData);
+					}
+				})
+			},
+			onBtnClick(btn, pageData) {
+				if (btn.Prompt) {
+					const sContent = btn.PromptContent || this.translate("confirm")
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: btn.PromptContent || this.translate("confirm"),
+						success: function(res) {
+							if (res.confirm) {}
+							this.onButtonClicked(btn, pageData, -1);
+						},
+					})
+
+				} else {
+					this.onButtonClicked(btn, pageData, -1);
+				}
+			},
+			onRowBtnClick(btn, pageData, index) {
+				if (btn.Prompt) {
+					const sContent = btn.PromptContent || this.translate("confirm")
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: btn.PromptContent || this.translate("confirm"),
+						success: function(res) {
+							if (res.confirm) {}
+							this.onButtonClicked(btn, pageData, index);
+						},
+					})
+
+				} else {
+					this.onButtonClicked(btn, pageData, index);
+				}
+			},
+			onButtonClicked(btn, pageData, index) {
+				this.After_OK_Event = {}
+				let enviroment = {
+					button: "top",
+					button_name: btn.ShowName,
+					cls_id: btn.Cls_ID,
+					function: "3018",
+					master: {},
+				};
+				if (btn.FunCode == "TriggerEvent") {
+					this.After_OK_Event = btn?.After_Event || {};
+					this.sava(pageData, btn.Event);
+				} else if (btn.FunCode == "Cancel") {
+					this.cancel();
+				} else if (btn.FunCode == "Delete") {
+					if (index > -1) {
+						const style = pageData.DefList[index];
+						//鍒犻櫎鐮佺洏涓牱寮忛潰鏉�+						pageData.DefList.splice(index, 1);
+						this.del(pageData, style, btn.AfterProcess_Event);
+					}
+				} else {
+					this.$Message.warning(this.$t("sys.unrealized"));
+				}
+			},
 			//纭畾
 			ok(pageData) {
 				this.Before_OK_Event = pageData.Before_ok;
@@ -3044,10 +3229,58 @@
 			flex-direction: row;
 			width: calc(100% - 30rpx);
 			padding: 10rpx 15rpx 30rpx 15rpx;
+
+			.btn-disabled {
+				background-color: #ddd;
+				color: #888;
+			}
+
+			.btn-left {
+				padding: 20rpx;
+				line-height: 1.5;
+				border: none;
+				font-size: 38rpx;
+				font-weight: bold;
+				float: left;
+				display: inline-block;
+			}
+
+			.btn-one {
+				padding: 20rpx;
+				line-height: 1.5;
+				border: none;
+				font-size: 38rpx;
+				font-weight: bold;
+				float: left;
+				display: inline-block;
+				width: 50%;
+				margin-left: 25%;
+			}
+
+			.btn-right {
+				padding: 20rpx;
+				line-height: 1.5;
+				border: none;
+				font-size: 38rpx;
+				font-weight: bold;
+				float: right;
+				display: inline-block;
+			}
+
+			.width-50 {
+				width: 49%;
+			}
+
+			.width-32 {
+				width: 32%;
+				margin-left: 1%;
+			}
+
+			.width-30 {
+				width: 30%;
+				margin-left: 1%;
+			}
 		}
-
-
-
 
 		[nvue] uni-view {
 			position: relative;
@@ -3073,7 +3306,7 @@
 
 		.dv-panel {
 			background-color: #efefef;
-			padding: 20rpx 20rpx 4rpx 0px;
+			padding: 20rpx 20rpx 10rpx 0px;
 			border-radius: 12rpx;
 			margin: 10rpx 0 20rpx 0;
 			text-align: right;
@@ -3118,7 +3351,8 @@
 			.dv-panel-button {
 				width: 100%;
 				text-align: left;
-				padding-bottom: 20rpx;
+				min-height: 30rpx;
+				padding-bottom: 10rpx;
 
 				checkbox {
 					padding-left: 20px;
@@ -3127,44 +3361,12 @@
 
 				button {
 					text-align: left;
-					line-height: 1.8;
+					line-height: 1.5;
 					border: none;
-					font-size: 34rpx;
-					width: 180rpx;
+					font-size: 30rpx;
 					display: inline-block;
 					float: right;
 					text-align: center;
-
-					.btn_cancel {
-						width: 49.5%;
-						padding: 20rpx;
-						line-height: 1.5;
-						border: none;
-						font-size: 38rpx;
-						font-weight: bold;
-						float: left;
-						display: inline-block;
-					}
-
-					.btn_add {
-						width: 49.5%;
-
-						padding: 20rpx;
-						line-height: 1.5;
-						border: none;
-						font-size: 38rpx;
-						font-weight: bold;
-						float: right;
-						color: #fff;
-						display: inline-block;
-					}
-
-					.btn_disabled {
-						background-color: #ddd;
-						color: #888;
-					}
-
-
 				}
 			}
 
diff --git a/pages/modal/form/form.vue b/pages/modal/form/form.vue
new file mode 100644
index 0000000..a86be86
--- /dev/null
+++ b/pages/modal/form/form.vue
@@ -0,0 +1,3548 @@
+<template>
+	<view class="uni-page-modal-form">
+		<!-- 琛ㄥご鏍峰紡 -->
+		<uni-forms ref="baseForm" label-align="right">
+			<view v-for="(item,index) in head_styledef.form.items" :key="index" class="v-head-style">
+				<!-- 鏅�甯冨眬 -->
+				<uni-forms-item v-if="item.name != 'Layout'" :label="item.label ?item.label +'锛�:'' "
+					:label-width="item.labelWidth+'px'">
+					<uni-data-picker v-if="item.name=='Select'" :class="item.disabled?'input-disabled':''"
+						v-model="item.value" :localdata="item.dict" @change="onEnterChange(item)"
+						:readonly="item.disabled" :clear-icon="false" :popup-title="item.label"></uni-data-picker>
+					<view class="input-wrapper" v-if="item.name=='Input' || item.name=='InputNumber'">
+						<text v-if="item.setting.prefix" class="uni-icon" :class="[item.setting.prefix]"
+							@click="classAttr_extButton(item)">&#xe568;</text>
+						<input class="uni-input" :class="item.disabled?'input-disabled':''"
+							:style="{'padding-left':item.setting.prefix?0 : '8rpx','right':item.setting.suffix?0 : '8rpx'}"
+							:type="item.name=='Input'?'text':'number'" v-model="item.value" :disabled="item.disabled"
+							:placeholder="item.placeholder" :focus="focusFieldId == item.fieldId" @focus="ontap(item)"
+							@click="onClick(item)" @keyup.enter="onEnterChange(item)" @blur="onEnterChange(item)"
+							:maxlength="-1" />
+						<text v-if="item.setting.suffix" class="uni-icon" :class="[item.setting.suffix]"
+							@click="classAttr_extButton(item)"></text>
+					</view>
+					<!-- 澶嶉�妗�-->
+					<checkbox-group v-if="item.name=='Checkbox'" :class="item.disabled?'input-disabled':''"
+						:disabled="item.disabled" @change="onCheckBoxValue" :data-attr="item.fieldId"
+						:data-index="index">
+						<label v-for="(item2) in item.selections" :key="item2.value">
+							<checkbox :value="item2.value" :checked="item.value.includes(item2.value)" />
+							<text>{{item2.label}}</text>
+						</label>
+					</checkbox-group>
+					<!-- 鍗曢�妗�-->
+					<radio-group v-if="item.name=='Radio'" :class="item.disabled?'input-disabled':''"
+						:disabled="item.disabled" @change="onRadioBoxValue" :data-attr="item.fieldId"
+						:data-index="index">
+						<label v-for="(item2) in item.selections" :key="item2.value">
+							<radio :value="item2.value" :checked="item2.value === item.value" />
+							<text>{{item2.label}}</text>
+						</label>
+					</radio-group>
+					<!-- Switch寮�叧 -->
+					<switch class="input-switch" v-if="item.name=='Switch'" :class="item.disabled?'input-disabled':''"
+						:disabled="item.disabled" v-model="item.value" @change="onEnterChange(item)" />
+				</uni-forms-item>
+				<!-- 鏍呮牸甯冨眬 -->
+				<uni-row v-else :gutter="item.setting.gutter">
+					<uni-col
+						:span=" item.setting.spanList && item.setting.spanList[key]? item.setting.spanList[key] : 24 / item.setting.col"
+						v-for="(col,key) in item.setting.colList">
+						<uni-forms-item :label="col.label ? col.label +'锛�:''" :label-width="col.labelWidth+'px'">
+							<uni-data-picker v-if="col.name=='Select'" :class="col.disabled?'input-disabled':''"
+								v-model="col.value" :localdata="col.dict" @change="onEnterChange(col)"
+								:readonly="col.disabled" :clear-icon="false" :popup-title="col.label"></uni-data-picker>
+							<view class="input-wrapper" v-if="col.name=='Input' || col.name=='InputNumber'">
+								<text v-if="col.setting.prefix" class="uni-icon" :class="[col.setting.prefix]"
+									@click="classAttr_extButton(col)">&#xe568;</text>
+								<input class="uni-input" :class="col.disabled?'input-disabled':''"
+									:style="{'padding-left':col.setting.prefix?0 : '8px','right':col.setting.suffix?0 : '8px'}"
+									:type="col.name=='Input'?'text':'number'" v-model="col.value"
+									:disabled="col.disabled" :placeholder="col.placeholder"
+									:focus="focusFieldId == col.fieldId" @focus="ontap(col)" @click="onClick(col)"
+									@keyup.enter="onEnterChange(col)" @blur="onEnterChange(col)" :maxlength="-1" />
+								<text v-if="col.setting.suffix" class="uni-icon" :class="[col.setting.suffix]"
+									@click="classAttr_extButton(col)"></text>
+							</view>
+							<!-- 澶嶉�妗�-->
+							<checkbox-group v-if="col.name=='Checkbox'" :class="col.disabled?'input-disabled':''"
+								:disabled="col.disabled" @change="onCheckBoxValue" :data-attr="col.fieldId"
+								:data-index="index" :data-iindex="key">
+								<label v-for="(col2) in col.selections" :key="col2.value">
+									<checkbox :value="col2.value" :checked="col.value.includes(col2.value)" />
+									<text>{{col2.label}}</text>
+								</label>
+							</checkbox-group>
+							<!-- 鍗曢�妗�-->
+							<radio-group v-if="col.name=='Radio'" :class="col.disabled?'input-disabled':''"
+								:disabled="col.disabled" @change="onRadioBoxValue" :data-attr="col.fieldId"
+								:data-index="index" :data-iindex="key">
+								<label v-for="(col2) in col.selections" :key="col2.value">
+									<radio :value="col2.value" :checked="col2.value === col.value" />
+									<text>{{col2.label}}</text>
+								</label>
+							</radio-group>
+							<!-- Switch寮�叧 -->
+							<switch v-if="col.name=='Switch'" :class="col.disabled?'input-disabled':''"
+								:disabled="col.disabled" v-model="col.value" @change="onEnterChange(col)" />
+						</uni-forms-item>
+					</uni-col>
+				</uni-row>
+			</view>
+		</uni-forms>
+		<view class="view-content">
+			<!-- 鐮佺洏瀛愮晫闈�-->
+			<view v-if="param.Show_Welcom_Page==false" class="uni-panel-content">
+				<!-- 椤电 -->
+				<view class="dv-tab">
+					<uni-segmented-control :current="current" :values="tabs" @clickItem="onClickItem"
+						styleType="button">
+					</uni-segmented-control>
+				</view>
+				<swiper class="view-tabpage" :current="current" @change="changeSwiper">
+					<!-- 瀛愮晫闈�-->
+					<swiper-item v-for="(pageData, pageIndex) in pageDetail" :key="pageIndex">
+						<view class="uni-panel-content">
+							<view class="view-tab-content" :id="'tabpanel' + pageData.Name">
+								<image class="logo" v-if="pageData.DefList.length==0"
+									src="../../images/mobox_log_200x40.png">
+								</image>
+								<checkbox-group @change="checkboxChange">
+									<div class="dv-panel" v-for="(style,ii) in pageData.DefList"
+										@tap="onPanelClick(ii,style.form.htmlobjId)"
+										:id="'dvpanel'+style.form.htmlobjId"
+										:class="style.form.htmlobjId==active_id?'bk-active':''">
+										<div class="dv-panel-input">
+											<div class="dv-input" v-for="(item,index) in style.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.value}}</span>
+													<input class="uni-input" v-if="!item.disabled"
+														:type="item.name=='InputNumber'?'number':'text'"
+														v-model="item.value" :disabled="item.disabled"
+														:placeholder="item.placeholder" :maxlength="-1" />
+												</view>
+												<!-- 鏍呮牸甯冨眬 -->
+												<uni-row class="demo-uni-row" v-else :gutter="item.setting.gutter">
+													<uni-col
+														:span=" item.setting.spanList && item.setting.spanList[key]? item.setting.spanList[key] : 24 / item.setting.col"
+														v-for="(cols,key) in item.setting.colList">
+														<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.value}}</span>
+															<input class="uni-input" v-if="!cols.disabled"
+																:type="cols.name=='InputNumber'?'number':'text'"
+																v-model="cols.value" :disabled="cols.disabled"
+																:placeholder="cols.placeholder" :maxlength="-1" />
+														</view>
+													</uni-col>
+												</uni-row>
+											</div>
+										</div>
+										<div class="dv-panel-button"
+											v-if="pageData.Select_Button==true || pageData.Row_Button.length > 0">
+
+											<checkbox v-if="pageData.Select_Button==true" :model="ii"
+												:checked="style.SelBut_Checked" />
+											<!-- <text></text> -->
+											<!-- <button type="primary" @click="savaItem(ii)" v-if="param.Sub_Page[0].OK_Button==true">淇濆瓨</Button> -->
+											<button size="mini" v-for="(btn,btnIndex) in pageData.Row_Button"
+												:key="btnIndex" :type="btn.FunCode == 'Delete' ? 'warn' : 'primary'"
+												@click="onRowBtnClick(btn, pageData,ii)">
+												<Icon v-if="btn.Style == 'img' || btn.Style == 'img_text'"
+													class="Img" />
+												{{(btn.Style == 'text'|| btn.Style == 'img_text') ? btn.ShowName :""}}
+											</button>
+										</div>
+									</div>
+								</checkbox-group>
+							</view>
+							<view class="view-bottom" v-if="pageData.Button.length >0 ">
+								<button v-for="(btn,btnIndex) in pageData.Button" :key="btnIndex"
+									:type="btn.FunCode == 'Cancel' ? 'default' : 'primary'"
+									:class="{'btn-disabled':(btn.FunCode != 'Cancel' && pageData.okLoading),
+													'btn-one':pageData.Button.length == 1,
+													'btn-left':(btnIndex < pageData.Button.length - 1),
+													'btn-right': btnIndex > 0 && btnIndex == pageData.Button.length - 1 ,
+													'width-50':(pageData.Button.length == 2),'width-32':(pageData.Button.length == 3),'width-30':(pageData.DropDownButton.length> 0)}"
+									:disabled="(btn.FunCode != 'Cancel' && pageData.okLoading)? true:false"
+									@click="onBtnClick(btn, pageData)">
+									<Icon v-if="btn.Style == 'img' || btn.Style == 'img_text'" class="Img" />
+									{{(btn.Style == 'text'|| btn.Style == 'img_text') ? btn.ShowName :""}}
+								</button>
+								<view class="btn-right" v-if="pageData.DropDownButton.length >0 ">
+									<a @click="clickDropdownBtns(pageData)">
+										<Icon class="mobox-normal-more" />
+									</a>
+								</view>
+							</view>
+						</view>
+					</swiper-item>
+				</swiper>
+			</view>
+			<!-- 鍥炬枃/鏂囨湰 -->
+			<view class="view-imagetext" v-else>
+				<div class="view-imagetext-uploadlist">
+					<image :src="param.Welcome_Page.Img"
+						:style="{'width':param.Welcome_Page.Width+'px','height':param.Welcome_Page.Height+'px'}">
+					</image>
+					<text class="txt-text"
+						:style="{'color':param.Welcome_Page.Txt_Color,'font-size':param.Welcome_Page.Font_Size+'px','font-family':param.Welcome_Page.Font}">{{param.Welcome_Page.Text}}</Text>
+				</div>
+			</view>
+		</view>
+		<view>
+			<uni-popup class="view-popup" ref="popup" background-color="#fff" @change="popupChange">
+				<view class="popup-header">{{check_list.title}}</view>
+				<view class="popup-content" :class="{ 'popup-height': popupType === 'left' || popupType === 'right' }"
+					:style="{'width':check_list.width?check_list.width+'px':'200px','height':check_list.height?check_list.height+'px':'88%'}">
+					<view class="popup-cont" :style="{'height':check_list.height?check_list.height-45+'px':'415px'}">
+						<view class="view_popup_CheckList" v-for="(item,index) in check_list.items">
+							<checkbox-group class="check_list" @change="checkChange" :data-ischeck="item.check"
+								:data-index="index" :style="{'margin-left': '10rpx'}">
+								<label>
+									<checkbox :value="item.check" :checked="item.check" />
+									<text>{{item.name}}</text>
+								</label>
+							</checkbox-group>
+						</view>
+					</view>
+					<view class="popup-footer">
+						<button type="default" @tap="popup_sava" class="btn_popup_add">{{translateSys('ok')}}</button>
+						<button type="default" @tap="popup_cancel"
+							class="btn_popup_cancel">{{translateSys('cancel')}}</button>
+					</view>
+				</view>
+			</uni-popup>
+		</view>
+	</view>
+</template>
+
+<script>
+	import Base64 from '../../components/js-base64/base64.js'
+	import {
+		dictGetInfo
+	} from "@/api/mobox.js"
+	import {
+		getUIStyleInfo,
+		runCustomEvent,
+	} from "@/api/data.js"
+
+	export default {
+		name: "PageModalForm",
+		modules: {
+			Base64,
+		},
+		data() {
+			return {
+				title: this.translateSys("inventory"),
+				ClsID: '',
+				param: {},
+				focusFieldId: "",
+				focusOldFieldId: "",
+				head_styledef: {
+					form: {
+						items: []
+					}
+				},
+				pageDetail: [], //{StyleDef{}:,DefList:[],ExtData:{}}
+				// 鍒嗘鍣ㄦ暟鎹�+				current: 0,
+				After_OK_Event: {},
+				active_id: '',
+				selectAttrObj: {},
+
+				global_attr: [],
+				refdatastore: [], //寮曠敤鏁版嵁瀛樺偍鍖�/ {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}
+				popupType: "center",
+				check_list: {},
+				popupParam: {},
+			};
+		},
+		computed: {
+			tabs() {
+				return this.pageDetail.map((page => {
+					return page.Name
+				}));
+
+
+			},
+		},
+		onLoad(options) {
+			console.log(options.titlename, options);
+			uni.setNavigationBarTitle({
+				title: options.titlename
+			}); //璁剧疆椤堕儴鏍囬 
+			this.title = options.titlename;
+			this.param = JSON.parse(options.param);
+
+
+			//鑾峰彇涓绘暟鎹被ID
+			this.ClsID = this.param.master_cls?.id;
+			if (this.ClsID) {
+				this.loadData(options.paramValue)
+			} else {
+				uni.showModal({
+					title: this.translateSys("error"),
+					content: this.translate("tip_no_master_class"),
+					showCancel: false,
+					confirmText: this.translateSys("cancel")
+				});
+			}
+		},
+		//椤甸潰鍒濆鍖栬幏鍙栫劍鐐�+		methods: {
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split(".");
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+							console.log("$set", key2, val)
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+								console.log("$set", key2, {})
+							}
+						}
+						data = data[key2];
+					});
+				});
+			},
+			async loadData(paramValue) {
+				//鑾峰彇鏁版嵁绫荤殑鑷畾涔夎〃鍗曞弬鏁�+				await this.Head_UIStyleGetInfo(this.ClsID, this.param.Input_UI_Style.ID);
+				//浼犲叆鍙傛暟鍊�+				if (paramValue) {
+					const attrs = paramValue.attrs || [];
+					(this.$data.head_styledef?.form?.items || []).forEach(async (ele, index) => {
+						if (ele.name != "Layout") {
+							attrs.forEach(async (ele2, index2) => {
+								if (ele.fieldId == ele2.name) {
+									ele.value = ele2.value;
+								}
+							});
+						} else {
+							ele.setting.colList.forEach(async (col) => {
+								if (col) {
+									attrs.forEach(async (ele2,
+										index2) => {
+										if (col.fieldId == ele2.name) {
+											col.value = ele2.value;
+										}
+									});
+								}
+							});
+						}
+					})
+				}
+				//鍔犺浇鍒濆鐣岄潰
+				if (this.$data.param.Show_Welcom_Page) {
+					this.$data.param.Welcome_Page.Img = this.$data.param.Welcome_Page.Img.replace(/ /g, '+');
+					this.$data.param.Welcome_Page.Width = parseInt(this.$data.param.Welcome_Page.Width);
+					this.$data.param.Welcome_Page.Height = parseInt(this.$data.param.Welcome_Page.Height);
+				};
+				//鍔犺浇Tab椤电
+				const pageList = this.param.Sub_Page || []
+				for (let i in pageList) {
+
+					const page = pageList[i]
+					page.DefList = [];
+					page.StyleDef = await this.Detail_UIstyleGetInfo(
+						this.ClsID,
+						page.UI_Style.ID
+					);
+					const buttons = this.pageButtonList(page)
+					page.Button = buttons
+					page.DropDownButton = []
+					if (buttons.length > 3) {
+						let cancelBtn = undefined
+						const btns = []
+						buttons.forEach((btn) => {
+							if (btn.FunCode == "Cancel") {
+								cancelBtn = btn
+							} else {
+								btns.push(btn)
+							}
+						})
+						if (cancelBtn) {
+							if (btns.length > 2) {
+								page.DropDownButton = btns.splice(2)
+								page.Button = btns
+							}
+							page.Button.push(cancelBtn)
+						} else {
+							if (btns.length > 3) {
+								page.DropDownButton = btns.splice(3)
+								page.Button = btns
+							}
+						}
+					}
+					page.Row_Button = this.rowButtonList(page)
+				}
+
+				this.setData({
+					pageDetail: pageList
+				})
+
+				console.log(this.pageDetail);
+			},
+			changeSwiper(evt) {
+				let index = evt.target.current || evt.detail.current;
+				this.setData({
+					current: index
+				})
+			},
+			pageButtonList(page) {
+				if (this.param?.ver == "2.0") {
+					return page?.Button || []
+
+				} else {
+					if (page?.OK_Button) {
+						let evt = {};
+						if (page.Before_ok?.ID) {
+							evt = {
+								ID: page.Before_ok?.ID,
+								Name: page.Before_ok?.Name
+							};
+						} else if (page.After_ok?.ID) {
+							evt = {
+								ID: page.After_ok?.ID,
+								Name: page.After_ok?.Name
+							};
+						}
+						let btnCancel = {
+							Cls_Name: this.param?.master_cls?.name || "",
+							Cls_ID: this.param?.master_cls?.id || "",
+							FunCode: "Cancel",
+							ShowName: this.$t("sys.cancel"),
+							Style: "text",
+							Prompt: false,
+						};
+						if (evt.ID) {
+							let btn = {
+								Cls_Name: this.param?.master_cls?.name || "",
+								Cls_ID: this.param?.master_cls?.id || "",
+								FunCode: "TriggerEvent",
+								ShowName: this.$t("sys.ok"),
+								Style: "text",
+								Prompt: false,
+								NotTriggerSYSEvent: false,
+								DataStateVerify: false,
+								AttrVerify: false,
+								Event: evt,
+							};
+							return [btn, btnCancel];
+						} else return [btnCancel];
+					} else {
+						return [];
+					}
+				}
+			},
+			rowButtonList(page) {
+				if (this.param?.ver == "2.0") {
+					return page?.Row_Button || [];
+				} else {
+					if (page?.Del_Button) {
+						let evt = {};
+						if (page.Before_Delete?.ID) {
+							evt = {
+								ID: page.Before_Delete?.ID,
+								Name: page.Before_Delete?.Name,
+							};
+						} else if (page.After_Delete?.ID) {
+							evt = {
+								ID: page.After_Delete?.ID,
+								Name: page.After_Delete?.Name
+							};
+						}
+
+						if (evt.ID) {
+							return [{
+								Cls_Name: this.param?.master_cls?.name || "",
+								Cls_ID: this.param?.master_cls?.id || "",
+								FunCode: "Delete",
+								ShowName: this.$t("sys.delete"),
+								Style: "text",
+								Prompt: false,
+								NotTriggerSYSEvent: false,
+								DataStateVerify: false,
+								AttrVerify: false,
+								AfterProcess_Event: evt,
+							}];
+						}
+					}
+					return [];
+				}
+			},
+
+			checkboxChange(e) {
+
+				var items = this.pageDetail[this.current]?.DefList || []
+				var values = e.detail.value;
+				for (var i = 0, lenI = items.length; i < lenI; ++i) {
+					const item = items[i]
+					if (values.includes(i)) {
+						item.SelBut_Checked = true
+					} else {
+						item.SelBut_Checked = false
+					}
+				}
+			},
+			async Head_UIStyleGetInfo(class_id, style_id) { //鑾峰彇鑷畾涔夎〃鍗曟牱寮�+				try {
+					var $this = this;
+					var dataInfo = {
+						class_id: class_id,
+						ui_style_id: style_id,
+					};
+					const result = await getUIStyleInfo(dataInfo)
+					var styledef = "";
+					if (result.style_def) {
+						//mobox2鐨剆tyle_def鏄痡son瀛楃涓�+						styledef = result.style_def.replace(/\\/g, "");
+						//mobox3鐨剆tyle_def鏄痓ase64瀛楃涓�+						if (!result.style_def.includes('"')) styledef = Base64.decode(
+							result
+							.style_def);
+					}
+					const styledefHead = styledef ? JSON.parse(styledef) : {};
+					if (styledefHead?.form?.items) {
+						for (let i in styledefHead.form.items) {
+							const ele = styledefHead.form.items[i]
+							if (ele.name != "Layout") {
+								if (ele?.useDict) {
+									//鍒ゆ柇useDict鏄惁浣跨敤瀛楀吀
+									await this.DictGetInfo(ele.bind.dict,
+										styledefHead.form.model,
+										ele);
+								} else {
+									if (ele?.name === "Select") {
+										const selections = ele?.selections || []
+										//鏈夐粯璁ゅ�锛屾樉绀洪粯璁ゅ�
+										let itemName = ele.value || "";
+										if (itemName) {
+											styledefHead.form
+												.model[ele.fieldId] = itemName;
+										}
+										ele.dict = selections.map((a) => {
+											return {
+												value: a.value,
+												text: a.label
+											}
+										})
+
+									}
+
+								}
+
+								if ($this.focusFieldId == "") {
+									if (ele.name == 'Input' || ele.name ==
+										'InputNumber') {
+										$this.setData({
+											focusFieldId: ele.fieldId
+										})
+									}
+								}
+							} else {
+								for (let j in ele.setting.colList) {
+									const col = ele.setting.colList[j]
+									if (col?.useDict) {
+										//鍒ゆ柇useDict鏄惁浣跨敤瀛楀吀
+										await this.DictGetInfo(col.bind
+											.dict,
+											styledefHead.form
+											.model, col);
+									} else {
+										if (col?.name === "Select") {
+											const selections = col?.selections || []
+											//鏈夐粯璁ゅ�锛屾樉绀洪粯璁ゅ�
+											let itemName = col.value || "";
+											if (itemName) {
+												styledefHead.form
+													.model[col.fieldId] = itemName;
+											}
+											col.dict = selections.map((a) => {
+												return {
+													value: a.value,
+													text: a.label
+												}
+											})
+										}
+									}
+									if ($this.focusFieldId == "") {
+										if (col.name == 'Input' || col
+											.name ==
+											'InputNumber') {
+											$this.setData({
+												focusFieldId: col
+													.fieldId
+											})
+										}
+									}
+								}
+							}
+						}
+
+					}
+					this.setData({
+						head_styledef: styledefHead
+					})
+					console.log("Head_UIStyleGetInfo", this.head_styledef)
+
+				} catch (ex) {
+					// console.log(ex);
+					uni.showModal({
+						title: this.translateSys("error") + "1",
+						content: ex.errMsg,
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+					return {}
+				}
+
+
+			},
+			async Detail_UIstyleGetInfo(class_id, style_id) { //鑾峰彇鑷畾涔夎〃鍗曟牱寮�+				try {
+					var $this = this;
+					var dataInfo = {
+						class_id: class_id,
+						ui_style_id: style_id,
+					};
+					const result = await getUIStyleInfo(dataInfo)
+					var styledef = "";
+					if (result.style_def) {
+						//mobox2鐨剆tyle_def鏄痡son瀛楃涓�+						styledef = result.style_def.replace(/\\/g, "");
+						//mobox3鐨剆tyle_def鏄痓ase64瀛楃涓�+						if (!result.style_def.includes('"')) styledef = Base64
+							.decode(result
+								.style_def);
+					}
+
+					const detailstyledef = result.style_def ? JSON.parse(
+						styledef) : {};
+					detailstyledef.SelBut_Checked = true;
+					if (detailstyledef?.form?.items) {
+						for (let index in detailstyledef.form.items) {
+							const ele = detailstyledef.form.items[index]
+
+							if (ele.name != "Layout") {
+								if (ele.useDict == true) { //鍒ゆ柇useDict鏄惁浣跨敤瀛楀吀
+									await this.DictGetInfo(ele.bind.dict,
+										detailstyledef.form
+										.model, ele);
+								}
+							} else {
+								for (let j in ele.setting.colList) {
+									const col = ele.setting.colList[j]
+									if (col?.useDict == true) {
+										await this.DictGetInfo(col
+											.bind.dict,
+											detailstyledef.form
+											.model, col);
+									}
+								}
+							}
+						}
+
+					}
+					console.log("Detail_UIstyleGetInfo", detailstyledef);
+					return detailstyledef
+				} catch (ex) {
+					// console.log(ex);
+					uni.showModal({
+						title: this.translateSys("error") + "2",
+						content: ex.errMsg,
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+					return {}
+				}
+
+
+			},
+
+			async DictGetInfo(dict, formModel, formItem) { //Mobox3寰楀埌寰楀埌瀛楀吀淇℃伅瀛楀吀椤瑰垪琛�+				this.data = [];
+				var $this = this;
+				var dataInfo = {
+					dict_id: dict.id,
+					dict_name: dict.name
+				};
+				try {
+					const result = await dictGetInfo(dataInfo)
+					var list = [];
+					var itemName = '';
+					(result.dict_item_list || []).forEach((item) => {
+						if (item.is_default == '1')
+							itemName = item.name
+						list.push({
+							text: item.value ? item.value : item.name,
+							value: item.name,
+						});
+					});
+					//鏈夐粯璁ゅ�锛屾樉绀洪粯璁ゅ�
+					if (itemName) {
+						formItem.value = itemName;
+						formModel[formItem.fieldId] = itemName;
+					}
+					formItem.dict = list;
+				} catch (ex) {
+					// console.log(ex);
+					uni.showModal({
+						title: this.translateSys("error") + "3",
+						content: ex.errMsg,
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+				}
+
+			},
+			onClick(item) {
+				this.focusFieldId = item.fieldId
+			},
+			ontap(item) { //鎵爜鍔熻兘
+				// var $ele = e;
+				//console.log(e.target)
+				this.focusOldFieldId = item.fieldId
+				getApp().onScan((result) => {
+					console.log(result.decodedata);
+					item.value = result.decodedata;
+					var $this = this;
+					if (item.oldvalue != item.value && item.value.trim() != "") {
+						item.oldvalue = item.value;
+						var attr = item.fieldId;
+						this.head_styledef.form.model[attr] = item.value;
+						var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�+						var onSuffixClickCallbackEvent = item.bind
+							.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠�+						var onSuffixClickEvent = item.bind
+							.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋�+						var isflag = false;
+
+						if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠�+							$this.onChange(onChangeEvent);
+						}
+						if (item.value) { //绗竴涓緭鍏ユ涓嶄负绌�+							//鍒濆鍖栵紝涓嬩釜杈撳叆妗唂ocus灞炴�
+							var findd = false
+							for (let i in $this.head_styledef.form.items) {
+								const ele = $this.head_styledef.form.items[i]
+
+								if (ele.name != "Layout") {
+									if (ele.name == 'Input' || ele.name ==
+										'InputNumber') {
+										if (attr == ele.fieldId) {
+											findd = true
+										} else {
+											if (findd) {
+												$this.setData({
+													focusFieldId: ele.fieldId
+												})
+												break
+											}
+
+										}
+
+									}
+								} else {
+									if (findd) {
+										let curIndex = ele.setting.colList.findIndex((
+											col, index2, arr) => {
+											return (col.name == 'Input' || col
+												.name == 'InputNumber');
+										})
+										if (curIndex > -1) {
+											$this.setData({
+												focusFieldId: ele.setting
+													.colList[curIndex]
+													.fieldId
+											})
+											break
+										}
+
+									} else {
+										let curIndex = ele.setting.colList.findIndex((
+											col, index2, arr) => {
+											return attr == col.fieldId;
+										})
+										if (curIndex > -1) {
+											findd = true
+											let curIndex2 = ele.setting.colList
+												.findIndex((col, index2, arr) => {
+													return (col.name == 'Input' ||
+															col.name ==
+															'InputNumber') &&
+														index2 >
+														curIndex;
+												})
+											if (curIndex2 > -1) {
+												$this.setData({
+													focusFieldId: ele.setting
+														.colList[curIndex]
+														.fieldId
+												})
+												break
+											}
+										}
+									}
+
+								}
+							}
+						}
+
+					}
+				})
+			},
+
+			onEnterChange(item) { //鍥炶溅锛岀偣鍑绘寜閽紝鍙栨秷鑺傜偣浜嬩欢
+				console.log(item);
+				if (item.oldvalue != item.value && item.value.trim() != "") {
+					item.oldvalue = item.value;
+					var attr = item.fieldId;
+					this.head_styledef.form.model[attr] = item.value;
+					var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�+
+					if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠�+						this.onChange(onChangeEvent);
+					}
+
+				}
+			},
+			onCheckBoxValue(e) { //缁戝畾Model鍊�+				let values = e.detail.value || []
+				const item = this.head_styledef.form.items[e.currentTarget?.dataset?.index || 0]
+				if (item?.setting?.colList) {
+					const col = item.setting.colList[e.currentTarget?.dataset?.iindex || 0]
+					if (col) {
+						col.value = values
+						let attr = col.fieldId;
+						this.head_styledef.form.model[attr] = col.value;
+						var onChangeEvent = col.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�+						if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠�+							this.onChange(onChangeEvent);
+						}
+						return
+					}
+				} else {
+					if (item) {
+						item.value = values
+						let attr = item.fieldId;
+						this.head_styledef.form.model[attr] = item.value;
+						var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�+						if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠�+							this.onChange(onChangeEvent);
+						}
+					}
+				}
+
+			},
+			onRadioBoxValue(e) { //缁戝畾Model鍊�+				let values = e.detail.value || ""
+				const item = this.head_styledef.form.items[e.currentTarget?.dataset?.index || 0]
+				if (item?.setting?.colList) {
+					const col = item.setting.colList[e.currentTarget?.dataset?.iindex || 0]
+					if (col) {
+						col.value = values
+						let attr = col.fieldId;
+						this.head_styledef.form.model[attr] = col.value;
+						var onChangeEvent = col.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�+						if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠�+							this.onChange(onChangeEvent);
+						}
+						return
+					}
+				} else {
+					if (item) {
+						item.value = values
+						let attr = item.fieldId;
+						this.head_styledef.form.model[attr] = item.value;
+						var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠�+						if (onChangeEvent.id) { //鍐呭鍙樺寲鍚庝簨浠�+							this.onChange(onChangeEvent);
+						}
+					}
+
+				}
+
+			},
+			classAttr_extButton(item) {
+				var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠�+				var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋�+
+				if (!onSuffixClickCallbackEvent.id) {
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: this.translate('icon_click_callback_empty'),
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+					return;
+				}
+				if (!onSuffixClickEvent.id) {
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: this.translate('icon_click_event_empty'),
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+					return;
+				}
+				this.$data.popupType = 'right'
+				// open 鏂规硶浼犲叆鍙傛暟 绛夊悓鍦�uni-popup 缁勪欢涓婄粦瀹�type灞炴�
+				this.$refs.popup.open(this.popupType);
+
+				this.dataObjRunCustomEvent_Return(onSuffixClickCallbackEvent.id, '', onSuffixClickEvent.id,
+					item);
+			},
+
+			getDetailAttrList(pageData) {
+				const detailAttrList = [];
+				if (pageData.DefList) {
+					pageData.DefList.forEach(style => {
+						var 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;
+						if (pageData.Select_Button == true) { //鍒ゆ柇閫夋嫨鎸夐挳鏄惁涓簍rue
+							if (style.SelBut_Checked == true)
+								detailAttrList.push(detail_attr);
+						} else
+							detailAttrList.push(detail_attr);
+					});
+					// console.log(detailAttrList);
+					//鑾峰彇姝e湪鐮佺洏閲屾病鏈夋樉绀虹殑瀛楁
+					pageData.DefList.forEach(style => {
+						style.form.attrs.forEach(attr => {
+							for (var key in detailAttrList) {
+								if (style.form.objId == detailAttrList[key][
+										'id'
+									]) {
+									var keys = Object.keys(detailAttrList[key]);
+									var isflag = true;
+									keys.forEach((ele) => {
+										if (ele == attr.attr) isflag =
+											false;
+									});
+									if (isflag) {
+										detailAttrList[attr.attr] = attr.value;
+									}
+								}
+							}
+						});
+					});
+				}
+				const jsonlist = [];
+				detailAttrList.forEach(attr => {
+					jsonlist.push({
+						id: attr["id"] || "",
+						attrs: Object.keys(attr).map((a) => ({
+							attr: a,
+							value: attr[a] || "",
+						})).filter((a) => {
+							return a.attr != "id"
+						})
+					});
+				});
+				return jsonlist;
+			},
+			// 鍐呭鍙樺寲鍚庝簨浠�+			async onChange(event) {
+				try {
+					if (event.id) {
+						//鑾峰彇琛ㄥご灞炴�
+						var head_attr = {};
+						this.head_styledef.form.items.forEach(item => {
+							if (item.name == "Layout") { //鍒ゆ柇鏄惁鏄爡鏍忔牸寮�+								item.setting.colList.forEach(cols => {
+									if (cols != null) head_attr[cols
+										.fieldId] = cols.value;
+								});
+							} else
+								head_attr[item.fieldId] = item.value;
+						});
+						var obj_attr = this.head_styledef.form.model;
+						// console.log(obj_attr);
+						var input_param = Base64.encode(
+							JSON.stringify(
+								Object.keys(head_attr).map((a) => ({
+									attr: a,
+									value: head_attr[a] || "",
+								}))
+							)
+						);
+						var $this = this;
+						const jsonList = []
+						this.pageDetail.forEach((page) => {
+
+							jsonList.push({
+								page_name: page.Name,
+								item_list: $this.getDetailAttrList(page
+									.DefList, page
+									.Select_Button),
+								ext_data: page.ExtData || {}
+							})
+
+						})
+						const data_json = Base64.encode(
+							JSON.stringify(jsonList)
+						);
+						var dataInfo = {
+							ed_type: 0,
+							start_transaction: true,
+							class_id: this.$data.head_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: 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) {
+									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(
+											"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 ==
+											"insert_subtable_page_row"
+										) { //鐮佺洏涓�+											$this.$data.param
+												.Show_Welcom_Page =
+												false;
+											var value = item.value;
+											$this.viewAceionRow(value);
+										} else if (item.action_type ==
+											"set_subtable_page_content"
+										) { //宸茬爜鐩�+											$this.$data.param
+												.Show_Welcom_Page =
+												false;
+											var value = item.value;
+											const pageData = $this
+												.pageDetail.find((
+													page) => {
+													return value
+														.page_name ==
+														page.Name;
+												});
+											if (value.clear_confirm !=
+												false && value.clear ==
+												true &&
+												pageData && pageData
+												.DefList.length > 0
+											) { //鍒ゆ柇鏄惁娓呯┖椤电鍐呭,姝e湪鐮佺洏鏄惁鏈夋暟鎹�+												uni.showModal({
+													title: this
+														.translateSys(
+															'tip'
+														),
+													content: this
+														.translate(
+															"are_you_sure_clear_first"
+														) +
+														this
+														.translateSys(
+															"quotation_mark_left"
+														) +
+														value
+														.page_name +
+														this
+														.translateSys(
+															"quotation_mark_right"
+														) +
+														this
+														.translate(
+															"are_you_sure_clear_last"
+														),
+													success: function(
+														res
+													) {
+														if (res
+															.confirm
+														) {
+															if (
+																pageData)
+																pageData
+																.DefList = [];
+															$this
+																.viewAceionContent(
+																	value
+																);
+														} else if (
+															res
+															.cancel
+														) {
+															if (
+																pageData)
+																pageData
+																.DefList = [];
+															$this
+																.viewAceionContent(
+																	value
+																);
+														}
+													}
+												});
+											} else {
+												if (pageData)
+													pageData
+													.DefList = [];
+												$this
+													.viewAceionContent(
+														value);
+											}
+										} else if (item.action_type ==
+											"select_subtable_page_row"
+										) {
+											// value = {"page_name":"鐮佺洏涓�, "row":{"id":"xx"}}
+											var value = item.value;
+											const pageData = $this
+												.pageDetail.find((
+													page) => {
+													return value
+														.page_name ==
+														page.Name;
+												});
+											if (pageData?.DefList) {
+												pageData.DefList
+													.forEach(ele => {
+
+														if (ele
+															.form
+															.objId ==
+															value
+															.row.id
+														) {
+															ele.SelBut_Checked =
+																true;
+															$this
+																.active_id =
+																ele
+																.form
+																.htmlobjId;
+															//鑷姩婊氬姩鍒版寚瀹氬厓绱�+															uni.createSelectorQuery()
+																.select(
+																	"#tabpanel" +
+																	value
+																	.page_name
+																) //瀵瑰簲澶栧眰鑺傜偣
+																.boundingClientRect(
+																	(
+																		container
+																	) => {
+																		uni.createSelectorQuery()
+																			.select(
+																				"#dvpanel" +
+																				ele
+																				.form
+																				.htmlobjId
+																			) //鐩爣鑺傜偣
+																			.boundingClientRect(
+																				(
+																					target
+																				) => {
+																					uni.pageScrollTo({
+																						scrollTop: target
+																							.top -
+																							container
+																							.top, //婊氬姩鍒板疄闄呰窛绂绘槸鍏冪礌璺濈椤堕儴鐨勮窛绂诲噺鍘绘渶澶栧眰鐩掑瓙鐨勬粴鍔ㄨ窛绂�+																					});
+																				}
+																			)
+																			.exec();
+																	}
+																)
+																.exec();
+														}
+													});
+											}
+										} else if (item.action_type ==
+											"remove_subtable_page_row"
+										) { //娓呴櫎闈㈡澘涓寚瀹歩d鐨勬暟鎹�+											var value = item.value;
+											const pageData = $this
+												.pageDetail.find((
+													page) => {
+													return value
+														.page_name ==
+														page.Name;
+												});
+											if (pageData
+												?.DefList
+											) //鍒ゆ柇杩斿洖鐨刟ction鐨刾age_name鏄惁鏄緟鍒嗘嫞//娓呴櫎闈㈡澘涓寚瀹歩d鐨勬暟鎹�+											{
+												value.row.forEach(
+													row => {
+														pageData
+															.DefList
+															.forEach(
+																(ele,
+																	index
+																) => {
+																	if (ele
+																		.form
+																		.objId ==
+																		row
+																		.id
+																	) {
+																		pageData
+																			.DefList
+																			.splice(
+																				index,
+																				1
+																			);
+																	}
+																});
+													});
+											}
+
+
+
+										} else if (item.action_type ==
+											"set_subtable_page_row") {
+											$this.viewActionSetRow(item
+												.value)
+
+										} else if (item.action_type ==
+											"set_subtable_page_ext_data"
+										) {
+											var value = item.value;
+											const pageData = $this
+												.pageDetail.find((
+													page) => {
+													return value
+														.page_name ==
+														page.Name;
+												});
+											if (pageData)
+												pageData.ExtData =
+												value.ext_data
+
+										} else if (item.action_type ==
+											"clear_subpage_rows") {
+											var value = item.value;
+											const pageData = $this
+												.pageDetail.find((
+													page) => {
+													return value
+														.page_name ==
+														page.Name;
+												});
+											if (pageData) {
+												pageData.DefList = []
+												pageData.ExtData = {}
+											}
+
+										} else if (item.action_type ==
+											"set_dlg_current_edit_attr"
+										) {
+
+											if ($this
+												.focusOldFieldId ==
+												item.value) {
+												$this.setData({
+													focusFieldId: ""
+												})
+											} else {
+												$this.setData({
+													focusFieldId: $this
+														.focusOldFieldId
+												})
+											}
+											$this.$nextTick(() => {
+												$this.setData({
+													focusFieldId: item
+														.value
+												})
+											});
+										} else if (item.action_type ==
+											"set_dlg_attr") {
+											// value = {"attr":"xxx", "value":"xxx"}
+											var data = item.value;
+											$this.setFormValues(data)
+										}
+									});
+								} else {
+
+									if (result.info) {
+										uni.showModal({
+											title: this.translateSys(
+												"error") + "4.3",
+											content: result.info,
+											showCancel: false,
+											confirmText: this
+												.translateSys("cancel")
+										});
+									}
+								}
+
+							}
+
+						}).catch(ex => {
+							// console.log(ex);
+							let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex
+							uni.showModal({
+								title: this.translateSys("error") + "4.1",
+								content: tip,
+								showCancel: false,
+								confirmText: this.translateSys("cancel")
+							});
+						});
+					}
+				} catch (ex) {
+					var tip = typeof ex == "string" ? ex : ex.message;
+					uni.showModal({
+						title: this.translateSys("error") + "4.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")
+					});
+				}
+			},
+			operationNumber(value1, value2, operation) {
+				var number1 = 0
+				var number2 = 0
+				if (value1)
+					number1 = parseInt(value1)
+				if (value2)
+					number2 = parseInt(value2)
+				if (!operation) {
+					return value2;
+				}
+				if (operation == "+") {
+					return number1 + number2
+				} else if (operation == "-") {
+					return number1 - number2
+				} else if (operation == "*") {
+					return number1 * number2
+				} else if (operation == "/") {
+					if (number2) return number1 / number2;
+					else {
+						throw new Error(`${this.translate("illegal_dividend")}'${value2}'`);
+						return 0;
+					}
+				} else if (operation == "=") {
+					return value2;
+				} else {
+					throw new Error(`${this.translate("unrecognized_operator")}'${operation}'`);
+					return 0;
+				}
+			},
+
+			//鏇存柊鍒嗛〉绛句腑鐨勫垪琛ㄩ」鍐呭
+			viewActionSetRow(value) {
+				const $this = this
+				const pageIndex = $this.pageDetail.findIndex((
+					page, index2, arr) => {
+					return value.page_name == page.Name;
+				})
+				if (pageIndex < 0)
+					return
+				const pageData = $this.pageDetail[pageIndex]
+				var detailStyleDefList = pageData.DefList || []
+				detailStyleDefList.forEach(ele => {
+					value.row.forEach((rowData) => {
+						if (rowData.id) {
+							if (ele.form.objId == rowData.id) {
+								rowData.attrs.forEach(attr => {
+									ele.form.items.forEach(ele2 => {
+										if (ele2.name !=
+											'Layout') {
+											if (ele2.fieldId ==
+												attr
+												.attr) {
+												ele2.value =
+													$this
+													.operationNumber(
+														ele2
+														.value,
+														attr
+														.value,
+														attr
+														.operation
+													)
+											}
+										} else if (ele2.name ==
+											'Layout') {
+											ele2.setting
+												.colList
+												.forEach(
+													col => {
+														if (
+															col) {
+															if (col
+																.fieldId ==
+																attr
+																.attr
+															) {
+																col.value =
+																	$this
+																	.operationNumber(
+																		col
+																		.value,
+																		attr
+																		.value,
+																		attr
+																		.operation
+																	)
+															}
+														}
+													})
+										}
+									});
+								});
+							}
+						} else if (rowData.condition) {
+							const conditions = rowData.condition;
+							let bFindCondition = true;
+							for (let i in conditions) {
+								const condition = conditions[i];
+								let bFind = false;
+								for (let i2 in ele.form.items) {
+									const ele2 = ele.form.items[i2];
+									if (ele2.name != "Layout") {
+										if (ele2.fieldId == condition.attr) {
+											if (condition.value == ele2.value) {
+												bFind = true;
+											}
+											break;
+										}
+									} else {
+										const colList = ele2.setting.colList || [];
+										for (let i3 in colList) {
+											const col = colList[i3];
+											if (col.fieldId == condition.attr) {
+												if (condition.value == col.value) {
+													bFind = true;
+												}
+												break;
+											}
+										}
+										if (bFind) break;
+									}
+								}
+								if (!bFind) {
+									bFindCondition = false;
+									break;
+								}
+							}
+							if (bFindCondition) {
+
+								rowData.attrs.forEach(attr => {
+									ele.form.items.forEach(ele2 => {
+										if (ele2.name !=
+											'Layout') {
+											if (ele2.fieldId ==
+												attr
+												.attr) {
+												ele2.value =
+													$this
+													.operationNumber(
+														ele2
+														.value,
+														attr
+														.value,
+														attr
+														.operation
+													)
+											}
+										} else if (ele2.name ==
+											'Layout') {
+											ele2.setting
+												.colList
+												.forEach(
+													col => {
+														if (
+															col) {
+															if (col
+																.fieldId ==
+																attr
+																.attr
+															) {
+																col.value =
+																	$this
+																	.operationNumber(
+																		col
+																		.value,
+																		attr
+																		.value,
+																		attr
+																		.operation
+																	)
+															}
+														}
+													})
+										}
+									});
+								});
+
+							}
+						}
+					})
+				});
+				pageData.DefList = detailStyleDefList
+				$this.$set(this.pageDetail, pageIndex, pageData)
+
+			},
+			//鍔犺浇姝e湪鐮佺洏鍐呭
+			viewAceionRow(data) {
+				// console.log(data);
+				if (JSON.stringify(data.row) == '{}') {
+					return;
+				}
+				const pageIndex = this.pageDetail.findIndex((
+					page, index2, arr) => {
+					return data.page_name == page.Name;
+				})
+				if (pageIndex < 0)
+					return
+				const pageData = this.pageDetail[pageIndex]
+				var styleStr = JSON.stringify(pageData.StyleDef);
+
+				var detailStyle = JSON.parse(styleStr);
+				if (detailStyle.form) {
+					data.row.forEach(row => {
+						detailStyle = JSON.parse(styleStr);
+						detailStyle.form.objId = row.id;
+						detailStyle.form.htmlobjId = row.id ? row.id.replace(/-/g, '')
+							.replace(
+								'{', '').replace('}',
+								'') : 'null';
+						detailStyle.form.attrs = row.attrs;
+						row.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;
+											}
+										});
+								}
+							});
+						});
+
+						pageData.DefList.push(detailStyle);
+						this.$set(this.pageDetail, pageIndex, pageData)
+
+					});
+				}
+			},
+			//鍔犺浇宸茬爜鐩樺唴瀹�+			viewAceionContent(data) {
+				var $this = this;
+				const pageIndex = $this.pageDetail.findIndex((
+					page, index2, arr) => {
+					return data.page_name == page.Name;
+				})
+				if (pageIndex < 0)
+					return
+				const pageData = $this.pageDetail[pageIndex]
+
+				pageData.ExtData = data.ext_data || {}
+
+				if (JSON.stringify(data.content) == '{}') {
+					return;
+				}
+				var styleStr = JSON.stringify(pageData.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;
+							pageData.DefList.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) pageData.DefList.push(detailStyle); //寰呭垎鎷�+						} else {
+							pageData.DefList.push(detailStyle); //寰呭垎鎷�+						}
+						// $this.setData({pageDetail:pageD})
+						$this.$set(this.pageDetail, pageIndex, pageData)
+
+					});
+				}
+
+			},
+			setFormValues(data) {
+				const head_styledef = this.head_styledef
+				if (JSON.stringify(data) == '{}') {
+					return;
+				}
+				head_styledef.form.items.forEach(async (ele, index) => {
+					if (ele.name != "Layout") {
+						let curIndex = data.findIndex((attr, index2, arr) => {
+							return attr.attr == ele.fieldId;
+						})
+						if (curIndex > -1) {
+							const attr = data[curIndex]
+							if (ele.name ==
+								'Select' &&
+								attr
+								.choice_list
+							) {
+								const
+									dictItemList = [];
+								const
+									choiceList =
+									attr
+									.choice_list || [];
+								for (let d in
+										choiceList) {
+									const
+										val =
+										choiceList[
+											d
+										];
+									dictItemList
+										.push({
+											text: val,
+											value: val
+										});
+								}
+								ele.dict =
+									dictItemList;
+							}
+
+							ele.value =
+								attr
+								.value;
+						}
+					} else {
+						ele.setting
+							.colList
+							.forEach(
+								async (
+									col
+								) => {
+									if (
+										col) {
+										let curIndex = data.findIndex((
+											attr, index2, arr) => {
+											return attr.attr == col.fieldId;
+										})
+										if (curIndex > -1) {
+											const attr = data[curIndex]
+											if (col.name ==
+												'Select' &&
+												attr
+												.choice_list
+											) {
+												const
+													dictItemList = [];
+												const
+													choiceList =
+													attr
+													.choice_list || [];
+												for (let d in
+														choiceList) {
+													const
+														val =
+														choiceList[
+															d
+														];
+													dictItemList
+														.push({
+															text: val,
+															value: val
+														});
+												}
+												col.dict =
+													dictItemList;
+											}
+
+											col.value =
+												attr
+												.value;
+										}
+									}
+
+								})
+
+					}
+				})
+
+				this.setData({
+					head_styledef: head_styledef
+				})
+			},
+
+			onClickItem(e) { //閫夋嫨椤电
+				// console.log(e);
+				this.current = e.currentIndex
+			},
+			onDetail1EnterChange(item) { //鐮佺洏涓牱寮忓洖杞︿簨浠�+				console.log(item);
+			},
+			async del(pageData, style, event) {
+				//鑾峰彇琛ㄥご灞炴�
+				var head_attr = {};
+				this.$data.head_styledef.form.items.forEach(item => {
+					if (item.name == "Layout") { //鍒ゆ柇鏄惁鏄爡鏍忔牸寮�+						item.setting.colList.forEach(cols => {
+							if (cols != null) head_attr[cols.fieldId] =
+								cols.value;
+						});
+					} else
+						head_attr[item.fieldId] = item.value;
+				});
+				// console.log(head_attr);
+				//鑾峰彇姝e湪鍒嗘嫞灞炴�
+				var detailAttrList = [];
+				var 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;
+				if (pageData.Select_Button == true) { //鍒ゆ柇閫夋嫨鎸夐挳鏄惁涓簍rue
+					if (style.SelBut_Checked == true)
+						detailAttrList.push(detail_attr);
+				} else
+					detailAttrList.push(detail_attr);
+
+				// console.log(detailAttrList);
+				//鑾峰彇姝e湪鍒嗘嫞閲屾病鏈夋樉绀虹殑瀛楁
+				style.form.attrs.forEach(attr => {
+					for (var key in detailAttrList) {
+						if (style.form.objId == detailAttrList[key]['id']) {
+							var keys = Object.keys(detailAttrList[key]);
+							var isflag = true;
+							keys.forEach((ele) => {
+								if (ele == attr.attr) isflag = false;
+							});
+							if (isflag) {
+								detailAttrList[attr.attr] = attr.value;
+							}
+						}
+					}
+				});
+				var input_param = Base64.encode(
+					JSON.stringify(
+						Object.keys(head_attr).map((a) => ({
+							attr: a,
+							value: head_attr[a] || "",
+						}))
+					)
+				);
+				var jsonlist = [];
+				detailAttrList.forEach(attr => {
+					jsonlist.push({
+						id: attr["id"] || "",
+						attrs: Object.keys(attr).map((a) => ({
+							attr: a,
+							value: attr[a] || "",
+						})).filter((a) => {
+							return a.attr != "id"
+						})
+					});
+				});
+				if (jsonlist.length == 0) {
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: this.translate("tip_no_select_data"),
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+					return;
+				}
+				// console.log(jsonlist);
+				const list = []
+				list.push({
+					page_name: pageData.Name,
+					item_list: jsonlist,
+					ext_data: pageData.ExtData
+				})
+				$this.runCustomEvent(pageData, event, input_param, list);
+			},
+
+			popupChange(e) {
+				console.log('褰撳墠妯″紡锛� + e.type + ',鐘舵�锛� + e.show);
+			},
+			checkChange(e) { //寮规check閫夋嫨
+				// console.log(e.target.dataset);
+				var index = e.target.dataset.index;
+				var ischeck = e.target.dataset.ischeck;
+				var data = this.$data.check_list.items;
+				// this.$data.check_list.items=[];
+				if (this.$data.check_list.multiple_choice == "0") { //鍒ゆ柇鏃跺崟閫夎繕鏄閫�+					for (var i in data) {
+						data[i].check = false;
+					}
+				}
+				data[index].check = ischeck ? false : true;
+				this.$data.check_list.items = data;
+
+			},
+			popup_cancel(e) { //寮规鍙栨秷
+				this.$refs.popup.close();
+			},
+			popup_sava(e) { //寮规纭畾
+				var $this = this;
+				var items = $this.$data.check_list.items;
+				var data = [];
+				var name = "";
+				for (var i = 0; i < items.length; i++) {
+					if (items[i].check == true) {
+						if (name)
+							name += ';';
+						name += items[i].name;
+						data.push({
+							id: items[i].id,
+							name: items[i].name
+						});
+					}
+				}
+				if (!$this.$data.popupParam) {
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: "popupParam涓虹┖锛�,
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+					return;
+				}
+				if (data.length == 0) {
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: this.translate("tip_no_select_data"),
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+					return;
+				}
+				var callback_eventid = $this.$data.popupParam.button_callback.trim();
+				var info = {
+					eventid: callback_eventid,
+					edtype: "0",
+					projectid: '',
+					rclsid: '',
+					robjid: '',
+					userlogin: '',
+					clsid: $this.$data.ClsID,
+					objid: "",
+					attr: $this.$data.popupParam.req,
+					dataJson: data
+				}
+				$this.DataObjRunCustomEvent(info, $this.$data.popupParam.data_attr);
+				this.$refs.popup.close();
+			},
+
+			async DataObjRunCustomEvent(info, data_attr) {
+				var $this = this;
+				var enviroment = {
+					'function': '3000', // 鍔熻兘鐐圭紪鍙�+					cls_id: this.$data.ClsID, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇�+					'button': 'top', // top/bottom
+					button_name: this.translateSys('add2'),
+					master: {
+						cls_id: this.$data.ClsID, // button=bottom鏃�master鐨刢ls_id
+						//obj_id: ''  // button=bottom鏃�master鐨刼bj_id
+					}
+				};
+				if (data_attr) {
+					enviroment.edit_dlg = {
+						type: 'small', //灏忕獥鍙�+						class_id: this.$data.ClsID, //褰撳墠鏁版嵁绫籭d
+					}
+					if (data_attr) {
+						enviroment.edit_dlg.form_control = { //鎵�睘鐨勮〃鍗曟帶浠�+							name: data_attr.Name, //瀛楁灞炴�
+							text: data_attr.DispName, //鏄剧ず鏂囨湰
+							group_name: data_attr.GroupName, //灞炴�缁�+							type: data_attr.Type, //瀛楁绫诲瀷
+							readonly: data_attr.ReadOnly, //鏄惁鍙
+							button_img: data_attr.button_img, //寮曠敤鎸夐挳鐨勫浘鏍�+							button_tooltip: data_attr.button_tooltip //寮曠敤鎸夐挳鐨則ooltip
+						}
+					}
+				}
+				enviroment = Base64.encode(JSON.stringify(enviroment)); //灏嗗瓧绗︿覆杞崲涓篵ase64缂栫爜
+				var input_param = Base64.encode(JSON.stringify(info.attr)); //灏嗗瓧绗︿覆杞崲涓篵ase64缂栫爜
+				var global_attr = Base64.encode(JSON.stringify(this.$data.global_attr)); //灏嗗瓧绗︿覆杞崲涓篵ase64缂栫爜
+				if (info.dataJson)
+					info.dataJson = Base64.encode(JSON.stringify(info.dataJson)); //灏嗗瓧绗︿覆杞崲涓篵ase64缂栫爜
+				var obj_attr = {};
+				info.attr.forEach(item => {
+					obj_attr[item.attr] = item.value;
+				});
+				if (!info.eventid.includes('{')) info.eventid = '{' + info.eventid + '}';
+				var dataInfo = {
+					ed_type: info.edtype,
+					start_transaction: true,
+					class_id: info.clsid,
+					class_name: '',
+					event_id: info.eventid,
+					event_name: '',
+					data_obj_id: info.objid,
+					obj_attr: obj_attr,
+					prj_id: info.projectid,
+					ref_cls_id: info.rclsid,
+					rel_obj_id: info.robjid,
+					user_login: info.userlogin,
+					data_json: info.dataJson,
+					compose_info: '',
+					ext_info: enviroment,
+					global_attr: global_attr,
+					input_param: input_param,
+				};
+				console.log(dataInfo);
+				// return;
+				runCustomEvent(dataInfo).then(data => {
+					if (data.ret != 0) {
+						var tip = data.err_info ? typeof data.err_info == 'string' ? data
+							.err_info :
+							data
+							.err_info.join('<br/>') : '';
+						if (data.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("cancel")
+							});
+						} else uni.showModal({
+							title: this.translateSys("tip"),
+							content: tip + ',' + this.translateSys('tip') + ':' + data
+								.ret,
+							showCancel: false,
+							confirmText: this.translateSys("cancel")
+						});
+						return false
+					} else {
+						var tip = data.info ? typeof data.info == 'string' ? data.info : data
+							.info
+							.join(
+								'<br/>') : '';
+						if (tip) uni.showModal({
+							title: this.translateSys("tip"),
+							content: tip,
+							showCancel: false,
+							confirmText: this.translateSys("cancel")
+						});
+
+						var actionlist = data.action;
+						if (actionlist) {
+							console.log(actionlist);
+							for (var i = 0; i < actionlist.length; i++) {
+								var action = actionlist[i];
+								if (action.action_type == 'set_dlg_attr') {
+									var result = action.value;
+									$this.setFormValues(result)
+								} else if (action.action_type == 'set_dlg_attr_show') {
+									var result = action.value;
+									result.forEach(async (attr, key) => {
+										$this.$data.head_styledef.form.items
+											.forEach(
+												async (ele,
+													index) => {
+													//鍒ゆ柇鏄惁鏄爡鏍艰〃鍗�+													if (ele.name != 'Layout') {
+														if (ele.fieldId == attr
+															.attr) {
+															ele.show = attr
+																.show;
+														}
+													} else if (ele.name ==
+														'Layout') {
+														ele.setting.colList
+															.forEach(
+																col => {
+																	if (col) {
+																		if (col
+																			.fieldId ==
+																			attr
+																			.attr
+																		) {
+																			col.show =
+																				attr
+																				.show;
+																		}
+																	}
+																});
+													}
+												});
+									});
+									var head_styledef = JSON.parse(JSON.stringify($this.$data
+										.head_styledef));
+									$this.$data.head_styledef = [];
+									$this.$data.head_styledef = head_styledef;
+									// console.log($this.$data.head_styledef);
+								} else if (action.action_type == 'set_global_attr') {
+									$this.$data.global_attr = action.value || [];
+								} else {
+									uni.showModal({
+										title: this.translateSys("tip"),
+										content: this.translateSys(
+												"quotation_mark_left") +
+											action
+											.action_type + this.translateSys(
+												"quotation_mark_right") + this
+											.translate(
+												"tip_action_unprocessed"),
+										showCancel: false,
+										confirmText: this.translateSys("cancel")
+									});
+								}
+							}
+						}
+						console.log($this.head_styledef);
+						if (data.result) {
+							var result = data.result;
+							for (var i = 0; i < result.length; i++) {
+								for (var c = 0; c < $this.$data.head_styledef.form.items
+									.length; c++) {
+									var attr = $this.$data.head_styledef.form.items[c];
+									//鍒ゆ柇琛ㄥ崟閲屾槸鍚︽湁杩斿洖瀛楁锛屾病鏈夊氨瑁呰浇鍒癿odel閲岋紝鐐瑰嚮纭畾鎻愪氦鐨勬椂鍊欏甫涓婅繖浜涙暟鎹�+									if ($this.head_styledef.form.model[result[i].attr] ==
+										undefined) {
+										$this.head_styledef.form.model[result[i].attr] =
+											result[i]
+											.value;
+									}
+									//鍒ゆ柇鏄惁鏄爡鏍艰〃鍗�+									if (attr.name != 'Layout') {
+										if (attr.fieldId == result[i].attr) {
+											attr.value = '';
+											attr.oldvalue = '';
+											attr.value = result[i].value;
+											attr.oldvalue = result[i].value;
+											$this.head_styledef.form.model[attr.fieldId] =
+												result[i]
+												.value;
+										}
+									} else if (attr.name == 'Layout') {
+										attr.setting.colList.forEach(col => {
+											if (col) {
+												if (col.fieldId == result[i].attr) {
+													col.value = '';
+													col.oldvalue = '';
+													col.value = result[i].value;
+													col.oldvalue = result[i].value;
+													$this.head_styledef.form.model[col
+															.fieldId] =
+														result[i].value;
+												}
+											}
+										});
+									}
+								}
+
+								var length = 0;
+								if (!$this.$data.refdatastore.filter(function(s) {
+										return result[i].attr == s.attr
+									}).length) {
+									length = 1;
+									$this.$data.refdatastore.push(result[i]);
+								}
+								if (length == 0) {
+									for (var j = 0; j < $this.$data.refdatastore.length; j++) {
+										if ($this.$data.refdatastore[j].attr == result[i]
+											.attr) {
+											$this.$data.refdatastore[j].value = result[i]
+												.value;
+										}
+									}
+								}
+							}
+						}
+					}
+
+				}).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") + "3.1",
+						content: exStr,
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+				});
+			},
+			dataObjRunCustomEvent_Return(eventid, data_attr, button_callback, item) {
+				console.log("dataObjRunCustomEvent_Return", eventid, data_attr, button_callback)
+				const $this = this
+				var enviroment = {
+					'function': '3000', // 鍔熻兘鐐圭紪鍙�+					cls_id: $this.ClsID, // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇�+					'button': 'top', // top/bottom
+					button_name: $this.translateSys('add2'),
+					master: {
+						cls_id: $this.ClsID, // button=bottom鏃�master鐨刢ls_id
+						//obj_id: ''  // button=bottom鏃�master鐨刼bj_id
+					}
+				};
+				var obj_attr = $this.head_styledef.form.model;
+				console.log(obj_attr);
+				var req = Object.keys(obj_attr).map((a) => ({
+					attr: a,
+					value: obj_attr[a] || "",
+				}));
+				if ($this.refdatastore.length > 0) {
+					for (var i = 0; i < $this.refdatastore.length; i++) {
+						if (!req.filter(function(s) {
+								return $this.refdatastore[i].attr == s.name
+							}).length) {
+							req.push({
+								'attr': $this.refdatastore[i].attr,
+								'value': $this.refdatastore[i].value
+							});
+						}
+					}
+				}
+
+				var extinfo = enviroment;
+				extinfo.edit_dlg = {
+					type: 'small', //灏忕獥鍙�+					class_id: $this.ClsID, //褰撳墠鏁版嵁绫籭d
+				}
+				extinfo = Base64.encode(JSON.stringify(extinfo)); //灏嗗瓧绗︿覆杞崲涓篵ase64缂栫爜
+				var global_attr = Base64.encode(JSON.stringify($this.global_attr)); //灏嗗瓧绗︿覆杞崲涓篵ase64缂栫爜
+				var obj_attr = {};
+				req.forEach(item2 => {
+					obj_attr[item2.attr] = item2.value;
+				});
+				let input_param = Base64.encode(
+					JSON.stringify(
+						Object.keys(obj_attr).map((a) => ({
+							attr: a,
+							value: obj_attr[a] || "",
+						}))
+					)
+				);
+
+				if (!eventid.includes('{')) eventid = '{' + eventid + '}';
+				var dataInfo = {
+					ed_type: "0",
+					start_transaction: true,
+					class_id: $this.ClsID,
+					class_name: '',
+					event_id: eventid,
+					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: extinfo,
+					global_attr: global_attr,
+					input_param: input_param,
+				};
+				console.log(dataInfo);
+				// return;
+				runCustomEvent(dataInfo).then(data => {
+					if (data.ret != 0) {
+						var tip = data.err_info ? typeof data.err_info == 'string' ? data
+							.err_info :
+							data
+							.err_info.join('<br/>') : '';
+						if (data.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("cancel")
+							});
+						} else uni.showModal({
+							title: $this.translateSys("tip"),
+							content: tip + ',' + $this.translateSys('tip') + ':' + data
+								.ret,
+							showCancel: false,
+							confirmText: $this.translateSys("cancel")
+						});
+						return false
+					} else {
+						var tip = data.info ? typeof data.info == 'string' ? data.info : data
+							.info
+							.join(
+								'<br/>') : '';
+						if (tip) uni.showModal({
+							title: $this.translateSys("tip"),
+							content: tip,
+							showCancel: false,
+							confirmText: $this.translateSys("cancel")
+						});
+
+						if (data != "") {
+							var actions = data.action;
+							if (actions) {
+								for (var i = 0; i < actions.length; i++) {
+									var action = actions[i];
+									console.log(action)
+									var val = action.value;
+									var enviroment = JSON.stringify(enviroment);
+
+									if (action.action_type == 'open_panel') {
+										var d = dialog({
+											title: '<i class="ace-icon fa fa-info-circle"></i> ' +
+												$this.translateSys("tip"),
+											content: $this.translateSys(
+													"quotation_mark_left") +
+												action
+												.action_type + $this.translateSys(
+													"quotation_mark_right") + $this
+												.translate(
+													"tip_action_unprocessed")
+										});
+										d.show();
+									} else if (action.action_type == 'open_select_userdlg') {
+										var style = val.style;
+										// style == 'user' ? '閫夋嫨浜哄憳' : style == 'department' ? '閫夋嫨閮ㄩ棬' : style == 'role' ? '閫夋嫨瑙掕壊' : ''
+										var param = {
+											item: item,
+											button_callback: button_callback,
+											req: req,
+											data_attr: data_attr
+										}
+										uni.navigateTo({
+											url: '../selpsn/index?mulit=false&param=' +
+												JSON
+												.stringify(
+													param),
+											events: {
+												AddPer(data, param) {
+													// console.log(param);
+													console.log(data);
+													var callback_eventid = param
+														.button_callback
+														.trim();
+													var info = {
+														eventid: callback_eventid,
+														edtype: "0",
+														projectid: '',
+														rclsid: '',
+														robjid: '',
+														userlogin: '',
+														clsid: $this.$data.param
+															.DataCls
+															.id,
+														objid: "",
+														attr: param.req,
+														inputparameter: data,
+														dataJson: [],
+													}
+													$this.DataObjRunCustomEvent(info,
+														param
+														.data_attr);
+												}
+											}
+										});
+									} else if (action.action_type == 'open_data_query_dlg') {
+										var d = dialog({
+											title: '<i class="ace-icon fa fa-info-circle"></i> ' +
+												$this.translateSys("tip"),
+											content: $this.translateSys(
+													"quotation_mark_left") +
+												action
+												.action_type + $this.translateSys(
+													"quotation_mark_right") + $this
+												.translate(
+													"tip_action_unprocessed")
+										});
+										d.show();
+									} else if (action.action_type == 'open_common_dlg') {
+
+										if (val.common_dlg_id == 'check_list') {
+											$this.setData({
+												check_list: val.config
+											})
+											if (val.config.appear_style == 'sideslip') //鍒ゆ柇鏄惁鏄晶婊�+												$this.setData({
+													popupType: "right"
+												})
+											else
+												$this.setData({
+													popupType: "center"
+												})
+											// open 鏂规硶浼犲叆鍙傛暟 绛夊悓鍦�uni-popup 缁勪欢涓婄粦瀹�type灞炴�
+											$this.$refs.popup.open($this.popupType);
+											var popupParam = {
+												item: item,
+												button_callback: button_callback,
+												req: req,
+												data_attr: data_attr
+											}
+											$this.setData({
+												popupParam: popupParam
+											})
+										}
+									} else if (action.action_type == 'open_project_query_dlg') {
+										//console.log(action.value.select_range);
+										//console.log(action.value.mulit_select);
+										var priRel = '-1';
+										if (action.value.select_range == '鍏ㄩ儴鐩稿叧')
+											priRel = '0';
+										else if (action.value.select_range == '鎴戣礋璐g殑椤圭洰')
+											priRel = '1';
+										else if (action.value.select_range == '鎴戝垱寤虹殑')
+											priRel = '2';
+										else if (action.value.select_range == '鎴戝弬涓庣殑' || action
+											.value
+											.select_range == '鎴戝弬鍔犵殑')
+											priRel = '3';
+										else if (action.value.select_range == '鎴戝叧娉ㄧ殑')
+											priRel = '4';
+										else if (action.value.select_range == '鎴戜笅灞炵殑椤圭洰')
+											priRel = '5';
+										var param_ = {
+											item: item,
+											button_callback: button_callback,
+											req: req
+										}
+										uni.navigateTo({
+											url: '../selPrj/index?relation=' + priRel +
+												'&param=' +
+												JSON.stringify(param_),
+											events: {
+												AddPer(data, param) {
+													var attr = param.item.fieldId;
+													$this.head_styledef.form.model[
+															attr] =
+														data[0].ID +
+														';' + data[0].Name;
+
+													// $this.$data.classAttrList[param.index].Attr[param.iindex].Value=data[0].Name;
+													// $this.$data.classAttrList[param.index].Attr[param.iindex].ValID=data[0].ID+';'+data[0].Name;
+													var callback_eventid = param
+														.button_callback
+														.trim();
+													if (callback_eventid) {
+														var info = {
+															eventid: callback_eventid,
+															edtype: "2",
+															projectid: data[0].ID,
+															rclsid: "",
+															robjid: "",
+															userlogin: "",
+															clsid: $this.$data
+																.param
+																.DataCls.id,
+															objid: "",
+															attr: param.req,
+															dataJson: [],
+														}
+
+														$this.DataObjRunCustomEvent(
+															info);
+													}
+												}
+											}
+										});
+									} else {
+										uni.showModal({
+											title: $this.translateSys("tip"),
+											content: $this.translateSys(
+													"quotation_mark_left") +
+												action.action_type + $this.translateSys(
+													"quotation_mark_right") + $this
+												.translate(
+													"tip_action_unprocessed"),
+											showCancel: false,
+											confirmText: $this.translateSys("cancel")
+										});
+									}
+								}
+							}
+						} else {
+							uni.showModal({
+								title: $this.translateSys('tip') + "5.2",
+								content: $this.translateSys("quotation_mark_left") +
+									"before_click_button" + $this.translateSys(
+										"quotation_mark_right") + $this.translateSys(
+										"comma") + 'event_id' + eventid,
+								showCancel: false,
+								confirmText: $this.translateSys("cancel")
+							});
+						}
+					}
+
+				}).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('tip') + "5.1",
+						content: exStr,
+						showCancel: false,
+						confirmText: $this.translateSys("cancel")
+					});
+				});
+			},
+
+
+			onPanelClick(value, id) {
+				// console.log(value);
+				this.active_id = id;
+			},
+			//鐐瑰嚮鎸夐挳鍒楄〃
+			clickDropdownBtns(pageData) {
+				const that = this
+				const itemlist = [];
+				const btnList = pageData.DropDownButton || []
+
+				for (let i in btnList) {
+					itemlist.push(btnList[i].ShowName || "");
+				}
+				uni.showActionSheet({
+					// title: '鎸夐挳鍒楄〃',
+					itemList: itemlist,
+					success: (e) => {
+						console.log(e.tapIndex);
+						var btn = btnList[e.tapIndex];
+						that.onBtnClick(btn, pageData);
+					}
+				})
+			},
+			onBtnClick(btn, pageData) {
+				if (btn.Prompt) {
+					const sContent = btn.PromptContent || this.translate("confirm")
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: btn.PromptContent || this.translate("confirm"),
+						success: function(res) {
+							if (res.confirm) {}
+							this.onButtonClicked(btn, pageData, -1);
+						},
+					})
+
+				} else {
+					this.onButtonClicked(btn, pageData, -1);
+				}
+			},
+			onRowBtnClick(btn, pageData, index) {
+				if (btn.Prompt) {
+					const sContent = btn.PromptContent || this.translate("confirm")
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: btn.PromptContent || this.translate("confirm"),
+						success: function(res) {
+							if (res.confirm) {}
+							this.onButtonClicked(btn, pageData, index);
+						},
+					})
+
+				} else {
+					this.onButtonClicked(btn, pageData, index);
+				}
+			},
+			onButtonClicked(btn, pageData, index) {
+				this.After_OK_Event = {}
+				let enviroment = {
+					button: "top",
+					button_name: btn.ShowName,
+					cls_id: btn.Cls_ID,
+					function: "3018",
+					master: {},
+				};
+				if (btn.FunCode == "TriggerEvent") {
+					this.After_OK_Event = btn?.After_Event || {};
+					this.sava(pageData, btn.Event);
+				} else if (btn.FunCode == "Cancel") {
+					this.cancel();
+				} else if (btn.FunCode == "Delete") {
+					if (index > -1) {
+						const style = pageData.DefList[index];
+						//鍒犻櫎鐮佺洏涓牱寮忛潰鏉�+						pageData.DefList.splice(index, 1);
+						this.del(pageData, style, btn.AfterProcess_Event);
+					}
+				} else {
+					this.$Message.warning(this.$t("sys.unrealized"));
+				}
+			},
+			//纭畾
+			ok(pageData) {
+				this.Before_OK_Event = pageData.Before_ok;
+				this.After_OK_Event = pageData.After_ok;
+				// console.log(this.Before_OK_Event);
+				// console.log(this.After_OK_Event);
+				if (this.$data.Before_OK_Event.ID) //鏄惁鏈夌‘瀹氬墠浜嬩欢
+					this.sava(pageData, this.$data.Before_OK_Event);
+				else if (this.$data.After_OK_Event.ID) //鏄惁鏈夌‘瀹氬悗浜嬩欢
+					this.sava(pageData, this.$data.After_OK_Event);
+			},
+			sava(pageData, event) {
+				var $this = this;
+				if (pageData.DefList.length == 0) {
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: this.translate(
+								"tip_no_data_first") +
+							this.translateSys(
+								"quotation_mark_left") + pageData.Name + this
+							.translateSys(
+								"quotation_mark_right") +
+							this.translate(
+								"tip_no_data_last"),
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+					return false;
+				}
+				//鑾峰彇琛ㄥご灞炴�
+				pageData.okLoading = true
+				var head_attr = {};
+				this.$data.head_styledef.form.items.forEach(item => {
+					if (item.name == "Layout") { //鍒ゆ柇鏄惁鏄爡鏍忔牸寮�+						item.setting.colList.forEach(cols => {
+							if (cols != null) head_attr[cols.fieldId] =
+								cols.value;
+						});
+					} else
+						head_attr[item.fieldId] = item.value;
+				});
+				// console.log(head_attr);
+				//鑾峰彇姝e湪鐮佺洏灞炴�
+				var detailAttrList = [];
+				pageData.DefList.forEach(style => {
+					var 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;
+					if (pageData.Select_Button ==
+						true) { //鍒ゆ柇閫夋嫨鎸夐挳鏄惁涓簍rue
+						if (style.SelBut_Checked == true)
+							detailAttrList.push(detail_attr);
+					} else
+						detailAttrList.push(detail_attr);
+				});
+				// console.log(detailAttrList);
+				//鑾峰彇姝e湪鐮佺洏閲屾病鏈夋樉绀虹殑瀛楁
+				pageData.DefList.forEach(style => {
+					style.form.attrs.forEach(attr => {
+						for (var key in detailAttrList) {
+							if (style.form.objId == detailAttrList[key]
+								[
+									'id'
+								]) {
+								var keys = Object.keys(detailAttrList[
+									key]);
+								var isflag = true;
+								keys.forEach((ele) => {
+									if (ele == attr.attr)
+										isflag =
+										false;
+								});
+								if (isflag) {
+									detailAttrList[attr.attr] = attr
+										.value;
+								}
+							}
+						}
+					});
+				});
+				// console.log(detailAttrList);
+				//    return;
+				var input_param = Base64.encode(
+					JSON.stringify(
+						Object.keys(head_attr).map((a) => ({
+							attr: a,
+							value: head_attr[a] || "",
+						}))
+					)
+				);
+				var jsonlist = [];
+				detailAttrList.forEach(attr => {
+					jsonlist.push({
+						id: attr["id"] || "",
+						attrs: Object.keys(attr).map((a) => ({
+							attr: a,
+							value: attr[a] || "",
+						}))
+					});
+				});
+				if (jsonlist.length == 0) {
+					pageData.okLoading = false
+					uni.showModal({
+						title: this.translateSys("tip"),
+						content: this.translate("tip_no_select_data"),
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+					return;
+				}
+				const list = []
+				list.push({
+					page_name: pageData.Name,
+					item_list: jsonlist,
+					ext_data: pageData.ExtData
+				})
+				// console.log(jsonlist);
+				$this.runCustomEvent(pageData, event, input_param, list);
+				// jsonlist.forEach(async (json,key)=>{
+				// 	await $this.runCustomEvent(event,input_param,json,'1');
+				// });
+			},
+			//鎵ц纭畾鑴氭湰
+			async runCustomEvent(pageParam, event, input_param, json, type) {
+				var $this = this;
+				var data_json = Base64.encode(
+					JSON.stringify(json)
+				);
+				var dataInfo = {
+					ed_type: 0,
+					start_transaction: true,
+					class_id: this.$data.ClsID,
+					class_name: '',
+					event_id: event.ID,
+					event_name: '',
+					data_obj_id: '',
+					obj_attr: '',
+					prj_id: '',
+					ref_cls_id: '',
+					rel_obj_id: '',
+					user_login: '',
+					data_json: data_json,
+					compose_info: '',
+					ext_info: '',
+					global_attr: '',
+					input_param: input_param,
+				};
+
+				// console.log(dataInfo);
+				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) {
+							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(
+									"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) {
+							if (result.action) {
+								//	uni.showModal({title:this.translateSys("tip"),content:JSON.stringify(result.action),showCancel:false,confirmText:this.translateSys("cancel")});
+
+								result.action.forEach(item => {
+									if (item.action_type ==
+										"insert_subtable_page_row"
+									) { //鐮佺洏涓�+										var value = item.value;
+										//鍔犺浇宸茬粡鐮佺洏鏁版嵁
+										$this.viewAceionRow(
+											value, );
+										//娓呯┖鏉$爜鍐呭
+										$this.$data
+											.head_styledef
+											.form.items
+											.forEach((
+												item,
+												index) => {
+												if (item
+													.fieldId !=
+													"S_CNTR_CODE"
+												) {
+													item.value =
+														'';
+													item.oldvalue =
+														'';
+													$this
+														.$data
+														.head_styledef
+														.form
+														.model[
+															item
+															.fieldId
+														] =
+														'';
+												}
+											});
+
+										uni.showModal({
+											title: this
+												.translateSys(
+													"tip"
+												),
+											content: this
+												.translate(
+													'execute_event_success'
+												),
+											showCancel: false,
+											confirmText: this
+												.translateSys(
+													"cancel"
+												)
+										});
+									} else if (item.action_type ==
+										"set_subtable_page_content"
+									) { //宸茬爜鐩�+										$this.$data.param
+											.Show_Welcom_Page =
+											false;
+										var value = item.value;
+										const pageData = $this
+											.pageDetail.find((
+												page) => {
+												return value
+													.page_name ==
+													page.Name;
+											});
+										if (value.clear_confirm !=
+											false && value.clear ==
+											true &&
+											pageData && pageData
+											.DefList.length > 0
+										) { //鍒ゆ柇鏄惁娓呯┖椤电鍐呭,姝e湪鐮佺洏鏄惁鏈夋暟鎹�+											uni.showModal({
+												title: this
+													.translateSys(
+														'tip'
+													),
+												content: this
+													.translate(
+														"are_you_sure_clear_first"
+													) +
+													this
+													.translateSys(
+														"quotation_mark_left"
+													) +
+													value
+													.page_name +
+													this
+													.translateSys(
+														"quotation_mark_right"
+													) +
+													this
+													.translate(
+														"are_you_sure_clear_last"
+													),
+												success: function(
+													res
+												) {
+													if (res
+														.confirm
+													) {
+														if (
+															pageData
+														)
+															pageData
+															.DefList = [];
+														$this
+															.viewAceionContent(
+																value
+															);
+													} else if (
+														res
+														.cancel
+													) {
+														if (
+															pageData
+														)
+															pageData
+															.DefList = [];
+														$this
+															.viewAceionContent(
+																value
+															);
+													}
+												}
+											});
+										} else {
+											if (pageData)
+												pageData
+												.DefList = [];
+											$this
+												.viewAceionContent(
+													value);
+										}
+									} else if (item
+										.action_type ==
+										"remove_subtable_page_row"
+									) { //娓呴櫎闈㈡澘涓寚瀹歩d鐨勬暟鎹�+										var value = item.value;
+										const pageData = $this
+											.pageDetail.find((
+												page) => {
+												return value
+													.page_name ==
+													page
+													.Name;
+											});
+										if (pageData
+											?.DefList
+										) { //鍒ゆ柇杩斿洖鐨刟ction鐨刾age_name鏄惁鏄緟鍒嗘嫞
+											//娓呴櫎闈㈡澘涓寚瀹歩d鐨勬暟鎹�+											value.row.forEach(
+												row => {
+													pageData
+														.DefList
+														.forEach(
+															(
+																ele,
+																index
+															) => {
+																if (ele
+																	.form
+																	.objId ==
+																	row
+																	.id
+																) {
+																	pageData
+																		.DefList
+																		.splice(
+																			index,
+																			1
+																		);
+																}
+															}
+														);
+												});
+										}
+									} else if (item
+										.action_type ==
+										"set_subtable_page_row"
+									) {
+										$this.viewActionSetRow(
+											item
+											.value)
+
+									} else if (item
+										.action_type ==
+										"set_subtable_page_ext_data"
+									) {
+										var value = item.value;
+										const pageData = $this
+											.pageDetail.find((
+												page) => {
+												return value
+													.page_name ==
+													page
+													.Name;
+											});
+										if (pageData) {
+											pageData.ExtData =
+												value
+												.ext_data
+										}
+
+									} else if (item
+										.action_type ==
+										"clear_subpage_rows") {
+										var value = item.value;
+										const pageData = $this
+											.pageDetail.find((
+												page) => {
+												return value
+													.page_name ==
+													page
+													.Name;
+											});
+										if (pageData) {
+											pageData
+												.DefList = []
+											pageData
+												.ExtData = {}
+										}
+									} else if (item
+										.action_type ==
+										"set_dlg_current_edit_attr"
+									) {
+										if ($this
+											.focusOldFieldId ==
+											item.value)
+											$this.setData({
+												focusFieldId: ""
+											})
+										else {
+											$this.setData({
+												focusFieldId: $this
+													.focusOldFieldId
+											})
+										}
+										$this.$nextTick(() => {
+											$this
+												.setData({
+													focusFieldId: item
+														.value
+												})
+										});
+									} else if (item.action_type ==
+										"set_dlg_attr") {
+										// value = {"attr":"xxx", "value":"xxx"}
+										var data = item.value;
+										$this.setFormValues(data)
+									}
+
+								});
+							} else {
+								if ($this.$data.After_OK_Event.ID !=
+									event
+									.ID) { //鍒ゆ柇褰撳墠浜嬩欢鏄惁鏄‘瀹氬悗浜嬩欢
+
+									$this.sava(pageParam, $this.$data
+										.After_OK_Event); //鎵ц纭畾鍚庝簨浠�+
+								}
+							}
+						} else {
+
+							if (result.info) {
+								uni.showModal({
+									title: this.translateSys(
+										"tip"),
+									content: result.info,
+									showCancel: false,
+									confirmText: this
+										.translateSys("cancel")
+								});
+							}
+						}
+					}
+
+					pageParam.okLoading = false
+				}).catch(ex => {
+					pageParam.okLoading = false
+					let tip = typeof ex.errMsg == "string" ? ex.errMsg : ex
+					uni.showModal({
+						title: this.translateSys("error") + "8.1",
+						content: this.translate(
+								"execute_after_ok_event_failed") +
+							this.translateSys(
+								"comma") +
+							tip,
+						showCancel: false,
+						confirmText: this.translateSys("cancel")
+					});
+				});
+			},
+
+			cancel(e) { //鍙栨秷
+				uni.navigateBack({
+					delta: 1 //杩斿洖灞傛暟锛�鍒欎笂涓婇〉
+				});
+			},
+			translate(t) {
+				if (typeof this.$t == "function") return this.$t(`page.${t}`)
+				else return t;
+			},
+			translateSys(t) {
+				if (typeof this.$t == "function") return this.$t(`sys.${t}`)
+				else return t;
+			},
+		},
+	};
+</script>
+
+<style lang="scss">
+	.uni-page-modal-form {
+
+		display: flex;
+		height: calc(100vh - 30rpx);
+		width: 720rpx;
+		flex-direction: column !important;
+		padding: 15rpx;
+
+		.view-header {
+			display: flex;
+			width: 100%;
+			flex-direction: column;
+		}
+
+		.v-head-style {
+			width: 98%;
+
+			.uni-forms-item {
+				margin-bottom: 11rpx;
+			}
+
+			.input-wrapper {
+				border: 1px solid #d5d5d5;
+				width: 100%;
+				display: flex;
+				flex-direction: row;
+
+				.uni-input {
+					flex: 1;
+					padding: 12rpx 8rpx;
+					color: #2d8cf0;
+					// height: 40rpx;
+					// line-height: 40rpx;
+				}
+
+				.uni-icon {
+					padding: 8rpx;
+					font-size: 32rpx;
+					color: rgb(192, 196, 204);
+				}
+			}
+
+			.input-wrapper:hover {
+				border: 1px solid rgb(41, 121, 255);
+			}
+		}
+
+		.view-content {
+			display: flex;
+			flex: 1;
+			width: 100%;
+			flex-direction: column;
+			min-height: 100px;
+		}
+
+		.dv-tab {
+			width: calc(100% - 30rpx);
+			padding: 0 15rpx;
+		}
+
+		.view-tabpage {
+			width: 100%;
+			flex: 1;
+		}
+
+		.view-tab-content {
+			display: flex;
+			flex: 1;
+			width: calc(100% - 30rpx);
+			padding: 10rpx 15rpx;
+			flex-direction: column;
+			overflow-y: auto;
+
+		}
+
+		.uni-panel-content {
+			display: flex;
+			width: 100%;
+			height: 100%;
+			flex-direction: column !important;
+		}
+
+		.view-bottom {
+			display: flex;
+			flex-direction: row;
+			width: calc(100% - 30rpx);
+			padding: 10rpx 15rpx 30rpx 15rpx;
+
+			.btn-disabled {
+				background-color: #ddd;
+				color: #888;
+			}
+
+			.btn-left {
+				padding: 20rpx;
+				line-height: 1.5;
+				border: none;
+				font-size: 38rpx;
+				font-weight: bold;
+				float: left;
+				display: inline-block;
+			}
+
+			.btn-one {
+				padding: 20rpx;
+				line-height: 1.5;
+				border: none;
+				font-size: 38rpx;
+				font-weight: bold;
+				float: left;
+				display: inline-block;
+				width: 50%;
+				margin-left: 25%;
+			}
+
+			.btn-right {
+				padding: 20rpx;
+				line-height: 1.5;
+				border: none;
+				font-size: 38rpx;
+				font-weight: bold;
+				float: right;
+				display: inline-block;
+			}
+
+			.width-50 {
+				width: 49%;
+			}
+
+			.width-32 {
+				width: 32%;
+				margin-left: 1%;
+			}
+
+			.width-30 {
+				width: 30%;
+				margin-left: 1%;
+			}
+		}
+
+		[nvue] uni-view {
+			position: relative;
+			border: 0 solid #000;
+			box-sizing: border-box;
+		}
+
+		.uni-icon {
+			/* border: 1px solid red; */
+			width: 8%;
+			font-family: uniicons;
+			font-size: 40rpx;
+			font-weight: 400;
+			font-style: normal;
+			/* width: 48rpx; */
+			height: 48rpx;
+			line-height: 48rpx;
+			color: #2d8cf0;
+			cursor: pointer;
+			display: inline-block;
+			vertical-align: 18rpx;
+		}
+
+		.dv-panel {
+			background-color: #efefef;
+			padding: 20rpx 20rpx 10rpx 0px;
+			border-radius: 12rpx;
+			margin: 10rpx 0 20rpx 0;
+			text-align: right;
+
+			.txt_title {
+				font-size: 28rpx;
+				text-align: right;
+				display: inline-block;
+			}
+
+			input {
+				vertical-align: middle;
+				display: inline-block;
+				border: 1px solid #d5d5d5;
+				width: 68%;
+				height: 48rpx;
+				line-height: 28rpx;
+				background: #FFF;
+				border-radius: 7px !important;
+				color: #2d8cf0;
+				padding: 6rpx 8rpx 8rpx;
+				font-size: 28rpx;
+				font-family: inherit;
+				box-shadow: none !important;
+				transition-duration: 0.1s;
+				margin-top: 0rpx;
+			}
+
+			input::-webkit-input-placeholder {
+				font-size: 10rpx;
+			}
+
+			.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-button {
+				width: 100%;
+				text-align: left;
+				min-height: 30rpx;
+				padding-bottom: 10rpx;
+
+				checkbox {
+					padding-left: 20px;
+					display: inline-block;
+				}
+
+				button {
+					text-align: left;
+					line-height: 1.5;
+					border: none;
+					font-size: 30rpx;
+					display: inline-block;
+					float: right;
+					text-align: center;
+				}
+			}
+
+		}
+
+		.dv-panel-input {
+			width: 100%;
+			display: inline-block;
+			text-align: left;
+
+			.dv-input {
+				margin-bottom: 2rpx;
+			}
+		}
+
+		.logo {
+			height: 100rpx;
+			width: 460rpx;
+			display: flex;
+			margin: 38% auto;
+		}
+
+		.dv-border {
+			border: 1px solid red;
+		}
+
+		.view-imagetext {
+			text-align: center;
+			width: calc(100% - 80rpx);
+			padding: 20rpx 40rpx 0px 40rpx;
+			height: calc(100% - 30rpx);
+			overflow: hidden;
+		}
+
+		.view-imagetext .view-imagetext-uploadlist {
+			padding: 30rpx 0px 10rpx 0px;
+			vertical-align: middle;
+			display: inline-block;
+			width: 100%;
+			height: 100%;
+			text-align: center;
+			line-height: 100%;
+			border: 2rpx solid transparent;
+			border-radius: 8rpx;
+			overflow: hidden;
+			background: #fff;
+			position: relative;
+		}
+
+		.view-imagetext .txt-text {
+			display: block;
+			margin: 20rpx;
+			font-weight: bold;
+		}
+
+		.view-detalist-centen {
+			text-align: center;
+			width: 100%;
+		}
+
+		.view-detalist-centen .txt-detalist {
+			background: #94D5EF;
+			display: block;
+			width: 100%;
+			font-size: 36rpx;
+			line-height: 80rpx;
+			font-weight: 500;
+		}
+
+		.panel-active {
+			border: 2px solid red;
+		}
+
+		.bk-active {
+			background-color: #D6FCB2;
+		}
+
+		.dv_select {
+			display: inline-block;
+			width: 66%;
+			background: #FFF;
+			border-radius: 0 !important;
+			color: #2d8cf0;
+			/* padding: 10rpx 8rpx 12rpx; */
+			font-size: 34rpx;
+			font-family: inherit;
+			box-shadow: none !important;
+			transition-duration: 0.1s;
+			margin-top: 0rpx;
+			vertical-align: 20rpx;
+
+			.uni-select {
+				border: 2rpx solid #ccc;
+				border-radius: 0 !important;
+				color: #2d8cf0;
+			}
+
+			.uni-select__input-text {
+				color: #2d8cf0;
+			}
+
+		}
+
+
+		.input-disabled {
+			background-color: #f3f3f3 !important;
+		}
+
+		.demo-uni-row {
+			margin-bottom: 0px;
+			display: block;
+
+			.uni-input {
+				width: calc(100% - 120px);
+			}
+		}
+
+		::v-deep .uni-row {
+			margin-bottom: 0px;
+		}
+
+		.view-tabpage ::v-deep .uni-row {
+			margin-bottom: 5px;
+		}
+
+		.demo-uni-col {
+			height: 36px;
+			border-radius: 5px;
+		}
+
+		.popup-header {
+			font-size: 42rpx;
+			font-weight: bold;
+			margin: 20rpx 20rpx 0px 20rpx;
+		}
+
+		.view_popup_CheckList {
+			margin-bottom: 20rpx;
+		}
+
+		.popup-footer {
+			float: right;
+			position: absolute;
+			bottom: 0;
+			right: 20rpx;
+		}
+
+		button.btn_popup_add {
+			width: 180rpx;
+			margin-top: 50rpx;
+			margin-right: 20rpx;
+			padding: 15rpx;
+			line-height: 1.5;
+			background: #27A6E1;
+			border: none;
+			color: #fff;
+			font-size: 38rpx;
+			font-weight: bold;
+			/* float: left; */
+			display: inline-block;
+		}
+
+		button.btn_popup_cancel {
+			width: 180rpx;
+			margin-top: 50rpx;
+			padding: 15rpx;
+			line-height: 1.5;
+			background: #27A6E1;
+			border: none;
+			color: #fff;
+			font-size: 38rpx;
+			font-weight: bold;
+			/* float: right; */
+			display: inline-block;
+		}
+
+
+	}
+</style>
\ No newline at end of file

--
Gitblit v1.9.1