From 36e6d0a63a9760d75f6cdc47e867f12b77f63934 Mon Sep 17 00:00:00 2001
From: cyy <cuiqian2004@163.com>
Date: 星期五, 14 六月 2024 22:53:46 +0800
Subject: [PATCH] 5600 action ext_data

---
 pages/modal/5602.vue |  294 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 258 insertions(+), 36 deletions(-)

diff --git a/pages/modal/5602.vue b/pages/modal/5602.vue
index 7b2cc71..02975f3 100644
--- a/pages/modal/5602.vue
+++ b/pages/modal/5602.vue
@@ -73,6 +73,9 @@
     display: inline-block;
 	text-align: left;
 }
+.dv-panel-input .dv-input{
+	margin-bottom: 2rpx;
+}
 .dv-panel .txt_title{
   font-size: 34rpx;
   text-align: right;
@@ -236,14 +239,24 @@
 		<!-- 琛ㄥご鏍峰紡 -->
 		<view class="v-headStyle" v-for="(item,index) in head_styledef.form.items" >
 			<text class="txt_title" :style="{'width':item.labelWidth+'px'}">{{item.label}}锛�/text>
-			<view class="input-wrapper">
+			<!-- 涓嬫媺妗�鍗曢� item.useDict?item.dict:item.selections-->
+			<uni-data-select id="dv_select" v-if="item.name=='Select'"
+				:class="item.disabled?'input-disabled':''"
+				v-model="item.value"
+				:localdata="item.dict"
+				@change="onEnterChange(item)"
+				:disabled="item.disabled"
+				:clear="false"
+			></uni-data-select>
+			<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="onEnterChange(item)">&#xe568;</text>
 				<input
 					class="uni-input"
-					:type="item.name=='Input'?'text':'text'" 
+					:class="item.disabled?'input-disabled':''"
+					:type="item.name=='Input'?'text':'number'" 
 					v-model="item.value"
 					:disabled="item.disabled"
 					:placeholder="item.placeholder"
@@ -286,9 +299,9 @@
 						:id="'tabpanel'+style.form.htmlobjId"
 						:class="style.form.htmlobjId==active_id?'bk-active':activelist[ii].active==true?'bk-active':''">
 						<div class="dv-panel-input">
-							<div v-for="(item,index) in style.form.items">
+							<div class="dv-input" v-for="(item,index) in style.form.items">
 								<!-- 鏅�甯冨眬 -->
-								<view v-if="item.name=='Input'">
+								<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
@@ -405,7 +418,9 @@
       detail1_styledef:{},
       detail1StyleDefList:[],
       detail2_styledef:{},
-      detail2StyleDefList:[],
+      detail2StyleDefList:[],//鍒嗛〉鏁版嵁
+	  detail1ExtData: {},
+	  detail2ExtData: {}, //鍒嗛〉鎵╁睍鏁版嵁
 	  // 鍒嗘鍣ㄦ暟鎹� 	  current: 0,
 	  Before_OK_Event:{},
@@ -441,6 +456,28 @@
 	// this.focusMateria=true; 
   },	
   methods: {
+	  setData: function(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);
+	  			} else {
+	  				if (!data[key2]) {
+	  				that.$set(data, key2, {});
+	  				}
+	  			}
+	  		  data = data[key2];
+	  		});
+	  	});
+	  },
+	  
     async Head_UIStyleGetInfo(class_id,style_id){   //鑾峰彇鑷畾涔夎〃鍗曟牱寮� 		var $this = this;
 		var dataInfo={
@@ -460,11 +497,11 @@
 				$this.$data.head_styledef = ret.result.style_def? JSON.parse(styledef): {};
 				// this.form = this.head_styledef.form.model;
 				// console.log($this.$data.head_styledef);
-				// $this.head_styledef.form.items.forEach(async (ele,index) => {
-				//     if(ele.useDict==true){ //鍒ゆ柇useDict鏄惁浣跨敤瀛楀吀
-				//         await this.DictGetInfo(ele.bind.dict,index,'mast');
-				//     }
-				// });
+				$this.head_styledef.form.items.forEach(async (ele,index) => {
+				    if(ele.useDict==true){ //鍒ゆ柇useDict鏄惁浣跨敤瀛楀吀
+				        await this.DictGetInfo(ele.bind.dict,index,'mast');
+				    }
+				});
 			}else{
 				uni.showModal({title:"閿欒1",content:ret.err_msg,showCancel:false,confirmText:"鍙栨秷"});
 			}
@@ -497,11 +534,11 @@
 				// var aa = JSON.stringify(this.detail1_styledef);
 				// $this.$data.detail1StyleDefList.push(JSON.parse(aa));
 				// console.log($this.$data.detail1StyleDefList);
-				// $this.detail1_styledef.form.items.forEach(async (ele,index) => {
-				//     if(ele.useDict==true){ //鍒ゆ柇useDict鏄惁浣跨敤瀛楀吀
-				//         await this.DictGetInfo(ele.bind.dict,index,'sub');
-				//     }
-				// });
+				$this.detail1_styledef.form.items.forEach(async (ele,index) => {
+				    if(ele.useDict==true){ //鍒ゆ柇useDict鏄惁浣跨敤瀛楀吀
+				        await this.DictGetInfo(ele.bind.dict,index,'sub');
+				    }
+				});
 			}else{
 				uni.showModal({title:"閿欒2",content:ret.err_msg,showCancel:false,confirmText:"鍙栨秷"});
 			}
@@ -569,6 +606,9 @@
 						$this.head_styledef.form.model[attr] = itemName;
 					}
 					$this.head_styledef.form.items[index].dict=list;
+					var head_styledef = JSON.parse(JSON.stringify($this.head_styledef));
+					$this.head_styledef=[];
+					$this.head_styledef = head_styledef;
 				// console.log($this.$data.detail1StyleDefList);
 				}
 				else{
@@ -578,21 +618,23 @@
 						$this.detail1_styledef.form.model[attr] = itemName;
 					}
 					$this.detail1_styledef.form.items[index].dict=list;
-					console.log($this.$data.detail1_styledef);
+					var detail1_styledef = JSON.parse(JSON.stringify($this.detail1_styledef));
+					$this.detail1_styledef=[];
+					$this.detail1_styledef = detail1_styledef;
+					// console.log($this.$data.detail1_styledef);
 				}
 				
 			}else{
-				uni.showModal({title:"閿欒1.2",content:success.err_msg,showCancel:false,confirmText:"鍙栨秷"});
+				uni.showModal({title:"閿欒9.1",content:success.err_msg,showCancel:false,confirmText:"鍙栨秷"});
 			}
 		}).catch(ex=>{
 			// console.log(ex);
-			uni.showModal({title:"閿欒1.3",content:ex.errMsg,showCancel:false,confirmText:"鍙栨秷"});
+			uni.showModal({title:"閿欒9",content:ex.errMsg,showCancel:false,confirmText:"鍙栨秷"});
 		});
 	},
 	
 	ontap(item){ //鎵爜鍔熻兘
 		// var $ele = e;
-		//console.log(e.target)
 		getApp().onScan((result)=>{
 			console.log(result.decodedata);
 			item.value = result.decodedata;
@@ -618,7 +660,7 @@
 					// 	$this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣
 						setTimeout(function(){
 							uni.hideKeyboard();
-						},100);
+						},1000);
 					// },500);
 				}
 			    // if(onSuffixClickCallbackEvent.id){   //鍚庡浘鏍囩偣鍑讳簨浠�@@ -652,10 +694,63 @@
 		    // }
 		}
 	},
+	getDetailAttrList(list,selectButton)
+	{
+		const detailAttrList = [];
+		list.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(selectButton==true){ //鍒ゆ柇閫夋嫨鎸夐挳鏄惁涓簍rue
+		    if(style.SelBut_Checked==true) 
+		      detailAttrList.push(detail_attr);
+		  } else 
+		    detailAttrList.push(detail_attr);
+		});
+		// console.log(detailAttrList);
+		list.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 obj_attr = this.head_styledef.form.model;
 	          // console.log(obj_attr);
 	          var input_param = Base64.encode(
@@ -667,6 +762,16 @@
 	            )
 	          );
 			  var $this = this;
+			  const jsonList = []
+			  const itemlist1= $this.getDetailAttrList($this.detail1StyleDefList,$this.param.Sub_Page[0].Select_Button)
+			  const itemlist2= $this.getDetailAttrList($this.detail2StyleDefList,$this.param.Sub_Page[1].Select_Button)
+			  
+			  jsonList.push({page_name:$this.param.Sub_Page[0].Name,item_list:itemlist1,ext_data:$this.detail1ExtData})
+			  jsonList.push({page_name:$this.param.Sub_Page[1].Name,item_list:itemlist2,ext_data:$this.detail2ExtData})
+			 
+			  const data_json = Base64.encode(
+			      JSON.stringify(jsonList)
+			  );
 			  var dataInfo={
 	            ed_type: 0,
 				start_transaction: '',
@@ -680,9 +785,9 @@
 				ref_cls_id: '',
 				rel_obj_id: '',
 				user_login: '',
-				data_json: '',
+				data_json: data_json,
 				compose_info: '',
-				ext_info: '',
+				ext_info: "",
 				global_attr: '',
 	            input_param: input_param,
 	          };
@@ -709,21 +814,16 @@
 								else if(item.action_type == "set_subtable_page_content"){  //宸插垎鎷� 									$this.$data.param.Show_Welcom_Page=false;
 									var value = item.value;
-									if(value.clear == true && $this.$data.detail1StyleDefList.length>0){ //鍒ゆ柇鏄惁娓呯┖椤电鍐呭,姝e湪鍒嗘嫞鏄惁鏈夋暟鎹�+									if(value.clear == true && $this.$data.detail1StyleDefList.length>0 && value.page_name == $this.$data.param.Sub_Page[0].Name){ //鍒ゆ柇鏄惁娓呯┖椤电鍐呭,姝e湪鍒嗘嫞鏄惁鏈夋暟鎹� 										uni.showModal({
 											title: '鎻愮ず',
 											content: '绯荤粺妫�祴鍒版湁寰呭垎鎷d腑鐨勬暟鎹紝缁х画鎿嶄綔浼氭竻绌猴紝鏄惁缁х画锛�,
 											success: function (res) {
 												if (res.confirm) {
 												  $this.$data.detail1StyleDefList=[];
-												  $this.$data.detail2StyleDefList=[];
 												  $this.viewAceionContent(value);
 												} else if (res.cancel) {
-												  if(value.page_name == $this.$data.param.Sub_Page[0].Name){ //鍒ゆ柇杩斿洖鐨刟ction鐨刾age_name鏄惁鏄緟鍒嗘嫞
-													$this.$data.detail1StyleDefList=[];
-												  }else{
-													$this.$data.detail2StyleDefList=[];
-												  }
+												  $this.$data.detail1StyleDefList=[];
 												  $this.viewAceionContent(value);
 												}
 											}
@@ -762,6 +862,25 @@
 									  }
 									});
 								}
+								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;
+									if (value.page_name == $this.$data.param.Sub_Page[0].Name) { //鍒ゆ柇杩斿洖鐨刟ction鐨刾age_name鏄惁鏄緟鍒嗘嫞
+										$this.setData({detail1ExtData:value.ext_data})
+									} else if (value.page_name == $this.$data.param.Sub_Page[1].Name) {
+										$this.setData({detail2ExtData:value.ext_data})
+									}
+								}
+								else if (item.action_type == "clear_subpage_rows") {
+									var value = item.value;
+									if (value.page_name == $this.$data.param.Sub_Page[0].Name) { //鍒ゆ柇杩斿洖鐨刟ction鐨刾age_name鏄惁鏄緟鍒嗘嫞
+										$this.setData({detail1StyleDefList:[],detail1ExtData:{}})
+									} else if (value.page_name == $this.$data.param.Sub_Page[1].Name) {
+										$this.setData({detail2StyleDefList:[],detail2ExtData:{}})
+									}
+								}
 								else if(item.action_type == "set_dlg_attr"){
 								  // value = {"attr":"xxx", "value":"xxx"}
 								  var data = item.value;
@@ -796,6 +915,82 @@
 			
 	    }
 	},
+	operationNumber(value1, value2,operation){
+		var number1 = 0
+		var number2 =0
+		if(value1)
+			number1 =  parseInt(value1)
+		if(value2)	
+			number2 =  parseInt(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
+				return number1 
+		}
+		else return number2 
+	},
+	//鏇存柊鍒嗛〉绛句腑鐨勫垪琛ㄩ」鍐呭
+	viewActionSetRow(value) {
+		const $this = this
+		var detailStyleDefList = []
+		if(value.page_name == $this.$data.param.Sub_Page[1].Name)
+		{
+			detailStyleDefList = $this.$data.detail2StyleDefList
+		}
+		else if(value.page_name == $this.$data.param.Sub_Page[0].Name)
+		{
+			detailStyleDefList =$this.$data.detail1StyleDefList
+		}
+		detailStyleDefList.forEach(ele=>{
+			value.row.forEach((rowData) => {
+			    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)
+					              }
+								}
+					          })
+					        }
+					    });
+					});
+				}
+			})	
+		});
+		if(value.page_name == $this.$data.param.Sub_Page[1].Name)
+		{
+			$this.setData({detail2StyleDefList:detailStyleDefList})
+		}
+		else if(value.page_name == $this.$data.param.Sub_Page[0].Name)
+		{
+			 $this.setData({detail1StyleDefList:detailStyleDefList})
+		}
+		
+	},
+	
 	//鍔犺浇姝e湪鍒嗘嫞鍐呭
 	viewAceionRow(data,type){
 		// console.log(data);
@@ -847,6 +1042,13 @@
 	//鍔犺浇宸插垎鎷e唴瀹� 	viewAceionContent(data){
 		var $this = this;
+		
+		if (data.page_name == $this.$data.param.Sub_Page[0].Name) {
+			$this.detail1ExtData = data.ext_data || {}
+		}
+		else if (data.page_name == $this.$data.param.Sub_Page[1].Name) {
+			$this.detail2ExtData = data.ext_data || {}
+		} 
 		if(JSON.stringify(data.content) =='{}'){
 		  return;
 		}
@@ -1219,12 +1421,12 @@
 								}
 							});
 							//娓呴櫎寰呭垎鎷d腑鎴愬姛鐨勬暟鎹�-							$this.$data.detail1StyleDefList.forEach((style,index)=>{
-							  if(style.form.items[0].fieldId == json.attrs[0].attr && style.form.items[0].value == json.attrs[0].value){ 
-								$this.$data.detail1StyleDefList.splice(index,1);
-								return;
-							  }
-							});
+							// $this.$data.detail1StyleDefList.forEach((style,index)=>{
+							//   if(style.form.items[0].fieldId == json.attrs[0].attr && style.form.items[0].value == json.attrs[0].value){ 
+							// 	$this.$data.detail1StyleDefList.splice(index,1);
+							// 	return;
+							//   }
+							// });
 							// this.detail2StyleDefList=[];
 							uni.showModal({title:"鎻愮ず",content:"鍒嗘嫞鎴愬姛",showCancel:false,confirmText:"鍙栨秷"});
 						  } else if(item.action_type == "set_subtable_page_content"){  //鍔犺浇澶氭潯鏁版嵁
@@ -1259,7 +1461,27 @@
 								  });
 								});
 							}
-						  } else if(item.action_type == "refresh"){  //鍒锋柊
+						  } 
+						  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;
+						  	if (value.page_name == $this.$data.param.Sub_Page[0].Name) { //鍒ゆ柇杩斿洖鐨刟ction鐨刾age_name鏄惁鏄緟鍒嗘嫞
+						  		$this.setData({detail1ExtData:value.ext_data})
+						  	} else if (value.page_name == $this.$data.param.Sub_Page[1].Name) {
+						  		$this.setData({detail2ExtData:value.ext_data})
+						  	}
+						  }
+						  else if (item.action_type == "clear_subpage_rows") {
+						  	var value = item.value;
+						  	if (value.page_name == $this.$data.param.Sub_Page[0].Name) { //鍒ゆ柇杩斿洖鐨刟ction鐨刾age_name鏄惁鏄緟鍒嗘嫞
+						  		$this.setData({detail1StyleDefList:[],detail1ExtData:{}})
+						  	} else if (value.page_name == $this.$data.param.Sub_Page[1].Name) {
+						  		$this.setData({detail2StyleDefList:[],detail2ExtData:{}})
+						  	}
+						  }
+						  else if(item.action_type == "refresh"){  //鍒锋柊
 						    var value = item.value;
 							//娓呴櫎寰呭垎鎷f垚鍔熺殑鏁版嵁
 							// value.forEach((val_id,key)=>{

--
Gitblit v1.9.1