From b3f8789cf8bf0d934f8431b1d7b564a756576b4b Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期四, 14 八月 2025 22:18:35 +0800
Subject: [PATCH] feat: new upload file php

---
 ConfigLoader.java          |    1 
 admin_save_127.asp         |   88 ++++++
 API/v3/OrderPrice.gds      |   12 
 API/v1/SendSms.php         |   43 ++
 alipay-config.properties   |    1 
 SimpleQRCodeGenerator.java |    1 
 admin_save_27.gds          |  158 ++++++++++++
 weixin/upload_file.php     |  216 ++++++++++++++++
 weixin/upload_test.html    |  214 ++++++++++++++++
 AlipayQRCodeUtil.java      |    1 
 pom.xml                    |    1 
 AlipayQRCodeGenerator.java |    1 
 12 files changed, 725 insertions(+), 12 deletions(-)

diff --git a/API/v1/SendSms.php b/API/v1/SendSms.php
index 0694d6c..fe9cb84 100644
--- a/API/v1/SendSms.php
+++ b/API/v1/SendSms.php
@@ -100,8 +100,9 @@
 
 }
 function sendPayUrl($phone,$name,$payurl){
-    $payurl="wx.966120.com.cn/?n=".$payurl;
-     $content='銆愬箍涓滄皯鑸尰鐤椼�戠Щ鍔ㄦ敮浠樻寚寮曪細'.$name.'鎮ㄥソ锛佽鐐瑰嚮浠ヤ笅閾炬帴杩涘叆淇℃伅纭鍜屾敮浠樼晫闈€�傛牳瀵规偍鐨勫嚭杞︿俊鎭棤璇悗锛屽彲閫夋嫨鏀粯瀹濇垨鑰呭井淇℃敮浠橈細' .$payurl;
+    $paycode=$payurl;
+    $payurl="wx.966120.com.cn";
+     $content='銆愬箍涓滄皯鑸尰鐤椼�戠Щ鍔ㄦ敮浠樻寚寮曪細'.$name.'鎮ㄥソ锛佽鐐瑰嚮浠ヤ笅閾炬帴杩涘叆淇℃伅纭鍜屾敮浠樼晫闈€�傛牳瀵规偍鐨勫嚭杞︿俊鎭棤璇悗锛屽彲閫夋嫨鏀粯瀹濇垨鑰呭井淇℃敮浠橈細' .$payurl.' 鐧诲綍鐮侊細'.$paycode;
     //  echo $content;
     require './sms/SmsSend.php';
     $sms = new SmsSend('gdmhhy', 'lLsZyz3YVYKQ');
@@ -109,6 +110,27 @@
     // print_r($result);
     return $result;
     
+}
+function sendValidate($phone,$code){
+    $content='銆愬箍涓滄皯鑸尰鐤椼�戦獙璇佺爜锛�'.$code.'锛屾偍姝e湪鐧诲綍锛岃嫢闈炴湰浜烘搷浣滐紝璇峰嬁娉勯湶.';
+    require './sms/SmsSend.php';
+    $sms = new SmsSend('gdmhhy', 'lLsZyz3YVYKQ');
+    $result = $sms->sendSmsOne([['phone' => $phone, 'content' => $content]], '');
+    return $result;
+}
+function sendCallCar($phone,$UserName,$CarLicense){
+    $content='銆愬箍涓滄皯鑸尰鐤椼�戞偍棰勮鐨勬晳鎶よ溅宸茬粡鍑哄彂銆傝礋璐d汉'.$UserName.'锛岃溅鐗�'.$CarLicense.'銆傝鎮ㄧ暀鎰忓苟鎻愰槻鍋囧啋銆傛杩庡叧娉ㄢ��966120姘戣埅鍖荤枟蹇嚎鈥濆井淇℃湇鍔″彿锛屽彲鏌ョ湅鏈稛杞繍淇℃伅锛屽苟鍒嗕韩杞﹁締鐨勫疄鏃朵綅缃粰浜插弸銆�';
+    require './sms/SmsSend.php';
+    $sms = new SmsSend('gdmhhy', 'lLsZyz3YVYKQ');
+    $result = $sms->sendSmsOne([['phone' => $phone, 'content' => $content]], '');
+    return $result;
+}
+function sendPayOK($phone,$name,$m1,$d1,$m2){
+    $content='銆愬箍涓滄皯鑸尰鐤椼��'.$name.'鎮ㄥソ锛佹偍宸叉敮浠樹簡瀹氶噾'.$m1.'鍏冿紝鎴戜滑鐨勬湇鍔″洟闃熷埌杈惧嚭鍙戝湴'.$d1.'鍚庯紝灏嗘敹榻愪綑涓�'.$m2.'鍏冨悗鍐嶅嚭鍙戙�傚闇�鍙戠エ锛岃鍏虫敞鈥�966120姘戣埅鍖荤枟蹇嚎鈥濓紝浠诲姟缁撴潫鍚庡湪鈥滄垜鐨勨��--鈥滃彂绁ㄧ敵璇封�濆鐢宠銆傚鏈嶅姟鍥㈤槦宸茬粡鍑鸿溅锛岃瀹氶噾鏃犳硶閫�鍥烇紝璇风煡鎮夈�傛湁鐤戦棶娆㈣繋闅忔椂鎷ㄦ墦鏈嶅姟鐑嚎 (020) 966120锛岃阿璋紒';
+    require './sms/SmsSend.php';
+    $sms = new SmsSend('gdmhhy', 'lLsZyz3YVYKQ');
+    $result = $sms->sendSmsOne([['phone' => $phone, 'content' => $content]], '');
+    return $result;
 }
 // 璋冪敤绀轰緥锛�
 set_time_limit(0);
@@ -124,7 +146,7 @@
 	//鏀粯鎸囧紩
 	$name=empty($_REQUEST['name'])!=false ? "" : addslashes($_REQUEST['name']);		//鍐呭--濮撳悕
 	$payurl=empty($_REQUEST['payurl'])!=false ? "" : addslashes($_REQUEST['payurl']);		//鍐呭--鐭摼鎺ラ獙璇佺爜
-	$codejson=json_encode(array("name"=>$name,"payurl"=>$payurl), JSON_UNESCAPED_UNICODE);
+	// $codejson=json_encode(array("name"=>$name,"payurl"=>$payurl), JSON_UNESCAPED_UNICODE);
     $result=sendPayUrl($Phone,$name,$payurl);
     echo json_encode($result);
     return;
@@ -133,7 +155,10 @@
 	//鍑鸿溅鐭俊
 	$UserName=empty($_REQUEST['UserName'])!=false ? "" : addslashes($_REQUEST['UserName']);		//鍐呭--璐熻矗浜�
 	$CarLicense=empty($_REQUEST['CarLicense'])!=false ? "" : addslashes($_REQUEST['CarLicense']);		//鍐呭--杞︾墝
-	$codejson=json_encode(array("UserName"=>$UserName,"CarLicense"=>$CarLicense), JSON_UNESCAPED_UNICODE);
+	// $codejson=json_encode(array("UserName"=>$UserName,"CarLicense"=>$CarLicense), JSON_UNESCAPED_UNICODE);
+    $result=sendCallCar($Phone,$UserName,$CarLicense);
+    echo json_encode($result);
+    return;
 }elseif ($lateCode=="SMS_219737201") {
 	//璇勪环鐭俊
 	$payurl=empty($_REQUEST['payurl'])!=false ? "" : addslashes($_REQUEST['payurl']);		//鍐呭--鐭摼鎺ラ獙璇佺爜
@@ -144,10 +169,16 @@
 	$m1=empty($_REQUEST['m1'])!=false ? "" : addslashes($_REQUEST['m1']);		//鍐呭--鏀跺埌瀹氶噾
 	$m2=empty($_REQUEST['m2'])!=false ? "" : addslashes($_REQUEST['m2']);		//鍐呭--鏀堕綈浣欎笅閲戦
 	$d1=empty($_REQUEST['d1'])!=false ? "" : addslashes($_REQUEST['d1']);		//鍐呭--鍑哄彂鍦�
-	$codejson=json_encode(array("name"=>$name,"m1"=>$m1,"m2"=>$m2,"d1"=>$d1), JSON_UNESCAPED_UNICODE);
+	// $codejson=json_encode(array("name"=>$name,"m1"=>$m1,"m2"=>$m2,"d1"=>$d1), JSON_UNESCAPED_UNICODE);
+    $result=sendPayOK($Phone,$name,$m1,$d1,$m2);
+    echo json_encode($result);
+    return;
 }elseif ($code!=''){
 	//鍙戦�侀獙璇佺爜
-	$codejson=json_encode(array("code"=>$code), JSON_UNESCAPED_UNICODE);
+	// $codejson=json_encode(array("code"=>$code), JSON_UNESCAPED_UNICODE);
+    $result=sendValidate($Phone,$code);
+    echo json_encode($result);
+    return;
 }
 if ($Phone!='' and $codejson!='' and $lateCode!='') {
 $response = SmsDemo::sendSms($Phone,$codejson,$lateCode,$SignName);
diff --git a/API/v3/OrderPrice.gds b/API/v3/OrderPrice.gds
index 8ceb106..c08913c 100644
--- a/API/v3/OrderPrice.gds
+++ b/API/v3/OrderPrice.gds
@@ -158,7 +158,7 @@
 	
 	If StartAddress_lat=0 And errcode=0 Then
 		appUrl="https://api.map.baidu.com/geocoding/v3/"
-		args1="address="&StartAddress&"&output=json&ak=rGQBbHKGjAtVQy23OckafQkC6nNlaGmi"
+		args1="address="&StartAddress&"&output=json&ak=s4tr59feoRqyWUfRZKnmCnmCyqHKDvd8"
 		HTMLCODE= GetBody(appUrl,args1)
 		'Response.Write HTMLCODE
 		'Response.End
@@ -186,7 +186,7 @@
 	End If
 	If EndAddress_lat=0 And errcode=0 Then
 		appUrl="https://api.map.baidu.com/geocoding/v3/"
-		args1="address="&EndAddress&"&output=json&ak=rGQBbHKGjAtVQy23OckafQkC6nNlaGmi"
+		args1="address="&EndAddress&"&output=json&ak=s4tr59feoRqyWUfRZKnmCnmCyqHKDvd8"
 		HTMLCODE= GetBody(appUrl,args1)
 		'Response.Write HTMLCODE
 		'Response.End
@@ -213,7 +213,7 @@
 			
 	'鍦板尯鎶ヤ环鏂规
 	appUrl="https://api.map.baidu.com/reverse_geocoding/v3/"
-	args1="location="&Region_lat&","&Region_lng&"&output=json&latest_admin=1&ak=rGQBbHKGjAtVQy23OckafQkC6nNlaGmi"
+	args1="location="&Region_lat&","&Region_lng&"&output=json&latest_admin=1&ak=s4tr59feoRqyWUfRZKnmCnmCyqHKDvd8"
 	HTMLCODE= GetBody(appUrl,args1)
 	json	= HTMLCODE
 	'Response.Write HTMLCODE
@@ -229,7 +229,7 @@
 	If TraDistance=0 Then
 		'璺嚎瑙勫垝璺濈(鍏噷)
 		appUrl="https://api.map.baidu.com/directionlite/v1/driving"
-		args1="origin="&StartAddress_lat&","&StartAddress_lng&"&destination="&EndAddress_lat&","&EndAddress_lng&"&coord_type=wgs84&ak=rGQBbHKGjAtVQy23OckafQkC6nNlaGmi"
+		args1="origin="&StartAddress_lat&","&StartAddress_lng&"&destination="&EndAddress_lat&","&EndAddress_lng&"&coord_type=wgs84&ak=s4tr59feoRqyWUfRZKnmCnmCyqHKDvd8"
 		HTMLCODE= GetBody(appUrl,args1)
 		json	= HTMLCODE
 		
@@ -390,7 +390,7 @@
 				OrderPriceFRM = OrderPriceFRM & "+"&WaitingInt&"*"&IRWaitingCost
 				OrderPriceTXT = OrderPriceTXT&"绛夊緟璐圭敤:"&WaitingInt*IRWaitingCost&"鍏僜n"
 			End If
-			If ServiceOrdApptDate<>"" Then	'闈炲伐浣滄椂闂存湇鍔¤垂鐢�20250812锛屽懆涓�~鍛ㄤ簲鏅氫笂21鐐�30鍒嗗悗鑷虫棭涓�7鐐规暣鍓嶄负1.3鍊�
+			If ServiceOrdApptDate<>"" Then	'闈炲伐浣滄椂闂存湇鍔¤垂鐢紝鍛ㄤ竴~浜旂殑0800-2000 1.3鍊�
 				sql="select SpecialRatio from SpecialDates where SpecialDates='"&formatdatetime(ServiceOrdApptDate,2)&"'"
 				rs.open sql,objConn,1,1
 				if not rs.Eof Then
@@ -398,7 +398,7 @@
 					OrderPriceFRM = OrderPriceFRM & OrderPrice*(SpecialRatio-1)
 					OrderPriceTXT = OrderPriceTXT&"鑺傚亣鏃ユ椂闂存湇鍔¤垂鐢�:"&OrderPrice*(SpecialRatio-1)&"鍏僜n"
 					OrderPrice=OrderPrice*SpecialRatio
-				ElseIf (hour(ServiceOrdApptDate)>=21 And minute(ServiceOrdApptDate)>=30) Or hour(ServiceOrdApptDate)<7  Then
+				ElseIf (hour(ServiceOrdApptDate)<=8 Or hour(ServiceOrdApptDate)>=20)  Then
 					OrderPriceFRM = OrderPriceFRM & OrderPrice*0.3
 					OrderPriceTXT = OrderPriceTXT&"闈炲伐浣滄椂闂存湇鍔¤垂鐢�:"&OrderPrice*0.3&"鍏僜n"
 					OrderPrice=OrderPrice*1.3
diff --git a/AlipayQRCodeGenerator.java b/AlipayQRCodeGenerator.java
new file mode 100644
index 0000000..0519ecb
--- /dev/null
+++ b/AlipayQRCodeGenerator.java
@@ -0,0 +1 @@
+ 
\ No newline at end of file
diff --git a/AlipayQRCodeUtil.java b/AlipayQRCodeUtil.java
new file mode 100644
index 0000000..0519ecb
--- /dev/null
+++ b/AlipayQRCodeUtil.java
@@ -0,0 +1 @@
+ 
\ No newline at end of file
diff --git a/ConfigLoader.java b/ConfigLoader.java
new file mode 100644
index 0000000..0519ecb
--- /dev/null
+++ b/ConfigLoader.java
@@ -0,0 +1 @@
+ 
\ No newline at end of file
diff --git a/SimpleQRCodeGenerator.java b/SimpleQRCodeGenerator.java
new file mode 100644
index 0000000..0519ecb
--- /dev/null
+++ b/SimpleQRCodeGenerator.java
@@ -0,0 +1 @@
+ 
\ No newline at end of file
diff --git a/admin_save_127.asp b/admin_save_127.asp
new file mode 100644
index 0000000..5ab7118
--- /dev/null
+++ b/admin_save_127.asp
@@ -0,0 +1,88 @@
+
+<%
+'-------------------------------------------------------------鍙戠エ鐢宠
+ServiceOrdID= SafeRequest(request("ServiceOrdID"))
+DispatchOrdID=SafeRequest(request("DispatchOrdID"))
+InvoiceID=SafeRequest(request("InvoiceID"))
+ReturnID	= SafeRequest(request("ReturnID"))
+
+InvoiceType	= SafeRequest(request("InvoiceType"))	'鍙戠エ绫诲瀷
+InvoiceName	= SafeRequest(request("InvoiceName"))	'鍙戠エ鎶ご
+InvoiceMakeout		= SafeRequest(request("InvoiceMakeout"))	'鍙戠エ澶囨敞
+
+InvoiceCompanyPhone= SafeRequest(request("InvoiceCompanyPhone"))	'浼佷笟鐢佃瘽
+InvoiceCompanyID	= SafeRequest(request("InvoiceCompanyID"))	'绾崇◣璇嗗埆鍙�
+InvoiceCompanyAdd	= SafeRequest(request("InvoiceCompanyAdd"))	'浼佷笟娉ㄥ唽鍦板潃
+InvoiceCompanyBank	= SafeRequest(request("InvoiceCompanyBank"))	'浼佷笟寮�鎴烽摱琛�
+InvoiceCompanyBankNo= SafeRequest(request("InvoiceCompanyBankNo"))	'浼佷笟閾惰璐﹀彿
+InvoiceZipCode		= SafeRequest(request("InvoiceZipCode"))	'閭紪
+Invoice_strAdd		= SafeRequest(request("Invoice_strAdd"))	'閭瘎鍦板潃
+Invoice_strName		= SafeRequest(request("Invoice_strName"))	 '鑱旂郴浜�
+Invoice_strPhone	= SafeRequest(request("Invoice_strPhone"))	'鑱旂郴鐢佃瘽
+Invoice_strEmail	= SafeRequest(request("Invoice_strEmail"))	'鐢靛瓙閭
+
+InvoiceMoney		= SafeRequest(request("InvoiceMoney"))	 '鍙戠エ閲戦
+
+If InvoiceMoney="" Or InvoiceMoney="0" Then%>
+	Response.Write "寮�绁ㄩ噾棰濅笉鍙负0!!"
+	Response.End
+End If
+If InvoiceMoney="" Or InvoiceMoney="0" Or InvoiceType="" Or ServiceOrdID="" Then
+    	Response.Write "鍙傛暟閿欒!!"
+	    Response.End
+End If
+
+If InvoiceID="0" Or InvoiceID="" Then
+	sql="insert into InvoiceData (ServiceOrderIDPK, InvoiceType, InvoiceName, InvoiceMakeout, InvoiceCompanyPhone, InvoiceCompanyID, InvoiceCompanyAdd, InvoiceCompanyBank, InvoiceCompanyBankNo, InvoiceZipCode, Invoice_strAdd, Invoice_strName, Invoice_strPhone,Invoice_strEmail,InvoiceMoney,ApplyOAID) values ("&ServiceOrdID&","&InvoiceType&",'"&InvoiceName&"','"&InvoiceMakeout&"','"&InvoiceCompanyPhone&"','"&InvoiceCompanyID&"','"&InvoiceCompanyAdd&"','"&InvoiceCompanyBank&"','"&InvoiceCompanyBankNo&"','"&InvoiceZipCode&"','"&Invoice_strAdd&"','"&Invoice_strName&"','"&Invoice_strPhone&"','"&Invoice_strEmail&"',"&InvoiceMoney&","&session("adminID")&")"
+	objConn.Execute sql
+Else
+	sql="update InvoiceData set InvoiceType="&InvoiceType&",InvoiceName='"&InvoiceName&"',InvoiceMakeout='"&InvoiceMakeout&"',InvoiceCompanyPhone='"&InvoiceCompanyPhone&"',InvoiceCompanyID='"&InvoiceCompanyID&"',InvoiceCompanyAdd='"&InvoiceCompanyAdd&"',InvoiceCompanyBank='"&InvoiceCompanyBank&"',InvoiceCompanyBankNo='"&InvoiceCompanyBankNo&"',InvoiceZipCode='"&InvoiceZipCode&"',Invoice_strAdd='"&Invoice_strAdd&"',Invoice_strEmail='"&Invoice_strEmail&"',Invoice_strName='"&Invoice_strName&"',Invoice_strPhone='"&Invoice_strPhone&"',AuditStatus=0,AuditMakeout='"&AuditMakeout&"',InvoiceNo='"&InvoiceNo&"',InvoiceMoney="&InvoiceMoney&",AuditOAID="&session("adminID")&",AuditTime=getdate() where InvoiceID="&InvoiceID
+	objConn.Execute sql
+End If
+
+Call OA_Running("鐢宠鍙戠エ:"&ServiceOrdID)
+rsRollbackTrans(objConn.Errors.count)
+
+'浼佸井閫氱煡%>
+<!--#include virtual="/weixin/JsonPost_1000006.gds"-->
+<%
+Set rs = Server.CreateObject("ADODB.Recordset")
+sql="select InvoiceID from InvoiceData where  AuditStatus not in (3,4) and ServiceOrderIDPK="&ServiceOrdID
+rs.open sql,objConn,1,1
+If not rs.Eof then
+	InvoiceID	= rs("InvoiceID")
+end if
+rs.close()
+title="鏂扮殑鍙戠エ鐢宠(PC鍚庡彴)"
+description=InvoiceName&",鏈変竴涓柊鐨勫彂绁ㄧ敵璇�,璇峰嵆鏃跺鐞�"
+sql="SELECT OA_weixinID=STUFF((SELECT '|' + OA_weixinUserID from OA_User where OA_Power like '%030205%' and OA_execLevel>=1 FOR XML PATH('')), 1, 1, '')"
+rs.open sql,objConn,1,1
+If not rs.Eof then
+	touser	= rs("OA_weixinID")
+end if
+rs.close()
+'touser="liaojunliang|ylkx_vicgame"	'娴嬭瘯
+If touser<>"" And title<>"" Then
+	'寰俊OA淇℃伅涓嬪彂鎺ュ彛
+	appUrl="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token="&access_token
+	args1="{"
+	args1=args1&"""touser"": """&touser&""","	'鎴愬憳ID鍒楄〃锛堟秷鎭帴鏀惰�咃紝澶氫釜鎺ユ敹鑰呯敤鈥榺鈥欏垎闅旓紝鏈�澶氭敮鎸�1000涓級銆傜壒娈婃儏鍐碉細鎸囧畾涓篅all锛屽垯鍚戝叧娉ㄨ浼佷笟搴旂敤鐨勫叏閮ㄦ垚鍛樺彂閫� |liaojunliang
+	args1=args1&"""toparty"": """","		'閮ㄩ棬ID鍒楄〃锛屽涓帴鏀惰�呯敤鈥榺鈥欏垎闅旓紝鏈�澶氭敮鎸�100涓�傚綋touser涓篅all鏃跺拷鐣ユ湰鍙傛暟
+	args1=args1&"""totag"": """","			'鏍囩ID鍒楄〃锛屽涓帴鏀惰�呯敤鈥榺鈥欏垎闅斻�傚綋touser涓篅all鏃跺拷鐣ユ湰鍙傛暟
+	args1=args1&"""agentid"": 1000006,"			'浼佷笟搴旂敤鐨刬d锛屾暣鍨嬨�傚彲鍦ㄥ簲鐢ㄧ殑璁剧疆椤甸潰鏌ョ湅
+	args1=args1&"""msgtype"": ""news"","
+	args1=args1&"""news"": {"
+		args1=args1&"""articles"":["
+			args1=args1&"{"
+			args1=args1&"""title"": ""銆�"&title&"銆�"","
+			args1=args1&"""description"": """&description&""","
+			args1=args1&"""url"": ""https://sys.966120.com.cn/m_Invoice.gds?InvoiceID="&InvoiceID&"&ServiceOrdID="&ServiceOrdID&"&order_type=11"""
+			args1=args1&"}"  
+		args1=args1&"]"
+	args1=args1&"}"
+	args1=args1&"}"
+	call PostBody(appUrl,args1)
+End If
+Response.Write "success"
+Response.End
+%>
\ No newline at end of file
diff --git a/admin_save_27.gds b/admin_save_27.gds
new file mode 100644
index 0000000..d3f6155
--- /dev/null
+++ b/admin_save_27.gds
@@ -0,0 +1,158 @@
+<%
+
+
+'鍑鸿溅鐗╁搧鍗曞彿鐢熸垚
+Function NewDispatchMRPOrderID(OrderType,DispatchOrdID,Type1)
+	NewDispatchMRPOrderID="MRP-"&OrderType&"-"&DispatchOrdID&Type1
+End Function
+'鍑鸿溅鐗╁搧鍗曡繑鍥�
+Function DispatchMRPOrderReturn(OrderType,DispatchOrdID)
+	MRP_OrderID_Out=NewDispatchMRPOrderID(OrderType,DispatchOrdID,"Out")
+	MRP_OrderID=NewDispatchMRPOrderID(OrderType,DispatchOrdID,"In")
+	OutWarehouseID=5	'杞嚭浠�(鍑鸿溅浠诲姟)
+	InWarehouseID=2		'杞叆浠�(闆嗙洓鎬婚儴姝e父浠撲竴)
+	Set adminrs = Server.CreateObject("ADODB.Recordset")
+	sql="select MRP_OrderID from MRP_OrderManoeuvre where MRP_OrderID='"&MRP_OrderID&"' and OrderState=3"
+	adminrs.open sql,objConn,1,1
+	if adminrs.Eof Then
+		adminrs.close()
+		sql="select MRP_OrderID from MRP_OrderManoeuvre where MRP_OrderID='"&MRP_OrderID_Out&"' and OrderState=3"
+		adminrs.open sql,objConn,1,1
+		if not adminrs.Eof then
+			'鏂板缓杞粨鍗�
+			sql="insert into MRP_OrderManoeuvre (MRP_OrderID,OutWarehouseID,InWarehouseID,OrderState,OrderTime_OAid,TotalQty,OrderRemarks,AuditTime,AuditTime_OAid,OutTime,OutTime_OAid,InTime,InTime_OAid) select '"&MRP_OrderID&"',"&OutWarehouseID&","&InWarehouseID&",3,"&session("adminID")&",TotalQty,OrderRemarks,getdate(),"&session("adminID")&",getdate(),"&session("adminID")&",getdate(),"&session("adminID")&" from MRP_OrderManoeuvre where MRP_OrderID='"&MRP_OrderID_Out&"' and OrderState=3"
+			objConn.Execute sql
+			sql="insert into MRP_OrderDetail (MRP_OrderIDPK,StItmIDPK,OD_Qty,OD_QtyA,OD_Price,OD_Remarks) select '"&MRP_OrderID&"',StItmIDPK,OD_Qty,OD_QtyA,OD_Price,OD_Remarks from MRP_OrderDetail where MRP_OrderIDPK='"&MRP_OrderID_Out&"'"
+			objConn.Execute sql
+			sql="insert into MRP_Stock (StItmIDPK,StockQty,StockWarehouseID,MRP_OrderIDPK,StockTime_OAid) select StItmIDPK,-StockQty,"&OutWarehouseID&",'"&MRP_OrderID&"',"&session("adminID")&" from MRP_Stock where MRP_OrderIDPK='"&MRP_OrderID_Out&"' and StockWarehouseID="&OutWarehouseID
+			objConn.Execute sql
+			sql="insert into MRP_Stock (StItmIDPK,StockQty,StockWarehouseID,MRP_OrderIDPK,StockTime_OAid) select StItmIDPK,StockQty,"&InWarehouseID&",'"&MRP_OrderID&"',"&session("adminID")&" from MRP_Stock where MRP_OrderIDPK='"&MRP_OrderID_Out&"' and StockWarehouseID="&OutWarehouseID
+			objConn.Execute sql
+		end If
+	End If
+	adminrs.close()
+End Function
+
+Function Get_TritonshAPI(UserUUID,orderStatus,ServiceOrdID,iuid,CoName,CoPhone,orderPrice,orderSource)
+	'url="https://api.966120.com.cn/v1/cuituAPI.php"
+	'Origin="OrdID="&ServiceOrdID&"&method="&method&"&iuid="&iuid&"&uuid="&uuid
+	'HTMLCODE= GetBody(url,Origin)
+	appUrl="https://market.tritonsh.com/order/orderDeal"
+	args1="{"
+	'args1=args1&"""id"": """&uuid&""","			'瀵规柟璁㈠崟ID
+	args1=args1&"""userId"": """&iuid&""","	'瀵规柟鐢ㄦ埛ID(浠嬬粛浜篒D)
+	args1=args1&"""orderStatus"": """&orderStatus&""","			'璁㈠崟鐘舵��	0锛氬垵濮嬭鍗� , 1锛氭渶缁堣鍗曠姸鎬�
+	args1=args1&"""orderType"":0,"				'涓嬪崟绫诲瀷	0:鏈汉涓嬪崟,1:浠d汉涓嬪崟
+	If orderSource="1" Then
+		args1=args1&"""orderSource"":""浠e涓嬪崟"","
+	ElseIf orderSource="2" Then
+		args1=args1&"""orderSource"":""闈㈠闈簩缁寸爜"","
+	ElseIf  orderSource="3" Then
+		args1=args1&"""orderSource"":""鎺ㄥ箍娴锋姤"","
+	End If
+	args1=args1&"""orderUserPhone"": """&CoPhone&""","		'瀹㈡埛鎵嬫満鍙�
+	args1=args1&"""userName"": """&CoName&""","				'瀹㈡埛濮撳悕
+	args1=args1&"""orderPrice"": """&orderPrice&""","	'璁㈠崟閲戦
+	args1=args1&"""orderServiceNo"": """&ServiceOrdID&""""	'璁㈠崟鏈嶅姟鍗曞彿
+	args1=args1&"}"
+	'call PostBody(appUrl,args1)
+	'Response.Write args1&"<br>"
+	HTMLCODE= PostBody1(appUrl,args1)
+	sql="update ServiceOrder set ToUserUUID="&UserUUID&" where ServiceOrdID="&ServiceOrdID
+	objConn.Execute sql
+	sql="update UserUUID set ToServiceOrdID="&ServiceOrdID&",TritonshJson='"&HTMLCODE&"',TritonshTime=getdate() where id="&UserUUID
+	objConn.Execute sql
+	'Response.Write HTMLCODE&"<br>"
+	'Response.end
+	'HTMLCODE= GetBody(url,Origin)
+End Function
+
+DispatchOrdID			= SafeRequest(Request("DispatchOrdID"))'璋冨害鍗曞彿
+ServiceOrdID			= SafeRequest(Request("ServiceOrdID"))	'瀵瑰簲鏈嶅姟鍗曞彿
+ServiceOrdDel			= SafeRequest(Request("ServiceOrdDel"))'鏄惁鍚屾椂鍙栨秷鏈嶅姟鍙�(1鏄�,0鍚�)
+Del						= SafeRequest(Request("Del"))	'寮哄埗鍙栨秷(YES/NO)
+CancelReason			= SafeRequest(Request("CancelReason"))'鍙栨秷鍘熷洜
+CancelReasonTXT			= SafeRequest(Request("CancelReasonTXT"))'鍙栨秷鍘熷洜澶囨敞
+CancelReasonTXT			= CancelReasonTXT&"[鍙栨秷鎿嶄綔:"&OAUser(session("adminID"),"UserName")&"]"
+Source					= SafeRequest(Request("Source"))	'鍙栨秷鏉ユ簮(PC/Phone)
+If CancelReason="" Then CancelReason=0
+If ServiceOrdDel="" Then ServiceOrdDel=0
+If Source="Phone" Then SourceURL="m_"
+Set rs = Server.CreateObject("ADODB.Recordset")
+'楠岃瘉璋冨害鍗曟槸鍚﹀彲鍙栨秷
+If DispatchOrdID<>"" Then
+	If Del<>"YES" then
+		sql="select DispatchOrdState,DispatchOrd_AP_Check from DispatchOrd where DispatchOrdID="&DispatchOrdID
+		rs.open sql,objConn,1,1
+		If rs.eof Then
+			Response.Redirect "/DispatchOrder.gds?SystemMessageType=4&SMT=1"
+		Else
+			DispatchOrdState	= rs("DispatchOrdState")
+			DispatchOrd_AP_Check= rs("DispatchOrd_AP_Check")
+			If CInt(DispatchOrdState)>=4 Then
+				Response.Redirect "/"&SourceURL&"DispatchOrder.gds?DispatchOrdID="&DispatchOrdID&"&SystemMessageType=4&SMT=10"
+			ElseIf DispatchOrd_AP_Check=1 Then
+				Response.Redirect "/"&SourceURL&"DispatchOrder.gds?DispatchOrdID="&DispatchOrdID&"&SystemMessageType=4&SMT=11"
+			End if
+		End If
+		rs.close()
+	End if
+	sql="update DispatchOrd set DispatchOrdState=10,DispatchOrdStartDate=getdate(),DispatchOrdCancelReason="&CancelReason&",DispatchOrdCancelReasonTXT='"&CancelReasonTXT&"',DispatchOrd_OAName=(SELECT STUFF(( select ',' + OA_Name from DispatchOrd_Entourage,OA_User where OA_User_ID=EntourageOAid and DispatchOrdIDDt=DispatchOrdID and EntourageState<>4 order by EntourageLead desc FOR XML PATH('')), 1, 1, '') AS EntourageName),DispatchOrd_OAEntourage=(SELECT STUFF(( select ',' + vtext from DispatchOrd_Entourage,OA_User,dictionary where OA_User_ID=EntourageOAid and DispatchOrdIDDt=DispatchOrdID and EntourageState<>4 and vtitle='DispatchOrdEntourage' and vID=EntourageID order by EntourageLead desc FOR XML PATH('')), 1, 1, '') AS EntouragePost),DispatchOrdUpdateOAid="&session("adminID")&",DispatchOrdUpdateTime=getdate() where DispatchOrdID="&DispatchOrdID
+	objConn.Execute sql
+	'淇敼鐩稿叧鏈嶅姟鍗曠姸鎬�
+	If ServiceOrdID<>"" then
+		sql="select DispatchOrdID from DispatchOrd where ServiceOrdIDDt="&ServiceOrdID&" and DispatchOrdState<>10"
+		rs.open sql,objConn,1,1
+		If rs.eof Then
+			If ServiceOrdDel="1" Then
+				sql="update ServiceOrder set ServiceOrdState=4,ServiceOrd_AP_ID="&session("adminID")&",ServiceOrd_AP_Time=getdate(),ServiceOrdCancelReason="&CancelReason&",ServiceOrdCancelReasonTXT='"&CancelReasonTXT&"' where ServiceOrdID="&ServiceOrdID
+			else
+				sql="update ServiceOrder set ServiceOrdState=2,ServiceOrdStartDate=getdate(),ServiceOrdCancelReason="&CancelReason&",ServiceOrdCancelReasonTXT='"&CancelReasonTXT&"' where ServiceOrdID="&ServiceOrdID
+			End If
+			objConn.Execute sql
+		End If
+		rs.close()
+	End If
+	'閲嶇偣璁櫒褰掕繕
+	Call DispatchMRPOrderReturn(14,DispatchOrdID)
+	ReturnURL="/"&SourceURL&"DispatchOrder.gds?DispatchOrdID="&DispatchOrdID
+	Call OA_Running("鍙栨秷璋冨害鍗�:"&DispatchOrdID)
+ElseIf ServiceOrdID<>"" Then
+	If Del<>"YES" then
+		sql="select ServiceOrdState,ServiceOrd_AP_Check,ServiceOrdCoName,ServiceOrdCoPhone,ToUserUUID from ServiceOrder where ServiceOrdID="&ServiceOrdID
+		rs.open sql,objConn,1,1
+		If rs.eof Then
+			Response.Redirect "/"&SourceURL&"ServiceOrder_List.gds?SystemMessageType=4&SMT=1"
+		Else
+			ServiceOrdState	= rs("ServiceOrdState")
+			ServiceOrdCoName= rs("ServiceOrdCoName")
+			ServiceOrdCoPhone= rs("ServiceOrdCoPhone")
+			ToUserUUID		= rs("ToUserUUID")
+			If CInt(ServiceOrdState)=3 Then
+				Response.Redirect "/"&SourceURL&"ServiceOrder.gds?ServiceOrdID="&ServiceOrdID&"&SystemMessageType=4&SMT=10"
+			ElseIf ServiceOrd_AP_Check=1 Then
+				Response.Redirect "/"&SourceURL&"ServiceOrder.gds?ServiceOrdID="&ServiceOrdID&"&SystemMessageType=4&SMT=11"
+			End if
+		End If
+		rs.close()
+	End if
+	sql="update ServiceOrder set ServiceOrdState=4,ServiceOrd_AP_ID="&session("adminID")&",ServiceOrd_AP_Time=getdate(),ServiceOrdCancelReason="&CancelReason&",ServiceOrdCancelReasonTXT='"&CancelReasonTXT&"' where ServiceOrdState<>4 and ServiceOrdID="&ServiceOrdID
+	objConn.Execute sql
+	'钀ラ攢灏忕▼搴忔暟鎹洿鏂�
+	If ToUserUUID<>"0" And ToUserUUID<>"" Then 
+		sql="select top 1 id,iuid from UserUUID where id="&ToUserUUID
+		rs.open sql,objConn,1,1
+		if not rs.eof Then
+			iuid=rs("iuid")
+			Call Get_TritonshAPI(ToUserUUID,1,ServiceOrdID,iuid,ServiceOrdCoName,ServiceOrdCoPhone,0)
+		End If
+		rs.close()
+	End If
+	ReturnURL="/"&SourceURL&"ServiceOrder_List.gds?OrdState=0"
+	Call OA_Running("鍙栨秷璋冨害鍗�:"&ServiceOrdID)
+End If
+
+objConn.Execute "exec OrdDataUP "&ServiceOrdID
+rsRollbackTrans(objConn.Errors.count)
+Response.Redirect ReturnURL&"&SystemMessageType=3&SMT=8&h_menu1_1="&session("h_menu1_1")
+Response.End
\ No newline at end of file
diff --git a/alipay-config.properties b/alipay-config.properties
new file mode 100644
index 0000000..0519ecb
--- /dev/null
+++ b/alipay-config.properties
@@ -0,0 +1 @@
+ 
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..0519ecb
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1 @@
+ 
\ No newline at end of file
diff --git a/weixin/upload_file.php b/weixin/upload_file.php
new file mode 100644
index 0000000..1acba43
--- /dev/null
+++ b/weixin/upload_file.php
@@ -0,0 +1,216 @@
+<?php
+header('Content-Type: application/json; charset=utf-8');
+
+// 璁剧疆閿欒鎶ュ憡
+error_reporting(E_ALL);
+ini_set('display_errors', 1);
+
+// 鍏佽璺ㄥ煙璇锋眰锛堝鏋滈渶瑕侊級
+header('Access-Control-Allow-Origin: *');
+header('Access-Control-Allow-Methods: POST');
+header('Access-Control-Allow-Headers: Content-Type');
+
+// 妫�鏌ヨ姹傛柟娉�
+if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
+    echo json_encode([
+        'success' => false,
+        'message' => '鍙敮鎸丳OST璇锋眰'
+    ]);
+    exit;
+}
+
+// 鑾峰彇鍙傛暟
+$uploadFileName = isset($_POST['uploadFileName']) ? $_POST['uploadFileName'] : '';
+$file = isset($_FILES['file']) ? $_FILES['file'] : null;
+
+// 楠岃瘉鍙傛暟
+if (empty($uploadFileName)) {
+    echo json_encode([
+        'success' => false,
+        'message' => 'uploadFileName鍙傛暟涓嶈兘涓虹┖'
+    ]);
+    exit;
+}
+
+if (!$file || $file['error'] !== UPLOAD_ERR_OK) {
+    $errorMessage = '鏂囦欢涓婁紶澶辫触';
+    if ($file) {
+        switch ($file['error']) {
+            case UPLOAD_ERR_INI_SIZE:
+                $errorMessage = '鏂囦欢澶у皬瓒呰繃php.ini闄愬埗';
+                break;
+            case UPLOAD_ERR_FORM_SIZE:
+                $errorMessage = '鏂囦欢澶у皬瓒呰繃琛ㄥ崟闄愬埗';
+                break;
+            case UPLOAD_ERR_PARTIAL:
+                $errorMessage = '鏂囦欢鍙湁閮ㄥ垎琚笂浼�';
+                break;
+            case UPLOAD_ERR_NO_FILE:
+                $errorMessage = '娌℃湁鏂囦欢琚笂浼�';
+                break;
+            case UPLOAD_ERR_NO_TMP_DIR:
+                $errorMessage = '鎵句笉鍒颁复鏃舵枃浠跺す';
+                break;
+            case UPLOAD_ERR_CANT_WRITE:
+                $errorMessage = '鏂囦欢鍐欏叆澶辫触';
+                break;
+        }
+    }
+    echo json_encode([
+        'success' => false,
+        'message' => $errorMessage
+    ]);
+    exit;
+}
+
+// 楠岃瘉鏂囦欢绫诲瀷锛堝彲閫夛級
+$allowedTypes = ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'application/pdf', 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'];
+if (!in_array($file['type'], $allowedTypes)) {
+    echo json_encode([
+        'success' => false,
+        'message' => '涓嶆敮鎸佺殑鏂囦欢绫诲瀷锛�' . $file['type']
+    ]);
+    exit;
+}
+
+// 楠岃瘉鏂囦欢澶у皬锛堥檺鍒朵负10MB锛�
+$maxFileSize = 10 * 1024 * 1024; // 10MB
+if ($file['size'] > $maxFileSize) {
+    echo json_encode([
+        'success' => false,
+        'message' => '鏂囦欢澶у皬瓒呰繃闄愬埗锛堟渶澶�10MB锛�'
+    ]);
+    exit;
+}
+
+try {
+    // 鍒涘缓骞存湀鐩綍
+    $yearMonth = date('Ym');
+    $uploadDir = "../upload/{$yearMonth}/";
+    
+    // 濡傛灉鐩綍涓嶅瓨鍦ㄥ垯鍒涘缓
+    if (!is_dir($uploadDir)) {
+        if (!mkdir($uploadDir, 0755, true)) {
+            throw new Exception('鏃犳硶鍒涘缓鐩綍锛�' . $uploadDir);
+        }
+    }
+    
+    // 鐢熸垚鍞竴鏂囦欢鍚�
+    $fileExtension = pathinfo($file['name'], PATHINFO_EXTENSION);
+    $uniqueFileName = $uploadFileName . '_' . time() . '_' . uniqid() . '.' . $fileExtension;
+    $filePath = $uploadDir . $uniqueFileName;
+    
+    // 绉诲姩涓婁紶鐨勬枃浠�
+    if (!move_uploaded_file($file['tmp_name'], $filePath)) {
+        throw new Exception('鏂囦欢淇濆瓨澶辫触');
+    }
+    
+    // 濡傛灉鏄浘鐗囷紝鐢熸垚缂╃暐鍥�
+    $thumbnailPath = '';
+    if (in_array($file['type'], ['image/jpeg', 'image/jpg', 'image/png', 'image/gif'])) {
+        $thumbnailPath = $uploadDir . 's_' . $uniqueFileName;
+        createThumbnail($filePath, $thumbnailPath, 100, 0);
+    }
+    
+    // 杩斿洖鎴愬姛淇℃伅
+    $response = [
+        'success' => true,
+        'message' => '鏂囦欢涓婁紶鎴愬姛',
+        'data' => [
+            'originalName' => $file['name'],
+            'fileName' => $uniqueFileName,
+            'filePath' => str_replace('../', 'https://sys.966120.com.cn/', $filePath),
+            'thumbnailPath' => $thumbnailPath ? str_replace('../', 'https://sys.966120.com.cn/', $thumbnailPath) : '',
+            'fileSize' => $file['size'],
+            'fileType' => $file['type'],
+            'uploadTime' => date('Y-m-d H:i:s')
+        ]
+    ];
+    
+    echo json_encode($response);
+    
+} catch (Exception $e) {
+    echo json_encode([
+        'success' => false,
+        'message' => '涓婁紶澶辫触锛�' . $e->getMessage()
+    ]);
+}
+
+/**
+ * 鍒涘缓缂╃暐鍥�
+ * @param string $sourcePath 婧愬浘鐗囪矾寰�
+ * @param string $targetPath 鐩爣缂╃暐鍥捐矾寰�
+ * @param int $width 瀹藉害
+ * @param int $height 楂樺害锛�0琛ㄧず鎸夋瘮渚嬬缉鏀撅級
+ */
+function createThumbnail($sourcePath, $targetPath, $width, $height) {
+    $imageInfo = getimagesize($sourcePath);
+    if (!$imageInfo) {
+        return false;
+    }
+    
+    $sourceWidth = $imageInfo[0];
+    $sourceHeight = $imageInfo[1];
+    $imageType = $imageInfo[2];
+    
+    // 璁$畻缂╃暐鍥惧昂瀵�
+    if ($height == 0) {
+        $height = floor($width / $sourceWidth * $sourceHeight);
+    } elseif ($width == 0) {
+        $width = floor($height / $sourceHeight * $sourceWidth);
+    }
+    
+    // 鍒涘缓婧愬浘鍍�
+    switch ($imageType) {
+        case IMAGETYPE_GIF:
+            $sourceImage = imagecreatefromgif($sourcePath);
+            break;
+        case IMAGETYPE_JPEG:
+            $sourceImage = imagecreatefromjpeg($sourcePath);
+            break;
+        case IMAGETYPE_PNG:
+            $sourceImage = imagecreatefrompng($sourcePath);
+            break;
+        default:
+            return false;
+    }
+    
+    if (!$sourceImage) {
+        return false;
+    }
+    
+    // 鍒涘缓缂╃暐鍥�
+    $thumbnailImage = imagecreatetruecolor($width, $height);
+    
+    // 淇濇寔PNG閫忔槑搴�
+    if ($imageType == IMAGETYPE_PNG) {
+        imagealphablending($thumbnailImage, false);
+        imagesavealpha($thumbnailImage, true);
+        $transparent = imagecolorallocatealpha($thumbnailImage, 255, 255, 255, 127);
+        imagefilledrectangle($thumbnailImage, 0, 0, $width, $height, $transparent);
+    }
+    
+    // 璋冩暣鍥惧儚澶у皬
+    imagecopyresampled($thumbnailImage, $sourceImage, 0, 0, 0, 0, $width, $height, $sourceWidth, $sourceHeight);
+    
+    // 淇濆瓨缂╃暐鍥�
+    $result = false;
+    switch ($imageType) {
+        case IMAGETYPE_GIF:
+            $result = imagegif($thumbnailImage, $targetPath);
+            break;
+        case IMAGETYPE_JPEG:
+            $result = imagejpeg($thumbnailImage, $targetPath, 90);
+            break;
+        case IMAGETYPE_PNG:
+            $result = imagepng($thumbnailImage, $targetPath, 9);
+            break;
+    }
+    
+    // 閲婃斁鍐呭瓨
+    imagedestroy($sourceImage);
+    imagedestroy($thumbnailImage);
+    
+    return $result;
+}
+?> 
\ No newline at end of file
diff --git a/weixin/upload_test.html b/weixin/upload_test.html
new file mode 100644
index 0000000..7abe10e
--- /dev/null
+++ b/weixin/upload_test.html
@@ -0,0 +1,214 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>鏂囦欢涓婁紶娴嬭瘯</title>
+    <style>
+        body {
+            font-family: Arial, sans-serif;
+            max-width: 800px;
+            margin: 0 auto;
+            padding: 20px;
+        }
+        .upload-form {
+            border: 2px dashed #ccc;
+            padding: 20px;
+            text-align: center;
+            margin-bottom: 20px;
+        }
+        .upload-form:hover {
+            border-color: #999;
+        }
+        .form-group {
+            margin-bottom: 15px;
+        }
+        label {
+            display: block;
+            margin-bottom: 5px;
+            font-weight: bold;
+        }
+        input[type="text"], input[type="file"] {
+            width: 100%;
+            padding: 8px;
+            border: 1px solid #ddd;
+            border-radius: 4px;
+            box-sizing: border-box;
+        }
+        button {
+            background-color: #4CAF50;
+            color: white;
+            padding: 10px 20px;
+            border: none;
+            border-radius: 4px;
+            cursor: pointer;
+            font-size: 16px;
+        }
+        button:hover {
+            background-color: #45a049;
+        }
+        button:disabled {
+            background-color: #cccccc;
+            cursor: not-allowed;
+        }
+        .result {
+            margin-top: 20px;
+            padding: 15px;
+            border-radius: 4px;
+        }
+        .success {
+            background-color: #d4edda;
+            border: 1px solid #c3e6cb;
+            color: #155724;
+        }
+        .error {
+            background-color: #f8d7da;
+            border: 1px solid #f5c6cb;
+            color: #721c24;
+        }
+        .progress {
+            width: 100%;
+            height: 20px;
+            background-color: #f0f0f0;
+            border-radius: 10px;
+            overflow: hidden;
+            margin-top: 10px;
+        }
+        .progress-bar {
+            height: 100%;
+            background-color: #4CAF50;
+            width: 0%;
+            transition: width 0.3s ease;
+        }
+        .file-info {
+            margin-top: 10px;
+            font-size: 14px;
+            color: #666;
+        }
+    </style>
+</head>
+<body>
+    <h1>鏂囦欢涓婁紶娴嬭瘯</h1>
+    
+    <div class="upload-form">
+        <form id="uploadForm" enctype="multipart/form-data">
+            <div class="form-group">
+                <label for="uploadFileName">鏂囦欢鍚嶅墠缂�锛�</label>
+                <input type="text" id="uploadFileName" name="uploadFileName" placeholder="渚嬪锛歵est123" required>
+            </div>
+            
+            <div class="form-group">
+                <label for="file">閫夋嫨鏂囦欢锛�</label>
+                <input type="file" id="file" name="file" required>
+                <div class="file-info">
+                    鏀寔鐨勬枃浠剁被鍨嬶細JPG, PNG, GIF, PDF, DOC, DOCX<br>
+                    鏈�澶ф枃浠跺ぇ灏忥細10MB
+                </div>
+            </div>
+            
+            <button type="submit" id="submitBtn">涓婁紶鏂囦欢</button>
+        </form>
+        
+        <div class="progress" id="progress" style="display: none;">
+            <div class="progress-bar" id="progressBar"></div>
+        </div>
+    </div>
+    
+    <div id="result"></div>
+
+    <script>
+        document.getElementById('uploadForm').addEventListener('submit', function(e) {
+            e.preventDefault();
+            
+            const formData = new FormData();
+            const uploadFileName = document.getElementById('uploadFileName').value;
+            const file = document.getElementById('file').files[0];
+            
+            if (!uploadFileName || !file) {
+                showResult('璇峰~鍐欐枃浠跺悕鍓嶇紑骞堕�夋嫨鏂囦欢', false);
+                return;
+            }
+            
+            formData.append('uploadFileName', uploadFileName);
+            formData.append('file', file);
+            
+            // 鏄剧ず杩涘害鏉�
+            document.getElementById('progress').style.display = 'block';
+            document.getElementById('submitBtn').disabled = true;
+            
+            // 妯℃嫙杩涘害
+            let progress = 0;
+            const progressInterval = setInterval(() => {
+                progress += Math.random() * 10;
+                if (progress > 90) progress = 90;
+                document.getElementById('progressBar').style.width = progress + '%';
+            }, 100);
+            
+            fetch('upload_file.php', {
+                method: 'POST',
+                body: formData
+            })
+            .then(response => response.json())
+            .then(data => {
+                clearInterval(progressInterval);
+                document.getElementById('progressBar').style.width = '100%';
+                
+                setTimeout(() => {
+                    document.getElementById('progress').style.display = 'none';
+                    document.getElementById('submitBtn').disabled = false;
+                    
+                    if (data.success) {
+                        showResult(`
+                            <h3>涓婁紶鎴愬姛锛�</h3>
+                            <p><strong>鍘熷鏂囦欢鍚嶏細</strong>${data.data.originalName}</p>
+                            <p><strong>淇濆瓨鏂囦欢鍚嶏細</strong>${data.data.fileName}</p>
+                            <p><strong>鏂囦欢澶у皬锛�</strong>${formatFileSize(data.data.fileSize)}</p>
+                            <p><strong>鏂囦欢绫诲瀷锛�</strong>${data.data.fileType}</p>
+                            <p><strong>涓婁紶鏃堕棿锛�</strong>${data.data.uploadTime}</p>
+                            <p><strong>鏂囦欢璺緞锛�</strong><a href="${data.data.filePath}" target="_blank">${data.data.filePath}</a></p>
+                            ${data.data.thumbnailPath ? `<p><strong>缂╃暐鍥撅細</strong><a href="${data.data.thumbnailPath}" target="_blank">${data.data.thumbnailPath}</a></p>` : ''}
+                        `, true);
+                    } else {
+                        showResult('涓婁紶澶辫触锛�' + data.message, false);
+                    }
+                }, 500);
+            })
+            .catch(error => {
+                clearInterval(progressInterval);
+                document.getElementById('progress').style.display = 'none';
+                document.getElementById('submitBtn').disabled = false;
+                showResult('缃戠粶閿欒锛�' + error.message, false);
+            });
+        });
+        
+        function showResult(message, isSuccess) {
+            const resultDiv = document.getElementById('result');
+            resultDiv.innerHTML = message;
+            resultDiv.className = 'result ' + (isSuccess ? 'success' : 'error');
+        }
+        
+        function formatFileSize(bytes) {
+            if (bytes === 0) return '0 Bytes';
+            const k = 1024;
+            const sizes = ['Bytes', 'KB', 'MB', 'GB'];
+            const i = Math.floor(Math.log(bytes) / Math.log(k));
+            return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
+        }
+        
+        // 鏂囦欢閫夋嫨鏃舵樉绀烘枃浠朵俊鎭�
+        document.getElementById('file').addEventListener('change', function(e) {
+            const file = e.target.files[0];
+            if (file) {
+                const fileInfo = document.querySelector('.file-info');
+                fileInfo.innerHTML = `
+                    宸查�夋嫨鏂囦欢锛�${file.name}<br>
+                    鏂囦欢澶у皬锛�${formatFileSize(file.size)}<br>
+                    鏂囦欢绫诲瀷锛�${file.type}<br>
+                    鏀寔鐨勬枃浠剁被鍨嬶細JPG, PNG, GIF, PDF, DOC, DOCX<br>
+                    鏈�澶ф枃浠跺ぇ灏忥細10MB
+                `;
+            }
+        });
+    </script>
+</body>
+</html> 
\ No newline at end of file

--
Gitblit v1.9.1