From b8349bc19da36ab153c5466db7d089888a89f955 Mon Sep 17 00:00:00 2001
From: wanglizhong <wlz>
Date: 星期一, 21 四月 2025 21:35:34 +0800
Subject: [PATCH] feat: 更新开单人、跟单人及比例

---
 admin_save.gds                             |   72 ++++++++
 API/v3/OrderPrice.gds                      |   18 +
 sql/创建 ServiceOrderCommissionDetails 表.sql |   19 ++
 DispatchOrder.gds                          |  307 ++++++++++++++++++++++++++++++++++
 Report_DispatchDetailed_Data.php           |   76 ++++++++
 5 files changed, 485 insertions(+), 7 deletions(-)

diff --git a/API/v3/OrderPrice.gds b/API/v3/OrderPrice.gds
index e0e70a8..e1f8e90 100644
--- a/API/v3/OrderPrice.gds
+++ b/API/v3/OrderPrice.gds
@@ -306,18 +306,28 @@
 			'	IRPrice=99
 			'	IRlimit1=5
 			'	IRDtPrice=6
-			elseIf StartArea="瓒婄鍖�" Or StartArea="鑽旀咕鍖�" Or StartArea="娴风彔鍖�" Or StartArea="澶╂渤鍖�" Or StartArea="鐣鍖�" Or StartArea="榛勫煍鍖�"  Or StartArea="鐧戒簯鍖�" Then
+			elseIf StartArea="瓒婄鍖�" Or StartArea="鑽旀咕鍖�" Or StartArea="娴风彔鍖�" Or StartArea="澶╂渤鍖�"  Or StartArea="榛勫煍鍖�"  Or StartArea="鐧戒簯鍖�" Then
 				IRPrice=169
 				IRlimit1=5
 				IRDtPrice=6
+			elseif StartArea="鐣鍖�" Then
+				IRPrice=219
+				IRlimit1=5
+				IRDtPrice=6
 			ElseIf StartArea="鑺遍兘鍖�" Then
-				IRPrice=319
+				IRPrice=169
 				IRlimit1=5
 				IRDtPrice=6
-			ElseIf StartArea="澧炲煄鍖�" Then
-				IRPrice=359
+			ElseIf StartArea="澧炲煄鍖�" And  Isluxury="0" Then
+				IRPrice=99
 				IRlimit1=5
 				IRDtPrice=6
+				IsOrdinary="1"
+			Elseif StartArea="澧炲煄鍖�" And  Isluxury="1" Then
+				IRPrice=99
+				IRlimit1=5
+				IRDtPrice=6
+				IsOrdinary="1"
 			ElseIf StartArea="浠庡寲鍖�" Then
 				IRPrice=359
 				IRlimit1=5
diff --git a/DispatchOrder.gds b/DispatchOrder.gds
index 06ba197..2e4289f 100644
--- a/DispatchOrder.gds
+++ b/DispatchOrder.gds
@@ -876,6 +876,289 @@
 
 										
 							</div>
+							<div class="field">
+								<!-- 寮�鍗曚汉 -->
+								<%
+								EntourageID_OpenUser = "-8"
+								departmentID_OpenUser = "9"
+								OpenUserID = ""
+								OpenUserName = ""
+								OpenUserRatio = ""
+								OpenerAndFollowerEnableModify = False
+								if isDepartment("020140")=1 then
+									OpenerAndFollowerEnableModify=True
+								End If
+
+								If DispatchOrdID<>"" Then
+									openSql="select * from ServiceOrderCommissionDetails where ServiceOrderID="&DispatchOrdID&" and PersonType='Opener'"
+									rs.open openSql,objConn,1,1
+									If not rs.Eof Then
+									OpenUserID = rs("PersonID")
+									OpenUserName = rs("PersonName")
+									OpenUserRatio = rs("CommissionRatio")
+									End If
+									rs.close()
+								End If
+								%>
+								
+								<div class="label" style="float: left;margin-left: 0px;"><label for="input-small">寮�鍗曚汉:</label></div>
+								<div class="input" style="float:left;margin-left: 70px;">
+									<input id="Entourage_<%=EntourageID_OpenUser%>" name="OpenUserID" type="hidden" value="<%=OpenUserID%>">
+									<input type="text" id="EntourageName_<%=EntourageID_OpenUser%>" name="OpenUserName" <% if OpenerAndFollowerEnableModify=False Then%> disabled <% end If%> class="small" <%If OpenUserID="" Or OpenerAndFollowerEnableModify=True Then%>onclick="javascript:JS_EntourageOpen('<%=EntourageID_OpenUser%>','-<%=departmentID_OpenUser%>');"<%End If%> style="width:138px;" value="<%=OpenUserName%>" readonly="true">
+								</div>
+								<%
+									followerCount = 0
+									showFollower = False
+									If DispatchOrdID<>"" Then
+										followerSqlCount="select count(1) from ServiceOrderCommissionDetails where ServiceOrderID="&DispatchOrdID&" and PersonType='Follower'"
+										rs.open followerSqlCount,objConn,1,1
+										If Not rs.EOF Then
+											' 鑾峰彇鏌ヨ缁撴灉
+											followerCount = rs.Fields(0).Value
+											if followerCount>0 then
+												showFollower = True
+											else
+												showFollower = False
+											end if
+										Else
+											' 濡傛灉璁板綍闆嗕负绌猴紝灏嗙粨鏋滆涓� 0
+											followerCount = 0
+											showFollower = False
+										End If
+										rs.close()
+									End If
+									EditFollower=True
+									showTopFollowerAdd=True
+									if showFollower=True then
+										showTopFollowerAdd=False
+									End If
+									if OpenerAndFollowerEnableModify=False Then
+										EditFollower=False
+										showTopFollowerAdd=False
+									End If
+									
+									
+
+								%>
+								
+								<div class="label" style="float: left;margin-left: 226px;"><label for="input-small">鎻愭垚姣斾緥(%):</label></div>
+								<div class="input" style="float:left;margin-left: 86px;">								
+									<input type="text" id="OpenUserRatio" name="OpenUserRatio" <% if EditFollower=False Then%> disabled <% end If%> value="<%=OpenUserRatio%>" class="small" style="width:50px;">
+								</div>
+								<div class="input" style="float:left;margin-left: 10px;">
+								<button class="ui-state-default" <% If showTopFollowerAdd=False then %> style='display:none' <% End If%> id="inputTopAddFollower" onclick="return showFollower();">娣诲姞璺熷崟浜�</button>
+								</div>
+								</div>
+							
+								<div class="field" id="followerDiv" <% If showFollower<>True  then %> style="display:none;" <% end if%>>
+									<!-- 璺熷崟浜� -->
+									<input type="hidden" id="hidFollowerCount" name="FollowersCount" value="<%=followerCount%>"/>
+									<div class="label" style="float: left;margin-left: 10px;"><label for="input-small">璺熷崟浜�:</label></div>
+									<div class="input" style="float:left;margin-left: 70px;">
+										<div id="FollowersList">
+											<%
+											FollowerCount = 1
+											EntourageID_Follower = "-9"
+											departmentID_Follower = "9"			
+											if DispatchOrdID<>"" then							
+												followerSql="select * from ServiceOrderCommissionDetails where ServiceOrderID="&DispatchOrdID&" and PersonType='Follower'"
+												rs.open followerSql,objConn,1,1
+												FollowerIndex=1
+												do while not rs.Eof
+													FollowerID = rs("PersonID")
+													FollowerName = rs("PersonName")
+													FollowerRatio = rs("CommissionRatio")
+
+											%>
+											<div class="follower-item">
+												<input  name="FollowerID_<%=FollowerIndex%>" id="FollowerId_<%=FollowerIndex%>" type="hidden" value="<%=FollowerID%>">
+												<input type="text" name="FollowerName_<%=FollowerIndex%>"  <% if EditFollower=False Then %> disabled <% End If%> id="FollowerName_<%=FollowerIndex%>" class="small" <%If FollowerID="" Or isDepartment("020140")=1 Then%>onclick="javascript:JS_EntourageOpen('<%=EntourageID_Follower%>_<%=FollowerCount%>','-<%=departmentID_Follower%>');"<%End If%> style="width:138px;" value="<%=FollowerName%>" readonly="true">
+												<div class="label" style="float: left;margin-left: 226px;"><label for="input-small">鎻愭垚姣斾緥(%):</label></div>
+												<div class="input" style="float:left;margin-left: 87px;">
+													<input type="text" id="FollowerRatio_<%=FollowerIndex%>"  <% if EditFollower=False Then %> disabled <% End If%> name="FollowerRatio_<%=FollowerIndex%>" class="small" style="width:50px;" value="<%=FollowerRatio%>" />
+												</div>
+												<div class="input" style="float:left;margin-left: 10px;"> 
+													<button <% if EditFollower=False Then %> style="display:none" <% End If%> onclick="return removeFollower();">鍒犻櫎</button>
+												</div>
+											</div>
+											<%
+												FollowerIndex=FollowerIndex+1
+												rs.movenext
+												loop
+												rs.close()
+											End If
+											%>
+										</div>
+										<button  <% if EditFollower=False Then %> style="display:none" <% End If%> class="ui-state-default" onclick="return addFollower()">娣诲姞璺熷崟浜�</button>
+									</div>
+									
+								</div>
+								<style>
+									/* 鍏朵粬宸叉湁鏍峰紡... */
+									.follower-item {
+										margin-bottom: 10px; /* 姣忎釜璺熷崟浜洪」涔嬮棿鐨勯棿璺� */
+										clear: both; /* 娓呴櫎娴姩 */
+										overflow: hidden; /* 澶勭悊娴姩鍏冪礌 */
+									}
+									.follower-item input {
+										margin-right: 10px; /* 杈撳叆妗嗕箣闂寸殑闂磋窛 */
+									}
+								</style>
+							<script LANGUAGE="javascript">
+							function showFollower(){		
+								document.getElementById("followerDiv").style.display="";
+								document.getElementById("inputTopAddFollower").style.display="none";
+								addFollower()
+								return false;
+								
+							}
+							function checkOpenerAndFollower(){
+								// 鑾峰彇寮�鍗曚汉淇℃伅
+								var openerNameInput = document.getElementById("EntourageName_<%=EntourageID_OpenUser%>");
+								var openerName = openerNameInput.value;
+								var openerRatioInput = document.getElementById("OpenUserRatio");
+								var openerRatio = openerRatioInput.value;
+
+								// 妫�娴嬪紑鍗曚汉濮撳悕鏄惁涓虹┖
+								//if (openerName === "") {
+								//	alert("寮�鍗曚汉濮撳悕涓嶈兘涓虹┖");
+								//	return false;
+								//}
+
+								// 妫�娴嬪紑鍗曚汉鎻愭垚姣斾緥鏄惁涓虹┖
+								if (openerName !="" && openerRatio === "") {
+									alert("寮�鍗曚汉鎻愭垚姣斾緥涓嶈兘涓虹┖");
+									return false;
+								}
+
+								// 瀛樺偍璺熷崟浜哄鍚嶅拰鎻愭垚姣斾緥
+								var followerNames = [];
+								var followerRatios = [];
+								var followersList = document.getElementById('FollowersList');
+								var followerItems = followersList.getElementsByClassName('follower-item');
+
+								// 閬嶅巻璺熷崟浜猴紝鏀堕泦濮撳悕鍜屾彁鎴愭瘮渚嬪苟杩涜妫�娴�
+								for (var i = 0; i < followerItems.length; i++) {
+									var followerNameInput = followerItems[i].querySelector('input[name^="FollowerName_"]');
+									var followerName = followerNameInput.value;
+									var followerRatioInput = followerItems[i].querySelector('input[name^="FollowerRatio_"]');
+									var followerRatio = followerRatioInput.value;
+
+									// 妫�娴嬭窡鍗曚汉濮撳悕鏄惁涓虹┖
+									if (followerName === "") {
+										alert("璺熷崟浜哄鍚嶄笉鑳戒负绌�");
+										return false;
+									}
+
+									// 妫�娴嬭窡鍗曚汉鎻愭垚姣斾緥鏄惁涓虹┖
+									if (followerRatio === "") {
+										alert("璺熷崟浜烘彁鎴愭瘮渚嬩笉鑳戒负绌�");
+										return false;
+									}
+
+									followerNames.push(followerName);
+									followerRatios.push(parseFloat(followerRatio));
+								}
+
+								// 灏嗗紑鍗曚汉鎻愭垚姣斾緥杞崲涓烘诞鐐规暟
+								openerRatio = parseFloat(openerRatio);
+
+								// 妫�娴嬮�昏緫 1: 寮�鍗曚汉涓庤窡鍗曚汉姣斾緥鍔犺捣涓嶈兘瓒呰繃 100
+								var totalRatio = openerRatio;
+								for (var j = 0; j < followerRatios.length; j++) {
+									totalRatio += followerRatios[j];
+								}
+								if (totalRatio > 100) {
+									alert("寮�鍗曚汉涓庤窡鍗曚汉鎻愭垚姣斾緥鎬诲拰涓嶈兘瓒呰繃 100%");
+									return false;
+								}
+
+								// 妫�娴嬮�昏緫 2: 寮�鍗曚汉涓庤窡鍗曚汉涓嶈鍑虹幇閲嶅
+								if (followerNames.includes(openerName)) {
+									alert("寮�鍗曚汉涓庤窡鍗曚汉涓嶈兘閲嶅");
+									return false;
+								}
+
+								// 妫�娴嬮�昏緫 3: 澶氫釜璺熷崟浜轰箣闂翠篃涓嶈鍑虹幇閲嶅
+								var uniqueFollowerNames = [];
+								for (var k = 0; k < followerNames.length; k++) {
+									if (uniqueFollowerNames.includes(followerNames[k])) {
+										alert("璺熷崟浜轰箣闂翠笉鑳介噸澶�");
+										return false;
+									}
+									uniqueFollowerNames.push(followerNames[k]);
+								}
+
+								return true;
+							}
+							function addFollower() {
+								
+								var followersList = document.getElementById('FollowersList');
+								var newFollower = document.createElement('div');
+								newFollower.className = 'follower-item';
+								var followerCount = followersList.children.length + 1;
+								newFollower.innerHTML = `
+									<input id="Entourage_<%=EntourageID_Follower%>_${followerCount}" name="FollowerID_${followerCount}" type="hidden" value="">
+									<input type="text" id="EntourageName_<%=EntourageID_Follower%>_${followerCount}" name="FollowerName_${followerCount}" class="small" onclick="javascript:JS_EntourageOpen('<%=EntourageID_Follower%>_${followerCount}','-<%=departmentID_Follower%>');" style="width:138px;" value="" readonly="true">
+									<div class="label" style="float: left;margin-left: 226px;"><label for="input-small">鎻愭垚姣斾緥(%):</label></div>
+									<div class="input" style="float:left;margin-left: 87px;">
+										<input type="text" id="FollowerRatio_${followerCount}" name="FollowerRatio_${followerCount}" class="small" style="width:50px;">
+									</div>
+									<div class="input" style="float:left;margin-left: 10px;"> 
+										<button onclick="return removeFollower();">鍒犻櫎</button>
+									</div>
+								`;
+								followersList.appendChild(newFollower);
+								addFollowerCount(1);
+								return false;
+							}
+							function removeFollower(index){
+								var followersList = document.getElementById('FollowersList');
+							
+								var followerItems = followersList.getElementsByClassName('follower-item');
+								// 濡傛灉浼犲叆浜� index 鍙傛暟锛屽垹闄ゆ寚瀹氱储寮曠殑鍏冪礌锛涘惁鍒欏垹闄ゆ渶鍚庝竴涓厓绱�
+								var elementToRemove = index !== undefined ? followerItems[index] : followersList.lastElementChild;
+								if (elementToRemove) {
+									elementToRemove.remove();
+								}
+								followersList = document.getElementById('FollowersList');
+								let len=followersList.children.length;
+								
+								// 鏇存柊鍓╀綑鍏冪礌鐨� name 灞炴�у拰绱㈠紩
+								var newFollowerCount = 1;
+								for (var i = 0; i < len; i++) {
+									var item = followerItems[i];
+									var followerIdInput = item.querySelector('input[name^="FollowerID_"]');
+									var followerNameInput = item.querySelector('input[name^="FollowerName_"]');
+									var followerRatioInput = item.querySelector('input[name^="FollowerRatio_"]');
+									if (followerIdInput) {
+										followerIdInput.name = `FollowerID_${newFollowerCount}`;
+										followerIdInput.id = `FollowerId_${newFollowerCount}`;
+									}
+									if (followerNameInput) {
+										followerNameInput.name = `FollowerName_${newFollowerCount}`;
+										followerNameInput.id = `FollowerName_${newFollowerCount}`;
+									}
+									if (followerRatioInput) {
+										followerRatioInput.name = `FollowerRatio_${newFollowerCount}`;
+										followerRatioInput.id = `FollowerRatio_${newFollowerCount}`;
+									}
+									newFollowerCount++;
+								}
+								if(followersList.children.length==0){
+									document.getElementById("followerDiv").style.display="none";
+									document.getElementById("inputTopAddFollower").style.display="";
+								}
+								addFollowerCount(-1);
+								return false;
+							}
+							function addFollowerCount(val){
+								var hid=document.getElementById("hidFollowerCount");
+								var oldv=hid.value;
+								hid.value=parseInt(oldv)+val;
+							}
+							
+							</script>
 							<%If isDepartment("070127")=1 Then%>
 							<div class="field">
 										<%'涓昏浼佸井瀹㈡湇
@@ -1302,6 +1585,10 @@
 					<script LANGUAGE="javascript">
 						//淇濆瓨璋冨害鍗�(鏂板)
 						function form1_submit24_1(){
+							let checkResult=checkOpenerAndFollower();
+							if(!checkResult){
+								return;
+							}
 							DispatchOrdPerfomance=document.getElementById('DispatchOrdPerfomance').value; //缁╂晥璁′环
 							ServiceOrdTraTxnPrice=document.getElementById('ServiceOrdTraTxnPrice').value; //鎴愪氦浠�
 							//if ((DispatchOrdPerfomance=='0' || DispatchOrdPerfomance=='') && ServiceOrdTraTxnPrice!='0')
@@ -1322,6 +1609,10 @@
 						}
 						//淇濆瓨璋冨害鍗�(淇敼)
 						function form1_submit25_1(){
+							let checkResult=checkOpenerAndFollower();
+							if(!checkResult){
+								return;
+							}
 							DispatchOrdPerfomance=document.getElementById('DispatchOrdPerfomance').value; //缁╂晥璁′环
 							ServiceOrdTraTxnPrice=document.getElementById('ServiceOrdTraTxnPrice').value; //鎴愪氦浠�
 							if(document.getElementById("RV_PointE_TXT")!=null){
@@ -1350,6 +1641,10 @@
 						}
 						//涓嬪彂璋冨害鍗�(鏂板)
 						function form1_submit24_2(){
+							let checkResult=checkOpenerAndFollower();
+							if(!checkResult){
+								return;
+							}
 							DispatchOrdPerfomance=document.getElementById('DispatchOrdPerfomance').value; //缁╂晥璁′环
 							ServiceOrdTraTxnPrice=document.getElementById('ServiceOrdTraTxnPrice').value; //鎴愪氦浠�
 							//if ((DispatchOrdPerfomance=='0' || DispatchOrdPerfomance=='') && ServiceOrdTraTxnPrice!='0')
@@ -1370,6 +1665,10 @@
 						}
 						//涓嬪彂璋冨害鍗�(淇敼)
 						function form1_submit25_2(){
+							let checkResult=checkOpenerAndFollower();
+							if(!checkResult){
+								return;
+							}
 							DispatchOrdPerfomance=document.getElementById('DispatchOrdPerfomance').value; //缁╂晥璁′环
 							ServiceOrdTraTxnPrice=document.getElementById('ServiceOrdTraTxnPrice').value; //鎴愪氦浠�
 							//if ((DispatchOrdPerfomance=='0' || DispatchOrdPerfomance=='') && ServiceOrdTraTxnPrice!='0')
@@ -1390,6 +1689,10 @@
 						}
 						//瀹℃牳閫氳繃璋冨害鍗�(淇敼)
 						function form1_submit28_1(){
+							let checkResult=checkOpenerAndFollower();
+							if(!checkResult){
+								return;
+							}
 							DispatchOrdPerfomance=document.getElementById('DispatchOrdPerfomance').value; //缁╂晥璁′环
 							ServiceOrdTraTxnPrice=document.getElementById('ServiceOrdTraTxnPrice').value; //鎴愪氦浠�
 							//if ((DispatchOrdPerfomance=='0' || DispatchOrdPerfomance=='') && ServiceOrdTraTxnPrice!='0')
@@ -1413,6 +1716,10 @@
 						}
 						//瀹℃牳涓嶉�氳繃璋冨害鍗�(淇敼)
 						function form1_submit28_2(){
+							let checkResult=checkOpenerAndFollower();
+							if(!checkResult){
+								return;
+							}
 						if(confirm("纭畾瀹℃牳涓嶉�氳繃璋冨害鍗�?"))
 							{
 								document.getElementById("MessageContents_form1").value=document.getElementById("MessageContents").value;
diff --git a/Report_DispatchDetailed_Data.php b/Report_DispatchDetailed_Data.php
index d0e35f7..c44f2d0 100644
--- a/Report_DispatchDetailed_Data.php
+++ b/Report_DispatchDetailed_Data.php
@@ -324,6 +324,41 @@
 	";
 	//$sql=",isRespirator=(select count(id) from ServiceOrd_Condition where ConditionID=4 and ServiceOrdCoID=ServiceOrdID)"
 }
+/**
+ * 鏍规嵁 DispatchOrdID 鏌ユ壘寮�鍗曚汉鍙婅窡鍗曚汉鍒楄〃
+ * 
+ * @param int $DispatchOrdID 璋冨害鍗� ID
+ * @param object $conn 鏁版嵁搴撹繛鎺ュ璞�
+ * @return array 鍖呭惈寮�鍗曚汉鍙婅窡鍗曚汉淇℃伅鐨勬暟缁�
+ */
+function getDispatchOrderStaff($DispatchOrdID, $conn) {
+    $staffList = [];
+
+    // 鏌ヨ寮�鍗曚汉淇℃伅
+    $sqlDispatcher = "select PersonName,CommissionRatio from ServiceOrderCommissionDetails where ServiceOrderID='$DispatchOrdID' and PersonType='Opener'";
+                      
+    $dataDispatcher = sqlsrv_query($conn, $sqlDispatcher);
+    if ($dataDispatcher && sqlsrv_has_rows($dataDispatcher)) {
+        $rsDispatcher = sqlsrv_fetch_array($dataDispatcher);
+        $staffList['Opener'] = $rsDispatcher['PersonName'];
+        $staffList['OpenerCommissionRatio'] = $rsDispatcher['CommissionRatio'];
+    }
+
+    // 鏌ヨ璺熷崟浜哄垪琛�
+    $sqlEntourage = "select PersonName,CommissionRatio from ServiceOrderCommissionDetails where ServiceOrderID='$DispatchOrdID' and PersonType='Follower'";
+    $dataEntourage = sqlsrv_query($conn, $sqlEntourage);
+    if ($dataEntourage) {
+        $entourageList = [];
+		$i=1;
+        while ($rsEntourage = sqlsrv_fetch_array($dataEntourage)) {
+            $entourageList[$i]["Follower"] = $rsEntourage['PersonName'];
+            $entourageList[$i]["FollowerRatio"] = $rsEntourage['CommissionRatio'];
+        }
+        $staffList['entourage'] = $entourageList;
+    }
+
+    return $staffList;
+}
 //echo $total_sql;exit;
 if ($is_CSV!=1){
 	//璁$畻鎬婚〉鏁�
@@ -341,12 +376,12 @@
 	$sqlPage="" ;
 }
 $sql = "select * $Additional_sql from ($Result_sql) sqlData ".$sqlPage." order by sqlData.n" ;
-//echo $sql;exit;
+// echo $sql;exit;
 $data = sqlsrv_query($conn,$sql);
 if($data == true){
 	$FormArray=array();
 	//琛ㄥご
-	$FormArray[0]=array("搴忓彿","鏈嶅姟鍗曞彿","璋冨害鍗曞彿","绾у埆","鍒嗗尯","棰勭害绫诲瀷","璋冨害鍗曠姸鎬�","鏃ユ湡","鏃堕棿","鐝","鑱旂郴浜�","鑱旂郴鐢佃瘽","鎮h�呭鍚�","閿�鍞�","浠嬬粛浜�","瀹㈡湇","璋冨害","鏉ユ簮","鏄惁浼佸井鎴愪氦","涓昏浼佸井瀹㈡湇","鍏朵粬浼佸井瀹㈡湇","鎯呮櫙缂栧彿","浼佸井缁╂晥","鎬婚儴涓嬪彂","鏀彺鎬婚儴","鎵垮寘缁�","鍖哄煙","绫诲瀷","鍑哄彂鐪佷唤","鍑哄彂甯�","鍑哄彂鍖�","杞嚭鍖婚櫌","杞嚭绉戝","杞嚭搴婁綅","杞叆鐪佷唤","杞叆甯�","杞叆鍖�","杞叆鍖婚櫌","杞叆绉戝","鎬绘垚浜や环","绯荤粺鎶ヤ环鍙傝��","绛夊緟璐�","鎷呮灦璐�","灞呭ICU璐�","璺濈(鍏噷)","鏀粯鏂瑰紡","浣跨敤鍛煎惛鏈�","杞︾墝","鍑鸿溅鎴愬憳","鍑鸿溅宀椾綅","鍖绘姢鍑鸿溅鏃堕棿(鍒嗛挓)");
+	$FormArray[0]=array("搴忓彿","鏈嶅姟鍗曞彿","璋冨害鍗曞彿","绾у埆","鍒嗗尯","棰勭害绫诲瀷","璋冨害鍗曠姸鎬�","鏃ユ湡","鏃堕棿","鐝","鑱旂郴浜�","鑱旂郴鐢佃瘽","鎮h�呭鍚�","閿�鍞�","浠嬬粛浜�","瀹㈡湇","璋冨害","鏉ユ簮","鏄惁浼佸井鎴愪氦","涓昏浼佸井瀹㈡湇","鍏朵粬浼佸井瀹㈡湇","鎯呮櫙缂栧彿","浼佸井缁╂晥","鎬婚儴涓嬪彂","鏀彺鎬婚儴","鎵垮寘缁�","鍖哄煙","绫诲瀷","鍑哄彂鐪佷唤","鍑哄彂甯�","鍑哄彂鍖�","杞嚭鍖婚櫌","杞嚭绉戝","杞嚭搴婁綅","杞叆鐪佷唤","杞叆甯�","杞叆鍖�","杞叆鍖婚櫌","杞叆绉戝","鎬绘垚浜や环","绯荤粺鎶ヤ环鍙傝��","绛夊緟璐�","鎷呮灦璐�","灞呭ICU璐�","璺濈(鍏噷)","鏀粯鏂瑰紡","浣跨敤鍛煎惛鏈�","杞︾墝","鍑鸿溅鎴愬憳","鍑鸿溅宀椾綅","鍖绘姢鍑鸿溅鏃堕棿(鍒嗛挓)","寮�鍗曚汉","寮�鍗曚汉鎻愭垚姣斾緥","璺熷崟浜�","璺熷崟浜烘彁鎴愭瘮渚�","璺熷崟浜�","璺熷崟浜烘彁鎴愭瘮渚�","璺熷崟浜�","璺熷崟浜烘彁鎴愭瘮渚�");
 	if ($is_CSV==1){array_push($FormArray[0],"浠诲姟澶囨敞");}
 	$FormArrayX=count($FormArray[0]);
 	if (sqlsrv_rows_affected($data)==0) {
@@ -487,7 +522,42 @@
 			$FormArray[$i][48]=$rs['EntourageName'];
 			$FormArray[$i][49]=$rs['EntouragePost'];
 			$FormArray[$i][50]=$rs['Stime2'];
-			if ($is_CSV==1){$FormArray[$i][51]=$rs['ServiceOrdTaskRemarks'];}
+			$rs2=getDispatchOrderStaff($rs['DispatchOrdID'], $conn);
+			//濡傛灉 $rs2 涓虹┖锛岃缃粯璁ゅ��
+			if (empty($rs2)) {
+				$FormArray[$i][51]='--';
+				$FormArray[$i][52]='';
+			}else{
+				$FormArray[$i][51]=isset($rs2['Opener'])?$rs2['Opener']:'--';
+				$FormArray[$i][52]=isset($rs2['OpenerCommissionRatio'])?$rs2['OpenerCommissionRatio']:'';
+			}
+			if (!empty($rs2['entourage'])) {
+				//$rs2['entourage']鐨勯暱搴�
+				$count=count($rs2['entourage']);
+				$j=0;
+				
+				foreach ($rs2['entourage'] as $key => $value) {
+					$FormArray[$i][53+$j]=$value['Follower'];
+					$FormArray[$i][54+$j]=$value['FollowerRatio'];
+					$j++;	
+				}	
+				if($count<3){
+					//琛ヨ冻3涓�
+					while($j<3){
+						$FormArray[$i][53+$j*2]='--';
+						$FormArray[$i][54+$j*2]='';
+						$j++;
+					}
+				}
+			}else{
+				$FormArray[$i][53]='--';
+				$FormArray[$i][54]='';
+				$FormArray[$i][55]='--';
+				$FormArray[$i][56]='';
+				$FormArray[$i][57]='--';
+				$FormArray[$i][58]='';
+			}
+			if ($is_CSV==1){$FormArray[$i][59]=$rs['ServiceOrdTaskRemarks'];}
 
 			$i++;
 			//鍐欏叆鏁扮粍--End
diff --git a/admin_save.gds b/admin_save.gds
index 14f9e7c..0c14d20 100644
--- a/admin_save.gds
+++ b/admin_save.gds
@@ -20,6 +20,66 @@
 <title>璁板綍涓�..</title>
 </head>
 <%End If%>
+
+<%
+Function delFollower(ServiceOrderID)
+	sql = "DELETE FROM ServiceOrderCommissionDetails WHERE ServiceOrderID = " & ServiceOrderID & " AND PersonType = 'Follower'"
+	objConn.Execute sql
+End Function
+
+Function SaveFollower(ServiceOrderID,userId,userName,userRatio)
+	if userId<>"" and userName<>"" and userRatio<>"" then
+		' 濡傛灉涓嶅瓨鍦紝鍒欐彃鍏ユ柊璁板綍
+		sql = "INSERT INTO ServiceOrderCommissionDetails (ServiceOrderID, PersonID, PersonName, CommissionRatio, PersonType) VALUES (" & ServiceOrderID & ", " & userId & ", '" & userName & "', " & userRatio & ", 'Follower')"	
+		objConn.Execute sql
+	End if
+End Function
+
+Function SaveFollowers(ServiceOrderID)
+	' 鍏堝垹闄ゆ墍鏈夎窡鍗曚汉璁板綍	
+	followerCount = SafeRequest(Request.form("FollowersCount"))
+	If Trim(followerCount)<>"" and IsNumeric(followerCount) then
+		numericFollowerCount = CInt(Trim(followerCount))
+			
+		if numericFollowerCount>0 then
+			delFollower ServiceOrderID
+			for i=1 to numericFollowerCount
+				userId = SafeRequest(Request.form("FollowerId_" & i ))
+				userName = SafeRequest(Request.form("FollowerName_" & i))
+				userRatio = SafeRequest(Request.form("FollowerRatio_" & i))
+				SaveFollower ServiceOrderID, userId, userName, userRatio
+			next
+		end if
+	end if
+End Function
+
+
+' 淇濆瓨寮�鍗曚汉鍙婃彁鎴愭瘮渚嬬殑鍑芥暟
+Function SaveOpenerCommission(ServiceOrderID)   
+    OpenerID			= SafeRequest(Request.form("OpenUserID"))				'寮�鍗曚汉ID
+	OpenerName			= SafeRequest(Request.form("OpenUserName"))				'寮�鍗曚汉鍚嶇О
+	OpenerRatio			= SafeRequest(Request.form("OpenUserRatio"))			'寮�鍗曚汉鎻愭垚姣斾緥
+	if OpenerID<>"" and OpenerName<>"" and OpenerRatio<>"" then	  
+	
+		' 鍏堟鏌ユ槸鍚﹀凡缁忓瓨鍦ㄨ鏈嶅姟鍗曠殑寮�鍗曚汉璁板綍
+		sql = "SELECT ID FROM ServiceOrderCommissionDetails WHERE ServiceOrderID = " & ServiceOrderID & " AND PersonType = 'Opener'"
+		
+		rs.Open sql, objConn, 1, 1
+		
+		If rs.EOF Then
+			' 濡傛灉涓嶅瓨鍦紝鍒欐彃鍏ユ柊璁板綍
+			sql = "INSERT INTO ServiceOrderCommissionDetails (ServiceOrderID, PersonID, PersonName, CommissionRatio, PersonType) VALUES (" & ServiceOrderID & ", " & OpenerID & ", '" & OpenerName & "', " & OpenerRatio & ", 'Opener')"
+		Else
+			' 濡傛灉瀛樺湪锛屽垯鏇存柊璁板綍
+			sql = "UPDATE ServiceOrderCommissionDetails SET PersonID = " & OpenerID & ", PersonName = '" & OpenerName & "', " &"CommissionRatio = " & OpenerRatio & " WHERE ID = " & rs("ID")
+		End If
+		'response.write sql
+		rs.Close	
+		objConn.Execute sql
+	End if
+End Function
+%>
+
 <%
 
 if cint(session("admin_execLevel"))<1 and admin_save<>"1" and admin_save<>"47" and admin_save<>"48" and admin_save<>"49" then%>
@@ -773,6 +833,9 @@
 FromHQ2_is				= SafeRequest(Request.form("FromHQ2_is"))				'骞垮窞鎬婚儴鎺ㄩ�佷换鍔℃爣璁�  
 OrderPrice_Auto			= SafeRequest(Request.form("OrderPrice_Auto"))			'璁㈠崟鑷姩鎶ヤ环鍙傝�冨��
 
+
+
+
 Call RequestForm(Origin)
 session("Origin")=Origin
 'response.write  Origin
@@ -986,6 +1049,8 @@
 ServiceOrdID = rs(0)
 rs.close()
 ServiceOrdNo	= ServiceOrdClass& year(now())&Right("0"&month(now()),2)&Right("0"&day(now()),2) & "-"&Right("00"&ServiceOrdNo,3)
+
+
 
 '鍜ㄨ鍗曡浆涓烘湇鍔″崟('鑷姩瀹℃牳)
 If ServiceOrdState="2" then
@@ -1249,6 +1314,7 @@
 
 ServiceOrd_Check		= SafeRequest(Request.form("ServiceOrd_Check"))		'褰撳墠瀹℃牳鎿嶄綔
 EditDataForm			= SafeRequest(Request.form("EditDataForm"))			'褰撳墠淇敼椤圭洰
+
 
 Call RequestForm(Origin)
 session("Origin")=Origin
@@ -1997,6 +2063,8 @@
 sql="update DispatchOrd set DispatchOrdTraSDTime='"&DispatchOrdTraSDTime&"' where DispatchOrdID="&DispatchOrdID
 objConn.Execute sql
 End If
+SaveOpenerCommission DispatchOrdID
+SaveFollowers DispatchOrdID
 
 '鍐欏叆闄勫姞椤圭洰璐圭敤
 If AddMoneyType<>"" And AddMoneyType<>"0" And AddMoney>0 And StretcherMoney>0 Then
@@ -2340,6 +2408,10 @@
 ServiceOrdTraVia		= SafeRequest(Request.form("ServiceOrdTraVia"))		'杞嚭鍦板潃
 ServiceOrdTraEnd		= SafeRequest(Request.form("ServiceOrdTraEnd"))		'杞叆鍦板潃
 EditDataForm			= SafeRequest(Request.form("EditDataForm"))			'褰撳墠淇敼椤圭洰
+
+SaveOpenerCommission DispatchOrdID
+SaveFollowers DispatchOrdID
+
 If ServiceOrdTraStreet<>"" Then DispatchOrdTraStreet=ServiceOrdTraStreet
 If ServiceOrdTraVia<>"" Then DispatchOrdTraVia=ServiceOrdTraVia
 If ServiceOrdTraEnd<>"" Then DispatchOrdTraEnd=ServiceOrdTraEnd
diff --git "a/sql/\345\210\233\345\273\272 ServiceOrderCommissionDetails \350\241\250.sql" "b/sql/\345\210\233\345\273\272 ServiceOrderCommissionDetails \350\241\250.sql"
new file mode 100644
index 0000000..97dd120
--- /dev/null
+++ "b/sql/\345\210\233\345\273\272 ServiceOrderCommissionDetails \350\241\250.sql"
@@ -0,0 +1,19 @@
+-- 鍒涘缓 ServiceOrderCommissionDetails 琛�
+CREATE TABLE ServiceOrderCommissionDetails (
+    -- 鑷涓婚敭锛屽敮涓�鏍囪瘑姣忔潯璁板綍
+    ID INT IDENTITY(1,1) PRIMARY KEY,
+    -- 鍏宠仈鏈嶅姟鍗曠殑 ID
+    ServiceOrderID BIGINT NOT NULL,
+    -- 浜哄憳鐨� ID锛屽彲浠ユ槸寮�鍗曚汉鎴栬�呰窡杩涗汉
+    PersonID INT NOT NULL,
+    PersonName NVARCHAR(255) NOT NULL,
+    -- 浜哄憳鐨勬彁鎴愭瘮渚�
+    CommissionRatio DECIMAL(5, 2) NOT NULL,
+    -- 浜哄憳绫诲瀷鏍囪瘑锛�'Opener' 琛ㄧず寮�鍗曚汉锛�'Follower' 琛ㄧず璺熻繘浜�
+    PersonType NVARCHAR(20) NOT NULL,
+    
+    -- 妫�鏌ョ害鏉燂紝纭繚浜哄憳绫诲瀷鏍囪瘑涓� 'Opener' 鎴栬�� 'Follower'
+    CHECK (PersonType IN ('Opener', 'Follower')),
+    -- 妫�鏌ョ害鏉燂紝纭繚鎻愭垚姣斾緥鍦� 0 鍒� 100 涔嬮棿
+    CHECK (CommissionRatio BETWEEN 0 AND 100)
+);
\ No newline at end of file

--
Gitblit v1.9.1