浏览代码

上传修改bug27527

namejr 4 年之前
父节点
当前提交
e9c7457aec
共有 2 个文件被更改,包括 249 次插入0 次删除
  1. 246 0
      EBook.Web/Common/tasklib_book.js
  2. 3 0
      EBook.Web/EBook.Web.csproj

+ 246 - 0
EBook.Web/Common/tasklib_book.js

@@ -71,6 +71,7 @@ var cTTypeFunc = function () {
 }();
 // 判断是否是主体课文
 var IsZTKEStatus = 0;
+
 // #region 表格处理Start
 var pressTableFlag = false;
 // 获取最大字符长度的字符串(起决定宽度的字符串/将字符去除HTML标签)
@@ -464,12 +465,14 @@ var AdjustTableFunc = function (sWidthVal, isAStatus) {
     $("#pContrainId").remove();
 };
 // #endregion
+
 // 测试专用(移动端不需要引用)
 function AddTestTextFunc(DataStr3) {
     $("#ShowTStr").remove();
     var HtmlStr = '<div id="ShowTStr" style="width:200px;height:auto;background-color:yellow;color:#000;position:fixed;left:10px;top:100px;">DataStr3=》' + DataStr3 + '</div>';
     $(document.body).append(HtmlStr);
 }
+
 //#region 听力音频处理
 var LimitPreFlag = false;  // 限制点击过宽
 var AddListenDiv = function (NodeHandle, NIndex, sWidthVal) {
@@ -915,7 +918,238 @@ function dealRecvHSFill(NodeHandle, sHFlag) {
         $(JQstr).find(".sentenceStyle,.sentImagcs").attr("data-setstatus", "0").attr("data-lstatus", "3").attr("data-drhsffunc", "1");
     }
 }
+
+// 临时记录被删除答题点的数据,解决bug27527
+var HLIsRomArr = [];
+var TFillData = [];
+// 判断是否存在对象中
+function checkStrFunc(dataDtr) {
+    if (dataDtr == undefined || dataDtr == null) {
+        return false;
+    }
+    if (TFillData != null && TFillData.length > 0) {
+        var ReFlag = false;
+        TFillData.forEach(item=> {
+            if (item.HightCode == dataDtr) {
+                ReFlag = true;
+            }
+        });
+        return ReFlag;
+    }
+    else {
+        return false;
+    }
+}
+
+// 处理答题点内存在高亮且被删除结构的情况
+function dealHLIsRemove(item, Id)
+{
+    var uLCClsName = $(item).attr("flag");
+    var IDStr = $(item).attr("id");
+    if (uLCClsName != null && uLCClsName.indexOf("sentence") > -1 && checkStrFunc(IDStr)) {
+        // 短语
+        var DelModel = {
+            AID: Id,
+            HID: $(item).attr("id"),
+            Type: 3,
+            Text: $(item).text(),
+            SourceCode:""
+        };
+        HLIsRomArr.push(DelModel);
+    }
+    else if (uLCClsName != null && uLCClsName.indexOf("phrase") > -1 && checkStrFunc(IDStr)) {
+        // 句型
+        var DelModel = {
+            AID: Id,
+            HID: $(item).attr("id"),
+            Type: 2,
+            Text: $(item).text(),
+            SourceCode: ""
+        };
+        HLIsRomArr.push(DelModel);
+    }
+    else if (uLCClsName != null && uLCClsName.indexOf("word") > -1 && checkStrFunc(IDStr)) {
+        // 单词
+        var DelModel = {
+            AID: Id,
+            HID: $(item).attr("id"),
+            Type: 1,
+            Text: $(item).text(),
+            SourceCode: ""
+        };
+        HLIsRomArr.push(DelModel);
+    }
+    // 内部短语
+    $.each($(item).find("span[flag='sentence']"), function (iIndex, iItem) {
+        var IDStr = $(iItem).attr("id");
+        if (checkStrFunc(IDStr)) {
+            var DelModel = {
+                AID: Id,
+                HID: $(iItem).attr("id"),
+                Type: 3,
+                Text: $(iItem).text(),
+                SourceCode: ""
+            };
+            HLIsRomArr.push(DelModel);
+        }
+    });
+    // 内部句型
+    $.each($(item).find("span[flag='phrase']"), function (iIndex, iItem) {
+        var IDStr = $(iItem).attr("id");
+        if (checkStrFunc(IDStr)) {
+            var DelModel = {
+                AID: Id,
+                HID: $(iItem).attr("id"),
+                Type: 2,
+                Text: $(iItem).text(),
+                SourceCode: ""
+            };
+            HLIsRomArr.push(DelModel);
+        }
+    });
+    // 内部单词
+    $.each($(item).find("span[flag='word']"), function (iIndex, iItem) {
+        var IDStr = $(iItem).attr("id");
+        if (checkStrFunc(IDStr)) {
+            var DelModel = {
+                AID: Id,
+                HID: $(iItem).attr("id"),
+                Type: 1,
+                Text: $(iItem).text(),
+                SourceCode: ""
+            };
+            HLIsRomArr.push(DelModel);
+        }
+    });
+    if (TFillData.length > 0 && TFillData.length > 0) {
+        HLIsRomArr.forEach(item=> {
+            TFillData.forEach(fitem=> {
+                if (item.HID == fitem.HightCode) {
+                    item.SourceCode = fitem.SourceCode;
+                }
+            });
+        });
+    }
+}
+
+// 渲染作答后的内容
+function delNotHHItems() {
+    if (HLIsRomArr == null || HLIsRomArr.length == 0) {
+        return;
+    }
+    HLIsRomArr.forEach(item=> {
+        var AIDText = $(".answer-body[answer-id='" + item.AID + "']").find(".answer-text").text();
+        var AIDAudioText = $(".answer-body[answer-id='" + item.AID + "']").find(".answer-audio-text").text();
+        var AIDPointText = $(".answer-body[answer-id='" + item.AID + "']").find(".answer-point-text").text();
+        if (AIDText != undefined && AIDText != null && AIDText != "") {
+            if (AIDText.indexOf(item.Text) > -1) {
+                var HtmlStr = "";
+                var TName = "";
+                if (item.HID[0] == "P") {
+                    HtmlStr = '<span id="' + item.HID + '" name="P' + item.HID + '" flag="phrase">' + item.Text + '</span>';
+                }
+                else if (item.HID[0] == "W") {
+                    HtmlStr = '<span id="' + item.HID + '" name="W' + item.HID + '" flag="word">' + item.Text + '</span>';
+                }
+                else if (item.HID[0] == "S") {
+                    HtmlStr = '<span id="' + item.HID + '" name="S' + item.HID + '" flag="sentence">' + item.Text + '</span>';
+                }
+                AIDText = AIDText.replace(item.Text, HtmlStr);
+                $(".answer-body[answer-id='" + item.AID + "']").find(".answer-text").html(AIDText);
+                assistantFill(item.HID, item.SourceCode);
+            }
+        }
+        if (AIDAudioText != undefined && AIDAudioText != null && AIDAudioText != "") {
+            if (AIDAudioText.indexOf(item.Text) > -1) {
+                // 替换
+                var HtmlStr = "";
+                var TName = "";
+                if (item.HID[0] == "P") {
+                    HtmlStr = '<span id="' + item.HID + '" name="P' + item.HID + '" flag="phrase">' + item.Text + '</span>';
+                }
+                else if (item.HID[0] == "W") {
+                    HtmlStr = '<span id="' + item.HID + '" name="W' + item.HID + '" flag="word">' + item.Text + '</span>';
+                }
+                else if (item.HID[0] == "S") {
+                    HtmlStr = '<span id="' + item.HID + '" name="S' + item.HID + '" flag="sentence">' + item.Text + '</span>';
+                }
+                AIDAudioText = AIDAudioText.replace(item.Text, HtmlStr);
+                $(".answer-body[answer-id='" + item.AID + "']").find(".answer-audio-text").html(AIDAudioText);
+                assistantFill(item.HID, item.SourceCode);
+            }
+        }
+        if (AIDPointText != undefined && AIDPointText != null && AIDPointText != "") {
+            if (AIDPointText.indexOf(item.Text) > -1) {
+                // 替换
+                var HtmlStr = "";
+                var TName = "";
+                if (item.HID[0] == "P") {
+                    HtmlStr = '<span id="' + item.HID + '" name="P' + item.HID + '" flag="phrase">' + item.Text + '</span>';
+                }
+                else if (item.HID[0] == "W") {
+                    HtmlStr = '<span id="' + item.HID + '" name="W' + item.HID + '" flag="word">' + item.Text + '</span>';
+                }
+                else if (item.HID[0] == "S") {
+                    HtmlStr = '<span id="' + item.HID + '" name="S' + item.HID + '" flag="sentence">' + item.Text + '</span>';
+                }
+                AIDPointText = AIDPointText.replace(item.Text, HtmlStr);
+                $(".answer-body[answer-id='" + item.AID + "']").find(".answer-point-text").html(AIDPointText);
+                assistantFill(item.HID, item.SourceCode);
+            }
+        }
+    });
+}
+
+// 辅助标识
+function assistantFill(HightCode, SourceCode) {
+    var highlightArr = [];
+    if (typeof (HightCode) != 'undefined' && HightCode != null && HightCode != "") {
+        var highlightItem = $('span[id=' + HightCode + ']').eq(0);
+        if (highlightItem.length > 0) {
+            var hitCode = highlightItem.attr('hitCode');
+            if (hitCode) {
+                highlightItem.attr('hitCode', hitCode + "|" + SourceCode);
+            }
+            else {
+                highlightItem.attr('hitCode', SourceCode);
+            }
+            highlightArr.push(highlightItem);
+        }
+    }
+    else if (typeof (SourceCode) == 'undefined' || SourceCode == null || SourceCode != "") {
+        var highlightItem = $('span[kcode*=' + SourceCode + ']:first');
+        if (highlightItem.length > 0) {
+            var hitCode = highlightItem.attr('hitCode');
+            if (hitCode) {
+                highlightItem.attr('hitCode', hitCode + "|" + SourceCode);
+            }
+            else {
+                highlightItem.attr('hitCode', SourceCode);
+            }
+
+            highlightArr.push(highlightItem);
+        }
+    }
+    $.each(highlightArr, function (i, item) {
+        if (item.attr('flag') == 'word') {
+            bindEvent(item.attr('iskeyklg', 'true').attr("data-setstatus", "0").attr("showflag", "1").attr("data-scolor", cHPhraseStyleFunc(item)).addClass('wordStyle'), true);
+        }
+        else if (item.attr('flag') == 'phrase') {
+            bindEvent(item.attr('iskeyklg', 'true').attr("data-setstatus", "0").attr("showflag", "1").addClass('phraseStyle'), true);
+        }
+        else if (item.attr('flag') == 'sentence') {
+            if (item.attr('iskeyklg') == 'true') return;
+            bindEvent(item.attr('iskeyklg', 'true').attr("data-setstatus", "0").attr("showflag", "1").addClass('sentenceStyle')
+                .before('<img src="file:///android_asset/js/sentenceIco.png" class="sentImagcs" data-lstatus="0" data-setstatus="0">'), true);
+        }
+    });
+    // 绑定横线内处理
+    addFillAssist();
+    adjustFillFunc(fillDataNum);
+}
+
 // #endregion
+
 // 点击事件样式渲染
 var ClickRecFunc = function (pID) {
     $(".answer-body").removeClass("select-answer");
@@ -1378,6 +1612,7 @@ function dealSULContentFunc(item, Id, pId) {
             uHtml.setAttribute("answer-id", Id);
             $(item).after(uHtml);
         }
+        dealHLIsRemove($(item), Id);
         $(item).remove();
     }
     else if (uLCClsName != undefined && uLCClsName.indexOf("yaoshi") > -1) {
@@ -1413,6 +1648,7 @@ function dealSULContentFunc(item, Id, pId) {
                     uHtml.setAttribute("answer-id", Id);
                     $(iItem).after(uHtml);
                 }
+                dealHLIsRemove($(iItem), Id);
             });
             $(item).find(".underlineContent").not(".noKey").remove();
         }
@@ -1824,6 +2060,7 @@ function getAllAnswer() {
         });
         //提交直接还原作答现场
         var mytext = $(item).attr("answer-text");//我的答案
+        mytext = (mytext == undefined || mytext == null) ? "" : mytext;
         var ischecked = mytext.indexOf("√") > -1;
         var answerText = $(item).attr("answer-anstext");//参考答案
         if (mytext == "") {
@@ -2042,6 +2279,7 @@ function backupAllAnswer(answerJson, statusType) {
             }
             //提交直接还原作答现场
             var mytext = answerList[index].Text;//我的答案
+            mytext = (mytext == undefined || mytext == null) ? "" : mytext;
             var ischecked = mytext.indexOf("√") > -1;
             var answerText = $(item).attr("answer-anstext");//参考答案
             $(item).attr("answer-text", mytext);
@@ -2153,6 +2391,7 @@ function backupAllAnswer(answerJson, statusType) {
         if (typeof (adjustFillFunc) == "function") {
             adjustFillFunc(7);  // 回填无效
         }
+        delNotHHItems();
     }
 }
 
@@ -2181,6 +2420,7 @@ function reviewStuAnswer(answerJson) {
         });
     }
     dealRecvShowFill();
+    delNotHHItems();
 }
 
 //处理播放录音,answerid:答题点ID,isPlay:是否播放(0-暂停,1-播放)
@@ -2405,6 +2645,12 @@ function mobileTEFunc(ID) {
 function stuEntryFunc(sWidthVal, isAStatus, isMAStatus, data) {
     IsStuFills.StuID = true;
     bindEventYS(sWidthVal, isAStatus, isMAStatus);
+    if (cTTypeFunc == 2) {
+        TFillData = JSON.parse(data);
+    }
+    else {
+        TFillData = data;
+    }
     var ReData = handleAnswerRange();
     if (typeof (Fill) == "function") {
         Fill(data);

+ 3 - 0
EBook.Web/EBook.Web.csproj

@@ -86,6 +86,9 @@
     <Content Include="AnsText\bug27015Answer.txt" />
     <Content Include="AnsText\bug27015json.txt" />
     <Content Include="AnsText\bug27015.txt" />
+    <Content Include="AnsText\Bug27527.txt" />
+    <Content Include="AnsText\Bug27527主.txt" />
+    <Content Include="AnsText\Bug27527作答json.txt" />
     <Content Include="AnsText\data202141.txt" />
     <Content Include="AnsText\data2021411高亮.txt" />
     <Content Include="AnsText\data20214121828.txt" />