Browse Source

fiex:合并

Tang 3 years ago
parent
commit
f54736f8c6
25 changed files with 1471 additions and 153 deletions
  1. 42 10
      src/components/tableList.vue
  2. 16 0
      src/newApi/paperquestion.js
  3. 1 0
      src/views/Marketing/order/orderList/index.vue
  4. 161 5
      src/views/education/classManageMent/classHoursReview/studyTimes.vue
  5. 72 14
      src/views/education/classManageMent/learningHoursRecordList/index.vue
  6. 100 9
      src/views/education/classManageMent/studentMenu/index.vue
  7. 44 5
      src/views/education/dataReview/dataConfig/index.vue
  8. 10 1
      src/views/education/dataReview/informationTemplate/index.vue
  9. 45 6
      src/views/education/dataReview/stamp/index.vue
  10. 2 2
      src/views/education/examManagement/applicationData/bulkImportPlan/newRegister.vue
  11. 2 2
      src/views/education/examManagement/applicationData/bulkImportPlan/newYY.vue
  12. 2 1
      src/views/education/examManagement/applicationData/cancelAppointMent/index.vue
  13. 2 1
      src/views/education/examManagement/applicationData/examRegistration/index.vue
  14. 1 1
      src/views/education/examManagement/applicationData/formerAccount/index.vue
  15. 95 2
      src/views/education/studentManageMent/studentXQ/studentBaseManage.vue
  16. 5 1
      src/views/education/studentManageMent/studentXQ/studyRecord.vue
  17. 30 1
      src/views/resource/bankManagement/testPaperManagement/addPaper/topicAddPaper/index.vue
  18. 37 1
      src/views/resource/bankManagement/testPaperManagement/editPaper/topicEditPaper/index.vue
  19. 236 0
      src/views/resource/bankManagement/testPaperManagement/editPaper/topicEditPaper/wordPop.vue
  20. 88 0
      src/views/resource/bankManagement/topicManagement/excelPop.vue
  21. 70 52
      src/views/resource/bankManagement/topicManagement/index.vue
  22. 314 0
      src/views/resource/bankManagement/topicManagement/wordPop.vue
  23. 11 9
      src/views/resource/baseManageInfos/resource/businessLevel/index.vue
  24. 72 17
      src/views/systemManagement/auditManagement/assignReviewers/index.vue
  25. 13 13
      src/views/systemManagement/roleManagement/index.vue

+ 42 - 10
src/components/tableList.vue

@@ -915,20 +915,52 @@
             }}
           </span>
           <div v-else-if="item.scope === 'changeCLS'">
-            <div v-if="scope.row[item.prop] === 1" :style="scope.row['userUpdates'][0].createTime > scope.row['officialStatusTime'] ? 'color: purple':'color: red'">
-              有变更
-              <span
-                style="margin-left: 6px; color: blue; cursor: pointer"
-                @click="isShowBoxsFun(scope.row)"
-                >查看</span
-              >
+            <div v-if="scope.row[item.prop] === 1">
+              <div v-if="scope.row['interfacePushId'] !== 1" style="color: red">
+                有变更<span
+                  style="margin-left: 6px; color: blue; cursor: pointer"
+                  @click="isShowBoxsFun(scope.row)"
+                  >查看</span
+                >
+              </div>
+              <template v-else>
+                <template v-if="scope.row['officialStatusTime']">
+                  <div
+                    v-if="
+                      scope.row['userUpdates'][0].createTime >
+                      scope.row['officialStatusTime']
+                    "
+                    style="color: purple"
+                  >
+                    有变更
+                    <span
+                      style="margin-left: 6px; color: blue; cursor: pointer"
+                      @click="isShowBoxsFun(scope.row)"
+                      >查看</span
+                    >
+                  </div>
+                  <span v-else> 正常 </span>
+                </template>
+                <div v-else style="color: purple">
+                  有变更
+                  <span
+                    style="margin-left: 6px; color: blue; cursor: pointer"
+                    @click="isShowBoxsFun(scope.row)"
+                    >查看</span
+                  >
+                </div>
+              </template>
             </div>
             <span v-else> 正常 </span>
           </div>
           <div v-else-if="item.scope === 'rebuy'">
-            <span>{{ scope.row[item.prop] === 1 ? "是" : "" }}</span>
+            <span>{{
+              scope.row[item.prop] === 1 && scope.row[item.prop1] === 1
+                ? "是"
+                : ""
+            }}</span>
             <span
-              v-if="scope.row[item.prop] === 1"
+              v-if="scope.row[item.prop] === 1 && scope.row[item.prop1] === 1"
               style="margin-left: 6px; color: blue; cursor: pointer"
               @click="isShowRebuy(scope.row)"
               >查看</span
@@ -1568,7 +1600,7 @@ export default {
       },
       treeDatas: [],
       treeDatas1: [],
-      treeDatas2: []
+      treeDatas2: [],
     };
   },
   computed: {

+ 16 - 0
src/newApi/paperquestion.js

@@ -47,4 +47,20 @@ export default {
             method: 'get',
         })
     },
+    //导入题目Word模板
+    bankquestionimportWordData(data) {
+        return request({
+            url: '/bank/question/importWordData',
+            method: 'post',
+            data
+        })
+    },
+    //导入题目Word模板列表
+    bankquestionimportWordQuestionList(data) {
+        return request({
+            url: '/bank/question/importWordQuestionList',
+            method: 'post',
+            data
+        })
+    },
 }

+ 1 - 0
src/views/Marketing/order/orderList/index.vue

@@ -312,6 +312,7 @@ export default {
           label: "复购-学时冲突",
           width: "120px",
           prop: "rebuy",
+          prop1: "periodPlush",
           hidden: true,
           scope: "rebuy",
         },

+ 161 - 5
src/views/education/classManageMent/classHoursReview/studyTimes.vue

@@ -126,7 +126,7 @@
         </div>
       </div>
     </div>
-    <div style="max-height: 540px; overflow: auto">
+    <div style="flex: 1; flex-shrink: 0; overflow: auto">
       <el-checkbox-group
         v-model="checkList"
         @change="handleCheckedCitiesChange"
@@ -795,6 +795,50 @@
         </el-table>
       </el-checkbox-group>
     </div>
+    <el-dialog
+      :visible.sync="vidBoxHours"
+      v-if="vidBoxHours"
+      width="560px"
+      :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="vidBoxHours = false"
+          />
+        </div>
+      </div>
+      <div>
+        <el-form label-width="80px" label-position="right">
+          <el-form-item label="审核结果" required>
+            <el-radio-group v-model="active_result">
+              <el-radio :label="1">通过</el-radio>
+              <el-radio :label="2">作弊</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item label="作弊原因" required>
+            <el-input
+              v-model="cheating_reason"
+              type="textarea"
+              :rows="4"
+              placeholder="请输入作弊原因"
+            ></el-input>
+            <ul>
+              <li class="li_sty">学习拍照异常学习拍照异常学习拍照异常学习拍照异常学习拍照异常学习拍照异常</li>
+              <li class="li_sty">学习拍照异常</li>
+              <li class="li_sty">学习拍照异常</li>
+            </ul>
+          </el-form-item>
+        </el-form>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="vidBoxHours = false">取 消</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -802,6 +846,9 @@
 export default {
   data() {
     return {
+      active_result: "",
+      cheating_reason: "",
+      vidBoxHours: false,
       checkList: [], //勾选列表
       isIndeterminate: false, //待审半选
       checkAll: false, //全选状态
@@ -1216,9 +1263,15 @@ export default {
         .then((res) => {
           if (res.rows[0].keyValue) {
             var data = JSON.parse(res.rows[0].keyValue);
-            this.recent_photos = data.recent_photos.value;
-            this.idcard_face_photo = data.idcard_face_photo.value;
-            this.idcard_national_photo = data.idcard_national_photo.value;
+            this.recent_photos = data.recent_photos
+              ? data.recent_photos.value
+              : "";
+            this.idcard_face_photo = data.idcard_face_photo
+              ? data.idcard_face_photo.value
+              : "";
+            this.idcard_national_photo = data.idcard_national_photo
+              ? data.idcard_national_photo.value
+              : "";
             this.realName = data.name.value;
             this.idCard = data.idcard.value;
             this.telPhone = data.telphone.value;
@@ -1272,7 +1325,7 @@ export default {
            */
           let getAllList2 = [];
           tab2.forEach((item) => {
-            item.classPeriods.forEach((items) => {
+            item.classPeriodSectionList.forEach((items) => {
               if (items.status === 3) {
                 getAllList2.push(items.periodStatusId);
               }
@@ -1339,6 +1392,19 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.li_sty {
+  background-color: #eee;
+  padding: 0px 10px;
+  margin-bottom: 6px;
+  font-size: 12px;
+  line-height: 26px;
+  display: table;
+}
+#classHoursReview {
+  display: flex;
+  flex-direction: column;
+  height: calc(100vh - 126px);
+}
 .styFlex {
   width: 80px;
   text-align: center;
@@ -1421,6 +1487,7 @@ export default {
   color: #fff;
 }
 .dis_fls {
+  height: 65px;
   margin: 16px 0px;
   display: flex;
   align-items: center;
@@ -1480,4 +1547,93 @@ export default {
     background-color: rgba(90, 90, 90, 0.7);
   }
 }
+/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>

+ 72 - 14
src/views/education/classManageMent/learningHoursRecordList/index.vue

@@ -200,6 +200,14 @@ export default {
             },
           ],
         },
+        {
+          prop1: "searchStartTime",
+          prop2: "searchEndTime",
+          placeholder1: "查询开始时间",
+          placeholder2: "查询结束时间",
+          scope: "moreDataPicker",
+          Diszing: true,
+        },
         {
           prop: "searchKey",
           placeholder: "请输入商品编码/商品名称",
@@ -336,12 +344,20 @@ export default {
     loadingClose() {
       this.disabledBtn = false;
     },
-    exputs() {
-      var data = this.$refs.exportTable.formData;
-      if (!data.businessid) {
+    /**
+     *
+     * @param {Object} data
+     * @remards 导出条件
+     */
+    exputs(data) {
+      // var data = this.$refs.exportTable.formData;
+      if (!data.businessId) {
         this.$message.warning("请选择业务层次");
         return;
       }
+      /**
+       * @remards 学习状态为2的话 需要勾选学时官方推送状态
+       */
       if (
         data.studyStatus === 2 &&
         data.officialStatus !== 0 &&
@@ -351,14 +367,9 @@ export default {
         return;
       }
       this.disabledBtn = true;
+      this.$modal.loading("正在导出数据,请稍后...");
       this.$api
-        .inquireGradegradeListexport({
-          businessId: data.businessid,
-          studyStatus: data.studyStatus,
-          businessName: data.businessName,
-          officialStatus:
-            data.studyStatus === 2 ? data.officialStatus : undefined,
-        })
+        .inquireGradegradeListexport(data)
         .then((res) => {
           let url = baseUrls.baseURL + "common/download?fileName=" + res.msg;
           let link = document.createElement("a");
@@ -369,13 +380,39 @@ export default {
           link.click();
           link.remove();
           this.$message.success("批量导出成功");
-          this.dialogDR = false;
+          // this.dialogDR = false;
+        })
+        .catch((err) => {
+          /**
+           * @remards 请求超时处理
+           */
+          let { message } = err;
+          if (message.includes("timeout")) {
+            this.$message.error(
+              "数据体量过大,无法正常导出,请调整导出的日期范围,缩小数据体量"
+            );
+          }
         })
         .finally(() => {
-          this.disabledBtn = false;
+          this.$modal.closeLoading();
         });
     },
+    /**
+     * 导出前收集条件
+     */
     moreActive() {
+      let data = {
+        studyStatus: this.formData.studyStatus || "",
+        educationTypeId: this.formData.educationTypeId || "",
+        businessId: this.formData.businessId || "",
+        searchKey: this.formData.searchKey || "",
+        searchStartTime: this.formData.searchStartTime / 1000 || "",
+        searchEndTime: this.formData.searchEndTime / 1000 || "",
+        officialStatus:
+          this.formData.studyStatus === 2 ? this.formData.learnStatus : "",
+      };
+      this.exputs(data);
+      return;
       this.dialogDR = true;
     },
     /**
@@ -412,6 +449,9 @@ export default {
       };
       this.vidBox = true;
     },
+    /**
+     * 搜索列表
+     */
     search(int) {
       this.loading = true;
       if (int === 1) {
@@ -430,6 +470,12 @@ export default {
         this.formData.pageNum = 1;
       }
       var data = JSON.parse(JSON.stringify(this.formData));
+      if (this.formData.searchStartTime) {
+        data.searchStartTime = data.searchStartTime / 1000;
+      }
+      if (this.formData.searchEndTime) {
+        data.searchEndTime = data.searchEndTime / 1000;
+      }
       this.$api
         .inquireGradegradelistUserPeriod(data)
         .then((res) => {
@@ -441,14 +487,27 @@ export default {
           this.loading = false;
         });
     },
+    /**
+     * 重置列表
+     */
     init() {
       this.search(2);
     },
+    /**
+     *
+     * @param {Number} v
+     * @remards 每页数量
+     */
     handleSizeChange(v) {
       this.formData.pageSize = v;
       this.formData.pageNum = 1;
       this.search();
     },
+    /**
+     *
+     * @param {Number} v
+     * @remards 切换页码
+     */
     handleCurrentChange(v) {
       this.formData.pageNum = v;
       this.search();
@@ -547,5 +606,4 @@ export default {
     margin: 5px 0px;
   }
 }
-</style>
-
+</style>

+ 100 - 9
src/views/education/classManageMent/studentMenu/index.vue

@@ -25,7 +25,7 @@
         <span
           style="font-size: 14px; margin: 0px 6px"
           v-if="statusShow.indexOf(1) !== -1"
-          >已推送:{{gfNum}}/{{total}}</span
+          >已推送:{{ gfNum }}/{{ total }}</span
         >
         <el-button size="small" v-if="statusShow.indexOf(3) !== -1"
           >官方学习账号开通</el-button
@@ -301,7 +301,7 @@
     </el-dialog>
     <el-dialog
       :visible.sync="dialogVisibleStudent"
-      width="760px"
+      width="1060px"
       :show-close="false"
       :close-on-click-modal="false"
     >
@@ -318,7 +318,65 @@
       <div>
         <el-row :gutter="20">
           <el-form label-position="right" label-width="130px" :model="listData">
-            <el-col :span="12">
+            <el-col :span="6">
+              <div class="dis_fs">
+                <div class="photoSty1">
+                  <img
+                    style="width: 100%; height: 100%"
+                    v-if="!listData.oneInchPhotos"
+                    src="@/assets/404_images/wuyuxaog.png"
+                    alt=""
+                  />
+                  <el-image
+                    v-else
+                    style="width: 100%; height: 100%"
+                    :src="$methodsTools.splitImgHost(listData.oneInchPhotos)"
+                    :preview-src-list="[
+                      $methodsTools.splitImgHost(listData.oneInchPhotos),
+                    ]"
+                  >
+                  </el-image>
+                  <div class="pos_bottom">一寸头像图</div>
+                </div>
+                <div class="photoSty2">
+                  <img
+                    style="width: 100%; height: 100%"
+                    v-if="!listData.idCardImg1"
+                    src="@/assets/404_images/wuyuxaog.png"
+                    alt=""
+                  />
+                  <el-image
+                    v-else
+                    style="width: 100%; height: 100%"
+                    :src="$methodsTools.splitImgHost(listData.idCardImg1)"
+                    :preview-src-list="[
+                      $methodsTools.splitImgHost(listData.idCardImg1),
+                    ]"
+                  >
+                  </el-image>
+                  <div class="pos_bottom">身份证正面照片</div>
+                </div>
+                <div class="photoSty2" style="margin-right: 0px">
+                  <img
+                    style="width: 100%; height: 100%"
+                    v-if="!listData.idCardImg2"
+                    src="@/assets/404_images/wuyuxaog.png"
+                    alt=""
+                  />
+                  <el-image
+                    v-else
+                    style="width: 100%; height: 100%"
+                    :src="$methodsTools.splitImgHost(listData.idCardImg2)"
+                    :preview-src-list="[
+                      $methodsTools.splitImgHost(listData.idCardImg2),
+                    ]"
+                  >
+                  </el-image>
+                  <div class="pos_bottom">身份证背面照片</div>
+                </div>
+              </div>
+            </el-col>
+            <el-col :span="9">
               <el-form-item label="学员编码">
                 <el-input
                   disabled
@@ -402,7 +460,7 @@
                 ></el-input>
               </el-form-item>
             </el-col>
-            <el-col :span="12">
+            <el-col :span="9">
               <el-form-item label="民族">
                 <el-input
                   disabled
@@ -630,7 +688,7 @@ export default {
         },
       ],
       listData: {},
-      finishStatusOS:'',
+      finishStatusOS: "",
       tableData: [], //表单数据
       total: 0, //一共多少条
       gfNum: 0, //官方信息推送
@@ -771,9 +829,9 @@ export default {
         id: ars,
       };
       if (this.stice === 1) {
-        if(this.finishStatusOS !== 0 && this.finishStatusOS !== 1 ){
-          this.$message.warning("请选择是否")
-          return
+        if (this.finishStatusOS !== 0 && this.finishStatusOS !== 1) {
+          this.$message.warning("请选择是否");
+          return;
         }
         data.finishStatus = this.finishStatusOS;
       }
@@ -800,7 +858,7 @@ export default {
         this.allCheckList = JSON.parse(
           JSON.stringify(this.$refs.tableList.allCheckData)
         );
-        this.finishStatusOS = ''
+        this.finishStatusOS = "";
         this.dialogVisible = true;
       }
       if (int === 2) {
@@ -1101,4 +1159,37 @@ export default {
 /deep/.radioTables > .el-radio__label {
   display: none;
 }
+.dis_fs {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+.photoSty1 {
+  flex-shrink: 0;
+  width: 150px;
+  height: 160px;
+  background-color: #fff;
+  position: relative;
+  margin-bottom: 30px;
+}
+.photoSty2 {
+  position: relative;
+  flex-shrink: 0;
+  width: 230px;
+  height: 160px;
+  background-color: #fff;
+  margin-bottom: 30px;
+}
+.pos_bottom {
+  position: absolute;
+  height: 20px;
+  bottom: 0px;
+  left: 0px;
+  right: 0px;
+  background-color: rgba(0, 0, 0, 0.8);
+  text-align: center;
+  line-height: 20px;
+  font-size: 14px;
+  color: #fff;
+}
 </style>

+ 44 - 5
src/views/education/dataReview/dataConfig/index.vue

@@ -417,6 +417,14 @@ export default {
             },
           ],
         },
+        {
+          prop1: "searchStartTime",
+          prop2: "searchEndTime",
+          placeholder1: "查询开始时间",
+          placeholder2: "查询结束时间",
+          scope: "moreDataPicker",
+          Diszing: true,
+        },
         {
           prop: "realname",
           placeholder: "请输入学员姓名",
@@ -550,9 +558,10 @@ export default {
     this.search();
   },
   methods: {
-    exputs() {
+    exputs(data) {
+      this.$modal.loading("正在导出数据,请稍后...");
       this.$api
-        .inquirebaseprofileExport({ status: this.activeDCIndex })
+        .inquirebaseprofileExport(data)
         .then((res) => {
           if (res.code === 200) {
             let url = baseUrls.baseURL + "common/download?fileName=" + res.msg;
@@ -567,9 +576,33 @@ export default {
             this.$message.success("批量导出成功");
             this.dialogDR = false;
           }
+        })
+        .catch((err) => {
+          let { message } = err;
+          if (message.includes("timeout")) {
+            this.$message.error(
+              "数据体量过大,无法正常导出,请调整导出的日期范围,缩小数据体量"
+            );
+          }
+        })
+        .finally(() => {
+          this.$modal.closeLoading();
         });
     },
     moreActive() {
+      let data = {
+        changeStatus: this.formData.changeStatus || "",
+        status: this.formData.status || 0,
+        educationTypeId: this.formData.educationTypeId || "",
+        businessId: this.formData.businessId || "",
+        majorId: this.formData.majorId || "",
+        schoolId: this.formData.schoolId || "",
+        realname: this.formData.realname || "",
+        searchStartTime: this.formData.searchStartTime / 1000 || "",
+        searchEndTime: this.formData.searchEndTime / 1000 || "",
+      };
+      this.exputs(data);
+      return;
       this.activeDCIndex = 0;
       this.dialogDR = true;
     },
@@ -655,8 +688,15 @@ export default {
           pageNum: 1,
         };
       }
+      var data = JSON.parse(JSON.stringify(this.formData));
+      if (this.formData.searchStartTime) {
+        data.searchStartTime = data.searchStartTime / 1000;
+      }
+      if (this.formData.searchEndTime) {
+        data.searchEndTime = data.searchEndTime / 1000;
+      }
       this.$api
-        .inquirebaseprofile(this.formData)
+        .inquirebaseprofile(data)
         .then((res) => {
           this.tableData = res.rows;
           this.total = res.total;
@@ -948,5 +988,4 @@ export default {
     margin: 5px 0px;
   }
 }
-</style>
-
+</style>

+ 10 - 1
src/views/education/dataReview/informationTemplate/index.vue

@@ -871,7 +871,16 @@ export default {
           label: "状态",
           prop: "status",
           hidden: true,
-          scope: "status",
+          scope: "isOptions",
+          options:[
+            {
+              label:"启用",
+              value:1
+            },{
+              label:"停用",
+              value:0
+            }
+          ]
         },
       ],
       tableData: [], //表单数据

+ 45 - 6
src/views/education/dataReview/stamp/index.vue

@@ -328,8 +328,16 @@ export default {
           ],
         },
         {
-          prop: "prefixName",
-          placeholder: "请输入搜索关键内容",
+          prop1: "searchStartTime",
+          prop2: "searchEndTime",
+          placeholder1: "查询开始时间",
+          placeholder2: "查询结束时间",
+          scope: "moreDataPicker",
+          Diszing: true,
+        },
+        {
+          prop: "realname",
+          placeholder: "请输入学员姓名",
         },
       ],
       formData: {
@@ -458,9 +466,10 @@ export default {
     this.search();
   },
   methods: {
-    exputs() {
+    exputs(data) {
+      this.$modal.loading("正在导出数据,请稍后...");
       this.$api
-        .inquirebaseprofileStampexport({ status: this.activeDCIndex })
+        .inquirebaseprofileStampexport(data)
         .then((res) => {
           if (res.code === 200) {
             let url = baseUrls.baseURL + "common/download?fileName=" + res.msg;
@@ -474,9 +483,33 @@ export default {
             this.$message.success("批量导出成功");
             this.dialogDR = false;
           }
+        })
+        .catch((err) => {
+          let { message } = err;
+          if (message.includes("timeout")) {
+            this.$message.error(
+              "数据体量过大,无法正常导出,请调整导出的日期范围,缩小数据体量"
+            );
+          }
+        })
+        .finally(() => {
+          this.$modal.closeLoading();
         });
     },
     moreActive() {
+      let data = {
+        changeStatus: this.formData.changeStatus || "",
+        status: this.formData.status || 0,
+        educationTypeId: this.formData.educationTypeId || "",
+        businessId: this.formData.businessId || "",
+        majorId: this.formData.majorId || "",
+        schoolId: this.formData.schoolId || "",
+        realname: this.formData.realname || "",
+        searchStartTime: this.formData.searchStartTime / 1000 || "",
+        searchEndTime: this.formData.searchEndTime / 1000 || "",
+      };
+      this.exputs(data);
+      return;
       this.activeDCIndex = 0;
       this.dialogDR = true;
     },
@@ -565,6 +598,13 @@ export default {
           pageNum: 1,
         };
       }
+      var data = JSON.parse(JSON.stringify(this.formData));
+      if (this.formData.searchStartTime) {
+        data.searchStartTime = data.searchStartTime / 1000;
+      }
+      if (this.formData.searchEndTime) {
+        data.searchEndTime = data.searchEndTime / 1000;
+      }
       this.$api
         .inquirebaseprofileStamp(this.formData)
         .then((res) => {
@@ -858,5 +898,4 @@ export default {
     margin: 5px 0px;
   }
 }
-</style>
-
+</style>

+ 2 - 2
src/views/education/examManagement/applicationData/bulkImportPlan/newRegister.vue

@@ -467,10 +467,10 @@ export default {
         this.$message.warning("请选择学员");
         return;
       }
-      const indexs = this.examList.findIndex((item) => {
+      const indexs = this.examLists.findIndex((item) => {
         return item.applyId == data.applyId;
       });
-      data.applyName = this.examList[indexs].applyName;
+      data.applyName = this.examLists[indexs].applyName;
       this.$api.inquiresystemsubscribeexportRegister(data).then((res) => {
         let url = baseUrls.baseURL + "common/download?fileName=" + res.msg;
         let link = document.createElement("a");

+ 2 - 2
src/views/education/examManagement/applicationData/bulkImportPlan/newYY.vue

@@ -384,10 +384,10 @@ export default {
       if (int === 1) {
         delete data.applySiteAddressTrain;
       }
-      const indexs = this.examList.findIndex((item) => {
+      const indexs = this.examLists.findIndex((item) => {
         return item.applyId == data.applyId;
       });
-      data.applyName = this.examList[indexs].applyName;
+      data.applyName = this.examLists[indexs].applyName;
       this.$api.inquiresystemsubscribeexportNew(data).then(async (res) => {
         for (let k in res.data) {
           if (res.data[k].code === 200) {

+ 2 - 1
src/views/education/examManagement/applicationData/cancelAppointMent/index.vue

@@ -459,8 +459,9 @@ export default {
           pageSize: 10,
           pageNum: 1,
           idCards: "",
+          applyId: this.formData.applyId,
           canCancel: 1,
-          applyId: this.copyAppid,
+          // applyId: this.copyAppid,
         };
       }
       var data = JSON.parse(JSON.stringify(this.formData));

+ 2 - 1
src/views/education/examManagement/applicationData/examRegistration/index.vue

@@ -543,7 +543,8 @@ export default {
           pageNum: 1,
           idCards: "",
           canExam: 1,
-          applyId: this.copyAppid,
+          applyId: this.formData.applyId,
+          // applyId: this.copyAppid,
         };
       }
       var data = JSON.parse(JSON.stringify(this.formData));

+ 1 - 1
src/views/education/examManagement/applicationData/formerAccount/index.vue

@@ -492,7 +492,7 @@ export default {
           pageNum: 1,
           idCards: "",
           canBefore: 1,
-          beforeId: this.copyAppid,
+          beforeId: this.formData.beforeId,
           applyId: "",
           beforeStatus: "",
         };

+ 95 - 2
src/views/education/studentManageMent/studentXQ/studentBaseManage.vue

@@ -9,7 +9,65 @@
         :rules="rules"
       >
         <el-row :gutter="20">
-          <el-col :span="12">
+          <el-col :span="6">
+            <div class="dis_fs">
+              <div class="photoSty1">
+                <img
+                  style="width: 100%; height: 100%"
+                  v-if="!listData.oneInchPhotos"
+                  src="@/assets/404_images/wuyuxaog.png"
+                  alt=""
+                />
+                <el-image
+                  v-else
+                  style="width: 100%; height: 100%"
+                  :src="$methodsTools.splitImgHost(listData.oneInchPhotos)"
+                  :preview-src-list="[
+                    $methodsTools.splitImgHost(listData.oneInchPhotos),
+                  ]"
+                >
+                </el-image>
+                <div class="pos_bottom">一寸头像图</div>
+              </div>
+              <div class="photoSty2">
+                <img
+                  style="width: 100%; height: 100%"
+                  v-if="!listData.idCardImg1"
+                  src="@/assets/404_images/wuyuxaog.png"
+                  alt=""
+                />
+                <el-image
+                  v-else
+                  style="width: 100%; height: 100%"
+                  :src="$methodsTools.splitImgHost(listData.idCardImg1)"
+                  :preview-src-list="[
+                    $methodsTools.splitImgHost(listData.idCardImg1),
+                  ]"
+                >
+                </el-image>
+                <div class="pos_bottom">身份证正面照片</div>
+              </div>
+              <div class="photoSty2" style="margin-right: 0px">
+                <img
+                  style="width: 100%; height: 100%"
+                  v-if="!listData.idCardImg2"
+                  src="@/assets/404_images/wuyuxaog.png"
+                  alt=""
+                />
+                <el-image
+                  v-else
+                  style="width: 100%; height: 100%"
+                  :src="$methodsTools.splitImgHost(listData.idCardImg2)"
+                  :preview-src-list="[
+                    $methodsTools.splitImgHost(listData.idCardImg2),
+                  ]"
+                >
+                </el-image>
+                <div class="pos_bottom">身份证背面照片</div>
+              </div>
+            </div>
+          </el-col>
+          <el-col :span="9">
             <el-form-item label="学员编码" prop="studentCode">
               <el-input disabled v-model="listData.studentCode"></el-input>
             </el-form-item>
@@ -76,7 +134,7 @@
               </el-radio-group>
             </el-form-item>
           </el-col>
-          <el-col :span="12">
+          <el-col :span="9">
             <el-form-item label="民族" prop="nation">
               <el-input v-model="listData.nation"></el-input>
             </el-form-item>
@@ -208,5 +266,40 @@ export default {
   border-bottom: 1px dotted #9a9a9a;
   margin-bottom: 12px;
 }
+.dis_fs {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: space-between;
+  background-color: #eee;
+}
+.photoSty1 {
+  flex-shrink: 0;
+  width: 150px;
+  height: 160px;
+  background-color: #fff;
+  position: relative;
+  margin-bottom: 30px;
+}
+.photoSty2 {
+  position: relative;
+  flex-shrink: 0;
+  width: 230px;
+  height: 160px;
+  background-color: #fff;
+  margin-bottom: 30px;
+}
+.pos_bottom {
+  position: absolute;
+  height: 20px;
+  bottom: 0px;
+  left: 0px;
+  right: 0px;
+  background-color: rgba(0, 0, 0, 0.8);
+  text-align: center;
+  line-height: 20px;
+  font-size: 14px;
+  color: #fff;
+}
 </style>
 

+ 5 - 1
src/views/education/studentManageMent/studentXQ/studyRecord.vue

@@ -352,7 +352,11 @@ export default {
         return;
       }
       let result = (int1 / int2) * 100;
-      return result + "%";
+      if(result == 0 || result == 100){
+        return result + "%";
+      }else{
+        return result.toFixed(2) + "%";
+      }
     },
     //改变返回值
     getTypes(arr) {

+ 30 - 1
src/views/resource/bankManagement/testPaperManagement/addPaper/topicAddPaper/index.vue

@@ -14,6 +14,11 @@
         @editInfo="editInfo"
         @emitData="emitData"
       >
+      <template slot="customize">
+          <el-button size="medium" @click="dialogDRword = true" type="success"
+            >Word批量导入</el-button
+          >
+        </template>
         <template slot="btn" slot-scope="props">
           <el-button
             type="text"
@@ -37,6 +42,28 @@
           >确定</el-button
         >
       </div>
+      <el-dialog
+        :visible.sync="dialogDRword"
+        :append-to-body="true"
+        width="780px"
+        :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="dialogDRword = false"
+            />
+          </div>
+        </div>
+        <word-pop ref="wordpop" />
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="dialogDRword = false">取 消</el-button>
+        </span>
+      </el-dialog>
       <el-dialog
         width="1080px"
         :visible.sync="innerVisiblePaperTopic"
@@ -658,11 +685,13 @@ import pagination from "@/components/pagination";
 import tableList from "@/components/tableList";
 import busIns from "@/components/busIns";
 import questionBank from "@/components/questionBank";
+import wordPop from "../../editPaper/topicEditPaper/wordPop.vue";
 export default {
   name: "TopicAddPaper",
-  components: { searchBoxNew, pagination, tableList, busIns, questionBank },
+  components: { searchBoxNew, pagination, tableList, busIns, questionBank,wordPop },
   data() {
     return {
+      dialogDRword: false,
       disabledBtn: false,
       showHide: false,
       activeName: "second",

+ 37 - 1
src/views/resource/bankManagement/testPaperManagement/editPaper/topicEditPaper/index.vue

@@ -10,6 +10,11 @@
         @editInfo="editInfo"
         @emitData="emitData"
       >
+        <template slot="customize">
+          <el-button size="medium" @click="dialogDRword = true" type="success"
+            >Word批量导入</el-button
+          >
+        </template>
         <template slot="btn" slot-scope="props">
           <el-button
             type="text"
@@ -41,6 +46,28 @@
           >恢复草稿</el-button
         >
       </div>
+      <el-dialog
+        :visible.sync="dialogDRword"
+        :append-to-body="true"
+        width="780px"
+        :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="dialogDRword = false"
+            />
+          </div>
+        </div>
+        <word-pop ref="wordpop" />
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="dialogDRword = false">取 消</el-button>
+        </span>
+      </el-dialog>
       <el-dialog
         width="1080px"
         :visible.sync="innerVisiblePaperTopic"
@@ -662,10 +689,19 @@ import pagination from "@/components/pagination";
 import tableList from "@/components/tableList";
 import busIns from "@/components/busIns";
 import questionBank from "@/components/questionBank";
+import wordPop from "./wordPop.vue";
 export default {
-  components: { searchBoxNew, pagination, tableList, busIns, questionBank },
+  components: {
+    searchBoxNew,
+    pagination,
+    tableList,
+    busIns,
+    questionBank,
+    wordPop,
+  },
   data() {
     return {
+      dialogDRword: false,
       disabledBtn: false,
       showHide: false,
       formList: [

+ 236 - 0
src/views/resource/bankManagement/testPaperManagement/editPaper/topicEditPaper/wordPop.vue

@@ -0,0 +1,236 @@
+<template>
+  <div>
+    <div class="swq">
+      <img
+        style="width: 182px; height: 168px"
+        src="@/assets/images/dr.png"
+        alt=""
+      />
+    </div>
+    <div style="padding-left: 100px">
+      <p>第一步:下载word导入模板</p>
+      <p style="padding-left: 50px">
+        <i class="el-icon-upload"></i
+        ><span class="dowmStys" @click="getDowm">下载模板</span>
+      </p>
+      <p>第二步:点击“上传Word”完成导入</p>
+      <label
+        for="mobles"
+        style="margin-left: 50px"
+        class="el-button el-button--primary el-button--mini"
+        >上传Word</label
+      ><input
+        style="display: none"
+        type="file"
+        id="mobles"
+        ref="input1"
+        @change="importMobleadd"
+      />
+    </div>
+    <el-dialog
+      append-to-body
+      :visible.sync="dialogERROR"
+      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="dialogERROR = false"
+          />
+        </div>
+      </div>
+      <div>
+        <h4 style="margin-top: 0px; font-weight: bold; text-align: center">
+          导入失败原因
+        </h4>
+        <el-input
+          readonly
+          type="textarea"
+          :autosize="{ minRows: 6, maxRows: 24 }"
+          v-model="errorData"
+        >
+        </el-input>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogERROR = false">确定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import * as baseUrls from "@/utils/request.js";
+export default {
+  data() {
+    return {
+      errorData: "",
+      formData: {
+        eduId: "",
+        businessId: "",
+        subjectId: "",
+        projectId: "",
+      },
+      dialogERROR: false,
+    };
+  },
+  methods: {
+    getDowm() {
+      let url =
+        baseUrls.BASE_IMG_URL + "/oss/images/file/20220317/1647486041811.docx";
+      let link = document.createElement("a");
+      let fileName = "导入模板" + ".docx";
+      document.body.appendChild(link);
+      link.href = url;
+      link.dowmload = fileName;
+      link.click();
+      link.remove();
+    },
+    importMobleadd(e) {
+      var self = this;
+      let arr = this.$parent.$parent.businObj;
+      var file = e.target.files[0];
+      let formData = new FormData();
+      formData.append("file", file);
+      formData.append("eduId", arr.educationTypeId);
+      formData.append("projectId", arr.projectId);
+      formData.append("businessId", arr.businessId);
+      formData.append("subjectId", arr.subjectId);
+      this.$api
+        .bankquestionimportWordQuestionList(formData)
+        .then((res) => {
+          if (res.code === 200) {
+            self.$message.success("导入成功");
+            let numList = self.$parent.$parent.tableData;
+            if (numList.length) {
+              let numIndex = 0;
+              numList.forEach((items) => {
+                if (items.sort > numIndex) {
+                  numIndex = items.sort;
+                }
+              });
+              res.data.forEach((items, indexs) => {
+                items.sort = 1 + numIndex++;
+              });
+            } else {
+              res.data.forEach((items, indexs) => {
+                items.sort = 1 + indexs++;
+              });
+            }
+            self.$parent.$parent.tableData =
+              self.$parent.$parent.tableData.concat(res.data);
+            self.$parent.$parent.dialogDRword = false;
+          }
+        })
+        .finally(() => {
+          e.target.value = "";
+        });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+/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;
+    }
+  }
+}
+
+.swq {
+  text-align: center;
+  border-bottom: 1px solid #eee;
+}
+.dowmStys {
+  color: blue;
+  cursor: pointer;
+}
+.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>

+ 88 - 0
src/views/resource/bankManagement/topicManagement/excelPop.vue

@@ -0,0 +1,88 @@
+<template>
+  <div>
+    <div class="swq">
+      <img
+        style="width: 182px; height: 168px"
+        src="@/assets/images/dr.png"
+        alt=""
+      />
+    </div>
+    <div style="padding-left: 100px">
+      <p>第一步:下载excel导入模板</p>
+      <p style="padding-left: 50px">
+        <i class="el-icon-upload"></i
+        ><span class="dowmStys" @click="getDowm">下载模板</span>
+      </p>
+      <p>第二步:点击“上传Excel”</p>
+      <label for="mobles2" class="el-button el-button--primary el-button--mini"
+        >上传Excel</label
+      ><input
+        style="display: none"
+        type="file"
+        id="mobles2"
+        ref="input2"
+        @change="importMobleadd"
+      />
+    </div>
+  </div>
+</template>
+
+<script>
+import * as baseUrls from "@/utils/request.js";
+export default {
+  data() {
+    return {};
+  },
+  methods: {
+    getDowm() {
+      let url =
+        baseUrls.BASE_IMG_URL + "/oss/images/file/20220307/1646623385198.xlsx";
+      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
+        .importDatabankquestion(formData)
+        .then((res) => {
+          if (res.msg == "操作成功") {
+            self.$message.success("导入成功");
+          } else {
+            let url = baseUrls.baseURL + "common/download?fileName=" + res.msg;
+            let link = document.createElement("a");
+            let fileName = "导入模板" + ".xlsx";
+            document.body.appendChild(link);
+            link.href = url;
+            link.dowmload = fileName;
+            link.click();
+            link.remove();
+            self.$message.warning("导入有误,请打开文档查看错误原因");
+          }
+        })
+        .finally(() => {
+          e.target.value = "";
+          self.$emit("search",2)
+        });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.swq {
+  text-align: center;
+  border-bottom: 1px solid #eee;
+}
+.dowmStys {
+  color: blue;
+  cursor: pointer;
+}
+</style>

+ 70 - 52
src/views/resource/bankManagement/topicManagement/index.vue

@@ -16,20 +16,11 @@
       @editInfo="editInfo"
     >
       <template slot="customize">
-        <el-button size="medium" @click="dowmModel" type="warning"
-          >下载模板</el-button
+        <el-button size="medium" @click="dialogDRword = true" type="success"
+          >Word批量导入</el-button
+        ><el-button size="medium" @click="dialogDRexcel = true" type="success"
+          >Excel批量导入</el-button
         >
-        <label
-          for="mobles"
-          class="el-button el-button--success"
-          style="margin-right: 10px; padding: 10px 20px"
-          >导入模板</label
-        ><input
-          style="display: none"
-          type="file"
-          id="mobles"
-          @change="importMoble"
-        />
       </template>
       <template slot="btn" slot-scope="props">
         <el-button type="text" @click="addClick(props.scope.row, 0)"
@@ -46,6 +37,51 @@
       @handleCurrentChange="handleCurrentChange"
     />
     <!-- ------------------- -->
+    <el-dialog
+      @closed="clearData"
+      :visible.sync="dialogDRword"
+      :append-to-body="true"
+      width="780px"
+      :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="dialogDRword = false"
+          />
+        </div>
+      </div>
+      <word-pop @search="search" ref="wordpop" />
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogDRword = false">取 消</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog
+      :visible.sync="dialogDRexcel"
+      :append-to-body="true"
+      width="780px"
+      :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="dialogDRexcel = false"
+          />
+        </div>
+      </div>
+      <excel-pop @search="search" />
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogDRexcel = false">取 消</el-button>
+      </span>
+    </el-dialog>
     <el-dialog
       @closed="loadingClose"
       width="1080px"
@@ -209,17 +245,28 @@
 </template>
 
 <script>
-import * as baseUrls from "@/utils/request.js";
 import searchBoxNew from "@/components/searchBoxNew";
 import tableList from "@/components/tableList";
 import pagination from "@/components/pagination";
 import busIns from "@/components/busIns";
 import questionBank from "@/components/questionBank";
+import wordPop from "./wordPop.vue";
+import excelPop from "./excelPop.vue";
 export default {
-  components: { questionBank, busIns, tableList, pagination, searchBoxNew },
+  components: {
+    questionBank,
+    busIns,
+    tableList,
+    pagination,
+    searchBoxNew,
+    wordPop,
+    excelPop,
+  },
   name: "TopicManagement",
   data() {
     return {
+      dialogDRword: false,
+      dialogDRexcel: false,
       disabledBtn: false,
       statusHide: false,
       loading: false, //当前表单加载是否加载动画
@@ -408,46 +455,17 @@ export default {
     this.search();
   },
   methods: {
+    clearData() {
+      this.$refs.wordpop.formData = {
+        eduId: "",
+        businessId: "",
+        subjectId: "",
+        projectId: "",
+      };
+    },
     loadingClose() {
       this.disabledBtn = false;
     },
-    dowmModel() {
-      let url = baseUrls.BASE_IMG_URL + "/oss/images/file/20220307/1646623385198.xlsx";
-      let link = document.createElement("a");
-      let fileName = "导入模板" + ".xlsx";
-      document.body.appendChild(link);
-      link.href = url;
-      link.dowmload = fileName;
-      link.click();
-      link.remove();
-    },
-    importMoble(e) {
-      var self = this;
-      var file = e.target.files[0];
-      let formData = new FormData();
-      formData.append("file", file);
-      this.$api
-        .importDatabankquestion(formData)
-        .then((res) => {
-          if (res.msg == "操作成功") {
-            self.$message.success("导入成功");
-          } else {
-            let url = baseUrls.baseURL + "common/download?fileName=" + res.msg;
-            let link = document.createElement("a");
-            let fileName = "导入模板" + ".xlsx";
-            document.body.appendChild(link);
-            link.href = url;
-            link.dowmload = fileName;
-            link.click();
-            link.remove();
-            self.$message.warning("导入有误,请打开文档查看错误原因");
-          }
-        })
-        .finally(() => {
-          self.search();
-          e.target.value = "";
-        });
-    },
     editInfo(v) {
       this.addClick(v, 0);
     },

+ 314 - 0
src/views/resource/bankManagement/topicManagement/wordPop.vue

@@ -0,0 +1,314 @@
+<template>
+  <div>
+    <div class="swq">
+      <img
+        style="width: 182px; height: 168px"
+        src="@/assets/images/dr.png"
+        alt=""
+      />
+    </div>
+    <div style="padding-left: 100px">
+      <p>第一步:下载word导入模板</p>
+      <p style="padding-left: 50px">
+        <i class="el-icon-upload"></i
+        ><span class="dowmStys" @click="getDowm">下载模板</span>
+      </p>
+      <p>第二步:选择必填项</p>
+      <div>
+        <!-- 教育类型 -->
+        <el-select
+          v-model="formData.eduId"
+          placeholder="请选择教育类型(必填)"
+          size="mini"
+          @change="changeEducationType"
+        >
+          <el-option
+            v-for="(items, indexs) in educationType"
+            :key="indexs"
+            :label="items.educationName"
+            :value="items.id"
+          ></el-option>
+        </el-select>
+        <!-- 业务层次 -->
+        <el-select
+          v-if="formData.eduId"
+          v-model="formData.businessId"
+          placeholder="请选择业务层次(必填)"
+          size="mini"
+          @change="changeBusinessLevel"
+        >
+          <el-option
+            v-for="(items, indexs) in newBusinessLevel"
+            :key="indexs"
+            :label="items.projectName + '-' + items.businessName"
+            :value="items.id"
+          ></el-option>
+        </el-select>
+        <!-- 科目 -->
+        <el-select
+          v-if="formData.businessId"
+          v-model="formData.subjectId"
+          placeholder="请选择科目(必填)"
+          size="mini"
+        >
+          <el-option
+            v-for="(items, indexs) in newSujectType"
+            :key="indexs"
+            :label="items.subjectName"
+            :value="items.id"
+          ></el-option>
+        </el-select>
+      </div>
+      <p>
+        第三步:(批量新增):点击“上传Word”完成导入<span
+          v-if="!(formData.eduId && formData.businessId && formData.subjectId)"
+          style="color: red; margin-left: 14px"
+          >请完成第二步选择必填项</span
+        >
+      </p>
+      <label
+        v-if="formData.eduId && formData.businessId && formData.subjectId"
+        for="mobles"
+        class="el-button el-button--primary el-button--mini"
+        >上传Word</label
+      ><input
+        style="display: none"
+        type="file"
+        id="mobles"
+        ref="input1"
+        @change="importMobleadd"
+      />
+    </div>
+    <el-dialog
+      append-to-body
+      :visible.sync="dialogERROR"
+      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="dialogERROR = false"
+          />
+        </div>
+      </div>
+      <div>
+        <h4 style="margin-top: 0px; font-weight: bold; text-align: center">
+          导入失败原因
+        </h4>
+        <el-input
+          readonly
+          type="textarea"
+          :autosize="{ minRows: 6, maxRows: 24 }"
+          v-model="errorData"
+        >
+        </el-input>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogERROR = false">确定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { mapGetters } from "vuex";
+import * as baseUrls from "@/utils/request.js";
+export default {
+  data() {
+    return {
+      newBusinessLevel: [],
+      newSujectType: [],
+      errorData: "",
+      formData: {
+        eduId: "",
+        businessId: "",
+        subjectId: "",
+        projectId: "",
+      },
+      dialogERROR: false,
+    };
+  },
+  computed: {
+    ...mapGetters(["educationType"]),
+  },
+  watch: {
+    "formData.eduId"() {
+      this.formData.businessId = "";
+      this.formData.projectId = "";
+    },
+    "formData.businessId"(v) {
+      if (v) {
+        for (let i = 0; i < this.newBusinessLevel.length; i++) {
+          if (this.newBusinessLevel[i].id === v) {
+            this.formData.projectId = this.newBusinessLevel[i].projectId;
+            break;
+          }
+          console.log(1);
+        }
+      }
+      this.formData.subjectId = "";
+    },
+  },
+  methods: {
+    changeEducationType(v) {
+      this.$api
+        .inquirebusinessList({ status: 1, educationId: v })
+        .then((res) => {
+          this.newBusinessLevel = res.rows;
+        });
+    },
+    changeBusinessLevel(v) {
+      this.$api
+        .inquireCourseSubject({ status: 1, businessId: v })
+        .then((res) => {
+          this.newSujectType = res.rows;
+        });
+    },
+    getDowm() {
+      let url =
+        baseUrls.BASE_IMG_URL + "/oss/images/file/20220317/1647486041811.docx";
+      let link = document.createElement("a");
+      let fileName = "导入模板" + ".docx";
+      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);
+      formData.append("eduId", this.formData.eduId);
+      formData.append("projectId", this.formData.projectId);
+      formData.append("businessId", this.formData.businessId);
+      formData.append("subjectId", this.formData.subjectId);
+      this.$api
+        .bankquestionimportWordData(formData)
+        .then((res) => {
+          if (res.code === 200) {
+            if (!res.msg) {
+              self.$message.success("导入成功");
+              this.$parent.$parent.dialogDRword = false;
+            } else {
+              self.errorData = res.msg;
+              self.dialogERROR = true;
+            }
+          }
+        })
+        .finally(() => {
+          e.target.value = "";
+          self.$emit("search", 2);
+        });
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+
+/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;
+    }
+  }
+}
+
+.swq {
+  text-align: center;
+  border-bottom: 1px solid #eee;
+}
+.dowmStys {
+  color: blue;
+  cursor: pointer;
+}
+.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>

+ 11 - 9
src/views/resource/baseManageInfos/resource/businessLevel/index.vue

@@ -233,6 +233,7 @@ export default {
   components: { searchBox, tableList, pagination },
   data() {
     return {
+      activeId:'',
       disabledBtn: false,
       loading: false, //当前表单加载是否加载动画
       navText: {
@@ -410,11 +411,11 @@ export default {
   methods: {
     submitLearn() {
       this.disabledBtn = true;
-      if (!this.$refs.tableList.allCheckData.length) {
-        this.$message.warning("请勾选需要配置的业务层次");
-        this.disabledBtn = false;
-        return;
-      }
+      // if (!this.$refs.tableList.allCheckData.length) {
+      //   this.$message.warning("请勾选需要配置的业务层次");
+      //   this.disabledBtn = false;
+      //   return;
+      // }
       if (
         this.learningOrder !== 0 &&
         this.learningOrder !== 1 &&
@@ -424,12 +425,12 @@ export default {
         this.disabledBtn = false;
         return;
       }
-      var ast = this.$refs.tableList.allCheckData.map((item) => {
-        return item.id;
-      });
+      // var ast = this.$refs.tableList.allCheckData.map((item) => {
+      //   return item.id;
+      // });
       this.$api
         .editLearningOrderCourseBusiness({
-          businessIds: ast,
+          businessIds: [this.activeId],
           goodsLearningOrder: this.learningOrder,
         })
         .then((res) => {
@@ -446,6 +447,7 @@ export default {
     setOptions(v, int) {
       if (int) {
         this.learningOrder = v.goodsLearningOrder;
+        this.activeId = v.id
         this.dialogVisibleSet = true;
       } else {
         if (!this.$refs.tableList.allCheckData.length) {

+ 72 - 17
src/views/systemManagement/auditManagement/assignReviewers/index.vue

@@ -59,8 +59,10 @@
                   v-for="(items, indexs) in item.children"
                   :key="indexs"
                   style="margin-bottom: 4px; cursor: pointer"
-                  :style="active === items.id ? 'color:red;' : ''"
-                  @click="getapiUserList(items.id)"
+                  :style="
+                    activeBusList.businessId === items.id ? 'color:red;' : ''
+                  "
+                  @click="getapiUserList(items)"
                 >
                   {{ items.onlyName }}
                 </li>
@@ -70,7 +72,7 @@
               </ul>
             </div>
           </el-col>
-          <el-col :span="12" v-if="active">
+          <el-col :span="12" v-if="activeBusList.businessId">
             <el-select
               v-model="activeUserid"
               placeholder="请选择审核人"
@@ -81,20 +83,48 @@
                 :key="index"
                 :label="item.nickName"
                 :value="item.userId"
-                :disabled="newUserList.indexOf(item.userId) !== -1"
+                :disabled="userList1.indexOf(item.userId) !== -1"
+              >
+              </el-option>
+            </el-select>
+            <ul style="max-height: 300px; overflow: auto">
+              <li
+                v-for="(item, index) in userList1"
+                :key="index"
+                class="userName"
+              >
+                {{ getuserName(item) }}
+                <i
+                  class="el-icon-error clearSty"
+                  @click="userList1.splice(index, 1)"
+                ></i>
+                <div style="clear: both"></div>
+              </li>
+            </ul>
+            <el-select
+              v-model="activeUserid"
+              placeholder="请选择复审人"
+              @change="editUserLists"
+            >
+              <el-option
+                v-for="(item, index) in options"
+                :key="index"
+                :label="item.nickName"
+                :value="item.userId"
+                :disabled="userList2.indexOf(item.userId) !== -1"
               >
               </el-option>
             </el-select>
             <ul style="max-height: 300px; overflow: auto">
               <li
-                v-for="(item, index) in newUserList"
+                v-for="(item, index) in userList2"
                 :key="index"
                 class="userName"
               >
                 {{ getuserName(item) }}
                 <i
                   class="el-icon-error clearSty"
-                  @click="newUserList.splice(index, 1)"
+                  @click="userList2.splice(index, 1)"
                 ></i>
                 <div style="clear: both"></div>
               </li>
@@ -120,10 +150,11 @@ export default {
       statePop: "",
       educationType: [],
       options: [], //审核人列表
+      activeUserid: "", //select的v-model绑定值
       activeFist: "", //当前选中教育类型ID
-      active: "", //当前选中业务层次ID
-      activeUserid: "",
-      newUserList: [], //审核人索引值
+      activeBusList: {},
+      userList1: [],
+      userList2: [],
     };
   },
   mounted() {
@@ -138,24 +169,48 @@ export default {
       }
     },
     submits() {
-      if (!this.newUserList.length) {
+      if (!this.userList1.length) {
         this.$message.warning("请选择指派审核人");
         return;
       }
+      if (!this.userList2.length) {
+        this.$message.warning("请选择指派复审人");
+        return;
+      }
       /**
        * 提交api
        */
+      let ays = {
+        ...this.activeBusList,
+        userList1: this.userList1,
+        userList2: this.userList2,
+      };
+
+      console.log(ays, "数据");
       this.$message.success("指派成功");
     },
     editUserList(int) {
-      this.newUserList.push(int);
+      this.userList1.push(int);
+      this.activeUserid = "";
+    },
+    editUserLists(int) {
+      this.userList2.push(int);
       this.activeUserid = "";
     },
     /**
      * 点击业务层次获取对应审核人
      */
-    getapiUserList(id) {
-      this.active = id;
+    getapiUserList(item) {
+      this.activeBusList = {
+        educationId: item.educationId,
+        projectId: item.projectId,
+        businessId: item.id,
+      };
+      /**
+       * 模拟数据
+       */
+      this.userList1 = [];
+      this.userList2 = [];
     },
     /**
      * 获取教育类型及业务层次
@@ -216,11 +271,11 @@ export default {
     },
     getInfo(int) {
       this.statePop = int;
-      (this.activeFist = ""), (this.active = ""); //当前选中业务层次ID
+      this.activeFist = "";
       this.activeUserid = "";
-      this.newUserList = []; //审核人索引值
+      this.userList1 = [];
+      this.userList2 = [];
       this.dialogVisible = true;
-      console.log(this.educationType, this.businessLevel);
     },
   },
 };
@@ -361,7 +416,7 @@ export default {
   }
 }
 .userName {
-  float: left;
+  display: table;
   border-radius: 4px;
   border: 1px solid #999;
   margin: 0px 6px 6px 0px;

+ 13 - 13
src/views/systemManagement/roleManagement/index.vue

@@ -292,11 +292,11 @@ export default {
           prop: "menuIds",
           scope: "tree",
         },
-        // {
-        //   label: "数据池权限",
-        //   prop: "keys",
-        //   scope: "treeInfo",
-        // },
+        {
+          label: "数据池权限",
+          prop: "keys",
+          scope: "treeInfo",
+        },
         {
           label: "备注",
           prop: "remark",
@@ -412,13 +412,13 @@ export default {
             self.listData = res.data;
             self.dialogVisible = true;
             await self.getMenuListInfo();
-            // if (res.data.businessIds) {
-            //   res.data.businessIds.forEach((v) => {
-            //     self.$nextTick(() => {
-            //       self.$refs.info[0].setChecked("yw-" + v, true, false);
-            //     });
-            //   });
-            // }
+            if (res.data.businessIds) {
+              res.data.businessIds.forEach((v) => {
+                self.$nextTick(() => {
+                  self.$refs.info[0].setChecked("yw-" + v, true, false);
+                });
+              });
+            }
             self.$nextTick(() => {
               self.$refs.listData.clearValidate();
             });
@@ -477,7 +477,7 @@ export default {
     rulesTableSumbit() {
       this.disabledBtn = true;
       this.listData.menuIds = this.getMenuAllCheckedKeys();
-      // this.listData.businessIds = this.getMenuAllCheckedKeysInfo();
+      this.listData.businessIds = this.getMenuAllCheckedKeysInfo();
       var data = this.listData;
       if (this.statusPop === 1) {
         this.$api