From c380a8d6e114ff623832d2b34fca52b10537a1d0 Mon Sep 17 00:00:00 2001
From: cuiqian2004 <cuiqian2004@163.com>
Date: 星期五, 14 六月 2024 17:03:22 +0800
Subject: [PATCH] 5600 onchange run +json

---
 pages/modal/5602.vue |  155 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 153 insertions(+), 2 deletions(-)

diff --git a/pages/modal/5602.vue b/pages/modal/5602.vue
index 639ab96..a79daba 100644
--- a/pages/modal/5602.vue
+++ b/pages/modal/5602.vue
@@ -244,7 +244,7 @@
 				:class="item.disabled?'input-disabled':''"
 				v-model="item.value"
 				:localdata="item.dict"
-				@change="onChange(item)"
+				@change="onEnterChange(item)"
 				:disabled="item.disabled"
 				:clear="false"
 			></uni-data-select>
@@ -454,6 +454,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={
@@ -670,10 +692,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:'',
+			  attrs: Object.keys(attr).map((a) => ({
+				attr: a,
+				value: attr[a] || "",
+			  }))
+			});
+		});
+		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(
@@ -685,6 +760,14 @@
 	            )
 	          );
 			  var $this = this;
+			  const jsonList = []
+			  jsonList.push({page_name:$this.param.Sub_Page[0].Name,item_list:[]})
+			  jsonList.push({page_name:$this.param.Sub_Page[1].Name,item_list:[]})
+			  jsonList[0].item_list= $this.getDetailAttrList($this.detail1StyleDefList,$this.param.Sub_Page[0].Select_Button)
+			  jsonList[1].item_list= $this.getDetailAttrList($this.detail2StyleDefList,$this.param.Sub_Page[1].Select_Button)
+			  const data_json = Base64.encode(
+			      JSON.stringify(jsonList)
+			  );
 			  var dataInfo={
 	            ed_type: 0,
 				start_transaction: '',
@@ -698,7 +781,7 @@
 				ref_cls_id: '',
 				rel_obj_id: '',
 				user_login: '',
-				data_json: '',
+				data_json: data_json,
 				compose_info: '',
 				ext_info: '',
 				global_attr: '',
@@ -775,6 +858,52 @@
 									  }
 									});
 								}
+								else if(item.action_type == "set_subtable_page_row"){
+									// value = {"page_name":"鐮佺洏涓�, "row":[{"id":"xx"}]}
+									var value = item.value;
+									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})
+									}
+								}
 								else if(item.action_type == "set_dlg_attr"){
 								  // value = {"attr":"xxx", "value":"xxx"}
 								  var data = item.value;
@@ -809,6 +938,28 @@
 			
 	    }
 	},
+	operationNumber(value1, value2,operation){
+		if(operation == "+")
+		{
+			return value1 + value2
+		}
+		else if(operation == "-")
+		{
+			return value1 - value2
+		}
+		else if(operation == "*")
+		{
+			return value1 * value2
+		}
+		else if(operation == "/")
+		{
+			if(value2)
+				return value1 / value2
+			else
+				return value1 
+		}
+		else return value2 
+	},
 	//鍔犺浇姝e湪鍒嗘嫞鍐呭
 	viewAceionRow(data,type){
 		// console.log(data);

--
Gitblit v1.9.1