text: 
  var MyJsApi=['invoke','openLocation','getLocation','startAutoLBS','stopAutoLBS','onLocationChange','startLiving','replayLiving',
  	'scanQRCode','chooseImage','uploadImage','openEnterpriseChat','openUserProfile','startMeeting','selectEnterpriseContact','selectExternalContact','navigateToAddCustomer'];
   
  function SDK_start(){	
  	wx_config();
  	window.wx.error((err)=>{wx_MainErr('wx.config错误:',JSON.stringify(err)); } )		
  }	
  function wx_config(){	g_log+='\n*申请Signature'; 
  	app.ShowBusy('微信Config配置中！');	
  	axios.post('/login_qywx/signatureQY.asp?indexQS='+indexQS+'&appSN='+appSN).then((response)=>{	g_log+='\n*postSignReturn'; 
  		if(response.data.IsSuccess){	g_log+='\n*GetSignatureWX成功,准备Config:';
  		//window.wx.config----------------------------------------------------------------debug开关--
  			window.wx.config({beta:true,debug:0,appId:g_corpId, 
      				timestamp:response.data.timeStamp,	nonceStr:response.data.nonceStr,	signature:response.data.signature,	jsApiList: MyJsApi});    				
  			window.wx.ready(()=>{g_log+='\n*进入wx.ready内'; 	wx_agentConfig()	})		    
  			g_log+='\n *config 函数后';			    
  		}else{wx_MainErr('signatureQY获取签名错误:',response.data.Message); }
  }).catch((err)=>{wx_MainErr('post-sign.asp错误:',JSON.stringify(err));});//axios.post.signature
  }
  
  function wx_agentConfig(){	g_log+='\n*申请Signature'; 
  	app.ShowBusy('微信agentConfig配置中！');	
  	axios.post('/login_qywx/signatureWX.asp?indexQS='+indexQS+'&appSN='+appSN).then((response)=>{	g_log+='\n*postSignReturn'; 
  		if(response.data.IsSuccess){	g_log+='\n*GetSignatureWX成功,准备Config:'+response.data.signature;		
  			//wx.agentConfig--------------------
  			window.wx.agentConfig({ corpid: g_corpId,  	agentid: '1000003',
      			timestamp:response.data.timeStamp,	nonceStr:response.data.nonceStr,	signature:response.data.signature,	jsApiList: MyJsApi,
      			success:(res)=>{	wx_getSession();  			},//读取seession参数 , ShowJson(res)
      			fail:(err)=>{ g_log+='\n*agentConfig错误:'+JSON.stringify(err); 
      			wx_MainErr('agentConfig错误:',JSON.stringify(err));  }
  	});	
  		    
  		g_log+='\n *agent-config 函数后';			    
  		}else{wx_MainErr('signaturewx获取签名错误:',response.data.Message); }
  }).catch((err)=>{ wx_MainErr('post-sign.asp错误:',JSON.stringify(err));});//axios.post.signature
  }
  
      
  function wx_AuthCode(){} //钉钉才需要
  function wx_getSession(){g_log+='\n*准备PostGetSession'; 
  	app.ShowBusy('设置Session参数！');
  	axios.post('/login_qywx/getSession.asp?appSN='+appSN).then((response)=>{//alert(JSON.stringify(response.data.IsSuccess))
  	if(response.data.IsSuccess){
  		g_log+='\n*GetSession成功:' +response.data.username;
  		//alert(JSON.stringify(response.data));
  		app.ACC=response.data.ACC;  g_mem_ID=response.data.mem_ID;g_dw_name=response.data.dw_name;
  		g_truename=response.data.truename; app.truename=g_truename;
  		g_logo=response.data.d_pic; app.logo=g_logo; 
  		g_logintype=response.data.logintype;
  		
  		g_ddConfigOK=true;
  		app.LoadVue('系统首页',homepage);
  		//wx_config(); //
  		updateGPS();//上传一次GPS
  		app.postLog('登录','企业微信登录');
  		app.ShowBusy('微信认证完成！'); app.HideBusy();  //setTimeout(()=>{ app.HideBusy()},1000);
  	}else{wx_MainErr('post-getSession错误:',response.data.Message); }	
  	}).catch((err)=>{ wx_MainErr('post-getSession错误:',err); });//axios.post.then.catch		
  }
  
  
  //-----------ready  之后函数------------
  function isDDReady(){
  	if(navigator.userAgent.indexOf('DingTalk')<0&&navigator.userAgent.indexOf('wxwork')<0){app.ShowSnack('请在企业微信或钉钉中使用该功能！','warning');return false}
  	if(g_ddConfigOK){return true}else{wx_MainErr('微信授权未完成，建议重新进入！\n','');return false}}
  function wx_MainErr(tips,err){  g_log+=tips+'\n '+JSON.stringify(err); alert(g_log); location.replace('/wx_exit.asp?appSN='+appSN+'&msg='+g_log); }
  
  
  function SdkMeeting(Title,CalleeID,dtype,save){	if(!isDDReady()){return 0};		var StaffIds=[]	;
  	if(CalleeID==''){app.myAlert('呼叫对象微信ID为空！');return 0; 	//StaffIds=[];
  	}else if(CalleeID.indexOf('、')>0){StaffIds=CalleeID.split('、'); 	StaffIds.pop(); //去掉后面一个
  	}else{ StaffIds=[CalleeID];}	//数组只有一个数值
  	
  	//alert(CalleeID+'/数组'+JSON.stringify(StaffIds)); 
  	var myTitle=Title?Title:g_truename+'的会议';
  	wx.invoke('startMeeting', {"attendees":StaffIds,	"meetingType":dtype,	"theme":myTitle,
          }, (res)=>{if (res.err_msg == "startMeeting:ok") {
  	        	if(save==0){}
  	        	else{var editedData={ID:-1,d_cat:"1",d_title:obj.d_title ,d_names:g_truename,	vid:res.meetingId};
  					app.Json2DB('/common/data_s.asp?r_tab=cm_meeting&r_fd1=d_title$d_names$vid',editedData);
  				}	
  	         }else{ShowJson(res);} } 
      );
  }
  function SdkMeetingObj(obj){if((!obj.d_uids)||(!obj.d_title)){app.myAlert('参会人员为空或会议标题为空！'); return 0} 
  	if(!isDDReady()){return 0};		var StaffIds=[]	; 	//alert(JSON.stringify(obj)); return 0;
  	if(obj.d_uids==''){app.myAlert('参会人员为空！');return 0; 	//StaffIds=[];
  	}else if(obj.d_uids.indexOf('、')>0){StaffIds=obj.d_uids.split('、'); 	StaffIds.pop(); //去掉后面一个
  	}else{ StaffIds=[obj.d_uids];}	//数组只有一个数值
  	
  		//alert(obj.d_uids+'/数组'+JSON.stringify(StaffIds)); 	
  	wx.invoke('startMeeting', {"attendees":StaffIds,	"meetingType":obj.d_cat,	"theme":obj.d_title,
          }, (res)=>{if (res.err_msg == "startMeeting:ok") {
  	        	if(obj.save==0){}
  	        	else{obj.vid=res.meetingId;
  		        	app.Json2DB('/common/data_s.asp?r_tab=cm_meeting&r_fd1=d_title$d_names$vid$TopTab$d_cat&r_fd0=TopRow',obj);
  				}	
  	         }else{ShowJson(res);} } 
      );
  }
  //obj={d_uids,d_names}
  function selectUser(obj){if(!isDDReady()){return 0};	var StaffIds=[]	; 	//alert(JSON.stringify(obj)); return 0;
  	if(typeof(obj.d_uids)=='undefined'||obj.d_uids==''){StaffIds=[];
  	}else if(obj.d_uids.indexOf('、')>0){StaffIds=obj.d_uids.split('、'); 	StaffIds.pop(); //去掉后面一个
  	}else{ StaffIds=[obj.d_uids];}	//数组只有一个数值
  		wx.invoke("selectEnterpriseContact", {"fromDepartmentId": 0,// 必填，打开的通讯录从指定的部门开始展示，-1所在部门开始, 0表示从最上层开始
                  "mode": "multi", "type": ["user"],// 必填，选择模式，single、multi  //必填，选择限制类型，["department", "user"]
                  "selectedUserIds": StaffIds,   //"selectedDepartmentIds": ["2","3"],
          }, (res)=>{//app.myAlert(JSON.stringify(res.result));
                  if (res.err_msg == "selectEnterpriseContact:ok")
                  {   if(typeof res.result == 'string') {  res.result = JSON.parse(res.result)  }
                      var selectedUser = res.result.userList; // 已选的成员列表
                      obj.d_uids='';obj.d_names='';
                      for (var i=0; i<selectedUser.length; i++){obj.d_uids+=selectedUser[i].id+'、';obj.d_names+=selectedUser[i].name+'、';}   
                  }
          	}
  		); //invoke
      } 
  //预览图片    
  function openPic(url){ url=g_url+url;	wx.previewImage({current: url, 	urls: [url] });	} 
  
      
  //为字段上传照片,crud_method中photo4fd(fd)调用
  function photo4fd(obj,fd){if(!isDDReady()){return 0};	
  	wx.chooseImage({	count:1,
  		sizeType:['original', 'compressed'],	sourceType:['album','camera'],
  		success: (res)=> {	
  					var localId0 = res.localIds.pop();
  					wx.uploadImage({
  						localId: localId0,		isShowProgressTips: 1,
  						success: (res)=> {//alert(res.serverId);返回服务器端mid								
  								axios.post("/common/GetFileFromQYWX.asp",qs.stringify({mid:res.serverId})).then(response=>{
  										 obj.editedItem[fd]=response.data.src;   //赋值给字段alert(response.data.src);
  										 obj.EditDialog=false;obj.EditDialog=true;//强制刷新					
  									}).catch((err)=>{app.ShowAlert('warning','保存照片失败：',err); })	
  						},//upload_success
  					}); //wx.uploadImage
  			}//chooseImage success
  	});
  } 
  //从微信服务器保存到自己服务器传
  function SaveFromWX(localIds){  
  	var localId = localIds.pop();
  	wx.uploadImage({
  		localId: localId,		isShowProgressTips: 1,
  		success: (res)=> {
  			var serverId = res.serverId; // 返回图片的服务器端ID	
  			//alert(serverId);
  			axios.post("/common/GetFileFromQYWX.asp",qs.stringify({mid:serverId})).then(response=>{
  					alert(response.data.src);							
  				}).catch((err)=>{app.ShowAlert('warning','保存照片失败：',err); })						
  			if(localIds.length > 0){SaveFromWX(localIds);}   //循环保存多个图片
  		},//success
  	}); //wx.uploadImage
  				
  }        
  //为字段选择用户
  function user4fd(obj,fd){if(!isDDReady()){return 0};	var StaffIds=[]	; 	//alert(JSON.stringify(obj)); return 0;
  	if(typeof(obj.d_uids)=='undefined'||obj.editedItem[fd]==''){StaffIds=[];
  	}else if(obj.editedItem[fd].indexOf('、')>0){StaffIds=obj.editedItem[fd].split('、'); 	StaffIds.pop(); //去掉后面一个
  	}else{ StaffIds=[obj.editedItem[fd]];}	//数组只有一个数值
  		wx.invoke("selectEnterpriseContact", {"fromDepartmentId": 0,// 必填，打开的通讯录从指定的部门开始展示，-1所在部门开始, 0表示从最上层开始
                  "mode": "multi", "type": ["user"],// 必填，选择模式，single、multi  //必填，选择限制类型，["department", "user"]
                  "selectedUserIds": StaffIds,   //"selectedDepartmentIds": ["2","3"],
          }, (res)=>{//app.myAlert(JSON.stringify(res.result));
                  if (res.err_msg == "selectEnterpriseContact:ok")
                  {   if(typeof res.result == 'string') {  res.result = JSON.parse(res.result)  }
                      var selectedUser = res.result.userList; // 已选的成员列表
                      obj.editedItem[fd]='';obj.editedItem[fd+'_name']='';
                      for (var i=0; i<selectedUser.length; i++){obj.editedItem[fd]+=selectedUser[i].id+'、';obj.editedItem[fd+'_name']+=selectedUser[i].name+'、';} 
                      obj.EditDialog=false;obj.EditDialog=true;//强制刷新
                  }
          	}
  		); //invoke
      } 
          
  function selectUserEx(obj){if(!isDDReady()){return 0};	
  wx.invoke('selectExternalContact', {"filterType": 0, 
          }, (res)=>{//app.myAlert(JSON.stringify(res));
          if(res.err_msg == "selectExternalContact:ok"){//userIds  = res.userIds ; //返回此次选择的外部联系人userId列表，数组类型
              obj.d_uids='';obj.d_names='';
              for (var i=0; i<res.userIds.length; i++){obj.d_uids+=res.userIds[i]+'、';}
          }else {     }
      });
  }   
  //发送信息
  function MsgPost(obj){if((!obj.d_uids)||(!obj.d_title)){app.myAlert('收件人或信息为空！'); return 0} 
  	app.ShowBusy('正在发送信息！');	
  	axios.post('/common/MsgPost.asp',qs.stringify(obj)).then(response=>{
  		if(response.data.errcode==0){app.myAlert('发送成功！'); app.HideBusy();//setTimeout(()=>{ app.HideBusy()},1000);
  　　　　	}else{app.myAlert('发送信息失败！'+response.data.errmsg)}
  	}).catch((err)=>{app.myAlert('MsgPost失败！'+err); })		
  }	
  //打开用户的Profile，以便发信息，视频连线等
  function openUserProfile(uid){ if(!isDDReady()){return 0;}   
  	wx.invoke('openUserProfile', {"type": 1, "userid":uid
          }, (res)=>{ if(res.err_msg != "openUserProfile:ok"){ ShowJson(res)     } }); //invoke        
  }
  function sendMsg(uid){	if(!isDDReady()){return 0};				
  		wx.invoke('openEnterpriseChat', { "groupName":"", "userIds":uid,					
      		}, (res)=>{	 if (res.err_msg == "openEnterpriseChat:ok") {
         					} else if (res.err_msg.indexOf('noper')>0) {app.myAlert('权限不足！'); 
         					} else {app.myAlert(JSON.stringify(res))}
      	}); //invoke
  }
  function selectExternalContact(){ if(!isDDReady()){return 0}  
  wx.invoke('selectExternalContact', { "filterType": 0, //0表示展示全部外部联系人列表，1表示仅展示未曾选择过的外部联系人。
          }, function(res){ShowJson(res)
          if(res.err_msg == "selectExternalContact:ok"){
          }else {                    }    });
  } 
  function navigateToAddCustomer(){ if(!isDDReady()){return 0;}   wx.invoke('navigateToAddCustomer',{},(res)=>{ });} 
      		
  function wx_alert(msg){ app.myAlert(msg)} //临时沿用 app.myAlert
  
  function myGPS(type,setValue){if(!isDDReady()){return 0}  //获取我的位置，setValue==0打开地图，其他 赋值给app.cur_obj.editedItem，
  	app.ShowBusy('获取定位中！');
  	window.wx.getLocation({type: 'gcj02',
      success:(result)=>{ app.HideBusy();    //alert(result.longitude);
      		if(result.longitude==0){wx_alert('无法获取定位信息，请确认您的手机已打开定位功能！'); return 0}	    	
             	if(setValue==0){openMap('坐标:'+result.latitude+','+result.longitude,result.latitude,result.longitude); 	//setValue==0打开地图展示当前位置
             					axios.post('/common/updateGps.asp?lng='+result.longitude+'&lat='+result.latitude)}          
             	else if(typeof(app.cur_obj.editedItem)!="undefined"){app.cur_obj.editedItem.d_lat=''+result.latitude; 
      					app.cur_obj.editedItem.d_lng=''+result.longitude;	//app.cur_obj.editedItem.d_addr=result.address;  无该字段
      					app.addr4fd(app.cur_obj,'d_addr',result.latitude+','+result.longitude);	//填写地址描述
      					app.cur_obj.EditDialog=false;app.cur_obj.EditDialog=true;}},
      fail:   (err)=>{ app.HideBusy();    wx_alert("定位失败:"+JSON.stringify(err)); }
     } );
  }
  
  function getLoc(sc){app.OpenIfr('地图位置选取','/common/fd_Lat_Lng.asp')}
  
  
  function geoStart(){if(!isDDReady()){return 0} //上传与保存定位信息
  	updateGPS();//上传一次GPS
  	app.ShowBusy('获取定位中！');
  	window.wx.invoke('startAutoLBS',{   type: 'gcj02'  },
         (res)=>{ app.HideBusy();
          if(res.err_msg.indexOf('ok')>0){app.geostart=true; 
  			window.wx.onLocationChange( (result)=>{ 
     				if(result.errMsg.indexOf('ok')>0){app.geostart=true;	app.geocount++;	//alert(app.geocount)
     					if(app.geocount>10){ app.geocount=0;app.geoReport++;  app.ShowSnack('定位信息上报次数：'+app.geoReport);
     						axios.post('/common/updateGps.asp?lng='+result.longitude+'&lat='+result.latitude)}}  
    			} // (result)=>	result.speed; // 速度，以米/每秒计
  			);//onLocationChange
          }else{wx_alert("定位错误:"+JSON.stringify(err));       }//if
          }); //invoke
  }
  function geoStop(){if(!isDDReady()){return 0}
  	window.wx.invoke('stopAutoLBS',{},
       (res)=>{
          if(res.err_msg.indexOf('ok')>0){app.geostart=false; app.ShowSnack('已取消定位信息上报！定位次数：'+app.geoReport);	
            }else {  wx_alert("错误:"+JSON.stringify(err));             }
       });
  }
  
  
  //打开地图
  function openMap(t,lat,lng){if(!isDDReady()){return 0;} 	wx.openLocation({latitude:lat,  longitude:lng,    name:t,   scale:16});}
  
  function uploadPic(num){
  	window.wx.biz.util.uploadImage({multiple:true, max:num,
  	onSuccess: (result)=>{alert(JSON.stringify(result))},
  	onFail:(err)=>{wx_alert("上传图片失败:"+JSON.stringify(err))}
  	}); 
  }
  function uploadCam(num){
  	window.wx.biz.util.uploadImageFromCamera({compression:true,
  	onSuccess: (result)=>{alert(JSON.stringify(result))},
  	onFail:(err)=>{wx_alert("拍照上传失败:"+JSON.stringify(err))}
  	}); 
  }
  function uploadFile(num){
  	window.wx.biz.util.uploadAttachment({
  	onSuccess: (result)=>{alert(JSON.stringify(result))},
  	onFail:(err)=>{wx_alert("文件上传失败:"+JSON.stringify(err))}
  	}); 
  }
  
  function mapByArr(){
  	var myurl="http://hmxx.0752app.cn/common/lbs_mapByArr.asp";
  	if(g_ddConfigOK){window.wx.biz.util.openLink({url:myurl})}
  	else{app.OpenIfr('调度地图',myurl)}	
  }
  
  function updateGPS(){	
  //window.wx.checkJsApi({jsApiList:['startMeeting','getLocation','scanQRCode'],success:(res)=>{alert(JSON.stringify(res))}});
  
  window.wx.getLocation({type: 'gcj02', 
      success: result=>{var ls_url='/common/updateGps.asp?lng='+result.longitude+'&lat='+result.latitude; //alert(ls_url);
      			axios.post(ls_url).then(response=>{}).catch((err)=>{	})}
  });
  } //updateGPS
  
  