【调度系统】广东民航医疗快线调度系统源代码
wanglizhong
2025-04-21 b8349bc19da36ab153c5466db7d089888a89f955
feat: 更新开单人、跟单人及比例
1个文件已添加
4个文件已修改
490 ■■■■■ 已修改文件
API/v3/OrderPrice.gds 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
DispatchOrder.gds 307 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Report_DispatchDetailed_Data.php 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin_save.gds 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sql/创建 ServiceOrderCommissionDetails 表.sql 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
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;
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){
    //计算总页数
@@ -346,7 +381,7 @@
if($data == true){
    $FormArray=array();
    //表头
    $FormArray[0]=array("序号","服务单号","调度单号","级别","分区","预约类型","调度单状态","日期","时间","班次","联系人","联系电话","患者姓名","销售","介绍人","客服","调度","来源","是否企微成交","主要企微客服","其他企微客服","情景编号","企微绩效","总部下发","支援总部","承包组","区域","类型","出发省份","出发市","出发区","转出医院","转出科室","转出床位","转入省份","转入市","转入区","转入医院","转入科室","总成交价","系统报价参考","等待费","担架费","居家ICUè´¹","距离(公里)","支付方式","使用呼吸机","车牌","出车成员","出车岗位","医护出车时间(分钟)");
    $FormArray[0]=array("序号","服务单号","调度单号","级别","分区","预约类型","调度单状态","日期","时间","班次","联系人","联系电话","患者姓名","销售","介绍人","客服","调度","来源","是否企微成交","主要企微客服","其他企微客服","情景编号","企微绩效","总部下发","支援总部","承包组","区域","类型","出发省份","出发市","出发区","转出医院","转出科室","转出床位","转入省份","转入市","转入区","转入医院","转入科室","总成交价","系统报价参考","等待费","担架费","居家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
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
sql/´´½¨ ServiceOrderCommissionDetails ±í.sql
New file
@@ -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)
);