Tang 3 lat temu
rodzic
commit
e89ecfd5e2

+ 294 - 0
src/components/AccountTag/index.vue

@@ -0,0 +1,294 @@
+<template>
+  <div id="AccountTag">
+    <el-dialog
+      :visible.sync="dialogVisible"
+      width="460px"
+      :show-close="false"
+      :close-on-click-modal="false"
+    >
+      <div slot="title" class="hearders">
+        <div class="leftTitle">
+          {{
+            stice == 1
+              ? "学习完成状态标记"
+              : stice == 4
+              ? "学习账号开通状态标记"
+              : stice == 3
+              ? "移除学员"
+              : ""
+          }}
+        </div>
+        <div class="rightBoxs">
+          <img
+            src="@/assets/images/Close@2x.png"
+            alt=""
+            @click="dialogVisible = false"
+          />
+        </div>
+      </div>
+      <div>
+        <ul>
+          <li
+            v-for="(item, index) in allCheckList"
+            :key="index"
+            class="btnLists"
+          >
+            {{ item.realname }}
+            <i
+              class="el-icon-close btnIcon"
+              v-if="allCheckList.length > 1"
+              @click="clearStudent(index)"
+            ></i>
+          </li>
+          <div style="clear: both"></div>
+          <p>
+            {{
+              stice == 1
+                ? "请对以上所选学员进行学习完成状态标记:"
+                : stice == 3
+                ? "是否移除所选中的学员?"
+                : stice == 4
+                ? "请对以上所选学员进行账号开通状态标记:"
+                : ""
+            }}
+          </p>
+          <div style="text-align: center">
+            <el-radio-group v-model="finishStatusOS" v-if="stice == 1">
+              <el-radio :label="1">已学完</el-radio>
+              <el-radio :label="0">未学完</el-radio>
+            </el-radio-group>
+            <el-radio-group
+              v-model="finishStatusOS"
+              v-if="stice == 4"
+              @change="failReason = ''"
+            >
+              <el-radio :label="1">已开通</el-radio>
+              <el-radio :label="0">未开通</el-radio>
+              <el-radio :label="2">标记失败</el-radio>
+            </el-radio-group>
+          </div>
+          <div v-if="stice == 4 && finishStatusOS === 2">
+            <p>失败原因:</p>
+            <el-input type="textarea" v-model="failReason"></el-input>
+          </div>
+        </ul>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="submit">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      dialogVisible: false,
+      stice: "",
+      allCheckList: [],
+      finishStatusOS: "",
+      failReason: "",
+    };
+  },
+  methods: {
+    clearStudent(index) {
+      this.allCheckList.splice(index, 1);
+    },
+    openBox(int, array, status) {
+      this.stice = int;
+      this.allCheckList = JSON.parse(JSON.stringify(array));
+      this.finishStatusOS = "";
+      if (status) {
+        this.initData();
+      }
+      this.dialogVisible = true;
+    },
+    /**
+     * 修改回填
+     */
+    initData() {
+      if (this.stice === 1) {
+        this.finishStatusOS = this.allCheckList[0].finishStatus;
+      }
+      if (this.stice === 4) {
+        this.finishStatusOS = this.allCheckList[0].learnStatus;
+        if (this.finishStatusOS === 2) {
+          this.failReason = this.allCheckList[0].reason;
+        }
+      }
+    },
+    submit() {
+      if (!this.allCheckList.length) {
+        this.dialogVisible = false;
+        return;
+      }
+      let ars = [];
+      this.allCheckList.map((item) => {
+        ars.push(item.id);
+      });
+      let data = {
+        id: ars,
+      };
+      if (this.stice === 1 || this.stice === 4) {
+        if (this.stice === 1) {
+          if (this.finishStatusOS !== 0 && this.finishStatusOS !== 1) {
+            this.$message.warning("请进行学习完成状态标记");
+            return;
+          }
+        }
+        if (this.stice === 4) {
+          if (
+            this.finishStatusOS !== 0 &&
+            this.finishStatusOS !== 1 &&
+            this.finishStatusOS !== 2
+          ) {
+            this.$message.warning("请选择账号开通状态标记");
+            return;
+          }
+        }
+        if (this.stice === 1) {
+          data.finishStatus = this.finishStatusOS;
+        }
+        if (this.stice === 4) {
+          data.learnStatus = this.finishStatusOS;
+          if (this.finishStatusOS === 2) {
+            if (!this.failReason) {
+              this.$message.error("请填写失败原因");
+              return;
+            }
+            data.reason = this.failReason;
+          }
+        }
+      }
+      if (this.stice === 3) {
+        data.status = 0;
+      }
+      this.$api.editGradeUserGradegrade(data).then((res) => {
+        this.$message.success("成功");
+        this.$emit("successFuncBack");
+        this.dialogVisible = false;
+      });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.dis__s {
+  margin-bottom: 14px;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+.btnLists {
+  float: left;
+  border: 1px solid #333;
+  padding: 0px 10px;
+  margin-right: 10px;
+  margin-bottom: 10px;
+  border-radius: 4px;
+  height: 30px;
+  line-height: 30px;
+  .btnIcon {
+    cursor: pointer;
+    transition: all 0.2s;
+    &:hover {
+      color: blue;
+    }
+  }
+}
+/deep/.el-button {
+  border-radius: 8px;
+}
+/deep/.el-dialog {
+  border-radius: 8px;
+  .el-dialog__header {
+    padding: 0;
+    .hearders {
+      height: 40px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 0px 18px 0px 20px;
+      border-bottom: 1px solid #e2e2e2;
+      .leftTitle {
+        font-size: 14px;
+        font-weight: bold;
+        color: #2f4378;
+      }
+      .rightBoxs {
+        display: flex;
+        align-items: center;
+        img {
+          width: 14px;
+          height: 14px;
+          margin-left: 13px;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .el-dialog__footer {
+    padding: 0;
+    .dialog-footer {
+      padding: 0px 40px;
+      height: 70px;
+      border-top: 1px solid #e2e2e2;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+    }
+  }
+}
+.imgBox {
+  width: 100%;
+  // height: 210px;
+  border: 1px solid #e2e2e2;
+  border-radius: 8px;
+  padding: 8px 8px 3px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  .imgLabel {
+    flex: 1;
+    width: 100%;
+    border: 1px dotted #e2e2e2;
+    color: #999;
+    font-size: 14px;
+    cursor: pointer;
+    border-radius: 8px;
+    .msPhoto {
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      max-width: 100%;
+      max-height: 270px;
+      img {
+        max-width: 100%;
+        max-height: 270px;
+      }
+    }
+    .imgbbx {
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      width: 100%;
+      height: 100%;
+      i {
+        font-weight: bold;
+        margin: 14px 0;
+        font-size: 24px;
+      }
+    }
+  }
+  p {
+    margin: 5px 0px;
+  }
+}
+/deep/.radioTables > .el-radio__label {
+  display: none;
+}
+</style>

+ 25 - 22
src/components/searchBoxNew.vue

@@ -457,7 +457,7 @@
             </el-date-picker>
           </div>
           <el-input
-          :style="item.prop === 'searchKey' ? 'width:260px;' :''"
+            :style="item.prop === 'searchKey' ? 'width:260px;' : ''"
             v-else-if="!item.scope"
             clearable
             v-model="formData[item.prop]"
@@ -706,14 +706,19 @@ export default {
                 }
                 if (
                   items.scope === "schoolList" &&
-                  this.educationType[indexType].tireStatus.indexOf("3") !== -1
+                  this.educationType[indexType].tireStatus.indexOf("3") !==
+                    -1 &&
+                  this.formData["businessId"]
                 ) {
                   return items;
                 }
                 if (
                   items.scope === "Professional" &&
-                  this.educationType[indexType].tireStatus.indexOf("4") !== -1
+                  this.educationType[indexType].tireStatus.indexOf("4") !==
+                    -1 &&
+                  this.formData["businessId"]
                 ) {
+
                   return items;
                 }
                 if (
@@ -726,7 +731,10 @@ export default {
             }
           } else {
             if (items.diff === "gfxs") {
-              if (this.formData["studyStatus"] == 2 && this.formData["periodStatus"] == 1) {
+              if (
+                this.formData["studyStatus"] == 2 &&
+                this.formData["periodStatus"] == 1
+              ) {
                 return items;
               }
             } else if (items.diff === "ksdd") {
@@ -909,14 +917,7 @@ export default {
         if (this.formData.businessId) {
           this.formData.businessId = "";
         }
-        if (this.formData.ProfessionalId) {
-          this.formData.ProfessionalId = "";
-        }
       }
-      if (this.formData.schoolId) {
-        this.formData.schoolId = "";
-      }
-
       if (this.formData.subjectId) {
         this.formData.subjectId = "";
       }
@@ -930,17 +931,6 @@ export default {
         .then((res) => {
           this.newBusinessLevel = res.rows;
         });
-
-      this.$api
-        .inquireUserSchool({ status: 1, educationId: id })
-        .then((res) => {
-          this.newSchoolList = res.rows;
-        });
-      this.$api
-        .inquireCourseMajor({ status: 1, educationId: id })
-        .then((res) => {
-          this.newProfessional = res.rows;
-        });
       if (!status1) {
         this.$api
           .inquireCourseSubject({ status: 1, educationId: id })
@@ -955,6 +945,19 @@ export default {
      * @remark 点击业务层次触发事件
      */
     changeBusinessLevel(v) {
+      console.log(12131)
+      if (this.formData.schoolId) {
+        this.formData.schoolId = "";
+      }
+      this.$api.inquireUserSchool({ status: 1, businessId: v }).then((res) => {
+        this.newSchoolList = res.rows;
+      });
+      if (this.formData.majorId) {
+        this.formData.majorId = "";
+      }
+      this.$api.inquireCourseMajor({ status: 1, businessId: v }).then((res) => {
+        this.newProfessional = res.rows;
+      });
       if (this.formData.subjectId) {
         this.formData.subjectId = "";
       }

+ 38 - 8
src/components/tableList.vue

@@ -148,7 +148,7 @@
             <el-input-number
               v-model="scope.row[item.prop]"
               :min="0"
-              style="width:80px;"
+              style="width: 80px"
               :controls="false"
               @change="blurBackData(scope.row)"
             ></el-input-number>
@@ -714,7 +714,8 @@
           }}</span>
           <span v-else-if="item.scope === 'refundPrice'">
             {{
-              scope.row["goodsRealPrice"] >= 0 && scope.row["goodsReceived"] >= 0
+              scope.row["goodsRealPrice"] >= 0 &&
+              scope.row["goodsReceived"] >= 0
                 ? Number(scope.row["goodsRealPrice"]) -
                   Number(scope.row["goodsReceived"]) +
                   "元"
@@ -1042,9 +1043,9 @@
           >
             {{
               scope.row[item.prop] === 0
-                ? "未结业"
+                ? "未学完"
                 : scope.row[item.prop] === 1
-                ? "结业"
+                ? "已学完"
                 : ""
             }}
           </span>
@@ -1285,6 +1286,22 @@
             style="color: #409eff; cursor: pointer"
             >详情</span
           >
+          <div v-else-if="item.scope === 'learnStatus'">
+            <div v-if="scope.row.learnStatus === 0" style="color: red">
+              未开通
+            </div>
+            <div v-if="scope.row.learnStatus === 1">已开通</div>
+            <div v-if="scope.row.learnStatus === 2">
+              标记失败
+              <el-popover placement="right" trigger="click" width="360">
+                <div>
+                  <p>账号开通状态为:标记失败</p>
+                  <p>失败原因:<br />{{ scope.row.reason }}</p>
+                </div>
+                <el-button type="text" slot="reference">原因</el-button>
+              </el-popover>
+            </div>
+          </div>
           <span v-else-if="item.scope === 'ptai'">{{
             scope.row[item.prop] == 1 ? "微信小程序" : "未知"
           }}</span>
@@ -1386,13 +1403,26 @@
         </template>
       </el-table-column>
       <el-table-column
-        label="官方学习账号开通状态"
+        label="官方账号开通状态"
         align="center"
         width="180px"
         v-if="navText.gfUserStatus"
       >
         <template slot-scope="scope">
-          {{ scope.row.learnStatus === 1 ? "是" : "否" }}
+          <div v-if="scope.row.learnStatus === 0" style="color: red">
+            未开通
+          </div>
+          <div v-if="scope.row.learnStatus === 1">已开通</div>
+          <div v-if="scope.row.learnStatus === 2">
+            标记失败
+            <el-popover placement="right" trigger="click" width="360">
+              <div>
+                <p>账号开通状态为:标记失败</p>
+                <p>失败原因:<br />{{ scope.row.reason }}</p>
+              </div>
+              <el-button type="text" slot="reference">原因</el-button>
+            </el-popover>
+          </div>
         </template>
       </el-table-column>
       <el-table-column
@@ -1739,8 +1769,8 @@ export default {
   },
   mounted() {},
   methods: {
-    blurBackData(row){
-      this.$emit("sortFunc",row)
+    blurBackData(row) {
+      this.$emit("sortFunc", row);
     },
     backFunc(row) {
       this.$emit("backFunc", row);

+ 46 - 49
src/views/Marketing/goods/commodityManageMent/add/index.vue

@@ -524,32 +524,36 @@
           ref="listData3"
         >
           <template v-if="listData.goodsType === 1">
-            <el-form-item label="学习次数" prop="studyCount" style="margin-top:10px;">
-            <el-input
-              class="numInputs cenSty"
-              v-model="listData.studyCount"
-            ></el-input>
-          </el-form-item>
-          <el-form-item
-            label="考试次数"
-            style="margin-top: 12px"
-            prop="examNumber"
-          >
-            <el-input
-              class="numInputs cenSty"
-              v-model="listData.examNumber"
-            ></el-input>
-          </el-form-item>
-          <el-form-item
-            label="前培(刷题)机会"
-            style="margin-top: 12px"
-            prop="doNumber"
-          >
-            <el-input
-              class="numInputs cenSty"
-              v-model="listData.doNumber"
-            ></el-input>
-          </el-form-item>
+            <el-form-item
+              label="学习次数"
+              prop="studyCount"
+              style="margin-top: 10px"
+            >
+              <el-input
+                class="numInputs cenSty"
+                v-model="listData.studyCount"
+              ></el-input>
+            </el-form-item>
+            <el-form-item
+              label="考试次数"
+              style="margin-top: 12px"
+              prop="examNumber"
+            >
+              <el-input
+                class="numInputs cenSty"
+                v-model="listData.examNumber"
+              ></el-input>
+            </el-form-item>
+            <el-form-item
+              label="前培(刷题)机会"
+              style="margin-top: 12px"
+              prop="doNumber"
+            >
+              <el-input
+                class="numInputs cenSty"
+                v-model="listData.doNumber"
+              ></el-input>
+            </el-form-item>
           </template>
           <el-form-item
             class="positions"
@@ -1503,7 +1507,7 @@ export default {
     };
     var checkExamPwd = (rule, value, callback) => {
       var reg = /^[0-9]\d*$/;
-      if (value) {
+      if (value || value === 0) {
         if (!reg.test(value)) {
           return callback(new Error("请输入自然数"));
         } else {
@@ -1747,7 +1751,7 @@ export default {
             message: "请输入次数",
             trigger: "blur",
           },
-          { validator: checkExamPwd, message: "请输入自然数", trigger: "blur" },
+          { validator: checkExamPwd, trigger: "blur" },
         ],
         doNumber: [
           {
@@ -1755,7 +1759,7 @@ export default {
             message: "请输入次数",
             trigger: "blur",
           },
-          { validator: checkExamPwd, message: "请输入自然数", trigger: "blur" },
+          { validator: checkExamPwd, trigger: "blur" },
         ],
         studyCount: [
           {
@@ -1763,7 +1767,7 @@ export default {
             message: "请输入次数",
             trigger: "blur",
           },
-          { validator: checkPwd, message: "请输入正整数", trigger: "blur" },
+          { validator: checkPwd, trigger: "blur" },
         ],
         openStudentTime: [
           {
@@ -2541,27 +2545,15 @@ export default {
       this.courTypeOptions.map((item) => {
         if (item.id === this.listData.businessId) {
           this.listData.educationTypeId = item.educationId;
-          var newSujectOption = [];
-          var newSchoolOption = [];
-          var newMajorOption = [];
-          this.sujectOption.map((items) => {
-            if (items.courseArrays.indexOf(item.projectId) !== -1) {
-              newSujectOption.push(items);
-            }
+          this.$api.inquireCourseSubject({ status: 1,businessId:this.listData.businessId }).then((res) => {
+            this.newSujectOption = res.rows
           });
-          this.schoolOption.map((items) => {
-            if (items.courseArrays.indexOf(item.projectId) !== -1) {
-              newSchoolOption.push(items);
-            }
+          this.$api.inquireUserSchool({ status: 1,businessId:this.listData.businessId }).then((res) => {
+            this.newSchoolOption = res.rows
           });
-          this.majorOption.map((items) => {
-            if (items.courseArrays.indexOf(item.educationId) != -1) {
-              newMajorOption.push(items);
-            }
+          this.$api.inquireCourseMajor({ status: 1,businessId:this.listData.businessId }).then((res) => {
+            this.newMajorOption = res.rows
           });
-          this.newSujectOption = newSujectOption;
-          this.newSchoolOption = newSchoolOption;
-          this.newMajorOption = newMajorOption;
         }
       });
       if (this.listData.goodsType === 1) {
@@ -2633,8 +2625,9 @@ export default {
       }
     },
     rulesForms(formName) {
+      var self = this;
       return new Promise((resolve, reject) => {
-        this.$refs[formName].validate((valid) => {
+        self.$refs[formName].validate((valid) => {
           if (valid) {
             resolve();
           } else {
@@ -2716,6 +2709,7 @@ export default {
       datas.year = Number(this.listData.year);
       delete datas.timeArrays;
       delete datas.studyTimeArrays;
+      console.log(datas, "datas触发");
       if (this.listData.goodsType === 1) {
         for (let i = 0; i < this.tableData.length; i++) {
           if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
@@ -3006,6 +3000,9 @@ export default {
         this.dialogVisibleTableBoxs = true;
         this.$nextTick(function () {
           self.$refs.multipleTable.clearSelection();
+          if (data.businessId) {
+            self.$refs.searchBox.changeBusinessLevel(data.businessId);
+          }
         });
       });
     },

+ 13 - 12
src/views/Marketing/goods/commodityManageMent/edit/index.vue

@@ -1515,7 +1515,7 @@ export default {
     };
     var checkExamPwd = (rule, value, callback) => {
       var reg = /^[0-9]\d*$/;
-      if (value) {
+      if (value || value === 0) {
         if (!reg.test(value)) {
           return callback(new Error("请输入自然数"));
         } else if (rule.field === "examNumber" && value < this.copyExamNumber) {
@@ -2475,7 +2475,7 @@ export default {
       await this.businessList();
       await this.CourseSubject();
       await this.UserSchool();
-      await this.CourseMajor();
+      // await this.CourseMajor();
       await this.supply();
       await this.paycost();
       await this.Certificate();
@@ -2720,7 +2720,6 @@ export default {
         if (item.id === this.listData.businessId) {
           var newSujectOption = [];
           var newSchoolOption = [];
-          var newMajorOption = [];
           this.sujectOption.map((items) => {
             if (items.courseArrays.indexOf(item.projectId) !== -1) {
               newSujectOption.push(items);
@@ -2731,14 +2730,16 @@ export default {
               newSchoolOption.push(items);
             }
           });
-          this.majorOption.map((items) => {
-            if (items.courseArrays.indexOf(item.educationId) !== -1) {
-              newMajorOption.push(items);
-            }
-          });
+          this.$api
+            .inquireCourseMajor({
+              status: 1,
+              businessId: this.listData.businessId,
+            })
+            .then((res) => {
+              this.newMajorOption = res.rows;
+            });
           this.newSujectOption = newSujectOption;
           this.newSchoolOption = newSchoolOption;
-          this.newMajorOption = newMajorOption;
         }
       });
     },
@@ -3221,9 +3222,9 @@ export default {
         this.dialogVisibleTableBoxs = true;
         this.$nextTick(function () {
           self.$refs.multipleTable.clearSelection();
-          // self.$refs.searchBox.changeEducationType(
-          //   self.listData.educationTypeId
-          // );
+          if (data.businessId) {
+            self.$refs.searchBox.changeBusinessLevel(this.formDatas.businessId);
+          }
         });
       });
     },

+ 21 - 2
src/views/education/classManageMent/classList/addClass/index.vue

@@ -211,10 +211,10 @@
                 </el-option>
               </el-select>
             </el-form-item>
-            <el-form-item label="官方学习账号开通">
+            <el-form-item label="官方账号标记(有接口+标记功能)">
               <el-select
                 v-model="listData.interfaceAccountId"
-                placeholder="请选择官方学习账号开通"
+                placeholder="请选择官方账号标记(有接口+标记功能)"
                 clearable
               >
                 <el-option
@@ -226,6 +226,21 @@
                 </el-option>
               </el-select>
             </el-form-item>
+            <el-form-item label="官方账号标记(无接口+标记功能)">
+              <el-select
+                v-model="listData.noInterfaceAccountId"
+                placeholder="请选择官方账号标记(无接口+标记功能)"
+                clearable
+              >
+                <el-option
+                  v-for="(item, index) in type4List"
+                  :key="index"
+                  :label="item.name"
+                  :value="item.id"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
             <!-- <el-form-item
               v-if="listData.interfaceAccountId"
               label="学习网址"
@@ -484,6 +499,7 @@ export default {
       type1List: [],
       type2List: [],
       type3List: [],
+      type4List: [],
       teacherList: [],
       statusShow: 1, //0隐藏1显示
       timeArrays: [], //限制班级有效期时间
@@ -539,6 +555,9 @@ export default {
           if (item.type === 3) {
             this.type3List.push(item);
           }
+          if (item.type === 4) {
+            this.type4List.push(item);
+          }
         });
       });
       this.$api

+ 21 - 3
src/views/education/classManageMent/classList/manageClass/baseInfo.vue

@@ -269,11 +269,10 @@
                   </el-option>
                 </el-select>
               </el-form-item>
-              <el-form-item label="官方学习账号开通" prop="interfaceAccountId">
+              <el-form-item label="官方账号标记(有接口+标记功能)">
                 <el-select
                   v-model="listData.interfaceAccountId"
-                  placeholder="请选择官方学习账号开通"
-                  :disabled="copyData.interfaceAccountId"
+                  placeholder="请选择官方账号标记(有接口+标记功能)"
                   clearable
                 >
                   <el-option
@@ -285,6 +284,21 @@
                   </el-option>
                 </el-select>
               </el-form-item>
+              <el-form-item label="官方账号标记(无接口+标记功能)">
+                <el-select
+                  v-model="listData.noInterfaceAccountId"
+                  placeholder="请选择官方账号标记(无接口+标记功能)"
+                  clearable
+                >
+                  <el-option
+                    v-for="(item, index) in type4List"
+                    :key="index"
+                    :label="item.name"
+                    :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
               <!-- <el-form-item
                 v-if="listData.interfaceAccountId"
                 label="学习网址"
@@ -379,6 +393,7 @@ export default {
       type1List: [],
       type2List: [],
       type3List: [],
+      type4List: [],
       teacherList: [],
       statusShow: 0, //0隐藏1出现
       timeArrays: [], //限制班级有效期时间
@@ -509,6 +524,9 @@ export default {
           if (item.type === 3) {
             this.type3List.push(item);
           }
+          if (item.type === 4) {
+            this.type4List.push(item);
+          }
         });
       });
     },

+ 48 - 12
src/views/education/classManageMent/learningAccoutTags/index.vue

@@ -191,20 +191,56 @@ export default {
     },
     getInter(int, v) {
       if (int === 1) {
-        this.$router.push({
-          path: "withInterface",
-          query: {
-            businessId: v.businessId,
-          },
-        });
+        const jump = () => {
+          this.$router.push({
+            path: "withInterface",
+            query: {
+              businessId: v.businessId,
+            },
+          });
+        };
+        const statusPage = this.$store.state.tagsView.visitedViews.some(
+          (item) => {
+            return item.name == "WithInterface";
+          }
+        );
+        if (statusPage) {
+          this.$store
+            .dispatch("tagsView/delCachedView", {
+              name: "WithInterface",
+            })
+            .then((res) => {
+              jump();
+            });
+        } else {
+          jump();
+        }
       }
       if (int === 2) {
-        this.$router.push({
-          path: "commodityManageMentEdit",
-          query: {
-            id: v.goodsId,
-          },
-        });
+        const jump = () => {
+          this.$router.push({
+            path: "NoInterface",
+            query: {
+              businessId: v.businessId,
+            },
+          });
+        };
+        const statusPage = this.$store.state.tagsView.visitedViews.some(
+          (item) => {
+            return item.name == "noInterface";
+          }
+        );
+        if (statusPage) {
+          this.$store
+            .dispatch("tagsView/delCachedView", {
+              name: "noInterface",
+            })
+            .then((res) => {
+              jump();
+            });
+        } else {
+          jump();
+        }
       }
     },
   },

+ 586 - 0
src/views/education/classManageMent/learningAccoutTags/noInterface.vue

@@ -0,0 +1,586 @@
+<template>
+  <div id="noInterface">
+    <div class="inputListBox">
+      <div class="fon_s">专业类型:</div>
+      <div>
+        <el-button
+          style="margin-bottom: 6px"
+          size="small"
+          v-for="(item, index) in Professional"
+          :type="formData.majorId === item.id ? 'primary' : ''"
+          :key="index"
+          @click="topSearch(item.id, 'majorId')"
+          >{{ item.categoryName }}</el-button
+        >
+      </div>
+    </div>
+    <div class="inputListBox">
+      <div class="fon_s">账号状态:</div>
+      <div>
+        <el-button
+          style="margin-bottom: 6px"
+          size="small"
+          v-for="(item, index) in accountList"
+          :type="formData.learnStatus === item.value ? 'primary' : ''"
+          :key="index"
+          @click="topSearch(item.value, 'learnStatus')"
+          >{{ item.label }}</el-button
+        >
+      </div>
+    </div>
+    <div class="inputListBox">
+      <div class="fon_s">学完状态:</div>
+      <div>
+        <el-button
+          style="margin-bottom: 6px"
+          size="small"
+          v-for="(item, index) in studyStatus"
+          :type="formData.finishStatus === item.value ? 'primary' : ''"
+          :key="index"
+          @click="topSearch(item.value, 'finishStatus')"
+          >{{ item.label }}</el-button
+        >
+      </div>
+    </div>
+    <search-box-new
+      ref="searchBox"
+      :formData="formData"
+      :formList="formList"
+      @search="search"
+      @init="init"
+      :advanced="true"
+      @Advanced="advanced"
+      advancedName="高级输入"
+    />
+    <table-list
+      :tableSets="tableSet"
+      :tableData="tableData"
+      :navText="navText"
+      @addClick="addClick"
+      :loading="loading"
+      ref="tableList"
+      row-key="id"
+    >
+      <template slot="customize">
+        <el-button type="warning" @click="moreActive(4)"
+          >账号状态标记</el-button
+        >
+        <el-button type="primary" @click="moreActive(1)">学完</el-button>
+      </template>
+      <template slot="btn" slot-scope="props">
+        <el-button type="text" @click="moreActive(4, props.scope.row)"
+          >账号标记</el-button
+        >
+        <el-button type="text" @click="moreActive(1, props.scope.row)"
+          >学完标记</el-button
+        >
+      </template>
+    </table-list>
+    <pagination
+      :total="total"
+      :pageSize="formData.pageSize"
+      :currentPage="formData.pageNum"
+      @handleSizeChange="handleSizeChange"
+      @handleCurrentChange="handleCurrentChange"
+    />
+    <el-dialog
+      :visible.sync="dialogPLS"
+      width="660px"
+      :show-close="false"
+      :close-on-click-modal="false"
+    >
+      <div slot="title" class="hearders">
+        <div class="leftTitle">高级输入</div>
+        <div class="rightBoxs">
+          <img
+            src="@/assets/images/Close@2x.png"
+            alt=""
+            @click="dialogPLS = false"
+          />
+        </div>
+      </div>
+      <el-row :gutter="20">
+        <el-col :span="12"
+          ><h4>请输入学员的身份证号码,换行隔开,每行一个</h4>
+          <el-input
+            type="textarea"
+            :rows="10"
+            placeholder="请输入身份证"
+            v-model="idcordList"
+          >
+          </el-input>
+        </el-col>
+        <el-col :span="12">
+          <h4>快捷导入</h4>
+          <el-link type="primary" @click="getDowm">下载模板</el-link>
+          <label
+            for="mobles"
+            class="el-button el-button--primary"
+            style="margin-left: 14px; padding: 10px 20px"
+            >上传学员名单</label
+          ><input
+            style="display: none"
+            type="file"
+            id="mobles"
+            ref="input1"
+            @change="importMobleadd"
+          />
+        </el-col>
+      </el-row>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogPLS = false">取消</el-button>
+        <el-button type="primary" @click="submitChecksPals">确定</el-button>
+      </span>
+    </el-dialog>
+    <account-tag ref="accountTag" @successFuncBack="successFuncBack" />
+  </div>
+</template>
+
+<script>
+import searchBoxNew from "@/components/searchBoxNew";
+import tableList from "@/components/tableList";
+import pagination from "@/components/pagination";
+import accountTag from "@/components/AccountTag";
+export default {
+  name: "NoInterface",
+  components: { searchBoxNew, tableList, pagination, accountTag },
+  data() {
+    return {
+      loading: false, //当前表单加载是否加载动画
+      navText: {
+        title: "无接口数据标记",
+        index: 0,
+        ch: "条",
+        num: false,
+        border: true,
+        choice: true,
+        addHide: true,
+        openCheckMore: true,
+        backFatherBtn: {
+          status: false,
+          title: "未定义",
+        },
+      },
+      accountList: [
+        {
+          label: "全部",
+          value: "",
+        },
+        {
+          label: "未开通",
+          value: 0,
+        },
+        {
+          label: "已开通",
+          value: 1,
+        },
+        {
+          label: "标记失败",
+          value: 2,
+        },
+      ],
+      studyStatus: [
+        {
+          label: "全部",
+          value: "",
+        },
+        {
+          label: "未学完",
+          value: 0,
+        },
+        {
+          label: "已学完",
+          value: 1,
+        },
+      ],
+      dialogPLS: false,
+      //搜索
+      formList: [
+        {
+          prop: "realname",
+          placeholder: "请输入学员姓名",
+        },
+        {
+          prop: "idCard",
+          placeholder: "请输入学员身份证",
+        },
+        {
+          prop: "orderSn",
+          placeholder: "请输入订单编码",
+        },
+        {
+          prop: "goodsName",
+          placeholder: "请输入商品名称",
+        },
+        {
+          prop1: "validityStartTime",
+          prop2: "validityEndTime",
+          placeholder1: "查询开始时间",
+          placeholder2: "查询结束时间",
+          scope: "moreDataPicker",
+          Diszing: true,
+        },
+        {
+          prop: "idCards",
+          placeholder: "请输入学员身份证",
+          scope: "textarea",
+        },
+      ],
+      formData: {
+        majorId: "",
+        learnStatus: "",
+        finishStatus: "",
+        idCards: "",
+        status: "0,1",
+        pageSize: 10,
+        pageNum: 1,
+      },
+      // 表单
+      tableSet: [
+        {
+          label: "订单编码",
+          prop: "orderSn",
+          hidden: true,
+        },
+        {
+          label: "学员姓名",
+          prop: "realname",
+          hidden: true,
+        },
+        {
+          label: "学员身份证",
+          prop: "idCard",
+          hidden: true,
+        },
+        {
+          label: "绑定手机号码",
+          prop: "telPhone",
+          hidden: true,
+        },
+        {
+          label: "专业名称",
+          prop: "categoryName",
+          hidden: true,
+        },
+        {
+          label: "商品名称",
+          prop: "goodsName",
+          hidden: true,
+        },
+        {
+          label: "官方账号开通状态",
+          prop: "learnStatus",
+          scope: "learnStatus",
+          hidden: true,
+        },
+        {
+          label: "学完状态",
+          prop: "finishStatus",
+          hidden: true,
+          scope: "isOptions",
+          options: [
+            {
+              label: "未学完",
+              value: 0,
+              style: "color:red",
+            },
+            {
+              label: "已学完",
+              value: 1,
+            },
+          ],
+        },
+      ],
+      idcordList: "",
+      tableData: [], //表单数据
+      total: 0, //一共多少条
+      Professional: [],
+      titleObj: {},
+    };
+  },
+  mounted() {
+    this.$api.obtainbusiness(this.$route.query.businessId).then((res) => {
+      if (res.data) {
+        this.navText.title = `有接口数据标记(${res.data.projectName} - ${res.data.businessName})`;
+      }
+    });
+    this.$api
+      .inquireCourseMajor({
+        status: 1,
+        businessId: this.$route.query.businessId,
+      })
+      .then((res) => {
+        this.Professional = res.rows;
+        this.shiftPushData();
+      });
+
+    this.search();
+  },
+  activated() {
+    this.search();
+  },
+  methods: {
+    /**
+     * 组件成功回调
+     */
+    successFuncBack() {
+      this.search();
+      this.$refs.tableList.clearMoreActive();
+    },
+    topSearch(id, label) {
+      this.formData[label] = id;
+      this.search();
+    }, //1学完 3移除 4账号状态标记
+    moreActive(int, obj) {
+      if (!this.$refs.tableList.allCheckData.length && !obj) {
+        this.$message.warning("请勾选需要操作的学员");
+        return;
+      }
+      if (int === 1 || int === 3 || int === 4) {
+        if (obj) {
+          this.$refs.accountTag.openBox(int, [obj], true);
+        } else {
+          this.$refs.accountTag.openBox(int, this.$refs.tableList.allCheckData);
+        }
+      }
+    },
+    advanced(datas) {
+      this.dialogPLS = true;
+      this.idcordList = this.formData.idCards;
+    },
+    submitChecksPals() {
+      this.formData.idCards = this.idcordList;
+      this.dialogPLS = false;
+    },
+    search(int) {
+      this.loading = true;
+      if (int === 1) {
+        this.formData.pageNum = 1;
+      }
+      if (int === 2) {
+        this.formData = {
+          status: "0,1",
+          pageSize: 10,
+          pageNum: 1,
+          idCards: "",
+          canCancel: 1,
+          majorId: "",
+          learnStatus: "",
+          finishStatus: "",
+        };
+      }
+      if (int === 3) {
+        this.formData.pageNum = 1;
+      }
+      var data = JSON.parse(JSON.stringify(this.formData));
+      data.businessId = this.$route.query.businessId;
+      data.hasInterface = 2;
+      if (this.formData.idCards) {
+        data.idCards = this.formData.idCards.split("\n");
+      }
+      if (this.formData.validityStartTime) {
+        data.searchStartTime = data.validityStartTime / 1000;
+      }
+      if (this.formData.validityEndTime) {
+        data.searchEndTime = data.validityEndTime / 1000;
+      }
+      this.$api
+        .inquireGradegradelistGrade(data)
+        .then((res) => {
+          this.tableData = res.rows;
+          this.total = res.total;
+          this.navText.index = res.total;
+        })
+        .finally(() => {
+          this.loading = false;
+        });
+    },
+    init() {
+      this.search(2);
+      this.$refs.tableList.clearMoreActive();
+    },
+    addClick(v, int) {},
+    handleSizeChange(v) {
+      this.formData.pageSize = v;
+      this.formData.pageNum = 1;
+      this.search();
+    },
+    handleCurrentChange(v) {
+      this.formData.pageNum = v;
+      this.search();
+    },
+    /**
+     * 下载模板
+     */
+    getDowm() {
+      let url =
+        baseUrls.BASE_IMG_URL +
+        "/oss/images/file/20220214.xls" +
+        `?time=${this.$methodsTools.getNewTime()}`;
+      let link = document.createElement("a");
+      let fileName = "导入模板" + ".xlsx";
+      document.body.appendChild(link);
+      link.href = url;
+      link.dowmload = fileName;
+      link.click();
+      link.remove();
+    },
+    /**
+     * 导入
+     */
+    importMobleadd(e) {
+      var self = this;
+      var file = e.target.files[0];
+      let formData = new FormData();
+      formData.append("file", file);
+      this.$api
+        .editsystemimportIdsData(formData)
+        .then((res) => {
+          if (!res.data.length) {
+            this.$message.warning("未检测到上传学员数据,请检查上传文件");
+            return;
+          }
+          let idList = res.data.map((item) => {
+            return item.idCard.toString();
+          });
+          if (this.idcordList) {
+            var arr = this.idcordList.split("\n");
+            var arrs = arr.concat(idList);
+            var newArr = arrs.filter(function (value, index, self) {
+              return self.indexOf(value) === index;
+            });
+            this.idcordList = newArr.join("\n");
+          } else {
+            var newArr = idList.filter(function (value, index, self) {
+              return self.indexOf(value) === index;
+            });
+            this.idcordList = newArr.join("\n");
+          }
+          this.$message.success("上传成功");
+        })
+        .finally(() => {
+          e.target.value = "";
+        });
+    },
+    /**
+     * 加入"全部选项"
+     */
+    shiftPushData() {
+      const FINDID = this.Professional.findIndex((item) => {
+        return item.categoryName === "全部" && item.id === "";
+      });
+      if (FINDID === -1) {
+        this.Professional.unshift({
+          categoryName: "全部",
+          id: "",
+        });
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.fon_s {
+  margin-top: 4px;
+  align-self: start;
+  flex-shrink: 0;
+  font-size: 14px;
+  color: #6b6b6b;
+}
+.inputListBox {
+  display: flex;
+  align-items: center;
+  margin-bottom: 12px;
+}
+/deep/.el-button {
+  border-radius: 8px;
+}
+/deep/.el-dialog {
+  border-radius: 8px;
+  .el-dialog__header {
+    padding: 0;
+    .hearders {
+      height: 40px;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      padding: 0px 18px 0px 20px;
+      border-bottom: 1px solid #e2e2e2;
+      .leftTitle {
+        font-size: 14px;
+        font-weight: bold;
+        color: #2f4378;
+      }
+      .rightBoxs {
+        display: flex;
+        align-items: center;
+        img {
+          width: 14px;
+          height: 14px;
+          margin-left: 13px;
+          cursor: pointer;
+        }
+      }
+    }
+  }
+  .el-dialog__footer {
+    padding: 0;
+    .dialog-footer {
+      padding: 0px 40px;
+      height: 70px;
+      border-top: 1px solid #e2e2e2;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+    }
+  }
+}
+.imgBox {
+  width: 100%;
+  // height: 210px;
+  border: 1px solid #e2e2e2;
+  border-radius: 8px;
+  padding: 8px 8px 3px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  .imgLabel {
+    flex: 1;
+    width: 100%;
+    border: 1px dotted #e2e2e2;
+    color: #999;
+    font-size: 14px;
+    cursor: pointer;
+    border-radius: 8px;
+    .msPhoto {
+      display: flex;
+      justify-content: center;
+      align-items: center;
+      max-width: 100%;
+      max-height: 270px;
+      img {
+        max-width: 100%;
+        max-height: 270px;
+      }
+    }
+    .imgbbx {
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: center;
+      width: 100%;
+      height: 100%;
+      i {
+        font-weight: bold;
+        margin: 14px 0;
+        font-size: 24px;
+      }
+    }
+  }
+  p {
+    margin: 5px 0px;
+  }
+}
+</style>
+

+ 43 - 8
src/views/education/classManageMent/learningAccoutTags/withInterface.vue

@@ -58,17 +58,21 @@
       :navText="navText"
       @addClick="addClick"
       :loading="loading"
+      ref="tableList"
+      row-key="id"
     >
       <template slot="customize">
-        <el-button>【数据同步到官方系统】开通账号</el-button>
-        <el-button>账号状态标记</el-button>
-        <el-button>学完</el-button>
+        <el-button type="danger">【数据同步到官方系统】开通账号</el-button>
+        <el-button type="warning" @click="moreActive(4)"
+          >账号状态标记</el-button
+        >
+        <el-button type="primary" @click="moreActive(1)">学完</el-button>
       </template>
       <template slot="btn" slot-scope="props">
-        <el-button type="text" @click="addClick(props.scope.row, 0)"
+        <el-button type="text" @click="moreActive(4, props.scope.row)"
           >账号标记</el-button
         >
-        <el-button type="text" @click="addClick(props.scope.row)"
+        <el-button type="text" @click="moreActive(1, props.scope.row)"
           >学完标记</el-button
         >
       </template>
@@ -129,6 +133,7 @@
         <el-button type="primary" @click="submitChecksPals">确定</el-button>
       </span>
     </el-dialog>
+    <account-tag ref="accountTag" @successFuncBack="successFuncBack" />
   </div>
 </template>
 
@@ -136,9 +141,10 @@
 import searchBoxNew from "@/components/searchBoxNew";
 import tableList from "@/components/tableList";
 import pagination from "@/components/pagination";
+import accountTag from "@/components/AccountTag";
 export default {
   name: "WithInterface",
-  components: { searchBoxNew, tableList, pagination },
+  components: { searchBoxNew, tableList, pagination, accountTag },
   data() {
     return {
       loading: false, //当前表单加载是否加载动画
@@ -149,7 +155,8 @@ export default {
         num: false,
         border: true,
         choice: true,
-        addHide: false,
+        addHide: true,
+        openCheckMore: true,
         backFatherBtn: {
           status: false,
           title: "未定义",
@@ -264,6 +271,7 @@ export default {
         {
           label: "官方账号开通状态",
           prop: "learnStatus",
+          scope: "learnStatus",
           hidden: true,
         },
         {
@@ -288,9 +296,15 @@ export default {
       tableData: [], //表单数据
       total: 0, //一共多少条
       Professional: [],
+      titleObj: {},
     };
   },
   mounted() {
+    this.$api.obtainbusiness(this.$route.query.businessId).then((res) => {
+      if (res.data) {
+        this.navText.title = `有接口数据标记(${res.data.projectName} - ${res.data.businessName})`;
+      }
+    });
     this.$api
       .inquireCourseMajor({
         status: 1,
@@ -307,9 +321,29 @@ export default {
     this.search();
   },
   methods: {
+    /**
+     * 组件成功回调
+     */
+    successFuncBack() {
+      this.search();
+      this.$refs.tableList.clearMoreActive();
+    },
     topSearch(id, label) {
       this.formData[label] = id;
       this.search();
+    }, //1学完 3移除 4账号状态标记
+    moreActive(int, obj) {
+      if (!this.$refs.tableList.allCheckData.length && !obj) {
+        this.$message.warning("请勾选需要操作的学员");
+        return;
+      }
+      if (int === 1 || int === 3 || int === 4) {
+        if (obj) {
+          this.$refs.accountTag.openBox(int, [obj], true);
+        } else {
+          this.$refs.accountTag.openBox(int, this.$refs.tableList.allCheckData);
+        }
+      }
     },
     advanced(datas) {
       this.dialogPLS = true;
@@ -341,7 +375,7 @@ export default {
       }
       var data = JSON.parse(JSON.stringify(this.formData));
       data.businessId = this.$route.query.businessId;
-      data.interfaceAccountId = 1;
+      data.hasInterface = 1;
       if (this.formData.idCards) {
         data.idCards = this.formData.idCards.split("\n");
       }
@@ -364,6 +398,7 @@ export default {
     },
     init() {
       this.search(2);
+      this.$refs.tableList.clearMoreActive();
     },
     addClick(v, int) {},
     handleSizeChange(v) {

+ 44 - 86
src/views/education/classManageMent/studentMenu/index.vue

@@ -27,12 +27,16 @@
           v-if="statusShow.indexOf(1) !== -1"
           >已推送:{{ gfNum }}/{{ total }}</span
         >
-        <el-button size="small" v-if="statusShow.indexOf(3) !== -1"
-          >官方学习账号开通</el-button
-        >
         <el-button
+          type="primary"
           size="small"
           v-if="statusShow.indexOf(3) !== -1"
+          >【数据同步到官方系统】开通账号</el-button
+        >
+        <el-button
+          size="small"
+          type="warning"
+          v-if="statusShow.indexOf(3) !== -1 || statusShow.indexOf(4) !== -1"
           @click="moreActive(4)"
           >账号状态标记</el-button
         >
@@ -54,7 +58,7 @@
     >
       <template slot="customize">
         <el-button :size="size" type="success" @click="moreActive(1)"
-          >结业</el-button
+          >学完</el-button
         >
         <!-- <el-button :size="size" type="warning" @click="moreActive(3)"
           >移除</el-button
@@ -96,74 +100,7 @@
       @handleSizeChange="handleSizeChange"
       @handleCurrentChange="handleCurrentChange"
     />
-    <el-dialog
-      :visible.sync="dialogVisible"
-      width="460px"
-      :show-close="false"
-      :close-on-click-modal="false"
-    >
-      <div slot="title" class="hearders">
-        <div class="leftTitle">
-          {{
-            stice == 1
-              ? "批准结业"
-              : stice == 4
-              ? "学习账号开通状态标记"
-              : stice == 3
-              ? "移除学员"
-              : ""
-          }}
-        </div>
-        <div class="rightBoxs">
-          <img
-            src="@/assets/images/Close@2x.png"
-            alt=""
-            @click="dialogVisible = false"
-          />
-        </div>
-      </div>
-      <div>
-        <ul>
-          <li
-            v-for="(item, index) in allCheckList"
-            :key="index"
-            class="btnLists"
-          >
-            {{ item.realName }}
-            <i
-              class="el-icon-close btnIcon"
-              v-if="allCheckList.length > 1"
-              @click="clearStudent(index)"
-            ></i>
-          </li>
-          <div style="clear: both"></div>
-          <p>
-            {{
-              stice == 1
-                ? "所选学员,批转结业吗?"
-                : stice == 3
-                ? "是否移除所选中的学员?"
-                : stice == 4
-                ? "确定以上所选学员标记为【已开通账号】吗?"
-                : ""
-            }}
-          </p>
-          <div style="text-align: center">
-            <el-radio-group
-              v-model="finishStatusOS"
-              v-if="stice == 1 || stice == 4"
-            >
-              <el-radio :label="1">是</el-radio>
-              <el-radio :label="0">否</el-radio>
-            </el-radio-group>
-          </div>
-        </ul>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="submit">确 定</el-button>
-      </span>
-    </el-dialog>
+
     <el-dialog
       :visible.sync="dialogVisibleTable"
       width="1080px"
@@ -542,14 +479,16 @@
         <el-button @click="dialogVisibleStudent = false">取 消</el-button>
       </span>
     </el-dialog>
+    <account-tag ref="accountTag" @successFuncBack="successFuncBack" />
   </div>
 </template>
 
 <script>
 import tableList from "@/components/tableList";
 import pagination from "@/components/pagination";
+import accountTag from "@/components/AccountTag";
 export default {
-  components: { tableList, pagination },
+  components: { tableList, pagination, accountTag },
   data() {
     return {
       options: [
@@ -614,7 +553,7 @@ export default {
         },
         {
           label: "学员姓名",
-          prop: "realName",
+          prop: "realname",
           hidden: true,
         },
         {
@@ -694,6 +633,7 @@ export default {
       ],
       listData: {},
       finishStatusOS: "",
+      failReason: "", //失败原因
       tableData: [], //表单数据
       total: 0, //一共多少条
       gfNum: 0, //官方信息推送
@@ -750,6 +690,13 @@ export default {
     this.search();
   },
   methods: {
+    /**
+     * 组件成功回调
+     */
+    successFuncBack() {
+      this.search();
+      this.$refs.tableList.clearMoreActive();
+    },
     uploadGF() {
       if (!this.$refs.tableList.allCheckData.length) {
         this.$message.warning("请勾选需要官方信息推送的学员");
@@ -832,15 +779,34 @@ export default {
         id: ars,
       };
       if (this.stice === 1 || this.stice === 4) {
-        if (this.finishStatusOS !== 0 && this.finishStatusOS !== 1) {
-          this.$message.warning("请选择是或否");
-          return;
+        if (this.stice === 1) {
+          if (this.finishStatusOS !== 0 && this.finishStatusOS !== 1) {
+            this.$message.warning("请进行学习完成状态标记");
+            return;
+          }
+        }
+        if (this.stice === 4) {
+          if (
+            this.finishStatusOS !== 0 &&
+            this.finishStatusOS !== 1 &&
+            this.finishStatusOS !== 2
+          ) {
+            this.$message.warning("请选择账号开通状态标记");
+            return;
+          }
         }
         if (this.stice === 1) {
           data.finishStatus = this.finishStatusOS;
         }
         if (this.stice === 4) {
           data.learnStatus = this.finishStatusOS;
+          if (this.finishStatusOS === 2) {
+            if (!this.failReason) {
+              this.$message.error("请填写失败原因");
+              return;
+            }
+            data.reason = this.failReason;
+          }
         }
       }
       if (this.stice === 3) {
@@ -860,12 +826,7 @@ export default {
         return;
       }
       if (int === 1 || int === 3 || int === 4) {
-        this.stice = int;
-        this.allCheckList = JSON.parse(
-          JSON.stringify(this.$refs.tableList.allCheckData)
-        );
-        this.finishStatusOS = "";
-        this.dialogVisible = true;
+        this.$refs.accountTag.openBox(int, this.$refs.tableList.allCheckData);
       }
       if (int === 2) {
         var newTime = Date.parse(new Date()) / 1000;
@@ -913,9 +874,6 @@ export default {
         this.totalClass = res.total;
       });
     },
-    clearStudent(index) {
-      this.allCheckList.splice(index, 1);
-    },
     editInfo(v) {
       // this.addClick(v, 2);
     },