SanHQin 1 tháng trước cách đây
mục cha
commit
969e1060bb

+ 49 - 4
src/components/pages/classroomObservation/newComponents/batchClassCard.vue

@@ -39,9 +39,49 @@
         <div class="bcc_r_t_right">
           <span class="status_wait" v-if="cardData.status == '3'">待开始</span>
           <span class="status_fail" v-if="cardData.status == '4'">失败</span>
-          <span class="status_success" v-if="cardData.status == '2'"
-            >已完成</span
-          >
+          <span class="status_success" v-if="cardData.status == '2'">
+            <span style="cursor: pointer;" @click="changeShowSteps(!showSteps)">已完成</span>
+            <div class="stepBox" v-show="showSteps">
+              <div
+                class="sb_item"
+                v-for="(item, index) in cardData.jsonData.steps"
+                :key="index"
+              >
+                <!-- 1完成 -->
+                <img
+                  src="../../../../assets/icon/classroomObservation/successStatus_icon.svg"
+                  v-if="item.status=='1'"
+                />
+
+
+                <!-- 0等待 -->
+                <img
+                  class="rotation"
+                  src="../../../../assets/icon/classroomObservation/waitStatus_icon.svg"
+                  v-if="item.status=='0'"
+                />
+
+
+                <!-- 2处理中 -->
+                <img
+                  class="rotation"
+                  src="../../../../assets/icon/classroomObservation/isDoStatus_icon.svg"
+                  v-if="item.status=='2'"
+                />
+                <div>{{ item.text }}</div>
+                <span>
+                  <span
+                    v-if="
+                      item.status == '2' &&
+                        item.progress &&
+                        item.progress !== '0'
+                    "
+                    >{{ item.progress }}%</span
+                  ></span
+                >
+              </div>
+            </div>
+          </span>
           <span class="status_doing" v-if="cardData.status == '1'">
             <span style="cursor: pointer;" @click="changeShowSteps(!showSteps)">处理中</span>
             <div class="stepBox" v-show="showSteps">
@@ -160,7 +200,7 @@ export default {
   data() {
     return {
       checked: false,
-      showSteps:true,
+      showSteps:false,
       cardData: {
         id: "1",
         name: "文件名称文件名称文件名称",
@@ -245,6 +285,11 @@ export default {
         if (newValue) {
           this.cardData = JSON.parse(JSON.stringify(newValue));
           this.$forceUpdate();
+          if(newValue.status === "1"){
+            this.showSteps = true;
+          }else{
+            this.showSteps = false;
+          }
         }
       }
     }

+ 89 - 48
src/components/pages/test/check/index.vue

@@ -224,7 +224,7 @@
                   ref="popover1"
                   :visible-arrow="false"
                   trigger="click"
-                  
+
                   >
                     <div class="openCeBox" v-loading="aiscoLoading">
                         <div style="display: flex;justify-content: space-between;align-items: center;">
@@ -237,7 +237,7 @@
                             ref="popover2"
                             v-model="opQvisible"
                             trigger="click">
-                            <div> 
+                            <div>
                               <div style="display: flex;align-items: center;margin-bottom: 10px;">
                                 <img src="../../../../assets/delicon.svg" alt="">是否确认清空
                               </div>
@@ -250,7 +250,7 @@
                             <div class="Topkong" slot="reference">
                               <img src="../../../../assets/clear.svg" alt="">
                               清空
-                            </div> 
+                            </div>
                           </el-popover>
 
                         </div>
@@ -262,27 +262,27 @@
                         <div style="background: #F5F6F7;padding: 10px;box-sizing: border-box;border-radius: 5px;">
                           <div style="display: flex;justify-content: space-between;align-items: center;margin-bottom: 5px;">
                             <div style="font-size: 12px;color: #6E6B6B;">输入指令*</div>
-                              
+
                               <div style="position: relative;font-size: 12px;color: #3992EA;" >
                                 <div style="cursor: pointer;" @click="quoteShow">
                                     <i class="el-icon-circle-plus-outline"></i>
                                     引用字段
                                 </div>
-                                
-                              
+
+
                                 <div class="quoteBlock" v-if="quoteV">
                                   <el-input  v-model="opcInp" placeholder="请输入内容">
                                     <i slot="prefix" class="el-input__icon el-icon-search"></i>
                                   </el-input>
                                   <div class="quoteBlockCon">
-                                    <div v-if="!opcInp.trim() ? true : '序号'.includes(opcInp)" :class="[cueWord.fieldList.indexOf('序号') != -1 ? 'selCss' :'']" 
+                                    <div v-if="!opcInp.trim() ? true : '序号'.includes(opcInp)" :class="[cueWord.fieldList.indexOf('序号') != -1 ? 'selCss' :'']"
                                     @click="addfield('序号')">序号</div>
 
-                                    <div v-if="!opcInp.trim() ? true :'提交人'.includes(opcInp)" :class="[cueWord.fieldList.indexOf('提交人') != -1 ? 'selCss' :'']" 
+                                    <div v-if="!opcInp.trim() ? true :'提交人'.includes(opcInp)" :class="[cueWord.fieldList.indexOf('提交人') != -1 ? 'selCss' :'']"
                                     @click="addfield('提交人')">提交人</div>
 
                                     <template  v-for="(i,index) in teaType">
-                                      <div v-if="!opcInp.trim() ? true : i.name.includes(opcInp)" :class="[cueWord.fieldList.indexOf(i.name) != -1 ? 'selCss' :'']" 
+                                      <div v-if="!opcInp.trim() ? true : i.name.includes(opcInp)" :class="[cueWord.fieldList.indexOf(i.name) != -1 ? 'selCss' :'']"
                                        @click="addfield(i.name)" :key="index+'a'">
                                         <el-tooltip class="item" effect="dark" :content="i.name" placement="top">
                                             <div style="
@@ -293,14 +293,14 @@
                                         </el-tooltip>
                                       </div>
                                     </template>
-                                    
 
-                                    <div v-if="!opcInp.trim() ? true : '提交时间'.includes(opcInp)" :class="[cueWord.fieldList.indexOf('提交时间') != -1 ? 'selCss' :'']" 
+
+                                    <div v-if="!opcInp.trim() ? true : '提交时间'.includes(opcInp)" :class="[cueWord.fieldList.indexOf('提交时间') != -1 ? 'selCss' :'']"
                                     @click="addfield('提交时间')">提交时间</div>
 
                                     <template v-for="(i,index) in fie(chapters)">
-                                      <div :class="[cueWord.fieldList.indexOf(i.json.title) != -1 ? 'selCss' :'']" 
-                                        v-if="!opcInp.trim() ? true :i.json.title.includes(opcInp)" @click="addfield(i.json.title)" 
+                                      <div :class="[cueWord.fieldList.indexOf(i.json.title) != -1 ? 'selCss' :'']"
+                                        v-if="!opcInp.trim() ? true :i.json.title.includes(opcInp)" @click="addfield(i.json.title)"
                                         :key="index+'b'">
 
                                          <el-tooltip class="item" effect="dark" :content="i.json.title" placement="top">
@@ -310,12 +310,12 @@
                                             text-overflow: ellipsis;">
                                             {{ i.json.title }}</div>
                                         </el-tooltip>
-                                        
+
                                       </div>
                                     </template>
-                                    
+
                                   </div>
-                                 
+
                                 </div>
                                 <div class="maskCss" v-if="quoteV" @click.stop="quoteV = false,opcInp=''"></div>
 
@@ -1535,7 +1535,7 @@
               </el-table-column>
               <el-table-column
                 label="操作"
-                width="200px"
+                width="250px"
                 fixed="right"
                 v-if="isN != 1"
               >
@@ -1546,8 +1546,16 @@
                     v-if="(examineData && examineData.type == 1) || !examineData"
                     size="small"
                     >查看</el-button
+                  >
 
+                  <el-button
+                    @click="editTest(scope.row)"
+                    type="primary"
+                    v-if="(examineData && examineData.type == 1) || !examineData"
+                    size="small"
+                    >编辑</el-button
                   >
+
                   <!-- <el-button @click="setWordHtml(scope.row)" type="primary" size="small">导出答题信息</el-button>
 									<el-button @click="setWordTemplate(scope.row)" type="primary" size="small">word导出</el-button> -->
                   <el-button
@@ -2075,7 +2083,7 @@ export default {
         fieldList:[]
       },
       scoList:[],
-      quoteV:false, 
+      quoteV:false,
       openCeVal:false,
       LoadingProgress:0,
       opQvisible:false,
@@ -2157,8 +2165,8 @@ export default {
     fie(){
       return function (val) {
         console.log('fie',val);
-        
-        const con = val.filter(e => [12,11,6,14].indexOf(e.type) == -1) 
+
+        const con = val.filter(e => [12,11,6,14].indexOf(e.type) == -1)
         return con
       }
     },
@@ -2167,7 +2175,7 @@ export default {
       return function (val) {
         const con = this.scoList.find(u => u.uid === val);
         // console.log('con',con);
-        
+
         return con ? con.sco : '';
       }
     },
@@ -2379,7 +2387,7 @@ export default {
       Promise.all(forAllList)
         .then(values => {
           console.log("values", values);
-          
+
           this.uploadSCo()
 
           setTimeout(() => {
@@ -2400,7 +2408,7 @@ export default {
     // ai评分循环
     async loopSco(val){
       // console.log('6666',val);
-      
+
       let userWork =[]
       let _fileid = ''
 for (let index = 0; index < val.array.length; index++) {
@@ -2463,10 +2471,10 @@ for (let index = 0; index < val.array.length; index++) {
                   作业内容中tit是题目,con是用户回答。
                   根据用户信息与作业内容进行评分。
 
-                 #评分资料#        
+                 #评分资料#
 
                   评价标准:${this.cueWord.openCeCon}
-                  
+
                   作业内容 ${this.cueWord.fieldList.includes('提交人') ? '提交人:' +val.name :''}
                           ${this.cueWord.fieldList.includes('学段') ? '学段:' +this.getTType(this.teaType[0].id,val.cclassid) :''}
                           ${this.cueWord.fieldList.includes('年级') ? '年级:' +this.getTType(this.teaType[1].id,val.cclassid) :''}
@@ -2475,16 +2483,16 @@ for (let index = 0; index < val.array.length; index++) {
                           ${this.cueWord.fieldList.includes('教龄') ? '教龄:' +this.getTType(this.teaType[4].id,val.cclassid) :''}
                           ${this.cueWord.fieldList.includes('作业提交时间') ? '作业提交时间:' +val.time :''}
                           ${userWork}
-              
+
                   #输出要求#
                   根据评价标准对作业内容进行评分,直接输出合计分数!只输出数字,不要输入任何其他无关内容!
 
                   #输出格式#
                   分数
                   `;
-              
+
                   // console.log('messages',messages);
-                  
+
           let _this = this;
           let params = {
           assistant_id: "6063369f-289a-11ef-8bf4-12e77c4cb76b",
@@ -2529,7 +2537,7 @@ for (let index = 0; index < val.array.length; index++) {
               } catch (error) {
                  let ind = this.scoList.findIndex(e=> e.uid == val.userid )
                  console.log('ind',ind);
-                 
+
                   if (ind != -1) {
                     this.scoList.splice(ind,1,{uid: val.userid ,sco: ''})
                   }else{
@@ -2549,7 +2557,7 @@ for (let index = 0; index < val.array.length; index++) {
               console.log(error);
             });
         })
-      
+
     },
     // 获取评分
     async getAiSco(){
@@ -2580,7 +2588,7 @@ for (let index = 0; index < val.array.length; index++) {
               this.scoList=[]
             }
             this.aiscoLoading = false
-             
+
               console.log('8888888888',res.data[0]);
               resolve(1)
           })
@@ -2591,7 +2599,7 @@ for (let index = 0; index < val.array.length; index++) {
             console.error(err);
           });
       })
-      
+
     },
     // 上传评分
     uploadSCo(){
@@ -2661,7 +2669,7 @@ for (let index = 0; index < val.array.length; index++) {
     },
     // 打开引用字段弹框
     quoteShow(){
-      this.quoteV = !this.quoteV 
+      this.quoteV = !this.quoteV
     },
     // 添加指令字段
     addfield(val){
@@ -2835,6 +2843,10 @@ for (let index = 0; index < val.array.length; index++) {
           this.role
       );
     },
+    editTest(row){
+      // doTest?cid=721eadc1-087c-11f0-b508-005056924926&tid=66db0a89-0a11-11f0-9261-005056924926&userid=6c56ec0e-2c74-11ef-bee5-005056b86db5&oid=414f2361-ad04-11ed-b13d-005056b86db5&org=0fec3a8a-ad04-11ed-b13d-005056b86db5&type=3&role=0
+      console.log("编辑",row)
+    },
     checkDataType(type) {
       this.TeachingValue = "";
       if (this.stype != type) {
@@ -2972,25 +2984,54 @@ for (let index = 0; index < val.array.length; index++) {
               JSON.parse(JSON.stringify(JSON.parse(this.works[i].courseJson)))
             );
             console.log(cJson,'===',chapters)
-            if (JSON.stringify(cJson) == JSON.stringify(chapters)) {
+            // if (JSON.stringify(cJson) == JSON.stringify(chapters)) {
               let _json = this.JSONSetting(
                 JSON.parse(JSON.stringify(JSON.parse(this.works[i].courseJson)))
               );
 
-              _json.forEach((item) => {
-                if (item.type == 11) {
-                  let cid = item.json.answer2;
-                  let _title = [];
-                  for (var i = 0; i < cid.length; i++) {
-                    _title.push(courseTitles[cid[i]]);
+              let _json2 = this.JSONSetting(
+                JSON.parse(JSON.stringify(JSON.parse(JSON.stringify(chapters))))
+              );
+
+              // console.log("json2",_json2)
+
+              // _json.forEach((item) => {
+                // console.log('_jsonItem',item)
+                // if(){
+
+                // }
+                // if (item.type == 11) {
+                //   let cid = item.json.answer2;
+                //   let _title = [];
+                //   for (var i = 0; i < cid.length; i++) {
+                //     _title.push(courseTitles[cid[i]]);
+                //   }
+                //   item.json.answer2 = _title.length ? _title.join(",") : "";
+                // }
+                // if (item.type == 6) {
+                //   let courseId = item.json.answer2;
+                //   item.json.answer2 = courseTitles[courseId] || "";
+                // }
+              // });
+              _json2.forEach(item=>{
+                let _index = _json.findIndex(i=>(i.type==item.type && i.ttype==item.ttype && i.json.title==item.json.title))
+                if(_index!=-1){
+                  item.json = _json[_index].json;
+                  if (item.type == 11) {
+                    let cid = item.json.answer2;
+                    let _title = [];
+                    for (var i = 0; i < cid.length; i++) {
+                      _title.push(courseTitles[cid[i]]);
+                    }
+                    item.json.answer2 = _title.length ? _title.join(",") : "";
+                  }
+                  if (item.type == 6) {
+                    let courseId = item.json.answer2;
+                    item.json.answer2 = courseTitles[courseId] || "";
                   }
-                  item.json.answer2 = _title.length ? _title.join(",") : "";
-                }
-                if (item.type == 6) {
-                  let courseId = item.json.answer2;
-                  item.json.answer2 = courseTitles[courseId] || "";
                 }
-              });
+                })
+              if(JSON.stringify(_json2)==JSON.stringify(this.JSONSetting(JSON.parse(JSON.stringify(chapters)))))continue
               // 更新对应的_json对象的answer2
               array.push({
                 courseid: this.works[i].courseid,
@@ -2999,12 +3040,12 @@ for (let index = 0; index < val.array.length; index++) {
                 userid: this.works[i].userid,
                 name: this.works[i].username ? this.works[i].username : "匿名",
                 time: this.works[i].time,
-                array: _json,
+                array: _json2,
                 cut: 0,
                 uteaName: this.works[i].uteaName,
                 courseJson: JSON.parse(this.works[i].courseJson),
               });
-            }
+            // }
           }
 
           let allCourseIds = [];

+ 1 - 1
src/components/pages/testPerson/examine/index.vue

@@ -541,7 +541,7 @@ export default {
     // 查看数据来源
     lookPrize(val) {
       // return;
-      this.ifmUrl = `https://beta.pbl.cocorobo.cn/pbl-teacher-table/dist/#/checkToTest?cid=${val}&oid=${this.oid}&org=${this.org}&type=2&role=0&peopleId=${this.userid}&tType=${this.pType}&examineId=${this.testExamineBaseList[0].id}`;
+      this.ifmUrl = `https://beta.pbl.cocorobo.cn/pbl-teacher-table/dist/#/checkToTest?userid=${this.userid}&cid=${val}&oid=${this.oid}&org=${this.org}&type=2&role=0&peopleId=${this.userid}&tType=${this.pType}&examineId=${this.testExamineBaseList[0].id}`;
       // this.ifmUrl = `https://beta.pbl.cocorobo.cn/pbl-teacher-table/dist/#/test?userid=${this.userid}&oid=45facc0a-1211-11ec-80ad-005056b86db5&org=&role=0`;
       this.diaIframe = true;
     },