Tang hace 4 años
padre
commit
374f265535
Se han modificado 69 ficheros con 1940 adiciones y 799 borrados
  1. BIN
      dist.zip
  2. 3 0
      src/api/api.js
  3. 15 1
      src/components/searchBoxNew.vue
  4. 30 3
      src/components/tableList.vue
  5. 4 2
      src/layout/components/AppMain.vue
  6. 34 0
      src/newApi/recordList.js
  7. 29 21
      src/store/getters.js
  8. 156 21
      src/store/modules/dict.js
  9. 1 0
      src/store/modules/tagsView.js
  10. 19 2
      src/utils/methodsTool.js
  11. 2 1
      src/utils/request.js
  12. 3 0
      src/views/Marketing/basicParameters/marketings/beneficiary/index.vue
  13. 3 0
      src/views/Marketing/basicParameters/marketings/channelSource/index.vue
  14. 3 0
      src/views/Marketing/basicParameters/marketings/natureCharge/index.vue
  15. 3 0
      src/views/Marketing/basicParameters/marketings/paymentChannel/index.vue
  16. 3 0
      src/views/Marketing/basicParameters/marketings/serviceModel/index.vue
  17. 3 0
      src/views/Marketing/basicParameters/marketings/supplier/index.vue
  18. 3 0
      src/views/Marketing/basicParameters/marketings/typesFee/index.vue
  19. 3 0
      src/views/Marketing/basicParameters/marketings/visitCampus/index.vue
  20. 259 109
      src/views/Marketing/commodityManageMent/add/index.vue
  21. 111 62
      src/views/Marketing/commodityManageMent/edit/index.vue
  22. 48 24
      src/views/Marketing/commodityManageMent/poppleSet.vue
  23. 41 30
      src/views/Marketing/orderList/add/order/index.vue
  24. 46 19
      src/views/Marketing/orderList/details/costPriceManages.vue
  25. 10 2
      src/views/Marketing/orderList/details/goodsManage.vue
  26. 4 3
      src/views/Marketing/orderList/index.vue
  27. 1 1
      src/views/education/classManageMent/classHours/index.vue
  28. 86 257
      src/views/education/classManageMent/classHoursReview/index.vue
  29. 10 4
      src/views/education/classManageMent/classList/addClass/index.vue
  30. 17 11
      src/views/education/classManageMent/classList/manageClass/baseInfo.vue
  31. 1 0
      src/views/education/classManageMent/studentMenu/index.vue
  32. 73 53
      src/views/education/dataReview/informationTemplate/index.vue
  33. 2 2
      src/views/education/dataReview/stamp/index.vue
  34. 34 9
      src/views/education/examManagement/applicationData/asPlanned.vue
  35. 55 53
      src/views/education/examManagement/applicationData/byTrainee.vue
  36. 20 8
      src/views/education/examManagement/examArrangement/index.vue
  37. 23 7
      src/views/education/examManagement/qianpeiArrange/index.vue
  38. 33 1
      src/views/education/notificationManageMent/notificationList/add/index.vue
  39. 30 1
      src/views/education/notificationManageMent/notificationList/edit/index.vue
  40. 3 2
      src/views/education/notificationManageMent/notificationList/index.vue
  41. 511 55
      src/views/education/studentManageMent/studentXQ/BankQuestionPassRecord.vue
  42. 3 2
      src/views/education/studentManageMent/studentXQ/studyRecord.vue
  43. 13 0
      src/views/resource/bankManagement/chapterVolumeManagement/add/index.vue
  44. 13 0
      src/views/resource/bankManagement/chapterVolumeManagement/edit/index.vue
  45. 15 2
      src/views/resource/bankManagement/testPaperManagement/addPaper/topicAddPaper/index.vue
  46. 15 14
      src/views/resource/bankManagement/testPaperManagement/editPaper/baseEditPaper/index.vue
  47. 15 2
      src/views/resource/bankManagement/testPaperManagement/editPaper/topicEditPaper/index.vue
  48. 13 0
      src/views/resource/bankManagement/volumeManagement/add/index.vue
  49. 13 0
      src/views/resource/bankManagement/volumeManagement/edit/index.vue
  50. 3 0
      src/views/resource/baseManageInfos/resource/businessLevel/index.vue
  51. 3 0
      src/views/resource/baseManageInfos/resource/certificate/index.vue
  52. 3 0
      src/views/resource/baseManageInfos/resource/colleges/index.vue
  53. 3 0
      src/views/resource/baseManageInfos/resource/educationTypes/index.vue
  54. 6 0
      src/views/resource/baseManageInfos/resource/enrollmentArea/index.vue
  55. 3 0
      src/views/resource/baseManageInfos/resource/label/index.vue
  56. 3 0
      src/views/resource/baseManageInfos/resource/professional/index.vue
  57. 3 0
      src/views/resource/baseManageInfos/resource/projectType/index.vue
  58. 3 0
      src/views/resource/baseManageInfos/resource/suject/index.vue
  59. 3 0
      src/views/resource/baseManageInfos/resource/testPeriod/index.vue
  60. 13 0
      src/views/resource/videoManagement/chapter/add/index.vue
  61. 13 0
      src/views/resource/videoManagement/chapter/edit/index.vue
  62. 7 0
      src/views/resource/videoManagement/courseManagement/chapterContent/index.vue
  63. 1 1
      src/views/resource/videoManagement/courseManagement/index.vue
  64. 21 10
      src/views/resource/videoManagement/moduleManagement/add/index.vue
  65. 13 0
      src/views/resource/videoManagement/moduleManagement/edit/index.vue
  66. 1 1
      src/views/systemManagement/accountManagement/index.vue
  67. 1 1
      src/views/systemManagement/registeredUser/index.vue
  68. 1 1
      src/views/systemManagement/systemConfig/videoConfig/index.vue
  69. 1 1
      src/views/systemSettings/dictData/index.vue

BIN
dist.zip


+ 3 - 0
src/api/api.js

@@ -84,6 +84,8 @@ import applicationData from '../newApi/applicationData'//报考数据
 import polyv from '../newApi/polyv'//保利威
 import profiles from '../newApi/profiles'//填写资料审核管理
 import profileStamp from '../newApi/profileStamp'//盖章资料审核管理
+import recordList from '../newApi/recordList'//试卷做题记录
+
 
 // 导入对应模块------------------------
 export default {
@@ -146,6 +148,7 @@ export default {
     ...polyv,
     ...profiles,
     ...profileStamp,
+    ...recordList,
 
     // ...login,
     // ...profession,

+ 15 - 1
src/components/searchBoxNew.vue

@@ -176,6 +176,20 @@
                 :value="items.applyId"
               ></el-option>
             </el-select>
+            <!-- 前培标题 -->
+            <el-select
+              v-else-if="item.scope === 'beforeList'"
+              v-model="formData[item.prop]"
+              :placeholder="item.placeholder"
+              :size="size"
+            >
+              <el-option
+                v-for="(items, indexs) in beforeList"
+                :key="indexs"
+                :label="items.beforeName"
+                :value="items.beforeId"
+              ></el-option>
+            </el-select>
             <!-- 自定义select -->
             <el-select
               clearable
@@ -453,7 +467,7 @@ export default {
     };
   },
   computed: {
-    ...mapGetters(["educationType","Professional","examList"]),
+    ...mapGetters(["educationType","Professional","examList","beforeList"]),
   },
   created() {
     var self = this;

+ 30 - 3
src/components/tableList.vue

@@ -81,7 +81,7 @@
       :load="load"
       :cell-style="timeStyle"
       lazy
-      :border="navText.border"
+      :border="true"
       ref="pagerset"
       v-loading="loading"
       :header-cell-style="{
@@ -228,6 +228,13 @@
                   : scope.row[item.prop].split(",").map(Number).length
               }}
             </span>
+            <span
+              v-else-if="item.scope === 'jumpPeolpe'"
+              class="editInfoSty"
+              @click="jumpPeolpe(scope.row, item.type)"
+            >
+            {{scope.row[item.prop]}}
+            </span>
             <span v-else-if="item.scope === 'sectionTypesTTT'">{{
               Number(scope.row[item.prop]) === 1
                 ? "录播"
@@ -1345,10 +1352,10 @@
           />
         </div>
       </div>
-      <div>
+      <div style="max-height:400px;overflow:auto;">
         <ul>
           <li v-for="(items,indexs) in listBoxsGET" :key="indexs" style="margin-bottom:30px;">
-            <p>{{$methodsTools.onlyForma(items.updateTime)}}</p>
+            <p>{{$methodsTools.onlyForma(items.createTime)}}</p>
             <p style="padding-left:14px;color:#999;">姓名:{{items.realname}}</p>
             <p style="padding-left:14px;color:#999;">身份证号码:{{items.idCard}}</p>
           </li>
@@ -1875,6 +1882,26 @@ export default {
         this.$emit("editInfo", option);
       }
     },
+    jumpPeolpe(item,type){
+      if(type === 1){
+        this.$router.push({
+        path: "applicationData",
+        query: {
+          id: item.applyId,
+          type:type
+        },
+      });
+      }
+      if(type === 2){
+        this.$router.push({
+        path: "applicationData",
+        query: {
+          id: item.beforeId,
+          type:type
+        },
+      });
+      }
+    },
     getxq(option) {
       this.$emit("getxq", option.userId);
     },

+ 4 - 2
src/layout/components/AppMain.vue

@@ -1,11 +1,13 @@
 <template>
   <section class="app-main">
-    <transition name="fade-transform" mode="out-in">
+    <!-- <transition name="fade-transform" mode="out-in"> -->
+    <!-- <transition name="fade-transform"> -->
       <!-- :include="cachedViews" 下面keey-alive标签内添加-->
       <keep-alive :include="cachedViews">
         <router-view class="router_mains" :key="key" />
       </keep-alive>
-    </transition>
+    <!-- </transition> -->
+    <!-- </transition> -->
   </section>
 </template>
 

+ 34 - 0
src/newApi/recordList.js

@@ -0,0 +1,34 @@
+import request from '@/utils/request' //引入axios请求及拦截器
+export default {
+    //修改用户的题库试卷做题历史
+    editrecordexam(data) {
+        return request({
+            url: '/exam/record/edit',
+            method: 'post',
+            data
+        })
+    },
+    //查询用户的题库试卷做题历史列表
+    inquireselectExamListrecord(data) {
+        return request({
+            url: '/exam/record/list',
+            method: 'get',
+            params: data
+        })
+    },
+    //查询用户的做题历史试卷列表
+    inquireselectExamList(data) {
+        return request({
+            url: '/exam/record/selectExamList',
+            method: 'get',
+            params: data
+        })
+    },
+    //获取用户的题库试卷做题历史详细信息
+    obtainrecordexam(data) {
+        return request({
+            url: `/exam/record/` + data,
+            method: 'get',
+        })
+    },
+}

+ 29 - 21
src/store/getters.js

@@ -18,7 +18,7 @@ const getters = {
   defaultRoutes: state => state.permission.defaultRoutes,
   sidebarRouters: state => state.permission.sidebarRouters,
   roleList(state) {
-    if (!state.dict.roleList.length) {
+    if (!state.dict.roleList) {
       api.obtainRoleList({ status: 1 }).then(res => {
         state.dict.roleList = res.rows
       })
@@ -26,7 +26,7 @@ const getters = {
     return state.dict.roleList
   },
   educationType(state) {
-    if (!state.dict.educationType.length) {
+    if (!state.dict.educationType) {
       api.inquireCourseEducationType({ status: 1 }).then(res => {
         state.dict.educationType = res.rows
       })
@@ -34,7 +34,7 @@ const getters = {
     return state.dict.educationType
   },
   projectType(state) {
-    if (!state.dict.projectType.length) {
+    if (!state.dict.projectType) {
       api.inquireCourseProjectType({ status: 1 }).then(res => {
         state.dict.projectType = res.rows
       })
@@ -42,7 +42,7 @@ const getters = {
     return state.dict.projectType
   },
   businessLevel(state) {
-    if (!state.dict.businessLevel.length) {
+    if (!state.dict.businessLevel) {
       api.inquirebusinessList({ status: 1 }).then(res => {
         state.dict.businessLevel = res.rows
       })
@@ -50,7 +50,7 @@ const getters = {
     return state.dict.businessLevel
   },
   sujectType(state) {
-    if (!state.dict.sujectType.length) {
+    if (!state.dict.sujectType) {
       api.inquireCourseSubject({ status: 1 }).then(res => {
         state.dict.sujectType = res.rows
       })
@@ -58,7 +58,7 @@ const getters = {
     return state.dict.sujectType
   },
   Professional(state) {
-    if (!state.dict.Professional.length) {
+    if (!state.dict.Professional) {
       api.inquireCourseMajor({ status: 1 }).then(res => {
         state.dict.Professional = res.rows
       })
@@ -66,7 +66,7 @@ const getters = {
     return state.dict.Professional
   },
   schoolList(state) {
-    if (!state.dict.schoolList.length) {
+    if (!state.dict.schoolList) {
       api.inquireUserSchool({ status: 1 }).then(res => {
         state.dict.schoolList = res.rows
       })
@@ -74,7 +74,7 @@ const getters = {
     return state.dict.schoolList
   },
   courseExamine(state) {
-    if (!state.dict.courseExamine.length) {
+    if (!state.dict.courseExamine) {
       api.inquireCourseExamine({ status: 1 }).then(res => {
         state.dict.courseExamine = res.rows
       })
@@ -82,7 +82,7 @@ const getters = {
     return state.dict.courseExamine
   },
   certificate(state) {
-    if (!state.dict.certificate.length) {
+    if (!state.dict.certificate) {
       api.inquireBaseCertificate({ status: 1 }).then(res => {
         state.dict.certificate = res.rows
       })
@@ -90,7 +90,7 @@ const getters = {
     return state.dict.certificate
   },
   labelList(state) {
-    if (!state.dict.labelList.length) {
+    if (!state.dict.labelList) {
       api.inquireCourseLabelList({ status: 1 }).then(res => {
         state.dict.labelList = res.rows
       })
@@ -98,7 +98,7 @@ const getters = {
     return state.dict.labelList
   },
   payList(state) {
-    if (!state.dict.payList.length) {
+    if (!state.dict.payList) {
       api.inquirepayaislelist({ status: 1 }).then(res => {
         state.dict.payList = res.rows
       })
@@ -106,7 +106,7 @@ const getters = {
     return state.dict.payList
   },
   paypayee(state) {
-    if (!state.dict.paypayee.length) {
+    if (!state.dict.paypayee) {
       api.inquirepaypayee({ status: 1 }).then(res => {
         state.dict.paypayee = res.rows
       })
@@ -114,7 +114,7 @@ const getters = {
     return state.dict.paypayee
   },
   paysource(state) {
-    if (!state.dict.paysource.length) {
+    if (!state.dict.paysource) {
       api.inquirepaysource({ status: 1 }).then(res => {
         state.dict.paysource = res.rows
       })
@@ -122,7 +122,7 @@ const getters = {
     return state.dict.paysource
   },
   payvisit(state) {
-    if (!state.dict.payvisit.length) {
+    if (!state.dict.payvisit) {
       api.inquirepayvisit({ status: 1 }).then(res => {
         state.dict.payvisit = res.rows
       })
@@ -130,7 +130,7 @@ const getters = {
     return state.dict.payvisit
   },
   payserve(state) {
-    if (!state.dict.payserve.length) {
+    if (!state.dict.payserve) {
       api.inquirepayserve({ status: 1 }).then(res => {
         state.dict.payserve = res.rows
       })
@@ -138,7 +138,7 @@ const getters = {
     return state.dict.payserve
   },
   paysupply(state) {
-    if (!state.dict.paysupply.length) {
+    if (!state.dict.paysupply) {
       api.inquirepaysupply({ status: 1 }).then(res => {
         state.dict.paysupply = res.rows
       })
@@ -146,7 +146,7 @@ const getters = {
     return state.dict.paysupply
   },
   paynature(state) {
-    if (!state.dict.paynature.length) {
+    if (!state.dict.paynature) {
       api.inquirepaynature({ status: 1 }).then(res => {
         state.dict.paynature = res.rows
       })
@@ -154,7 +154,7 @@ const getters = {
     return state.dict.paynature
   },
   paycost(state) {
-    if (!state.dict.paycost.length) {
+    if (!state.dict.paycost) {
       api.inquirepaycost({ status: 1 }).then(res => {
         state.dict.paycost = res.rows
       })
@@ -170,7 +170,7 @@ const getters = {
     return state.dict.paperexam
   },
   areas(state) {
-    if (!state.dict.areas.length) {
+    if (!state.dict.areas) {
       api.inquireapplyAreas({ status: 1, areaType: 1 }).then(res => {
         state.dict.areas = res.rows
       })
@@ -178,7 +178,7 @@ const getters = {
     return state.dict.areas
   },
   cityList(state) {
-    if (!state.dict.cityList.length) {
+    if (!state.dict.cityList) {
       api.inquireapplyCityList({ status: 1, areaType: 2 }).then(res => {
         state.dict.cityList = res.rows
       })
@@ -186,7 +186,7 @@ const getters = {
     return state.dict.cityList
   },
   classList(state) {
-    if (!state.dict.classList.length) {
+    if (!state.dict.classList) {
       api.inquireGradegradeList({ status: 1 }).then(res => {
         state.dict.classList = res.rows
       })
@@ -201,5 +201,13 @@ const getters = {
     }
     return state.dict.examList
   },
+  beforeList(state){
+    if(!state.dict.beforeList){
+      api.inquiresystembefore({ status: 1 }).then(res => {
+        state.dict.beforeList = res.rows
+      })
+    }
+    return state.dict.beforeList
+  },
 }
 export default getters

+ 156 - 21
src/store/modules/dict.js

@@ -1,36 +1,171 @@
 
 import api from '@/api/api'
 const state = {
-    roleList:[],//角色列表
-    educationType: [],//教育类型
-    projectType: [],//项目类型
-    businessLevel: [],//业务层级
-    sujectType: [],//科目
-    Professional: [],//专业
-    schoolList: [],//院校
-    courseExamine: [],//考期
-    certificate: [],//证书
-    labelList: [],//标签
-    payList: [],//支付通道
-    paypayee: [],//收款方
-    paysource: [],//渠道来源
-    payvisit: [],//到访分校
-    payserve: [],//服务模式
-    paysupply: [],//供应方
-    paynature: [],//收费性质
-    paycost: [],//费用类型
+    roleList:null,//角色列表
+    educationType: null,//教育类型
+    projectType: null,//项目类型
+    businessLevel: null,//业务层级
+    sujectType: null,//科目
+    schoolList: null,//院校
+    Professional: null,//专业
+    courseExamine: null,//考期
+    certificate: null,//证书
+    labelList: null,//标签
+    payList: null,//支付通道
+    paypayee: null,//收款方
+    paysource: null,//渠道来源
+    payvisit: null,//到访分校
+    payserve: null,//服务模式
+    paysupply: null,//供应方
+    paynature: null,//收费性质
+    paycost: null,//费用类型
     paperexam: null,//试卷类型
-    areas: [],//地区-省
-    cityList: [],//地区-市
-    classList:[],//班级
+    areas: null,//地区-省
+    cityList: null,//地区-市
+    classList:null,//班级
     examList:null,//考试安排
+    beforeList:null,//前培安排
 }
 const mutations = {
+  //更新教育类型
+  EDICATIONTYPE(state){
+    api.inquireCourseEducationType({status:1}).then(res => {
+      state.educationType = res.rows
+    })
+  },
+  //更新项目类型
+  PROJECTTYPE(state){
+    api.inquireCourseProjectType({status:1}).then(res => {
+      state.projectType = res.rows
+    })
+  },
+  //更新业务层级
+  BUSINESSLEVEL(state){
+    api.inquirebusinessList({status:1}).then(res => {
+      state.businessLevel = res.rows
+    })
+  },
+
+  //更新科目
+  SUJECTTYPE(state){
+    api.inquireCourseSubject({status:1}).then(res => {
+      state.sujectType = res.rows
+    })
+  },
+  //更新院校
+  SCHOOLLIST(state){
+    api.inquireUserSchool({status:1}).then(res => {
+      state.schoolList = res.rows
+    })
+  },
+  //更新专业
+  PROFESSIONAL(state){
+    api.inquireCourseMajor({status:1}).then(res => {
+      state.Professional = res.rows
+    })
+  },
+  //更新考期
+  COURSEEXAMINE(state){
+    api.inquireCourseExamine({status:1}).then(res => {
+      state.courseExamine = res.rows
+    })
+  },
+  //更新证书
+  CERTIFICATE(state){
+    api.inquireBaseCertificate({status:1}).then(res => {
+      state.certificate = res.rows
+    })
+  },
+  //更新标签
+  LABELLIST(state){
+    api.inquireCourseLabelList({status:1}).then(res => {
+      state.labelList = res.rows
+    })
+  },
+  //更新支付通道
+  PAYLIST(state){
+    api.inquirepayaislelist({status:1}).then(res => {
+      state.payList = res.rows
+    })
+  },
+  //更新收款方
+  PAYPAYEE(state){
+    api.inquirepaypayee({status:1}).then(res => {
+      state.paypayee = res.rows
+    })
+  },
+  //更新渠道来源
+  PAYSOURCE(state){
+    api.inquirepaysource({status:1}).then(res => {
+      state.paysource = res.rows
+    })
+  },
+  //更新到访分校
+  PAYVISIT(state){
+    api.inquirepayvisit({status:1}).then(res => {
+      state.payvisit = res.rows
+    })
+  },
+
+
+  //更新服务模式
+  PAYSERVE(state){
+    api.inquirepayserve({status:1}).then(res => {
+      state.payserve = res.rows
+    })
+  },
+  //更新供应方
+  PAYSUPPLY(state){
+    api.inquirepaysupply({status:1}).then(res => {
+      state.paysupply = res.rows
+    })
+  },
+  //更新收费性质
+  PAYNATURE(state){
+    api.inquirepaynature({status:1}).then(res => {
+      state.paynature = res.rows
+    })
+  },
+  //更新费用类型
+  PAYCOST(state){
+    api.inquirepaycost({status:1}).then(res => {
+      state.paycost = res.rows
+    })
+  },
+  //更新地区-省
+  AREAS(state){
+    api.inquireapplyAreas({status:1}).then(res => {
+      state.areas = res.rows
+    })
+  },
+  //更新地区-市
+  CITYLIST(state){
+    api.inquireapplyCityList({status:1}).then(res => {
+      state.cityList = res.rows
+    })
+  },
+  //更新班级
+  CLASSLIST(state){
+    api.inquireGradegradeList({status:1}).then(res => {
+      state.classList = res.rows
+    })
+  },
+
+
+
+  //更新考试安排
   EXAMLIST(state){
     api.inquiresystemapplyList({status:1}).then(res => {
       state.examList = res.rows
     })
   },
+  //更新前培安排
+  BEFORELIST(state){
+    api.inquiresystembefore({status:1}).then(res => {
+      state.beforeList = res.rows
+    })
+  },
+  //更新试卷类型
   EXAMTYPE(state){
     api.inquirepaperexamList({status:1}).then(res => {
       state.paperexam = res.rows

+ 1 - 0
src/store/modules/tagsView.js

@@ -28,6 +28,7 @@ const mutations = {
     }
   },
   DEL_CACHED_VIEW: (state, view) => {
+    console.log(111)
     const index = state.cachedViews.indexOf(view.name)
     index > -1 && state.cachedViews.splice(index, 1)
   },

+ 19 - 2
src/utils/methodsTool.js

@@ -129,9 +129,26 @@ export default {
 
 		var leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数
 		var seconds = Math.round(leave3 / 1000);
-		// return   days + "天 " + hours + "小时 " + minutes + " 分钟" + seconds + " 秒"
-		return days
+		return   days + "天" + hours + "小时" + minutes + "分钟" + seconds + "秒"
+		// return days
 	},
+	/**
+	 * 
+	 * @param {int} result 
+	 * @returns {string}
+	 * @remard 单位S转小时分钟秒
+	 */
+	secondToDate(result){
+		var h = Math.floor(result / 3600) < 10 ? '0'+Math.floor(result / 3600) : Math.floor(result / 3600);
+		var m = Math.floor((result / 60 % 60)) < 10 ? '0' + Math.floor((result / 60 % 60)) : Math.floor((result / 60 % 60));
+		var s = Math.floor((result % 60)) < 10 ? '0' + Math.floor((result % 60)) : Math.floor((result % 60));
+			if(h==0){
+				result = m + ":" + s;
+			}else{
+				result = h+':'+m + ":" + s
+			}
+		return result;
+},
 	//JS计算两个时间戳相差月数、天数、时数、分钟、秒数
 	humandate(time1, time2) {
 		// var time1 = Date.parse(new Date()) / 1000;

+ 2 - 1
src/utils/request.js

@@ -7,7 +7,8 @@ import methods from '@/utils/methodsTool';
 
 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
 // 创建axios实例
-export const baseURL = 'http://192.168.1.222:5030/'
+// export const baseURL = 'http://192.168.1.222:5030/'
+export const baseURL = 'http://192.168.1.222/'
 const service = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
   // baseURL: 'http://192.168.1.24:5030/',

+ 3 - 0
src/views/Marketing/basicParameters/marketings/beneficiary/index.vue

@@ -225,6 +225,7 @@ loadingClose(){
           };
           this.$api.editpaypayee(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("PAYPAYEE");
             this.search();
           });
         })
@@ -265,6 +266,7 @@ loadingClose(){
         this.$api.apppaypayee(this.listData).then((res) => {
           this.$message.success("新增成功");
           this.dialogVisible = false;
+          this.$store.commit("PAYPAYEE");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false
@@ -274,6 +276,7 @@ loadingClose(){
         this.$api.editpaypayee(this.listData).then((res) => {
           this.$message.success("修改成功");
           this.dialogVisible = false;
+          this.$store.commit("PAYPAYEE");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false

+ 3 - 0
src/views/Marketing/basicParameters/marketings/channelSource/index.vue

@@ -220,6 +220,7 @@ export default {
           };
           this.$api.editpaysource(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("PAYSOURCE");
             this.search();
           });
         })
@@ -260,6 +261,7 @@ export default {
         this.$api.apppaysource(this.listData).then((res) => {
           this.$message.success("新增成功");
           this.dialogVisible = false;
+          this.$store.commit("PAYSOURCE");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false
@@ -269,6 +271,7 @@ export default {
         this.$api.editpaysource(this.listData).then((res) => {
           this.$message.success("修改成功");
           this.dialogVisible = false;
+          this.$store.commit("PAYSOURCE");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false

+ 3 - 0
src/views/Marketing/basicParameters/marketings/natureCharge/index.vue

@@ -220,6 +220,7 @@ loadingClose(){
           };
           this.$api.editpaynature(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("PAYNATURE");
             this.search();
           });
         })
@@ -259,6 +260,7 @@ loadingClose(){
       if (this.statusPop === 1) {
         this.$api.apppaynature(this.listData).then((res) => {
           this.$message.success("新增成功");
+          this.$store.commit("PAYNATURE");
           this.dialogVisible = false;
           this.search();
         }).catch(()=>{
@@ -268,6 +270,7 @@ loadingClose(){
       if (this.statusPop === 0) {
         this.$api.editpaynature(this.listData).then((res) => {
           this.$message.success("修改成功");
+          this.$store.commit("PAYNATURE");
           this.dialogVisible = false;
           this.search();
         }).catch(()=>{

+ 3 - 0
src/views/Marketing/basicParameters/marketings/paymentChannel/index.vue

@@ -220,6 +220,7 @@ loadingClose(){
           };
           this.$api.editpayaisle(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("PAYLIST");
             this.search();
           });
         })
@@ -260,6 +261,7 @@ loadingClose(){
         this.$api.apppayaisle(this.listData).then((res) => {
           this.$message.success("新增成功");
           this.dialogVisible = false;
+          this.$store.commit("PAYLIST");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false
@@ -269,6 +271,7 @@ loadingClose(){
         this.$api.editpayaisle(this.listData).then((res) => {
           this.$message.success("修改成功");
           this.dialogVisible = false;
+          this.$store.commit("PAYLIST");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false

+ 3 - 0
src/views/Marketing/basicParameters/marketings/serviceModel/index.vue

@@ -220,6 +220,7 @@ loadingClose(){
           };
           this.$api.editpayserve(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("PAYSERVE");
             this.search();
           });
         })
@@ -259,6 +260,7 @@ loadingClose(){
       if (this.statusPop === 1) {
         this.$api.apppayserve(this.listData).then((res) => {
           this.$message.success("新增成功");
+          this.$store.commit("PAYSERVE");
           this.dialogVisible = false;
           this.search();
         }).catch(()=>{
@@ -268,6 +270,7 @@ loadingClose(){
       if (this.statusPop === 0) {
         this.$api.editpayserve(this.listData).then((res) => {
           this.$message.success("修改成功");
+          this.$store.commit("PAYSERVE");
           this.dialogVisible = false;
           this.search();
         }).catch(()=>{

+ 3 - 0
src/views/Marketing/basicParameters/marketings/supplier/index.vue

@@ -247,6 +247,7 @@ export default {
           };
           this.$api.editpaysupply(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("PAYSUPPLY");
             this.search();
           });
         })
@@ -289,6 +290,7 @@ export default {
           .then((res) => {
             this.$message.success("新增成功");
             this.dialogVisible = false;
+          this.$store.commit("PAYSUPPLY");
             this.search();
           })
           .catch(() => {
@@ -301,6 +303,7 @@ export default {
           .then((res) => {
             this.$message.success("修改成功");
             this.dialogVisible = false;
+          this.$store.commit("PAYSUPPLY");
             this.search();
           })
           .catch(() => {

+ 3 - 0
src/views/Marketing/basicParameters/marketings/typesFee/index.vue

@@ -223,6 +223,7 @@ export default {
           };
           this.$api.editpaycost(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("PAYCOST");
             this.search();
           });
         })
@@ -265,6 +266,7 @@ export default {
           .then((res) => {
             this.$message.success("新增成功");
             this.dialogVisible = false;
+          this.$store.commit("PAYCOST");
             this.search();
           })
           .catch(() => {
@@ -277,6 +279,7 @@ export default {
           .then((res) => {
             this.$message.success("修改成功");
             this.dialogVisible = false;
+          this.$store.commit("PAYCOST");
             this.search();
           })
           .catch(() => {

+ 3 - 0
src/views/Marketing/basicParameters/marketings/visitCampus/index.vue

@@ -220,6 +220,7 @@ loadingClose(){
           };
           this.$api.editpayvisit(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("PAYVISIT");
             this.search();
           });
         })
@@ -260,6 +261,7 @@ loadingClose(){
         this.$api.apppayvisit(this.listData).then((res) => {
           this.$message.success("新增成功");
           this.dialogVisible = false;
+          this.$store.commit("PAYVISIT");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false
@@ -269,6 +271,7 @@ loadingClose(){
         this.$api.editpayvisit(this.listData).then((res) => {
           this.$message.success("修改成功");
           this.dialogVisible = false;
+          this.$store.commit("PAYVISIT");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false

+ 259 - 109
src/views/Marketing/commodityManageMent/add/index.vue

@@ -130,10 +130,7 @@
                 class="numInputs"
                 type="age"
                 v-model.number="listData.classHours"
-                ><template slot="append" v-if="listData.goodsType !== 2"
-                  >节</template
-                ></el-input
-              >
+              ></el-input>
             </el-form-item>
             <!-- <el-form-item
               label="科目/类目"
@@ -231,11 +228,12 @@
             <el-form-item label="商品有效期" prop="timeArrays">
               <el-date-picker
                 v-model="listData.timeArrays"
-                type="daterange"
+                type="datetimerange"
                 value-format="timestamp"
                 range-separator="至"
                 start-placeholder="开始日期"
                 end-placeholder="结束日期"
+                @change="changeDataTime(listData.timeArrays)"
               >
               </el-date-picker>
             </el-form-item>
@@ -492,13 +490,14 @@
           <el-form-item label="学习有效期" required style="margin-top: 12px">
             <el-date-picker
               v-model="listData.studyTimeArrays"
-              type="daterange"
+              type="datetimerange"
               value-format="timestamp"
               range-separator="至"
               start-placeholder="开始日期"
               end-placeholder="结束日期"
+              @change="changeDataTimeStudy(listData.studyTimeArrays)"
             >
-            </el-date-picker> </el-form-item
+            </el-date-picker></el-form-item
         ></el-form>
       </div>
       <div v-if="listData.goodsType === 3">
@@ -539,11 +538,12 @@
               <el-form-item label="使用有效期" prop="openStudentTime">
                 <el-date-picker
                   v-model="listData.openStudentTime"
-                  type="daterange"
+                  type="datetimerange"
                   value-format="timestamp"
                   range-separator="至"
                   start-placeholder="开始日期"
                   end-placeholder="结束日期"
+                  @change="changeDataTimeStudent(listData.openStudentTime)"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -588,11 +588,12 @@
               <el-form-item label="使用有效期" prop="openStudentTime">
                 <el-date-picker
                   v-model="listData.openStudentTime"
-                  type="daterange"
+                  type="datetimerange"
                   value-format="timestamp"
                   range-separator="至"
                   start-placeholder="开始日期"
                   end-placeholder="结束日期"
+                  @change="changeDataTimeStudent(listData.openStudentTime)"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -601,43 +602,43 @@
         </el-row>
       </div>
       <div v-if="listData.goodsType === 1 || listData.goodsType === 2">
-      <h5
-        class="fengs"
-        v-if="listData.goodsType === 1 || listData.goodsType === 2"
-      >
-        颁发证书
-      </h5>
-      <div
-        class="dis_fs"
-        v-if="listData.goodsType === 1 || listData.goodsType === 2"
-      >
-        <el-popover placement="bottom" trigger="click">
-          <el-checkbox-group v-model="listData.certificateIds">
-            <el-checkbox
-              v-for="(item, index) in certificateOption"
-              :key="index"
-              :label="item.id"
-              >{{ item.certificateName }}</el-checkbox
+        <h5
+          class="fengs"
+          v-if="listData.goodsType === 1 || listData.goodsType === 2"
+        >
+          颁发证书
+        </h5>
+        <div
+          class="dis_fs"
+          v-if="listData.goodsType === 1 || listData.goodsType === 2"
+        >
+          <el-popover placement="bottom" trigger="click">
+            <el-checkbox-group v-model="listData.certificateIds">
+              <el-checkbox
+                v-for="(item, index) in certificateOption"
+                :key="index"
+                :label="item.id"
+                >{{ item.certificateName }}</el-checkbox
+              >
+            </el-checkbox-group>
+            <el-button slot="reference" size="small">选择证书</el-button>
+          </el-popover>
+          <ul>
+            <li
+              class="boxlefs"
+              v-for="item in listData.certificateIds"
+              :key="item"
             >
-          </el-checkbox-group>
-          <el-button slot="reference" size="small">选择证书</el-button>
-        </el-popover>
-        <ul>
-          <li
-            class="boxlefs"
-            v-for="item in listData.certificateIds"
-            :key="item"
-          >
-            {{ checkListName(item) }}
-            <i
-              class="el-icon-error"
-              style="color: #f56c6c"
-              @click="clearBtns(item)"
-            ></i>
-          </li>
-          <div style="clear: both"></div>
-        </ul>
-      </div>
+              {{ checkListName(item) }}
+              <i
+                class="el-icon-error"
+                style="color: #f56c6c"
+                @click="clearBtns(item)"
+              ></i>
+            </li>
+            <div style="clear: both"></div>
+          </ul>
+        </div>
       </div>
     </div>
     <h5>商品包装介绍</h5>
@@ -696,10 +697,18 @@
     </div>
     <div style="text-align: center; margin-top: 20px">
       <el-button @click="backPage" size="mini">取消</el-button>
-      <el-button type="primary" @click="submit('listData', 1)" size="mini" :loading="disabledBtn"
+      <el-button
+        type="primary"
+        @click="submit('listData', 1)"
+        size="mini"
+        :loading="disabledBtn"
         >保存</el-button
       >
-      <el-button type="primary" @click="submit('listData', 2)" size="mini" :loading="disabledBtn"
+      <el-button
+        type="primary"
+        @click="submit('listData', 2)"
+        size="mini"
+        :loading="disabledBtn"
         >上架</el-button
       >
     </div>
@@ -1133,7 +1142,11 @@
             <el-radio-group
               v-model="photoVideoList.photographConfig.photograph"
             >
-              <el-radio :label="1" @change="photoVideoList.photographConfig.intervalTime.push(0)">是</el-radio>
+              <el-radio
+                :label="1"
+                @change="photoVideoList.photographConfig.intervalTime = [0]"
+                >是</el-radio
+              >
               <el-radio
                 :label="0"
                 @change="photoVideoList.photographConfig.intervalTime = []"
@@ -1148,7 +1161,7 @@
               >添加</el-button
             >
           </div>
-          <ul>
+          <ul v-if="photoVideoList.photographConfig.photograph === 1">
             <li
               v-for="(items, indexs) in photoVideoList.photographConfig
                 .intervalTime"
@@ -1173,14 +1186,20 @@
             </li>
           </ul>
         </div>
-        <div style="width: 1px; background-color: #000; margin: 0px 14px"></div>
+        <!-- <div style="width: 1px; background-color: #000; margin: 0px 14px"></div>
         <div>
           <h4>课程章节-关联题卷-拍照</h4>
           <div>
             <el-radio-group
               v-model="photoVideoList.goodsPhotographExamConfig.photograph"
             >
-              <el-radio :label="1" @change="photoVideoList.goodsPhotographExamConfig.intervalTime.push(0)">是</el-radio>
+              <el-radio
+                :label="1"
+                @change="
+                  photoVideoList.goodsPhotographExamConfig.intervalTime = [0]
+                "
+                >是</el-radio
+              >
               <el-radio
                 :label="0"
                 @change="
@@ -1199,7 +1218,7 @@
               >添加</el-button
             >
           </div>
-          <ul>
+          <ul v-if="photoVideoList.goodsPhotographExamConfig.photograph === 1">
             <li
               v-for="(items, indexs) in photoVideoList.goodsPhotographExamConfig
                 .intervalTime"
@@ -1228,7 +1247,7 @@
               >
             </li>
           </ul>
-        </div>
+        </div> -->
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogPhoto = false">取消</el-button>
@@ -1337,7 +1356,7 @@ export default {
   components: { searchBoxNew, Editor, pagination, poppleSet, poppleSetTk },
   data() {
     return {
-      disabledBtn:false,
+      disabledBtn: false,
       photoVideoList: {
         playConfig: {
           autoPlay: 0,
@@ -1659,7 +1678,7 @@ export default {
         examType: 1,
         educationTypeId: "",
         businessId: "",
-        names:""
+        names: "",
       },
       formList3: [
         // {
@@ -1673,18 +1692,18 @@ export default {
         //   scope: "businessLevel",
         //   edu: "educationTypeId",
         // },
-        {
-          prop: "schoolId",
-          placeholder: "院校",
-          scope: "schoolList",
-          edu: "educationTypeId",
-        },
-        {
-          prop: "majorId",
-          placeholder: "专业",
-          scope: "Professional",
-          edu: "educationTypeId",
-        },
+        // {
+        //   prop: "schoolId",
+        //   placeholder: "院校",
+        //   scope: "schoolList",
+        //   edu: "educationTypeId",
+        // },
+        // {
+        //   prop: "majorId",
+        //   placeholder: "专业",
+        //   scope: "Professional",
+        //   edu: "educationTypeId",
+        // },
         {
           prop: "examType",
           placeholder: "题卷类型",
@@ -1746,7 +1765,7 @@ export default {
       formDatas: {
         status: 1,
         pageSize: 10, //每页多少条数据
-        currentPage: 1, //当前页码
+        pageNum: 1, //当前页码
         educationTypeId: "",
         businessId: "",
         publishStatus: 1,
@@ -1874,6 +1893,7 @@ export default {
       ],
       examConfigList: [],
       //   题库商品表格数据------------------------------------------------------------------------end
+      copySetInfo: [], //备份
     };
   },
   watch: {
@@ -1895,6 +1915,7 @@ export default {
   },
   mounted() {
     listConfig().then((res) => {
+      this.copySetInfo = JSON.parse(JSON.stringify(res.rows));
       for (let i = 0; i < res.rows.length; i++) {
         if (res.rows[i].configKey == "sys.play.autoPlay") {
           //自动播放
@@ -1948,6 +1969,24 @@ export default {
     // this.getJyData();
   },
   methods: {
+    changeDataTime(arr) {
+      if (arr && arr[0] === arr[1]) {
+        this.$message.warning("开始时间与结束时间不允许相同");
+        this.listData.timeArrays = [];
+      }
+    },
+    changeDataTimeStudy(arr) {
+      if (arr && arr[0] === arr[1]) {
+        this.$message.warning("开始时间与结束时间不允许相同");
+        this.listData.studyTimeArrays = [];
+      }
+    },
+    changeDataTimeStudent(arr) {
+      if (arr && arr[0] === arr[1]) {
+        this.$message.warning("开始时间与结束时间不允许相同");
+        this.listData.openStudentTime = [];
+      }
+    },
     getGoodsId(index, row) {
       this.goodsId = row.goodsId;
       this.goodsNames = row.goodsName;
@@ -2011,6 +2050,76 @@ export default {
     },
     //打开播放和拍照设置窗口
     openPZ() {
+      if (this.listData.playConfig) {
+        this.photoVideoList.playConfig = JSON.parse(
+          JSON.stringify(this.listData.playConfig)
+        );
+      } else {
+        for (let i = 0; i < this.copySetInfo.length; i++) {
+          if (this.copySetInfo[i].configKey == "sys.play.autoPlay") {
+            //自动播放
+            this.photoVideoList.playConfig.autoPlay = Number(
+              this.copySetInfo[i].configValue
+            );
+          }
+          if (this.copySetInfo[i].configKey == "sys.play.drag") {
+            //"进度条拖拉"
+            this.photoVideoList.playConfig.drag = Number(
+              this.copySetInfo[i].configValue
+            );
+          }
+          if (this.copySetInfo[i].configKey == "sys.play.speed") {
+            //"倍速播放"
+            this.$set(
+              this.photoVideoList.playConfig,
+              "speed",
+              Number(this.copySetInfo[i].configValue)
+            );
+          }
+        }
+      }
+      if (this.listData.photographConfig) {
+        this.photoVideoList.photographConfig = JSON.parse(
+          JSON.stringify(this.listData.photographConfig)
+        );
+      } else {
+        for (let i = 0; i < this.copySetInfo.length; i++) {
+          if (this.copySetInfo[i].configKey == "sys.course.photograph") {
+            //"课程拍照"
+            this.photoVideoList.photographConfig.photograph = Number(
+              this.copySetInfo[i].configValue
+            );
+          }
+          if (this.copySetInfo[i].configKey == "sys.course.intervalTime") {
+            //"间隔时间设置"
+            if (this.copySetInfo[i].configValue) {
+              this.photoVideoList.photographConfig.intervalTime =
+                this.copySetInfo[i].configValue.split(",").map(Number);
+            }
+          }
+        }
+      }
+      if (this.listData.goodsPhotographExamConfig) {
+        this.photoVideoList.goodsPhotographExamConfig = JSON.parse(
+          JSON.stringify(this.listData.goodsPhotographExamConfig)
+        );
+      } else {
+        for (let i = 0; i < this.copySetInfo.length; i++) {
+          if (this.copySetInfo[i].configKey == "sys.paper.photograph") {
+            //"章节试卷拍照"
+            this.photoVideoList.goodsPhotographExamConfig.photograph = Number(
+              this.copySetInfo[i].configValue
+            );
+          }
+          if (this.copySetInfo[i].configKey == "sys.paper.intervalNumber") {
+            //"间隔数量设置"
+            if (this.copySetInfo[i].configValue) {
+              this.photoVideoList.goodsPhotographExamConfig.intervalTime =
+                this.copySetInfo[i].configValue.split(",").map(Number);
+            }
+          }
+        }
+      }
       // if (this.listData.playConfig) {
       //   this.photoVideoList.playConfig = JSON.parse(
       //     JSON.stringify(this.listData.playConfig)
@@ -2374,7 +2483,7 @@ export default {
       });
     },
     rulesTableSumbit(int) {
-      this.disabledBtn = true
+      this.disabledBtn = true;
       var datas = JSON.parse(JSON.stringify(this.listData));
       if (int === 2) {
         datas.goodsStatus = 1;
@@ -2385,7 +2494,7 @@ export default {
       if (datas.goodsType === 1 || datas.goodsType === 2) {
         if (!datas.studyTimeArrays.length) {
           this.$message.warning("请选择学习有效期");
-      this.disabledBtn = false
+          this.disabledBtn = false;
           return;
         } else {
           datas.studyStartTime = this.$methodsTools.time10to13(
@@ -2416,7 +2525,7 @@ export default {
       if (this.listData.goodsType === 3 || this.listData.goodsType === 4) {
         if (!datas.makeGoodsId) {
           this.$message.warning("请选择关联商品");
-      this.disabledBtn = false
+          this.disabledBtn = false;
           return;
         }
         datas.makeStartTime = this.$methodsTools.time10to13(
@@ -2443,7 +2552,21 @@ export default {
           datas.goodsPhotographExamConfig.intervalTime =
             datas.goodsPhotographExamConfig.intervalTime.toString();
         }
-
+        for (let i = 0; i < this.tableData.length; i++) {
+          if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+            this.$message.warning(`课程内容第${i + 1}条请输入排序`);
+            this.disabledBtn = false;
+            return;
+          }
+        }
+        let arr = this.tableData.map((items) => {
+          return items.sort;
+        });
+        if (new Set(arr).size != arr.length) {
+          this.$message.warning("排序不允许有重复值");
+          this.disabledBtn = false;
+          return;
+        }
         var courseIdList = [];
         this.tableData.map((item) => {
           courseIdList.push({
@@ -2466,15 +2589,33 @@ export default {
         if (!this.listData.handoutsId) {
           datas.handoutsId = 0;
         }
-        this.$api.addGoods(datas).then((res) => {
-          this.$message.success("新增成功");
-          setTimeout(() => {
-            this.$router.go(-1);
-          }, 300);
-        }).catch(()=>{
-          this.disabledBtn = false
-        })
+        this.$api
+          .addGoods(datas)
+          .then((res) => {
+            this.$message.success("新增成功");
+            setTimeout(() => {
+              this.$router.go(-1);
+            }, 300);
+          })
+          .catch(() => {
+            this.disabledBtn = false;
+          });
       } else if (this.listData.goodsType === 2) {
+        for (let i = 0; i < this.tableData2.length; i++) {
+          if (!this.tableData2[i].sort && this.tableData2[i].sort !== 0) {
+            this.$message.warning(`题卷内容第${i + 1}条请输入排序`);
+            this.disabledBtn = false;
+            return;
+          }
+        }
+        let arr = this.tableData2.map((items) => {
+          return items.sort;
+        });
+        if (new Set(arr).size != arr.length) {
+          this.$message.warning("排序不允许有重复值");
+          this.disabledBtn = false;
+          return;
+        }
         var courseIdList = [];
         this.tableData2.map((item) => {
           if (item.type === 1) {
@@ -2510,32 +2651,41 @@ export default {
           });
         });
         datas.examConfigList = examConfigListArray;
-        this.$api.addGoodsbank(datas).then((res) => {
-          this.$message.success("新增成功");
-          setTimeout(() => {
-            this.$router.go(-1);
-          }, 300);
-        }).catch(()=>{
-          this.disabledBtn = false
-        })
+        this.$api
+          .addGoodsbank(datas)
+          .then((res) => {
+            this.$message.success("新增成功");
+            setTimeout(() => {
+              this.$router.go(-1);
+            }, 300);
+          })
+          .catch(() => {
+            this.disabledBtn = false;
+          });
       } else if (this.listData.goodsType === 3) {
-        this.$api.addGoodsmake(datas).then((res) => {
-          this.$message.success("新增成功");
-          setTimeout(() => {
-            this.$router.go(-1);
-          }, 300);
-        }).catch(()=>{
-          this.disabledBtn = false
-        })
+        this.$api
+          .addGoodsmake(datas)
+          .then((res) => {
+            this.$message.success("新增成功");
+            setTimeout(() => {
+              this.$router.go(-1);
+            }, 300);
+          })
+          .catch(() => {
+            this.disabledBtn = false;
+          });
       } else if (this.listData.goodsType === 4) {
-        this.$api.addGoodsfront(datas).then((res) => {
-          this.$message.success("新增成功");
-          setTimeout(() => {
-            this.$router.go(-1);
-          }, 300);
-        }).catch(()=>{
-          this.disabledBtn = false
-        })
+        this.$api
+          .addGoodsfront(datas)
+          .then((res) => {
+            this.$message.success("新增成功");
+            setTimeout(() => {
+              this.$router.go(-1);
+            }, 300);
+          })
+          .catch(() => {
+            this.disabledBtn = false;
+          });
       } else {
       }
     },
@@ -2812,7 +2962,7 @@ export default {
               aList.push(item.moduleExamId);
             }
           });
-          for(let k = 0; k < res.rows.length;k++){
+          for (let k = 0; k < res.rows.length; k++) {
             res.rows[k].ids = 1 + "-" + res.rows[k].moduleExamId;
             res.rows[k].type = 1;
             res.rows[k].name = res.rows[k].moduleName;
@@ -2841,7 +2991,7 @@ export default {
               aList.push(item.chapterExamId);
             }
           });
-          for(let k = 0; k < res.rows.length;k++){
+          for (let k = 0; k < res.rows.length; k++) {
             res.rows[k].ids = 2 + "-" + res.rows[k].chapterExamId;
             res.rows[k].sort = 0;
             res.rows[k].type = 2;
@@ -2869,7 +3019,7 @@ export default {
               aList.push(item.examId);
             }
           });
-          for(let k = 0; k < res.rows.length;k++){
+          for (let k = 0; k < res.rows.length; k++) {
             res.rows[k].ids = 3 + "-" + res.rows[k].examId;
             res.rows[k].sort = 0;
             res.rows[k].type = 3;
@@ -2970,7 +3120,7 @@ export default {
       this.activeLists2 = lis;
     },
     checkboxT2(row, index) {
-      const asrty = row.ids.split("-").map(Number)[0]
+      const asrty = row.ids.split("-").map(Number)[0];
       if (asrty === 1) {
         if (this.disCheckList2.moduleCheck.indexOf(row.moduleExamId) !== -1) {
           return false;
@@ -3004,7 +3154,7 @@ export default {
 <style lang="less" scoped>
 .dis_f {
   display: flex;
-  justify-content: space-between;
+  justify-content: space-around;
   & h4 {
     margin: 10px 0px;
   }

+ 111 - 62
src/views/Marketing/commodityManageMent/edit/index.vue

@@ -133,8 +133,6 @@
                 class="numInputs"
                 type="age"
                 v-model.number="listData.classHours"
-                ><template slot="append" v-if="listData.goodsType !== 2"
-                  >节</template
                 ></el-input
               >
             </el-form-item>
@@ -234,11 +232,12 @@
             <el-form-item label="商品有效期" prop="timeArrays">
               <el-date-picker
                 v-model="listData.timeArrays"
-                type="daterange"
+                type="datetimerange"
                 value-format="timestamp"
                 range-separator="至"
                 start-placeholder="开始日期"
                 end-placeholder="结束日期"
+                @change="changeDataTime(listData.timeArrays)"
               >
               </el-date-picker>
             </el-form-item>
@@ -495,11 +494,12 @@
           <el-form-item label="学习有效期" required style="margin-top: 12px">
             <el-date-picker
               v-model="listData.studyTimeArrays"
-              type="daterange"
+              type="datetimerange"
               value-format="timestamp"
               range-separator="至"
               start-placeholder="开始日期"
               end-placeholder="结束日期"
+              @change="changeDataTimeStudy(listData.studyTimeArrays)"
             >
             </el-date-picker> </el-form-item
         ></el-form>
@@ -542,11 +542,12 @@
               <el-form-item label="使用有效期" prop="openStudentTime">
                 <el-date-picker
                   v-model="listData.openStudentTime"
-                  type="daterange"
+                  type="datetimerange"
                   value-format="timestamp"
                   range-separator="至"
                   start-placeholder="开始日期"
                   end-placeholder="结束日期"
+                  @change="changeDataTimeStudent(listData.openStudentTime)"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -591,11 +592,12 @@
               <el-form-item label="使用有效期" prop="openStudentTime">
                 <el-date-picker
                   v-model="listData.openStudentTime"
-                  type="daterange"
+                  type="datetimerange"
                   value-format="timestamp"
                   range-separator="至"
                   start-placeholder="开始日期"
                   end-placeholder="结束日期"
+                  @change="changeDataTimeStudent(listData.openStudentTime)"
                 >
                 </el-date-picker>
               </el-form-item>
@@ -604,43 +606,43 @@
         </el-row>
       </div>
       <div v-if="listData.goodsType === 1 || listData.goodsType === 2">
-      <h5
-        class="fengs"
-        v-if="listData.goodsType === 1 || listData.goodsType === 2"
-      >
-        颁发证书
-      </h5>
-      <div
-        class="dis_fs"
-        v-if="listData.goodsType === 1 || listData.goodsType === 2"
-      >
-        <el-popover placement="bottom" trigger="click">
-          <el-checkbox-group v-model="listData.certificateIds">
-            <el-checkbox
-              v-for="(item, index) in certificateOption"
-              :key="index"
-              :label="item.id"
-              >{{ item.certificateName }}</el-checkbox
+        <h5
+          class="fengs"
+          v-if="listData.goodsType === 1 || listData.goodsType === 2"
+        >
+          颁发证书
+        </h5>
+        <div
+          class="dis_fs"
+          v-if="listData.goodsType === 1 || listData.goodsType === 2"
+        >
+          <el-popover placement="bottom" trigger="click">
+            <el-checkbox-group v-model="listData.certificateIds">
+              <el-checkbox
+                v-for="(item, index) in certificateOption"
+                :key="index"
+                :label="item.id"
+                >{{ item.certificateName }}</el-checkbox
+              >
+            </el-checkbox-group>
+            <el-button slot="reference" size="small">选择证书</el-button>
+          </el-popover>
+          <ul>
+            <li
+              class="boxlefs"
+              v-for="item in listData.certificateIds"
+              :key="item"
             >
-          </el-checkbox-group>
-          <el-button slot="reference" size="small">选择证书</el-button>
-        </el-popover>
-        <ul>
-          <li
-            class="boxlefs"
-            v-for="item in listData.certificateIds"
-            :key="item"
-          >
-            {{ checkListName(item) }}
-            <i
-              class="el-icon-error"
-              style="color: #f56c6c"
-              @click="clearBtns(item)"
-            ></i>
-          </li>
-          <div style="clear: both"></div>
-        </ul>
-      </div>
+              {{ checkListName(item) }}
+              <i
+                class="el-icon-error"
+                style="color: #f56c6c"
+                @click="clearBtns(item)"
+              ></i>
+            </li>
+            <div style="clear: both"></div>
+          </ul>
+        </div>
       </div>
     </div>
     <h5>商品包装介绍</h5>
@@ -1196,7 +1198,7 @@
             </li>
           </ul>
         </div>
-        <div style="width: 1px; background-color: #000; margin: 0px 14px"></div>
+        <!-- <div style="width: 1px; background-color: #000; margin: 0px 14px"></div>
         <div>
           <h4>课程章节-关联题卷-拍照</h4>
           <div>
@@ -1257,7 +1259,7 @@
               >
             </li>
           </ul>
-        </div>
+        </div> -->
       </div>
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogPhoto = false">取消</el-button>
@@ -1669,7 +1671,7 @@ export default {
         // },
         {
           prop: "key",
-          placeholder: "请输入讲义名称",
+          placeholder: "请输入讲义标题/讲义编码",
         },
       ],
       //   视频商品表格数据------------------------------------------------------------------------start
@@ -1709,7 +1711,7 @@ export default {
       formDatas: {
         status: 1,
         pageSize: 10, //每页多少条数据
-        currentPage: 1, //当前页码
+        pageNum: 1, //当前页码
         publishStatus: 1,
         educationTypeId: "",
         businessId: "",
@@ -1806,18 +1808,18 @@ export default {
         //   scope: "businessLevel",
         //   edu: "educationTypeId",
         // },
-        {
-          prop: "schoolId",
-          placeholder: "院校",
-          scope: "schoolList",
-          edu: "educationTypeId",
-        },
-        {
-          prop: "majorId",
-          placeholder: "专业",
-          scope: "Professional",
-          edu: "educationTypeId",
-        },
+        // {
+        //   prop: "schoolId",
+        //   placeholder: "院校",
+        //   scope: "schoolList",
+        //   edu: "educationTypeId",
+        // },
+        // {
+        //   prop: "majorId",
+        //   placeholder: "专业",
+        //   scope: "Professional",
+        //   edu: "educationTypeId",
+        // },
         {
           prop: "examType",
           placeholder: "题卷类型",
@@ -1913,6 +1915,24 @@ export default {
     this.getJyData();
   },
   methods: {
+    changeDataTime(arr) {
+      if (arr && arr[0] === arr[1]) {
+        this.$message.warning("开始时间与结束时间不允许相同");
+        this.listData.timeArrays = [];
+      }
+    },
+    changeDataTimeStudy(arr) {
+      if (arr && arr[0] === arr[1]) {
+        this.$message.warning("开始时间与结束时间不允许相同");
+        this.listData.studyTimeArrays = [];
+      }
+    },
+    changeDataTimeStudent(arr) {
+      if (arr && arr[0] === arr[1]) {
+        this.$message.warning("开始时间与结束时间不允许相同");
+        this.listData.openStudentTime = [];
+      }
+    },
     changeGoodsType() {
       this.listData.makeGoodsId = "";
       this.listData.makeGoodsName = "";
@@ -2629,7 +2649,21 @@ export default {
           datas.goodsPhotographExamConfig.intervalTime =
             datas.goodsPhotographExamConfig.intervalTime.toString();
         }
-
+        for (let i = 0; i < this.tableData.length; i++) {
+          if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+            this.$message.warning(`课程内容第${i + 1}条请输入排序`);
+            this.disabledBtn = false;
+            return;
+          }
+        }
+        let arr = this.tableData.map((items) => {
+          return items.sort;
+        });
+        if (new Set(arr).size != arr.length) {
+          this.$message.warning("排序不允许有重复值");
+            this.disabledBtn = false;
+          return;
+        }
         var courseIdList = [];
         this.tableData.map((item) => {
           courseIdList.push({
@@ -2662,6 +2696,21 @@ export default {
             this.disabledBtn = false;
           });
       } else if (this.listData.goodsType === 2) {
+        for (let i = 0; i < this.tableData2.length; i++) {
+          if (!this.tableData2[i].sort && this.tableData2[i].sort !== 0) {
+            this.$message.warning(`题卷内容第${i + 1}条请输入排序`);
+            this.disabledBtn = false;
+            return;
+          }
+        }
+        let arr = this.tableData2.map((items) => {
+          return items.sort;
+        });
+        if (new Set(arr).size != arr.length) {
+          this.$message.warning("排序不允许有重复值");
+            this.disabledBtn = false;
+          return;
+        }
         var courseIdList = [];
         this.tableData2.map((item) => {
           if (item.type === 1) {
@@ -2933,8 +2982,8 @@ export default {
     init3() {
       this.formData3.pageSize = 10;
       this.formData3.pageNum = 1;
-      // this.formData3.educationTypeId = "";
-      // this.formData3.businessId = "";
+      // this.formData3.majorId = "";
+      // this.formData3.schoolId = "";
       this.formData3.names = "";
       this.search3();
     },
@@ -3316,7 +3365,7 @@ export default {
 <style lang="less" scoped>
 .dis_f {
   display: flex;
-  justify-content: space-between;
+  justify-content: space-around;
   & h4 {
     margin: 10px 0px;
   }

+ 48 - 24
src/views/Marketing/commodityManageMent/poppleSet.vue

@@ -30,7 +30,7 @@
         :show-checkbox="true"
         :check-strictly="true"
         @check-change="getCheckedKeys"
-        node-key="TypeId"
+        node-key="onlyId"
       >
         <span class="custom-tree-node" slot-scope="{ node }">
           <span>{{ node.label }}</span>
@@ -45,7 +45,7 @@
               size="mini"
               style="width: 80px"
               :max="node.data.durationTime"
-              @blur="changeNum(node.data)"
+              @blur="changeNum(node)"
             ></el-input-number
             >分钟</span
           >
@@ -64,29 +64,33 @@ export default {
   props: ["tableData", "auditionList"],
   data() {
     return {
-      copyData:[],
-      datas:[],
+      copyData: [],
+      datas: [],
       audition: [],
       auditionListCope: [],
       dialogVisible: false,
       layoutTreeProps: {
         label(data, node) {
-          return data.courseName || data.categoryName || data.name || data.menuName;
+          return (
+            data.courseName || data.categoryName || data.name || data.menuName
+          );
         },
         isLeaf(data, node) {
           return !data.hasChildren;
         },
       },
+      getAllSeNum: [], //当前tree所有节ID
     };
   },
   methods: {
-    changeNum(v){
-      if(v.auditionMinute === 0){
-        this.$message.warning('时长禁止为0,请重新设置')
+    changeNum(v) {
+      console.log(v)
+      if (v.data.auditionMinute === 0) {
+        this.$message.warning("时长禁止为0,请重新设置");
       }
     },
     inits() {
-      this.datas = JSON.parse(JSON.stringify(this.copyData))
+      this.datas = JSON.parse(JSON.stringify(this.copyData));
     },
     openExpand() {
       if (this.auditionList) {
@@ -132,22 +136,29 @@ export default {
           }
         });
       }
+      var a = item.TypeId.split("-").map(Number)[1]
+      this.getAllSeNum.forEach(items => {
+        var ast = items.split("-").map(Number)[3]
+        if(a == ast){
+          this.$refs.trees.setChecked(items, node);
+        }
+      })
     },
     submitTable() {
       if (!this.auditionListCope.length) {
         this.$message.warning("请勾选至少一节的试听时间");
         return;
       }
-      var arrays = this.$refs.trees.getCheckedNodes()
-      console.log(arrays)
-      for(let i = 0; i < arrays.length;i++){
-        for(let j = 0; j < this.auditionListCope.length;j++){
-          if(arrays[i].TypeId === this.auditionListCope[j].TypeId){
-            this.auditionListCope[j].auditionMinute = arrays[i].auditionMinute
+      var arrays = this.$refs.trees.getCheckedNodes();
+      console.log(arrays);
+      for (let i = 0; i < arrays.length; i++) {
+        for (let j = 0; j < this.auditionListCope.length; j++) {
+          if (arrays[i].TypeId === this.auditionListCope[j].TypeId) {
+            this.auditionListCope[j].auditionMinute = arrays[i].auditionMinute;
           }
-          if(this.auditionListCope[j].auditionMinute === 0){
-            this.$message.warning("不允许填写时长为0,请重新输入")
-            return
+          if (this.auditionListCope[j].auditionMinute === 0) {
+            this.$message.warning("不允许填写时长为0,请重新输入");
+            return;
           }
         }
       }
@@ -161,20 +172,20 @@ export default {
       //     });
       //   }
       // });
-      console.log(this.auditionListCope,123123)
+      console.log(this.auditionListCope, 123123);
       this.$emit("uploadArrays", this.auditionListCope);
       this.dialogVisible = false;
     },
     loadNode(node, resolve) {
+      console.log(node.data.onlyId)
       var self = this;
-      console.log(node.data,5515)
       if (node.level === 0) {
         this.tableData.map((item) => {
-          item.TypeId = "0" + "-" + item.courseId;
+          item.TypeId = item.courseId;
           item.disabled = true;
           item.hasChildren = true;
         });
-        this.copyData = JSON.parse(JSON.stringify(this.tableData))
+        this.copyData = JSON.parse(JSON.stringify(this.tableData));
         return resolve(this.tableData);
       } else {
         if (node.data.type === 1) {
@@ -182,11 +193,13 @@ export default {
             .inquireCourseListmodulechapter(node.data.menuId)
             .then((res) => {
               res.data.map((item) => {
+                item.onlyId = `${node.data.courseId}-${node.data.menuId}-${item.chapterId}-0`;
+                item.courseId = node.data.courseId;
                 item.TypeId = "2" + "-" + item.chapterId;
                 item.hasChildren = true;
                 item.disabled = true;
-                item.menuId = item.chapterId
-                item.type = 2
+                item.menuId = item.chapterId;
+                item.type = 2;
               });
               return resolve(res.data);
             });
@@ -195,6 +208,11 @@ export default {
             .inquireCoursechaptersectionlist(node.data.menuId)
             .then((res) => {
               res.data.map((item) => {
+                item.onlyId = `${node.data.courseId}-${node.data.moduleId}-${item.chapterId}-${item.sectionId}`;
+                if (this.getAllSeNum.indexOf(item.onlyId) === -1) {
+                  this.getAllSeNum.push(item.onlyId);
+                }
+                item.type = 3;
                 item.TypeId = "3" + "-" + item.sectionId;
                 item.menuId = item.sectionId;
                 item.auditionMinute = item.durationTime;
@@ -218,12 +236,18 @@ export default {
             .then((res) => {
               res.rows.map((item) => {
                 if (item.type === 1) {
+                  item.onlyId = `${node.data.courseId}-${item.menuId}-0-0`;
                   item.TypeId = item.type + "-" + item.menuId;
                 }
                 if (item.type === 2) {
+                  item.onlyId = `${node.data.courseId}-0-${item.menuId}-0`;
                   item.TypeId = item.type + "-" + item.menuId;
                 }
                 if (item.type === 3) {
+                  item.onlyId = `${node.data.courseId}-0-0-${item.menuId}`;
+                  if (this.getAllSeNum.indexOf(item.onlyId) === -1) {
+                    this.getAllSeNum.push(item.onlyId);
+                  }
                   item.TypeId = item.type + "-" + item.menuId;
                   item.auditionMinute = item.durationTime;
                   if (self.auditionListCope) {

+ 41 - 30
src/views/Marketing/orderList/add/order/index.vue

@@ -232,8 +232,9 @@
     </div>
     <div style="text-align: center">
       <el-button @click="clearBtns">取消</el-button>
-      <el-button @click="submitForm('listData')" 
-           :loading="disabledBtn">确定</el-button>
+      <el-button @click="submitForm('listData')" :loading="disabledBtn"
+        >确定</el-button
+      >
     </div>
     <el-dialog
       :visible.sync="dialogVisibleTableBoxs"
@@ -371,13 +372,16 @@
                 <p style="padding-left: 24px">
                   有效期至:{{ $methodsTools.onlyForma(item.classEndTime) }}
                 </p>
-                <p style="padding-left: 24px" v-if="$methodsTools.expiredTime(item.classEndTime)">
+                <p
+                  style="padding-left: 24px"
+                  v-if="$methodsTools.expiredTime(item.classEndTime)"
+                >
                   已过期
                 </p>
                 <p v-else style="padding-left: 24px">
                   本班还剩{{
-                    $methodsTools.newTime(item.classEndTime)
-                  }}将结束学习
+                    $methodsTools.newTime(item.classEndTime) 
+                  }}将结束学习
                 </p>
               </div>
             </li>
@@ -400,7 +404,7 @@ export default {
   components: { searchBoxNew, pagination },
   data() {
     return {
-      disabledBtn:false,
+      disabledBtn: false,
       numIndex: 0,
       radio: "",
       listData: { realname: "", idCard: "", chargingType: 1 },
@@ -788,7 +792,7 @@ export default {
       });
     },
     submit() {
-      this.disabledBtn = true
+      this.disabledBtn = true;
       // setTimeout(()=>{
       //   if(this.disabledBtn){
       //     this.disabledBtn = false
@@ -808,7 +812,7 @@ export default {
       data.goodsRealPrice = this.listData.goodsPrice;
       data.chargingType = this.listData.chargingType;
       var ast = [];
-      var arrays = JSON.parse(JSON.stringify(this.tableData))
+      var arrays = JSON.parse(JSON.stringify(this.tableData));
       arrays.map((item) => {
         ast.push({
           goodsPrice: item.standPrice,
@@ -855,25 +859,28 @@ export default {
         }
         resolve(this.listData.userId);
       }).then((result) => {
-        data.userId = result
-        this.$api.appOrder(data).then((res) => {
-          this.$message.success("提交成功");
-          if (data.chargingType == 1) {
-            this.$router.push({
-              path: "orderPrice",
-              query: {
-                id: res.data.oderId,
-              },
-            });
-          }
-          if (data.chargingType == 2) {
-            this.$router.push({
-              path: "orderList",
-            });
-          }
-        }).catch(()=>{
-          this.disabledBtn = false
-        })
+        data.userId = result;
+        this.$api
+          .appOrder(data)
+          .then((res) => {
+            this.$message.success("提交成功");
+            if (data.chargingType == 1) {
+              this.$router.push({
+                path: "orderPrice",
+                query: {
+                  id: res.data.oderId,
+                },
+              });
+            }
+            if (data.chargingType == 2) {
+              this.$router.push({
+                path: "orderList",
+              });
+            }
+          })
+          .catch(() => {
+            this.disabledBtn = false;
+          });
       });
     },
     changeKQ(index, int) {
@@ -893,7 +900,7 @@ export default {
       });
     },
     changeArea(index, int, value) {
-      console.log(value,'area')
+      console.log(value, "area");
       var opst = [];
       this.cityList.map((item) => {
         if (item.parentId == int) {
@@ -917,7 +924,7 @@ export default {
       });
     },
     changeCity(index, int, value) {
-      console.log(value,1121)
+      console.log(value, 1121);
       this.cityList.map((item) => {
         if (item.areaId === int) {
           this.tableData[index].goodsInputData.applyAreasJson.cityName =
@@ -935,7 +942,11 @@ export default {
     getClassLists(item) {
       return new Promise((resolve, reject) => {
         this.$api
-          .inquireGradegradeList({ status: 1, goodsId: item.goodsId,pastDue:1 })
+          .inquireGradegradeList({
+            status: 1,
+            goodsId: item.goodsId,
+            pastDue: 1,
+          })
           .then((res) => {
             if (!res.rows.length) {
               // this.$api.inquireGradegradeList({ status: 1 }).then((result) => {

+ 46 - 19
src/views/Marketing/orderList/details/costPriceManages.vue

@@ -1,6 +1,28 @@
 <template>
   <div id="costPriceManages">
-    <el-row :gutter="20">
+    <el-row :gutter="20" v-if="listInfos.orderFrom === 2" style="background-color:#eee;">
+      <el-form >
+          <el-col :span="8">
+            <el-form-item label="付款方式">
+              <el-input disabled value="微信"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="付款凭证">
+              <el-input disabled v-model="listInfos.transid"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="付款时间">
+              <el-input
+                disabled
+                :value="$methodsTools.onlyForma(listInfos.payTime)"
+              ></el-input>
+            </el-form-item> </el-col
+        >
+      </el-form>
+    </el-row>
+    <el-row :gutter="20" v-else>
       <el-col :span="5" v-if="orderList.length">
         <div>
           <ul class="ulChildSty">
@@ -144,14 +166,14 @@
               ></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="24" style="text-align:center;">
+          <el-col :span="24" style="text-align: center">
             <el-button @click="backPage">返回</el-button>
             <el-button type="primary" @click="submit">保存</el-button>
           </el-col>
         </el-form>
       </el-col>
       <el-col :span="24" class="YZsty" v-else>
-        <p style="text-align:center">暂无收费订单信息</p>
+        <p style="text-align: center">暂无收费订单信息</p>
       </el-col>
     </el-row>
   </div>
@@ -168,6 +190,7 @@ export default {
       rules: {},
       orderList: [],
       costList: {},
+      listInfos: {},
     };
   },
   mounted() {
@@ -176,14 +199,14 @@ export default {
   computed: { ...mapGetters(["paynature", "paycost"]) },
   methods: {
     //保存
-    submit(){
-      this.$api.editordersheetgoods(this.costList).then(res => { 
-        this.$message.success("成功")
-      })
+    submit() {
+      this.$api.editordersheetgoods(this.costList).then((res) => {
+        this.$message.success("成功");
+      });
     },
     //返回
-    backPage(){
-      this.$router.go(-1)
+    backPage() {
+      this.$router.go(-1);
     },
     //切换list
     changeLi(int) {
@@ -196,25 +219,29 @@ export default {
     },
     getInfoUser() {
       this.$api
-        .inquireOrdersheetsheetList({ orderSn: this.$route.query.orderSn,goodsId: this.$route.query.goodsId, })
+        .inquireOrdersheetsheetList({
+          orderSn: this.$route.query.orderSn,
+          goodsId: this.$route.query.goodsId,
+        })
         .then((res) => {
           this.orderList = res.data;
           if (res.data.length) {
             this.getCostInfos(res.data[0].sheetSn);
           }
         });
+      this.$api.obtainOrder(this.$route.query.orderId).then((res) => {
+        this.listInfos = res.data;
+      });
     },
     getCostInfos(v) {
-      this.orderList.map(item => {
-        if(item.sheetSn === v){
-            this.costList = item
+      this.orderList.map((item) => {
+        if (item.sheetSn === v) {
+          this.costList = item;
         }
-      })
-      this.$api
-        .obtainOrdersheetSn(v)
-        .then((res) => {
-            this.listData = res.data;
-        });
+      });
+      this.$api.obtainOrdersheetSn(v).then((res) => {
+        this.listData = res.data;
+      });
     },
   },
 };

+ 10 - 2
src/views/Marketing/orderList/details/goodsManage.vue

@@ -176,8 +176,8 @@
           </el-col>
         </el-row>
         <div class="fgx"></div>
-        <el-form-item label="订单商品状态" prop="status">
-          <el-radio-group disabled v-model="listData.status">
+        <el-form-item label="订单商品状态" prop="status" v-if="ISADMIN">
+          <el-radio-group v-model="listData.status">
             <el-radio :label="0">关闭</el-radio>
             <el-radio :label="1">正常</el-radio>
             <el-radio :label="-1">有退款</el-radio>
@@ -200,6 +200,7 @@ import { mapGetters } from "vuex";
 export default {
   data() {
     return {
+      ISADMIN:false,
       tableSet: [
         {
           label: "费用类型",
@@ -403,6 +404,13 @@ export default {
           this.listData = res.data;
           this.$refs["listData"].resetFields();
         });
+        this.$api.obtainOrder(this.$route.query.orderId).then(res => {
+          if(res.data.createSysUserId === this.$store.state.user.userId){
+            this.ISADMIN = true
+          }else{
+            this.ISADMIN = false
+          }
+        })
     },
   },
 };

+ 4 - 3
src/views/Marketing/orderList/index.vue

@@ -273,7 +273,7 @@ export default {
               value: 1,
             },
             {
-              label: "员工录单",
+              label: "小程序",
               value: 2,
             },
           ],
@@ -337,10 +337,10 @@ export default {
         return;
       }
       var statues = option.some(item => {
-        return item.payStatus === 3
+        return item.payStatus === 3 || item.orderFrom === 2
       })
       if(statues){
-        this.$message.warning("请勿勾选完全收费订单");
+        this.$message.warning("请勿勾选完全收费及订单来源为小程序的订单");
           return;
       }
       var arrayId = [];
@@ -427,6 +427,7 @@ export default {
       this.$router.push({
         path: "orderDetail",
         query: {
+          orderId:v.orderId,
           goodsId: v.goodsId,
           orderSn: v.orderSn,
           userId:v.userId

+ 1 - 1
src/views/education/classManageMent/classHours/index.vue

@@ -230,7 +230,7 @@ export default {
         {
           label:"待重修(视频节和题卷)",
           prop:"waitRebuildNum",
-          prop1:"rebbuildNum",
+          prop1:"rebuildNum",
           hidden:true,
           scope:"againStudent",
           width:"150px"

+ 86 - 257
src/views/education/classManageMent/classHoursReview/index.vue

@@ -17,17 +17,15 @@
     <div class="dis_fs">
       <ul class="ul_ls">
         <li>学员编码:{{ userData.studentCode }}</li>
-        <li>学员姓名:{{ userData.realName }}</li>
-        <li>学员身份证号码:{{ userData.idCard }}</li>
-        <li>绑定手机号码:{{ userData.telPhone }}</li>
+        <li>学员姓名:{{ realName }}</li>
+        <li>学员身份证号码:{{ idCard }}</li>
+        <li>绑定手机号码:{{ telPhone }}</li>
       </ul>
       <div class="photoSty1">
         <el-image
           style="width: 100%; height: 100%"
-          :src="$methodsTools.splitImgHost(userData.oneInchPhotos)"
-          :preview-src-list="[
-            $methodsTools.splitImgHost(userData.oneInchPhotos),
-          ]"
+          :src="$methodsTools.splitImgHost(recent_photos)"
+          :preview-src-list="[$methodsTools.splitImgHost(recent_photos)]"
         >
         </el-image>
         <div class="pos_bottom">一寸头像图</div>
@@ -35,8 +33,8 @@
       <div class="photoSty2">
         <el-image
           style="width: 100%; height: 100%"
-          :src="$methodsTools.splitImgHost(userData.idCardImg1)"
-          :preview-src-list="[$methodsTools.splitImgHost(userData.idCardImg1)]"
+          :src="$methodsTools.splitImgHost(idcard_face_photo)"
+          :preview-src-list="[$methodsTools.splitImgHost(idcard_face_photo)]"
         >
         </el-image>
         <div class="pos_bottom">身份证正面照片</div>
@@ -44,8 +42,10 @@
       <div class="photoSty2" style="margin-right: 0px">
         <el-image
           style="width: 100%; height: 100%"
-          :src="$methodsTools.splitImgHost(userData.idCardImg2)"
-          :preview-src-list="[$methodsTools.splitImgHost(userData.idCardImg2)]"
+          :src="$methodsTools.splitImgHost(idcard_national_photo)"
+          :preview-src-list="[
+            $methodsTools.splitImgHost(idcard_national_photo),
+          ]"
         >
         </el-image>
         <div class="pos_bottom">身份证背面照片</div>
@@ -83,8 +83,10 @@
               ? "未通过"
               : userData.allStatus === 0
               ? "待审核"
-              :userData.allStatus === -1 ?'不可审核'
-              :userData.allStatus === 2 ? '通过审核'
+              : userData.allStatus === -1
+              ? "不可审核"
+              : userData.allStatus === 2
+              ? "通过审核"
               : "未知状态,请联系管理员"
           }}
         </div>
@@ -187,24 +189,33 @@
               <p v-else style="text-align: center; width: 100%">暂无拍照数据</p>
               <div
                 class="styFlex"
-                v-if="(scope.row.allStatus === 0||scope.row.allStatus === 1) && scope.row.periodStatus === 1 && scope.row.status === 2"
+                v-if="
+                  (userData.allStatus === 0 || userData.allStatus === 1) &&
+                  scope.row.periodStatus === 1
+                "
               >
                 <el-button
+                  :disabled="scope.row.status === 1"
                   class="btnstyles"
                   size="mini"
                   @click="changeStatus(scope.row, 1, scope.$index)"
                   >通过</el-button
                 >
                 <el-button
+                  :disabled="scope.row.status === 0"
                   class="btnstyles"
                   size="mini"
-                  @click="changeStatus(scope.row, 2, scope.$index)"
+                  @click="scope.row.status === 2 ? changeStatus(scope.row, 2, scope.$index) : ''"
                   >作弊</el-button
                 >
               </div>
-              <div
+              <!-- <div
                 class="styFlex"
-                v-if="(scope.row.allStatus === 0||scope.row.allStatus === 1) && scope.row.periodStatus === 1 && scope.row.status === 0"
+                v-if="
+                  (scope.row.allStatus === 0 || scope.row.allStatus === 1) &&
+                  scope.row.periodStatus === 1 &&
+                  scope.row.status === 0
+                "
               >
                 <el-button
                   class="btnstyles"
@@ -212,7 +223,7 @@
                   @click="changeStatus(scope.row, 1, scope.$index)"
                   >通过</el-button
                 >
-              </div>
+              </div> -->
             </div>
             <!-- type为3时使用该插槽END -->
             <!-- 章表格START -->
@@ -291,7 +302,7 @@
                         </el-image>
                         <div class="abos">
                           {{ $methodsTools.onlyForma(its.createTime) }}
-                        </div> 
+                        </div>
                       </li>
                       <div style="clear: both"></div>
                     </ul>
@@ -301,10 +312,13 @@
                     <div
                       class="styFlex"
                       v-if="
-                        (scope2.row.allStatus === 0||scope2.row.allStatus === 1) && scope2.row.periodStatus === 1 && scope2.row.status === 2
+                        (userData.allStatus === 0 ||
+                          userData.allStatus === 1) &&
+                        scope2.row.periodStatus === 1
                       "
                     >
                       <el-button
+                        :disabled="scope2.row.status === 1"
                         class="btnstyles"
                         size="mini"
                         @click="
@@ -318,23 +332,28 @@
                         >通过</el-button
                       >
                       <el-button
+                        :disabled="scope2.row.status === 0"
                         class="btnstyles"
                         size="mini"
                         @click="
+                        scope2.row.status === 2 ?
                           changeStatusCharpter(
                             scope2.row,
                             2,
                             scope.$index,
                             scope2.$index
-                          )
+                          ):''
                         "
                         >作弊</el-button
                       >
                     </div>
-                    <div
+                    <!-- <div
                       class="styFlex"
                       v-if="
-                        (scope2.row.allStatus === 0||scope2.row.allStatus === 1) && scope2.row.periodStatus === 1 && scope2.row.status === 0
+                        (scope2.row.allStatus === 0 ||
+                          scope2.row.allStatus === 1) &&
+                        scope2.row.periodStatus === 1 &&
+                        scope2.row.status === 0
                       "
                     >
                       <el-button
@@ -350,7 +369,7 @@
                         "
                         >通过</el-button
                       >
-                    </div>
+                    </div> -->
                   </div>
                   <!-- 节插槽END -->
                   <!-- 节表格START -->
@@ -417,12 +436,14 @@
                           </p>
                           <div
                             class="styFlex"
-                            v-if="(scope3.row.allStatus === 0||scope3.row.allStatus === 1) && 
-                              scope3.row.periodStatus === 1 &&
-                              scope3.row.status === 2
+                            v-if="
+                              (userData.allStatus === 0 ||
+                                userData.allStatus === 1) &&
+                              scope3.row.periodStatus === 1
                             "
                           >
                             <el-button
+                              :disabled="scope3.row.status === 1"
                               class="btnstyles"
                               size="mini"
                               @click="
@@ -437,23 +458,27 @@
                               >通过</el-button
                             >
                             <el-button
+                              :disabled="scope3.row.status === 0"
                               class="btnstyles"
                               size="mini"
                               @click="
+                              scope3.row.status === 2 ?
                                 changeStatusModule(
                                   scope3.row,
                                   2,
                                   scope.$index,
                                   scope2.$index,
                                   scope3.$index
-                                )
+                                ):''
                               "
                               >作弊</el-button
                             >
                           </div>
-                          <div
+                          <!-- <div
                             class="styFlex"
-                            v-if="(scope3.row.allStatus === 0||scope3.row.allStatus === 1) && 
+                            v-if="
+                              (scope3.row.allStatus === 0 ||
+                                scope3.row.allStatus === 1) &&
                               scope3.row.periodStatus === 1 &&
                               scope3.row.status === 0
                             "
@@ -472,7 +497,7 @@
                               "
                               >通过</el-button
                             >
-                          </div>
+                          </div> -->
                         </div>
                       </template>
                     </el-table-column>
@@ -634,6 +659,13 @@
                   </el-option>
                 </el-select>
               </div>
+              <span v-else-if="item.scope === 'typeOptions'">
+                <span v-for="(is, ds) in item.options" :key="ds">
+                  <span v-if="is.value === scope.row[item.prop]">{{
+                    is.label
+                  }}</span>
+                </span>
+              </span>
               <span v-else-if="item.scope === 'aTime'">
                 {{ $methodsTools.onlyForma(scope.row[item.prop]) }}
               </span>
@@ -655,232 +687,18 @@ export default {
       size: "medium",
       active: "",
       loading: false,
+      studentCode: "",
+      realName: "",
+      idCard: "",
+      telPhone: "",
+      recent_photos: "",
+      idcard_face_photo: "",
+      idcard_national_photo: "",
       arr: ["tableData1", "tableData2", "tableData3"],
       listData: {
-        tableData1: [
-          {
-            type: 1,
-            realName: "唐连锋",
-            typeName: "二级建造师继续教育",
-            classHours: 12,
-            classPeriods: [
-              {
-                type: 2,
-                realName: "唐连锋",
-                typeName: "继续教育",
-                classHours: 2,
-                studyStartTime: 1638346719,
-                studyEndTime: 1638346719,
-                classPeriodSectionList: [
-                  {
-                    numIndex: 1,
-                    numList: 3,
-                    type: 3,
-                    realName: "唐连锋",
-                    typeName: "二建",
-                    studyStartTime: 1638346719,
-                    studyEndTime: 1638346719,
-                    status: 1,
-                    auditTime: 1638346719,
-                    userStudyRecordPhotoList: [
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 1,
-                      },
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 2,
-                      },
-                    ],
-                  },
-                  {
-                    numIndex: 1,
-                    numList: 3,
-                    type: 3,
-                    realName: "唐连锋",
-                    typeName: "二建",
-                    studyStartTime: 1638346719,
-                    studyEndTime: 1638346719,
-                    status: 1,
-                    auditTime: 1638346719,
-                    userStudyRecordPhotoList: [
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 1,
-                      },
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 2,
-                      },
-                    ],
-                  },
-                ],
-              },
-              {
-                type: 2,
-                realName: "唐连锋",
-                typeName: "继续教育",
-                classHours: 2,
-                studyStartTime: 1638346719,
-                studyEndTime: 1638346719,
-                classPeriodSectionList: [
-                  {
-                    numIndex: 1,
-                    numList: 3,
-                    type: 3,
-                    realName: "唐连锋",
-                    typeName: "二建",
-                    studyStartTime: 1638346719,
-                    studyEndTime: 1638346719,
-                    status: 1,
-                    auditTime: 1638346719,
-                    userStudyRecordPhotoList: [
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 1,
-                      },
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 2,
-                      },
-                    ],
-                  },
-                  {
-                    numIndex: 1,
-                    numList: 3,
-                    type: 3,
-                    realName: "唐连锋",
-                    typeName: "二建",
-                    studyStartTime: 1638346719,
-                    studyEndTime: 1638346719,
-                    status: 1,
-                    auditTime: 1638346719,
-                    userStudyRecordPhotoList: [
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 1,
-                      },
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 2,
-                      },
-                    ],
-                  },
-                  {
-                    numIndex: 1,
-                    numList: 3,
-                    type: 3,
-                    realName: "唐连锋",
-                    typeName: "二建",
-                    studyStartTime: 1638346719,
-                    studyEndTime: 1638346719,
-                    status: 1,
-                    auditTime: 1638346719,
-                    userStudyRecordPhotoList: [
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 1,
-                      },
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 2,
-                      },
-                    ],
-                  },
-                ],
-              },
-            ],
-          },
-          {
-            type: 1,
-            realName: "唐连锋",
-            typeName: "二级建造师继续教育",
-            classHours: 12,
-            classPeriods: [
-              {
-                type: 2,
-                realName: "唐连锋",
-                typeName: "继续教育",
-                classHours: 2,
-                studyStartTime: 1638346719,
-                studyEndTime: 1638346719,
-                classPeriodSectionList: [
-                  {
-                    numIndex: 1,
-                    numList: 3,
-                    type: 3,
-                    realName: "唐连锋",
-                    typeName: "二建",
-                    studyStartTime: 1638346719,
-                    studyEndTime: 1638346719,
-                    status: 1,
-                    auditTime: 1638346719,
-                    userStudyRecordPhotoList: [
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 1,
-                      },
-                      {
-                        periodId: 1638346719,
-                        photo:
-                          "oss/images/avatar/20211013/1634097664410_1397766697",
-                        recordId: 2,
-                      },
-                    ],
-                  },
-                ],
-              },
-            ],
-          },
-        ],
+        tableData1: [],
         tableData2: [],
-        tableData3: [
-          {
-            numIndex: 1,
-            numList: 3,
-            type: 3,
-            realName: "唐连锋",
-            typeName: "二建",
-            studyStartTime: 1638346719,
-            studyEndTime: 1638346719,
-            status: 1,
-            auditTime: 1638346719,
-            userStudyRecordPhotoList: [
-              {
-                periodId: 1638346719,
-                photo: "oss/images/avatar/20211013/1634097664410_1397766697",
-                recordId: 1,
-              },
-              {
-                periodId: 1638346719,
-                photo: "oss/images/avatar/20211013/1634097664410_1397766697",
-                recordId: 2,
-              },
-            ],
-          },
-        ],
+        tableData3: [],
       },
       userData: {},
       tableData: [],
@@ -923,7 +741,7 @@ export default {
         },
         {
           label: "测试成绩",
-          prop: "classHours",
+          prop: "performance",
         },
       ],
       tableSet3: [
@@ -1098,8 +916,9 @@ export default {
     //批量审批
     getChangeStatus(int) {
       var data = {
-        userId: this.$route.query.userId,
-        goodsId: this.$route.query.goodsId,
+        gradeId: Number(this.$route.query.id),
+        userId: Number(this.$route.query.userId),
+        goodsId: Number(this.$route.query.goodsId),
       };
       if (int === 1) {
         data.status = 1;
@@ -1202,6 +1021,16 @@ export default {
           goodsId: this.$route.query.goodsId,
         })
         .then((res) => {
+          console.log(JSON.parse(res.rows[0].keyValue));
+          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.realName = data.name.value;
+            this.idCard = data.idcard.value;
+            this.telPhone = data.telphone.value;
+          }
           this.userData = res.rows[0];
         });
     },

+ 10 - 4
src/views/education/classManageMent/classList/addClass/index.vue

@@ -62,13 +62,13 @@
                 : 'learningStatus'
             "
           >
-          <el-button
+          <!-- <el-button
               style="margin-right: 14px"
               size="mini"
               v-if="listData.learningStatus"
               @click="listData.learningStatus = ''"
               >清除选择</el-button
-            >
+            > -->
             <el-radio-group
               v-model="listData.learningStatus"
               @change="changeLearning"
@@ -95,12 +95,12 @@
           <el-form-item label="班级有效期" prop="timeList">
             <el-date-picker
               v-model="listData.timeList"
-              type="daterange"
+              type="datetimerange"
               range-separator="至"
               start-placeholder="开始日期"
               end-placeholder="结束日期"
-              format="yyyy 年 MM 月 dd 日"
               value-format="timestamp"
+               @change="changeDataTimeStudy(listData.timeList)"
             >
             </el-date-picker>
           </el-form-item>
@@ -463,6 +463,12 @@ export default {
     this.getGFList();
   },
   methods: {
+    changeDataTimeStudy(arr){
+      if(arr && arr[0] === arr[1]){
+        this.$message.warning('开始时间与结束时间不允许相同')
+        this.listData.timeList = []
+      }
+    },
     handleSizeChange(v) {
       this.formData.pageSize = v;
       this.formData.pageNum = 1;

+ 17 - 11
src/views/education/classManageMent/classList/manageClass/baseInfo.vue

@@ -91,13 +91,13 @@
                   : 'learningStatus'
               "
             >
-            <el-button
+            <!-- <el-button
               style="margin-right: 14px"
               size="mini"
               v-if="listData.learningStatus"
               @click="listData.learningStatus = ''"
               >清除选择</el-button
-            >
+            > -->
               <el-radio-group
                 v-model="listData.learningStatus"
                 @change="changeLearning"
@@ -123,15 +123,15 @@
             </el-form-item>
             <el-form-item label="班级有效期" prop="timeList">
               <el-date-picker
-                v-model="listData.timeList"
-                type="daterange"
-                range-separator="至"
-                start-placeholder="开始日期"
-                end-placeholder="结束日期"
-                format="yyyy 年 MM 月 dd 日"
-                value-format="timestamp"
-              >
-              </el-date-picker>
+              v-model="listData.timeList"
+              type="datetimerange"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              value-format="timestamp"
+               @change="changeDataTimeStudy(listData.timeList)"
+            >
+            </el-date-picker>
             </el-form-item>
             <el-form-item label="考期" prop="examineId">
               <el-select
@@ -331,6 +331,12 @@ export default {
     this.search();
   },
   methods: {
+    changeDataTimeStudy(arr){
+      if(arr && arr[0] === arr[1]){
+        this.$message.warning('开始时间与结束时间不允许相同')
+        this.listData.timeList = []
+      }
+    },
     //   初始获取数据
     search() {
       this.$api.obtainGradegrade(this.$route.query.id).then((res) => {

+ 1 - 0
src/views/education/classManageMent/studentMenu/index.vue

@@ -524,6 +524,7 @@ export default {
       },
       totalClass: 0,
       formDataClass: {
+        pastDue:1,
         atFull: 1,
         goodsId: this.$route.query.goodsId,
         status: 1,

+ 73 - 53
src/views/education/dataReview/informationTemplate/index.vue

@@ -40,7 +40,7 @@
           <img src="@/assets/images/Close@2x.png" alt="" @click="close" />
         </div>
       </div>
-      <div>
+      <div style="overflow-y:auto;max-height:600px;">
         <p class="p_infos">模板基本信息</p>
         <el-form
           label-position="right"
@@ -241,8 +241,11 @@
           <img src="@/assets/images/Close@2x.png" alt="" @click="closeYL" />
         </div>
       </div>
-      <header>{{ listData.name }}</header>
-      <el-row :gutter="20" style="background-color: #999">
+      <header class="headerStys">{{ listData.name }}</header>
+      <el-row
+        :gutter="20"
+        style="background-color: #999; max-height: 600px; overflow-y: auto"
+      >
         <el-col :span="12">
           <ul>
             <template v-for="(item, index) in listData.keyValue">
@@ -724,7 +727,7 @@
         </div>
       </div>
       <el-table
-        :data="sliceArray[arrIndex]"
+        :data="boxtableDataIsActive"
         border
         :header-cell-style="{
           'background-color': '#eee',
@@ -779,16 +782,23 @@
           </template>
         </el-table-column>
       </el-table>
-      <el-pagination
-      @size-change="handleSizeChangea"
-      @current-change="handleCurrentChangea"
-      :page-size="10"
-      layout="total,prev, pager, next, jumper"
-      :total="boxtableDataIsActive.length">
-    </el-pagination>
+      <!-- <el-pagination
+        @size-change="handleSizeChangea"
+        @current-change="handleCurrentChangea"
+        :page-size="10"
+        layout="total,prev, pager, next, jumper"
+        :total="boxtableDataIsActive.length"
+      >
+      </el-pagination> -->
+      <pagination
+      :total="totala"
+      :pageSize="formDataa.pageSize"
+      :currentPage="formDataa.pageNum"
+      @handleSizeChange="handleSizeChangea"
+      @handleCurrentChange="handleCurrentChangea"
+    />
       <span slot="footer" class="dialog-footer">
         <el-button @click="dialogVisibleisActive = false">取 消</el-button>
-        <el-button type="primary" @click="submitFormIsActive">确 定</el-button>
       </span>
     </el-dialog>
   </div>
@@ -1056,8 +1066,11 @@ export default {
         status: [{ required: true, message: "请选择状态", trigger: "change" }],
       },
       activeListGoods: [],
-      sliceArray:[],
-      arrIndex:0,
+      totala:0,
+      formDataa:{
+        pageNum: 1,
+        pageSize: 10,
+      }
     };
   },
   watch: {
@@ -1078,13 +1091,21 @@ export default {
     this.getUserInfoList();
   },
   methods: {
-    handleSizeChangea(v){
-      this.arrIndex = v-1
-      console.log(v)
+    handleSizeChangea(v) {
+      this.formDataa.pageSize = v;
+      this.formDataa.pageNum = 1;
+      this.getNewInfos()
     },
-    handleCurrentChangea(v){
-      this.arrIndex = v-1
-      console.log(v)
+    handleCurrentChangea(v) {
+      this.formDataa.pageNum = v;
+      this.getNewInfos();
+    },
+    getNewInfos(){
+      this.$api.inquireGoods(this.formDataa).then((res) => {
+        this.boxtableDataIsActive = res.rows;
+        this.totala = res.total
+        this.search()
+      });
     },
     getDowm() {
       let url = baseUrls.BASE_IMG_URL + "/oss/images/file/20211214.docx";
@@ -1101,52 +1122,46 @@ export default {
         this.activeListGoods = res.data.map(Number);
       });
     },
-    delIsActive(item) {
-      for(let i = 0; i < this.sliceArray.length;i++){
-        for(let k = 0; k < this.sliceArray[i].length;k++){
-          if(this.sliceArray[i][k].goodsId == item.goodsId){
-            this.sliceArray[i].splice(k,1)
-          }
-        }
-      }
-      this.boxtableDataIsActive = this.boxtableDataIsActive.filter((items) => {
-        return items.goodsId !== item.goodsId;
-      });
-    },
-    submitFormIsActive() {
-      var arrays = [];
-      this.boxtableDataIsActive.map((item) => {
-        arrays.push(item.goodsId);
-      });
-      this.$api
-        .editbaseprofile({ profileTpId: this.id, goodsIds: arrays.toString() })
+    delIsActive(items) {
+      var dataInt = this.formDataa.goodsIds.split(",").map(Number)
+      var ats = dataInt.filter(item => {
+        return item != items.goodsId
+      })
+       this.$api
+        .editbaseprofile({ profileTpId: this.id, goodsIds: ats.toString() })
         .then((res) => {
-          this.dialogVisibleisActive = false;
-          this.$message.success("修改成功");
-          this.search();
+          this.formDataa.goodsIds = ats.toString()
+          this.$message.success("删除成功");
+          this.getNewInfos();
         });
     },
+    submitFormIsActive() {
+      // var arrays = [];
+      // this.boxtableDataIsActive.map((item) => {
+      //   arrays.push(item.goodsId);
+      // });
+      // this.$api
+      //   .editbaseprofile({ profileTpId: this.id, goodsIds: arrays.toString() })
+      //   .then((res) => {
+      //     this.dialogVisibleisActive = false;
+      //     this.$message.success("修改成功");
+      //     this.search();
+      //   });
+    },
     aboutGoods(option) {
       if (!option.goodsIds) {
         this.$message.warning("该资料模板无关联商品");
         return;
       }
-      this.$api.inquireGoods({ goodsIds: option.goodsIds }).then((res) => {
-        this.sliceArray = this.group(res.rows,10)
-        this.arrIndex = 0
+      this.formDataa.pageNum = 1
+      this.formDataa.goodsIds = option.goodsIds
+      this.$api.inquireGoods(this.formDataa).then((res) => {
+        this.totala = res.total
         this.boxtableDataIsActive = res.rows;
         this.dialogVisibleisActive = true;
         this.id = option.profileTpId;
       });
     },
-    group(array, subGroupLength) {
-      let index = 0;
-      let newArray = [];
-      while(index < array.length) {
-          newArray.push(array.slice(index, index += subGroupLength));
-      }
-      return newArray;
-  },
     submitForm() {
       if (this.activeLists.length === 0) {
         this.dialogVisibleAss = false;
@@ -1605,6 +1620,11 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.headerStys {
+  margin-bottom: 12px;
+  font-weight: bold;
+  font-size: 21px;
+}
 .bgcFFF {
   background-color: #fff;
 }

+ 2 - 2
src/views/education/dataReview/stamp/index.vue

@@ -317,7 +317,7 @@ export default {
           scope: "getShops",
         },
         {
-          label: "填写资料审核状态",
+          label: "盖章资料审核状态",
           prop: "status",
           hidden: true,
           scope: "isOptions",
@@ -338,7 +338,7 @@ export default {
           ],
         },
         {
-          label: "填写资料变更状态",
+          label: "盖章资料变更状态",
           prop: "changeStatus",
           hidden: true,
           scope: "isOptions",

+ 34 - 9
src/views/education/examManagement/applicationData/asPlanned.vue

@@ -344,7 +344,7 @@ import searchBoxNew from "@/components/searchBoxNew";
 import tableList from "@/components/tableList";
 import pagination from "@/components/pagination";
 export default {
-  name:"AsPlanned",
+  name: "AsPlanned",
   components: { searchBoxNew, tableList, pagination },
   data() {
     return {
@@ -381,6 +381,11 @@ export default {
           placeholder: "考试标题",
           scope: "examList",
         },
+        {
+          prop: "beforeId",
+          placeholder: "前培标题",
+          scope: "beforeList",
+        },
         {
           prop: "studentType",
           placeholder: "学员报名类型",
@@ -415,6 +420,8 @@ export default {
       formData: {
         pageSize: 10,
         pageNum: 1,
+        applyId: "",
+        beforeId: "",
       },
       // 表单
       tableSet: [
@@ -601,6 +608,12 @@ export default {
     };
   },
   mounted() {
+    if (this.$route.query.type == 1) {
+      this.formData.applyId = Number(this.$route.query.id);
+    }
+    if (this.$route.query.type == 2) {
+      this.formData.beforeId = Number(this.$route.query.id);
+    }
     this.search();
     this.getQP();
   },
@@ -625,7 +638,7 @@ export default {
       let formData = new FormData();
       formData.append("file", file);
       this.$api.editsystemimportDatae(formData).then((res) => {
-        e.target.value = ''
+        e.target.value = "";
         if (res.msg) {
           let url = baseUrlst.baseURL + "common/download?fileName=" + res.msg;
           let link = document.createElement("a");
@@ -648,7 +661,7 @@ export default {
       let formData = new FormData();
       formData.append("file", file);
       this.$api.editsystemimportUpdateData(formData).then((res) => {
-        e.target.value = ''
+        e.target.value = "";
         if (res.msg) {
           let url =
             "http://192.168.1.12:5030/common/download?fileName=" + res.msg;
@@ -725,14 +738,25 @@ export default {
           JSON.stringify(this.$refs.tableList.allCheckData)
         );
         var ast = this.peopleList.every((item) => {
-          return item.subscribeStatus === 1;
+          return (
+            item.subscribeStatus === 1 &&
+            item.beforeStatus !== 1 &&
+            item.examStatus === 0 &&
+            !item.examExpend
+          );
         });
         if (ast) {
           this.listData = {};
           this.ints = 2;
           this.dialogDJ = true;
         } else {
-          this.$message.warning("请勾选预约考试为取消的计划");
+          this.$message({
+            type: "warning",
+            duration: 7000,
+            showClose: true,
+            message:
+              "请勾选预约考试为正常和前培标记【空】以及考试登记状态为待登记和没有消耗过考试次数的计划",
+          });
           return;
         }
       }
@@ -744,9 +768,9 @@ export default {
           return item.subscribeStatus === 1;
         });
         if (ast) {
-        this.listData = {};
-        this.ints = 2;
-        this.dialogCG = true;
+          this.listData = {};
+          this.ints = 2;
+          this.dialogCG = true;
         } else {
           this.$message.warning("请勾选预约状态为正常的计划");
           return;
@@ -776,7 +800,7 @@ export default {
           return (
             item.examStatus === 0 &&
             item.subscribeStatus === 1 &&
-            item.examApplySiteTrain.length
+            item.beforeCount
           );
         });
         if (ast) {
@@ -909,6 +933,7 @@ export default {
           pageNum: 1,
         };
       }
+      console.log(this.formData, 123);
       this.$api
         .inquiresystemsubscribelist(this.formData)
         .then((res) => {

+ 55 - 53
src/views/education/examManagement/applicationData/byTrainee.vue

@@ -100,27 +100,19 @@
                         >
                       </div>
                       <div v-else-if="item.scope === 'applyInfos'">
-                        <div
-                          v-for="(items, indexs) in scope.row[item.prop]"
-                          :key="indexs"
-                        >
-                          <div>{{ items.siteAddress }}</div>
-                          <div
-                            v-for="(
-                              itemsxs, indexsxs
-                            ) in items.examApplySiteTime"
-                            :key="indexsxs"
-                          >
-                            <div v-for="(ks, ds) in itemsxs.siteTime" :key="ds">
-                              {{
-                                $methodsTools.onlyForma(itemsxs.examTime, false)
-                              }}
-                              {{ ks.startTime.replace("-", ":") }}-{{
-                                ks.endTime.replace("-", ":")
-                              }}
-                            </div>
-                          </div>
-                        </div>
+                        <div>{{ scope.row[item.prop] }}</div>
+                        {{
+                          $methodsTools.onlyForma(scope.row[item.prop1], false)
+                        }}
+                        {{
+                          scope.row[item.prop2]
+                            ? scope.row[item.prop2].replace("-", ":")
+                            : ""
+                        }}-{{
+                          scope.row[item.prop3]
+                            ? scope.row[item.prop3].replace("-", ":")
+                            : ""
+                        }}
                       </div>
                       <span v-else-if="item.scope === 'aTimeList'">{{
                         scope.row[item.prop] === null
@@ -518,7 +510,7 @@
 <script>
 import pagination from "@/components/pagination";
 export default {
-  name:"ByTrainee",
+  name: "ByTrainee",
   components: { pagination },
   data() {
     return {
@@ -588,6 +580,10 @@ export default {
               label: "已开通",
               value: 1,
             },
+            {
+              label: "未开通",
+              value: 0,
+            },
           ],
         },
         {
@@ -685,7 +681,10 @@ export default {
         },
         {
           label: "预约场次(考试地点和时间)",
-          prop: "examApplySite",
+          prop: "applySiteAddress",
+          prop1: "applySiteExamTime",
+          prop2: "applySiteStartTime",
+          prop3: "applySiteEndTime",
           hidden: true,
           width: "280px",
           scope: "applyInfos",
@@ -698,7 +697,10 @@ export default {
         },
         {
           label: "预约场次(考培地点和时间)",
-          prop: "examApplySiteTrain",
+          prop: "applySiteAddressTrain",
+          prop1: "applySiteExamTrainTime",
+          prop2: "applySiteStartTrainTime",
+          prop3: "applySiteEndTrainTime",
           hidden: true,
           width: "280px",
           scope: "applyInfos",
@@ -741,7 +743,7 @@ export default {
     //   .then((res) => {});
     this.getStudent();
   },
-  activated(){
+  activated() {
     this.getStudent();
   },
   methods: {
@@ -975,34 +977,34 @@ export default {
     getApis(data) {
       return new Promise((resolve, reject) => {
         this.$api.inquiresystemsubscribelist(data).then((res) => {
-          for (let k = 0; k < res.rows.length; k++) {
-            for (let i = 0; i < res.rows[k].examApplySite.length; i++) {
-              for (
-                let j = 0;
-                j < res.rows[k].examApplySite[i].examApplySiteTime.length;
-                j++
-              ) {
-                res.rows[k].examApplySite[i].examApplySiteTime[j].siteTime =
-                  JSON.parse(
-                    res.rows[k].examApplySite[i].examApplySiteTime[j].siteTime
-                  );
-              }
-            }
-            for (let i = 0; i < res.rows[k].examApplySiteTrain.length; i++) {
-              for (
-                let j = 0;
-                j < res.rows[k].examApplySiteTrain[i].examApplySiteTime.length;
-                j++
-              ) {
-                res.rows[k].examApplySiteTrain[i].examApplySiteTime[
-                  j
-                ].siteTime = JSON.parse(
-                  res.rows[k].examApplySiteTrain[i].examApplySiteTime[j]
-                    .siteTime
-                );
-              }
-            }
-          }
+          // for (let k = 0; k < res.rows.length; k++) {
+          //   for (let i = 0; i < res.rows[k].examApplySite.length; i++) {
+          //     for (
+          //       let j = 0;
+          //       j < res.rows[k].examApplySite[i].examApplySiteTime.length;
+          //       j++
+          //     ) {
+          //       res.rows[k].examApplySite[i].examApplySiteTime[j].siteTime =
+          //         JSON.parse(
+          //           res.rows[k].examApplySite[i].examApplySiteTime[j].siteTime
+          //         );
+          //     }
+          //   }
+          //   for (let i = 0; i < res.rows[k].examApplySiteTrain.length; i++) {
+          //     for (
+          //       let j = 0;
+          //       j < res.rows[k].examApplySiteTrain[i].examApplySiteTime.length;
+          //       j++
+          //     ) {
+          //       res.rows[k].examApplySiteTrain[i].examApplySiteTime[
+          //         j
+          //       ].siteTime = JSON.parse(
+          //         res.rows[k].examApplySiteTrain[i].examApplySiteTime[j]
+          //           .siteTime
+          //       );
+          //     }
+          //   }
+          // }
           resolve(res.rows);
         });
       });

+ 20 - 8
src/views/education/examManagement/examArrangement/index.vue

@@ -58,7 +58,7 @@
     />
     <el-dialog
       :visible.sync="dialogVisible"
-      width="560px"
+      width="610px"
       :show-close="false"
       :close-on-click-modal="false"
     >
@@ -134,12 +134,11 @@
             <el-col :span="11">
               <el-form-item prop="applyStartTime">
                 <el-date-picker
-                  type="date"
+                  type="datetime"
                   placeholder="开始日期"
                   @change="changeEndTime(1)"
                   v-model="listData.applyStartTime"
                   style="width: 100%"
-                  format="yyyy 年 MM 月 dd 日"
                   value-format="timestamp"
                 ></el-date-picker>
               </el-form-item>
@@ -148,12 +147,11 @@
             <el-col :span="11">
               <el-form-item prop="applyEndTime">
                 <el-date-picker
-                  type="date"
+                  type="datetime"
                   placeholder="结束日期"
                   @change="changeEndTime(2)"
                   v-model="listData.applyEndTime"
                   style="width: 100%"
-                  format="yyyy 年 MM 月 dd 日"
                   value-format="timestamp"
                 ></el-date-picker>
               </el-form-item>
@@ -539,7 +537,7 @@
     </el-dialog>
     <el-dialog
       :visible.sync="dialoginfoWatch"
-      width="860px"
+      width="900px"
       :show-close="false"
       :close-on-click-modal="false"
     >
@@ -584,11 +582,11 @@
               </el-form-item>
               <el-form-item label="报名开放时间:">
                 <span>{{
-                  $methodsTools.onlyForma(infoData.applyStartTime, false)
+                  $methodsTools.onlyForma(infoData.applyStartTime)
                 }}</span>
                 <span>{{
-                  $methodsTools.onlyForma(infoData.applyEndTime, false)
+                  $methodsTools.onlyForma(infoData.applyEndTime)
                 }}</span>
               </el-form-item>
               <el-form-item label="考试地点和时间:">
@@ -772,6 +770,8 @@ export default {
           label: "预约/取消(人次)",
           prop: "people",
           hidden: true,
+          scope:"jumpPeolpe",
+          type:1,
           width: "140px",
         },
       ],
@@ -1177,6 +1177,18 @@ this.$message.warning(
     },
     // 判断选择时间逻辑
     changeEndTime(int) {
+      if(this.listData.applyStartTime === this.listData.applyEndTime){
+        this.$message.warning(
+          "开始时间与结束时间不允许相同"
+        );
+        if(int === 1){
+        this.listData.applyStartTime = "";
+        }
+        if(int === 2){
+        this.listData.applyEndTime = "";
+        }
+        return;
+      }
       if (
         int === 1 &&
         this.listData.applyEndTime &&

+ 23 - 7
src/views/education/examManagement/qianpeiArrange/index.vue

@@ -42,7 +42,7 @@
     />
     <el-dialog
       :visible.sync="dialogVisible"
-      width="560px"
+      width="610px"
       :show-close="false"
       :close-on-click-modal="false"
     >
@@ -82,6 +82,7 @@
           <el-form-item label="" prop="beforeUrl" v-if="listData.beforeStatus">
             <el-radio-group v-model="listData.beforeUrl">
               <el-radio
+              style="margin-bottom:10px;"
                 v-for="(item, index) in radioApi"
                 :key="index"
                 :label="item.beforeUrlId"
@@ -93,12 +94,11 @@
             <el-col :span="11">
               <el-form-item prop="beforeStartTime">
                 <el-date-picker
-                  type="date"
+                  type="datetime"
                   placeholder="开始日期"
                   @change="changeEndTime(1)"
                   v-model="listData.beforeStartTime"
                   style="width: 100%"
-                  format="yyyy 年 MM 月 dd 日"
                   value-format="timestamp"
                 ></el-date-picker>
               </el-form-item>
@@ -107,12 +107,11 @@
             <el-col :span="11">
               <el-form-item prop="beforeEndTime">
                 <el-date-picker
-                  type="date"
+                  type="datetime"
                   placeholder="结束日期"
                   @change="changeEndTime(2)"
                   v-model="listData.beforeEndTime"
                   style="width: 100%"
-                  format="yyyy 年 MM 月 dd 日"
                   value-format="timestamp"
                 ></el-date-picker>
               </el-form-item>
@@ -279,11 +278,11 @@
           </el-form-item>
           <el-form-item label="开放时间:">
             <span>{{
-              $methodsTools.onlyForma(infoData.beforeStartTime, false)
+              $methodsTools.onlyForma(infoData.beforeStartTime)
             }}</span>
             <span>{{
-              $methodsTools.onlyForma(infoData.beforeEndTime, false)
+              $methodsTools.onlyForma(infoData.beforeEndTime)
             }}</span>
           </el-form-item>
           <el-button type="info" style="margin-bottom: 20px" size="mini"
@@ -395,6 +394,8 @@ export default {
           prop: "people",
           hidden: true,
           width: "140px",
+          scope:"jumpPeolpe",
+          type:2,
         },
       ],
       optionsApis: [
@@ -591,6 +592,18 @@ export default {
     },
     // 判断选择时间逻辑
     changeEndTime(int) {
+      if(this.listData.beforeStartTime === this.listData.beforeEndTime){
+        this.$message.warning(
+          "开始时间与结束时间不允许相同"
+        );
+        if(int === 1){
+        this.listData.beforeStartTime = "";
+        }
+        if(int === 2){
+        this.listData.beforeEndTime = "";
+        }
+        return;
+      }
       if (
         int === 1 &&
         this.listData.beforeEndTime &&
@@ -688,6 +701,7 @@ export default {
               }成功`
             );
             this.search();
+            this.$store.commit("BEFORELIST");
           });
         })
         .catch(() => {
@@ -749,6 +763,7 @@ export default {
           this.$message.success("新增成功");
           this.dialogVisible = false;
           this.search();
+          this.$store.commit("BEFORELIST");
         });
       }
       if (this.statusPop === 0) {
@@ -756,6 +771,7 @@ export default {
           this.$message.success("修改成功");
           this.dialogVisible = false;
           this.search();
+          this.$store.commit("BEFORELIST");
         });
       }
     },

+ 33 - 1
src/views/education/notificationManageMent/notificationList/add/index.vue

@@ -96,7 +96,7 @@
               style="margin-right: 12px"
               >添加题库跳转</el-button
             >
-            <span style="font-size: 14px">注:课程绑定的题库无法做跳转</span>
+            <span style="font-size: 14px">注:1.视频课程关联的试卷,无法做跳转、2.视频课程设置了【播放-禁止拖动】,无法做跳转</span>
           </div>
           <div
             style="padding: 5px 20px; background-color: #eee"
@@ -199,6 +199,7 @@
               :props="defaultProps"
               node-key="onlyId"
               show-checkbox
+              :render-after-expand="false"
               :filter-node-method="filterNode"
               ref="tree"
               @check-change="activeChange"
@@ -218,6 +219,7 @@
               :data="data1"
               :props="defaultProps"
               node-key="onlyId"
+              :render-after-expand="false"
               show-checkbox
               :filter-node-method="filterNode"
               ref="tree1"
@@ -237,6 +239,7 @@
               class="filter-tree"
               :data="data2"
               :props="defaultProps"
+              :render-after-expand="false"
               node-key="onlyId"
               show-checkbox
               :filter-node-method="filterNode"
@@ -405,6 +408,30 @@
         <el-button type="primary" @click="submitszz(2)">继续发送</el-button>
       </span>
     </el-dialog>
+    <el-dialog
+      :visible.sync="dialogsy"
+      width="360px"
+      :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="dialogsy = false"
+          />
+        </div>
+      </div>
+      <div>
+       是否继续发送?
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogsy = false">否</el-button>
+        <el-button type="primary" @click="submitszz(2)">是</el-button>
+      </span>
+    </el-dialog>
     <el-dialog
       :visible.sync="dialogCG"
       width="360px"
@@ -441,6 +468,7 @@ export default {
     return {
       dialogCG: false,
       dialog: false,
+      dialogsy:false,
       listData: {
         issueStatus: 1,
         receiptStatus: 0,
@@ -980,6 +1008,10 @@ export default {
             1
           );
         }
+        if(!this.listData.informCourseAddBo.length && !this.listData.informExamAddBo.length){
+          this.dialogsy = true;
+          return
+        }
         this.$api.inquireselectNum(data).then((res) => {
           this.num = res.data;
           if (res.data === 0) {

+ 30 - 1
src/views/education/notificationManageMent/notificationList/edit/index.vue

@@ -96,7 +96,7 @@
               style="margin-right: 12px"
               >添加题库跳转</el-button
             >
-            <span style="font-size: 14px">注:课程绑定的题库无法做跳转</span>
+            <span style="font-size: 14px">注:1.视频课程关联的试卷,无法做跳转、2.视频课程设置了【播放-禁止拖动】,无法做跳转</span>
           </div>
           <div
             style="padding: 5px 20px; background-color: #eee"
@@ -428,6 +428,30 @@
         <el-button type="primary" @click="submitCG">确定</el-button>
       </span>
     </el-dialog>
+    <el-dialog
+      :visible.sync="dialogsy"
+      width="360px"
+      :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="dialogsy = false"
+          />
+        </div>
+      </div>
+      <div>
+       是否继续发送?
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogsy = false">否</el-button>
+        <el-button type="primary" @click="submitszz(2)">是</el-button>
+      </span>
+    </el-dialog>
     <bankInfo ref="bankInfo" />
   </div>
 </template>
@@ -442,6 +466,7 @@ export default {
     return {
       dialogCG: false,
       dialog: false,
+      dialogsy:false,
       listData: {
         informWay: [],
         issueTime: "",
@@ -990,6 +1015,10 @@ export default {
             1
           );
         }
+        if(!this.listData.informCourseAddBo.length && !this.listData.informExamAddBo.length){
+          this.dialogsy = true;
+          return
+        }
         this.$api.inquireselectNum(data).then((res) => {
           this.num = res.data;
           if (res.data === 0) {

+ 3 - 2
src/views/education/notificationManageMent/notificationList/index.vue

@@ -18,9 +18,9 @@
     >
       <template slot="customize">
         <el-button :size="size" type="danger" @click="plDel">删除</el-button>
-        <el-button :size="size" type="warning" @click="plExport"
+        <!-- <el-button :size="size" type="warning" @click="plExport"
           >导出</el-button
-        >
+        > -->
         <el-button :size="size" type="success" @click="openFLs"
           >管理备注分类</el-button
         >
@@ -335,6 +335,7 @@ export default {
           prop: "receiptStatus",
           hidden: true,
           scope: "isOptions",
+          width:'150px',
           options: [
             {
               label: "是",

+ 511 - 55
src/views/education/studentManageMent/studentXQ/BankQuestionPassRecord.vue

@@ -3,7 +3,7 @@
     <el-table
       :data="tableData"
       style="width: 100%"
-      default-expand-all
+      @expand-change="expandChange"
       :header-cell-style="{
         'background-color': 'skyblue',
         padding: '8.1px',
@@ -14,7 +14,8 @@
         <template slot-scope="scope">
           <el-table
             border
-            :data="scope.row.examSonStudyRecordVos"
+            ref="multipleTable"
+            :data="scope.row.details"
             style="width: 100%"
             default-expand-all
             :header-cell-style="{
@@ -23,6 +24,15 @@
               color: '#333',
             }"
           >
+            <el-table-column label="操作" align="center" width="100px">
+              <template slot-scope="scope">
+                <el-button
+                  type="text"
+                  @click="wantInfo(scope.row, scope.$index)"
+                  >查看</el-button
+                >
+              </template>
+            </el-table-column>
             <template v-for="(item, index) in tableSetChild">
               <el-table-column
                 :width="item.width"
@@ -31,7 +41,7 @@
                 align="center"
               >
                 <template slot-scope="scope">
-                  <span v-if="item.scope === 'types'">
+                  <!-- <span v-if="item.scope === 'types'">
                     {{
                       scope.row[item.prop] === 1
                         ? "开课"
@@ -48,25 +58,11 @@
                     <span style="color: green">{{
                       compons(scope.row[item.prop1], scope.row[item.prop2])
                     }}</span>
-                  </span>
-                  <span v-else> {{ scope.row[item.prop] }} </span>
+                  </span> -->
+                  <span> {{ scope.row[item.prop] }} </span>
                 </template>
               </el-table-column>
             </template>
-            <el-table-column
-              label="操作"
-              align="center"
-              fixed="right"
-              width="100px"
-            >
-              <!-- <template slot-scope="scope">
-                <el-button
-                  type="text"
-                  @click="wantInfo(scope.row, scope.$index)"
-                  >查看</el-button
-                >
-              </template> -->
-            </el-table-column>
           </el-table>
         </template>
       </el-table-column>
@@ -87,8 +83,8 @@
               {{ $methodsTools.onlyForma(scope.row[item.prop]) }}
             </span>
             <span v-else-if="item.scope === 'moreTime'">
-              {{ $methodsTools.onlyForma(scope.row[item.prop1]) }}
-              {{ $methodsTools.onlyForma(scope.row[item.prop2]) }}-
+              {{ $methodsTools.onlyForma(scope.row[item.prop1]) }} -
+              {{ $methodsTools.onlyForma(scope.row[item.prop2]) }}
             </span>
             <span v-else-if="item.scope === 'computes'">
               {{ (scope.row[item.prop1] / scope.row[item.prop2]) * 100 }}%
@@ -170,6 +166,324 @@
         <el-button @click="close">取 消</el-button>
       </span>
     </el-dialog>
+    <el-dialog
+      :visible.sync="dialogVisibleTILES"
+      width="930px"
+      :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="dialogVisibleTILES = false"
+          />
+        </div>
+      </div>
+      <div style="height: 600px; overflow-y: auto">
+        <el-row>
+          <el-col :span="4" style="height: 600px; overflow-y: auto">
+            <div
+              v-for="(item, index) in RemardList"
+              :key="index"
+              class="achover"
+              :class="
+                item.recordId === getInfoRecord.recordId ? 'activeList' : ''
+              "
+              style="border: 1px solid #666; padding: 6px"
+              :style="index !== 0 ? 'border-top: 1px solid transparent' : ''"
+              @click="getRecodeInfo(item.recordId)"
+            >
+              {{ `第${index + 1}次做题记录` }}
+            </div>
+          </el-col>
+          <el-col :span="20" v-if="getInfoRecord.recordId">
+            <div style="padding: 0px 20px; height: 550px; overflow-y: auto">
+              <table style="width: 100%; border-collapse: collapse" border="1">
+                <tr>
+                  <td>提交时间</td>
+                  <td>做题用时(分)</td>
+                  <td>做题状态</td>
+                  <td>已答题数</td>
+                  <td>得分</td>
+                </tr>
+                <tr>
+                  <td>
+                    {{ $methodsTools.onlyForma(getInfoRecord.updateTime) }}
+                  </td>
+                  <td>
+                    {{ $methodsTools.secondToDate(getInfoRecord.doTime) }}
+                  </td>
+                  <td>{{ getInfoRecord.status === 1 ? "完成" : "未完成" }}</td>
+                  <td>
+                    {{
+                      getInfoRecord.doQuestionNum +
+                      "/" +
+                      getInfoRecord.totalQuestionNum
+                    }}
+                  </td>
+                  <td>{{ getInfoRecord.performance }}</td>
+                </tr>
+              </table>
+              <div
+                v-for="(item, index) in getInfoRecord.historyExamJson"
+                :key="index"
+                style="margin: 14px 0px; background-color: #eee; padding: 10px"
+              >
+                <div
+                  style="border-bottom: 1px dotted #666; padding: 4px 0px 10px"
+                >
+                  <span style="margin-right: 14px">题目{{ index + 1 }}</span>
+                  <span style="margin-right: 14px">{{
+                    changeQuestType(item.type)
+                  }}</span>
+                  <span style="margin-right: 14px"
+                    >分值:{{ item.score }}分</span
+                  >
+                  <span style="margin-right: 14px; color: red"
+                    >得分:{{ item.scoreResult }}分</span
+                  >
+                  <el-button
+                    v-if="item.type === 4 || item.type === 5"
+                    style="margin-right: 14px"
+                    type="text"
+                    @click="setMath(item, index)"
+                    >评分</el-button
+                  >
+                </div>
+                <div class="ddis_fs">
+                  <div class="content">题目内容:</div>
+                  <div style="flex: 1">
+                    <div v-html="item.content"></div>
+                    <div v-if="item.type === 4">
+                      <div
+                        style="
+                          margin: 20px;
+                          background-color: #fff;
+                          padding: 12px;
+                        "
+                        v-for="(ite, ind) in item.jsonStr"
+                        :key="ind"
+                      >
+                        <div class="ddis_fs" v-if="item.ite !== 5">
+                          <div>题目类型:{{ changeQuestType(ite.type) }}</div>
+                        </div>
+                        <div class="ddis_fs">
+                          <div class="content">题目内容:</div>
+                          <div style="flex: 1">
+                            <div v-html="ite.content"></div>
+                            <ul>
+                              <li
+                                v-for="(items, indexs) in ite.optionsList"
+                                :key="indexs"
+                                style="margin-bottom: 10px"
+                              >
+                                {{ Gest(indexs + 1) }}:{{ items.content }}
+
+                                <el-image
+                                  v-if="items.imgUrl"
+                                  style="
+                                    width: 40px;
+                                    height: 40px;
+                                    vertical-align: middle;
+                                  "
+                                  :src="
+                                    $methodsTools.splitImgHost(items.imgUrl)
+                                  "
+                                  :preview-src-list="[
+                                    $methodsTools.splitImgHost(items.imgUrl),
+                                  ]"
+                                >
+                                </el-image>
+                              </li>
+                            </ul>
+                          </div>
+                        </div>
+                        <div class="ddis_fs" v-if="ite.type !== 5">
+                          <div class="content">正确答案:</div>
+                          <div style="flex: 1">
+                            <span v-if="ite.type === 3">
+                              {{ ite.answerQuestion == 1 ? "正确" : "错误" }}
+                            </span>
+                            <span v-else>
+                              {{ getDictChanges(ite.answerQuestion) }}
+                            </span>
+                          </div>
+                        </div>
+                        <div class="ddis_fs">
+                          <div class="content">答案解析:</div>
+                          <div style="flex: 1">
+                            <div v-html="ite.analysisContent"></div>
+                          </div>
+                        </div>
+                        <div class="ddis_fs">
+                          <div class="content">填选答案:</div>
+                          <div style="flex: 1">
+                            <p
+                              style="margin: 0px"
+                              v-if="ite.type === 1 || ite.type === 2"
+                            >
+                              {{ getDictChanges(item.ques[ind]) }}
+                            </p>
+                            <p style="margin: 0px" v-if="ite.type === 3">
+                              {{ item.ques[ind] == 1 ? "正确" : "错误" }}
+                            </p>
+                            <div v-if="ite.type === 5">
+                              <p>{{ ite.ansText.text }}</p>
+                              <ul>
+                                <li
+                                  v-for="(k, ds) in ite.ansText.imageList"
+                                  :key="ds"
+                                  style="
+                                    width: 100px;
+                                    height: 100px;
+                                    float: left;
+                                    margin: 0px 10px 10px 0px;
+                                  "
+                                >
+                                  <el-image
+                                    v-if="k"
+                                    style="width: 100%; height: 100%"
+                                    :src="$methodsTools.splitImgHost(k)"
+                                    :preview-src-list="[
+                                      $methodsTools.splitImgHost(k),
+                                    ]"
+                                  >
+                                  </el-image>
+                                </li>
+                                <div style="clear: both"></div>
+                              </ul>
+                            </div>
+                          </div>
+                        </div>
+                      </div>
+                    </div>
+                    <ul v-else>
+                      <li
+                        v-for="(items, indexs) in item.jsonStr"
+                        :key="indexs"
+                        style="margin-bottom: 10px"
+                      >
+                        {{ Gest(indexs + 1) }}:{{ items.content }}
+
+                        <el-image
+                          v-if="items.imgUrl"
+                          style="
+                            width: 40px;
+                            height: 40px;
+                            vertical-align: middle;
+                          "
+                          :src="$methodsTools.splitImgHost(items.imgUrl)"
+                          :preview-src-list="[
+                            $methodsTools.splitImgHost(items.imgUrl),
+                          ]"
+                        >
+                        </el-image>
+                      </li>
+                    </ul>
+                  </div>
+                </div>
+                <div class="ddis_fs" v-if="item.type !== 4 && item.type !== 5">
+                  <div class="content">正确答案:</div>
+                  <div style="flex: 1">
+                    <span v-if="item.type === 3">
+                      {{ item.answerQuestion == 1 ? "正确" : "错误" }}
+                    </span>
+                    <span v-else>
+                      {{ getDictChanges(item.answerQuestion) }}
+                    </span>
+                  </div>
+                </div>
+                <div class="ddis_fs">
+                  <div class="content">答案解析:</div>
+                  <div style="flex: 1">
+                    <div v-html="item.analysisContent"></div>
+                  </div>
+                </div>
+                <div class="ddis_fs">
+                  <div class="content">填选答案:</div>
+                  <div style="flex: 1">
+                    <p
+                      style="margin: 0px"
+                      v-if="item.type === 1 || item.type === 2"
+                    >
+                      {{ getDictChanges(item.ques) }}
+                    </p>
+                    <p style="margin: 0px" v-if="item.type === 3">
+                      {{ item.ques == 1 ? "正确" : "错误" }}
+                    </p>
+                    <div v-if="item.type === 5">
+                      <p>{{ item.ansText.text }}</p>
+                      <ul>
+                        <li
+                          v-for="(k, ds) in item.ansText.imageList"
+                          :key="ds"
+                          style="
+                            width: 100px;
+                            height: 100px;
+                            float: left;
+                            margin: 0px 10px 10px 0px;
+                          "
+                        >
+                          <el-image
+                            v-if="k"
+                            style="width: 100%; height: 100%"
+                            :src="$methodsTools.splitImgHost(k)"
+                            :preview-src-list="[$methodsTools.splitImgHost(k)]"
+                          >
+                          </el-image>
+                        </li>
+                        <div style="clear: both"></div>
+                      </ul>
+                    </div>
+                  </div>
+                </div>
+              </div>
+            </div>
+            <div style="height: 50px; text-align: center; line-height: 50px">
+              <el-button size="mini" type="success" @click="editForms"
+                >提交修改</el-button
+              >
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisibleTILES = false">取 消</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog
+      :visible.sync="visible"
+      width="200px"
+      :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="visible = false"
+          />
+        </div>
+      </div>
+      <div>
+        <el-input-number
+          :controls="false"
+          v-model="numPrise"
+          size="mini"
+          :min="0"
+        ></el-input-number>
+        分
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button size="mini" @click="visible = false">取 消</el-button>
+        <el-button size="mini" @click="submitformST">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -178,44 +492,19 @@ export default {
   name: "studyRecord",
   data() {
     return {
+      visible: false,
+      dialogVisibleTILES: false,
       dialogVisible: false,
       tableDataChild: {},
       tableSetChild: [
         {
           label: "题卷名称",
-          prop: "questionName",
+          prop: "examName",
           width: "160px",
         },
-        {
-          label: "科目",
-          prop: "subjectName",
-        },
-        {
-          label: "模块卷",
-          prop: "moduleNum",
-        },
-        {
-          label: "章卷",
-          prop: "chapterNum",
-        },
-        {
-          label: "试卷",
-          prop: "examNum",
-        },
         {
           label: "题目",
-          prop: "questionNum",
-        },
-        {
-          label: "试卷类型",
-          prop: "sectionType",
-          scope: "sectionType",
-        },
-        {
-          label: "学习状态",
-          prop1: "recordNum",
-          prop2: "examNum",
-          scope: "studentStatus",
+          prop: "examName",
         },
       ],
       tableData: [],
@@ -251,7 +540,7 @@ export default {
           prop1: "stuAllNum",
           prop2: "examNum",
           scope: "computes",
-          width: "140px",
+          width: "160px",
           ch: "%",
         },
         {
@@ -271,7 +560,7 @@ export default {
           prop1: "studyStartTime",
           prop2: "studyEndTime",
           scope: "moreTime",
-          width: "140px",
+          width: "300px",
         },
       ],
       studyListRemard: [
@@ -315,16 +604,149 @@ export default {
         },
       ], //学习记录表格对应column
       RemardList: [], //学习记录列表
+      getInfoRecord: {}, //当前点击的数据
+      numPrise: "", //当前弹窗分数
+      activeIndexs: "",
     };
   },
   mounted() {
     this.$api
       .inquiregradestudentlistExam({ userId: this.$route.query.id })
       .then((res) => {
+        for (let i = 0; i < res.rows.length; i++) {
+          res.rows[i].details = [];
+        }
         this.tableData = res.rows;
       });
   },
   methods: {
+    /**
+     * 提交修改
+     */
+    editForms() {
+      var data = JSON.parse(JSON.stringify(this.getInfoRecord));
+      data.performance = 0;
+      for (let i = 0; i < data.historyExamJson.length; i++) {
+        if (
+          data.historyExamJson[i].scoreResult ||
+          data.historyExamJson[i].scoreResult === 0
+        ) {
+          data.performance += data.historyExamJson[i].scoreResult;
+        }
+      }
+      data.historyExamJson = JSON.stringify(data.historyExamJson);
+      this.$api.editrecordexam(data).then((res) => {
+        this.$message.success("修改成功");
+        this.getRecodeInfo(data.recordId);
+      });
+    },
+    submitformST() {
+      this.$set(
+        this.getInfoRecord.historyExamJson[this.activeIndexs],
+        "scoreResult",
+        this.numPrise
+      );
+      this.visible = false;
+    },
+    setMath(option, indexs) {
+      this.numPrise = this.getInfoRecord.historyExamJson[indexs].scoreResult;
+      this.activeIndexs = indexs;
+      this.visible = true;
+    },
+    getDictChanges(dan) {
+      var arst = [];
+      var arrays;
+      if (dan instanceof Object) {
+        arrays = dan;
+      } else {
+        if(dan){
+          arrays = dan.toString().split(",");
+        }else{
+          return ''
+        }
+      }
+      for (let i = 0; i < arrays.length; i++) {
+        arst.push(this.Gest(arrays[i]));
+      }
+      return arst.join(",");
+    },
+    /**
+     * 选项转换
+     */
+    Gest(ints) {
+      var int = parseInt(ints);
+      var ast = "";
+      switch (int) {
+        case 1:
+          ast = "A";
+          break;
+        case 2:
+          ast = "B";
+          break;
+        case 3:
+          ast = "C";
+          break;
+        case 4:
+          ast = "D";
+          break;
+        case 5:
+          ast = "E";
+          break;
+        case 6:
+          ast = "F";
+          break;
+        case 7:
+          ast = "G";
+          break;
+        case 8:
+          ast = "H";
+          break;
+        default:
+          ast = "X";
+          break;
+      }
+      return ast;
+    },
+    /**
+     * 题目类型
+     */
+    changeQuestType(int) {
+      var type = "";
+      switch (int) {
+        case 1:
+          type = "单选题";
+          break;
+        case 2:
+          type = "多选题";
+          break;
+        case 3:
+          type = "判断题";
+          break;
+        case 4:
+          type = "案例题";
+          break;
+        case 5:
+          type = "简答题";
+          break;
+
+        default:
+          type = "未知";
+          break;
+      }
+      return type;
+    },
+    /**
+     * 点击记录
+     */
+    getRecodeInfo(id) {
+      if (id === this.getInfoRecord.recordId) {
+        return;
+      }
+      this.$api.obtainrecordexam(id).then((res) => {
+        res.data.historyExamJson = JSON.parse(res.data.historyExamJson);
+        this.getInfoRecord = res.data;
+      });
+    },
     compons(int1, int2) {
       if (int1 === 0 && int2 === 0) {
         return 0 + "%";
@@ -356,23 +778,57 @@ export default {
     close() {
       this.dialogVisible = false;
     },
+    expandChange(row, index) {
+      if (!row.loadDetails) {
+        //根据loadDetails判定是否已经加载了数据
+        this.$api
+          .inquireselectExamList({ userId: row.userId, goodsId: row.goodsId })
+          .then((res) => {
+            row.details = res.data;
+            row.loadDetails = true; //加载成功之后更新标识
+            this.$refs.multipleTable.doLayout();
+          });
+      }
+    },
     //获取弹出窗内容
     wantInfo(item, index) {
       this.$api
-        .inquiregradestudentlistSection({
+        .inquireselectExamListrecord({
           userId: this.$route.query.id,
-          courseId: item.courseId,
+          examId: item.examId,
         })
         .then((res) => {
           this.RemardList = res.rows;
-          this.dialogVisible = true;
+          this.getInfoRecord = {};
         });
+      this.dialogVisibleTILES = true;
     },
   },
 };
 </script>
 
 <style lang="less" scoped>
+.achover {
+  cursor: pointer;
+  &:hover {
+    color: cornflowerblue;
+  }
+}
+.activeList {
+  color: blue;
+}
+.ddis_fs {
+  display: flex;
+  margin-bottom: 10px;
+}
+.content {
+  width: 70px;
+  flex-shrink: 0;
+}
+td {
+  padding: 6px;
+  text-align: center;
+}
 /deep/.el-button {
   border-radius: 8px;
 }

+ 3 - 2
src/views/education/studentManageMent/studentXQ/studyRecord.vue

@@ -1,9 +1,9 @@
 <template>
   <div id="studyRecord">
     <el-table
+    height="700"
       :data="tableData"
       style="width: 100%"
-      default-expand-all
       :header-cell-style="{
         'background-color': 'skyblue',
         padding: '8px',
@@ -99,7 +99,7 @@
     </el-table>
     <el-dialog
       :visible.sync="dialogVisible"
-      width="830px"
+      width="1030px"
       :show-close="false"
       :close-on-click-modal="false"
     >
@@ -112,6 +112,7 @@
       <div>
         <el-table
           border
+          height="550"
           :data="RemardList"
           style="width: 100%"
           default-expand-all

+ 13 - 0
src/views/resource/bankManagement/chapterVolumeManagement/add/index.vue

@@ -557,6 +557,19 @@ export default {
             this.$message.error("请选择适用业务层级");
             return;
           }
+          for (let i = 0; i < this.tableData.length; i++) {
+            if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+              this.$message.warning(`管理试卷第${i + 1}条请输入排序`);
+              return;
+            }
+          }
+          let arr = this.tableData.map((items) => {
+            return items.sort;
+          });
+          if (new Set(arr).size != arr.length) {
+            this.$message.warning("排序不允许有重复值");
+            return
+          }
           this.rulesTableSumbit();
         } else {
           return false;

+ 13 - 0
src/views/resource/bankManagement/chapterVolumeManagement/edit/index.vue

@@ -564,6 +564,19 @@ export default {
             this.$message.error("请选择适用业务层级");
             return;
           }
+          for (let i = 0; i < this.tableData.length; i++) {
+            if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+              this.$message.warning(`管理试卷第${i + 1}条请输入排序`);
+              return;
+            }
+          }
+          let arr = this.tableData.map((items) => {
+            return items.sort;
+          });
+          if (new Set(arr).size != arr.length) {
+            this.$message.warning("排序不允许有重复值");
+            return
+          }
           this.rulesTableSumbit();
         } else {
           return false;

+ 15 - 2
src/views/resource/bankManagement/testPaperManagement/addPaper/topicAddPaper/index.vue

@@ -351,7 +351,7 @@
                   size="mini"
                 ></el-input-number>
               </div>
-              <div class="margin_bs">
+              <div class="margin_bs" v-if="examsType === 2">
                 答卷时长:
                 <el-radio-group v-model="djTimeType">
                   <el-radio :label="0">无限时长</el-radio>
@@ -364,7 +364,7 @@
                   controls-position="right"
                   :min="1"
                   size="mini"
-                ></el-input-number>
+                ></el-input-number><span v-if="djTimeType === 1">分钟</span>
               </div>
               <div class="margin_bs">
                 答卷次数:
@@ -1455,6 +1455,19 @@ export default {
     },
     async submitTableAllInfos() {
       var self = this;
+      for (let i = 0; i < this.tableData.length; i++) {
+            if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+              this.$message.warning(`题目管理第${i + 1}条请输入排序`);
+              return;
+            }
+          }
+          let arr = this.tableData.map((items) => {
+            return items.sort;
+          });
+          if (new Set(arr).size != arr.length) {
+            this.$message.warning("排序不允许重复");
+            return
+          }
       var arrs = [];
       for (let i = 0; i < this.tableData.length; i++) {
         if (self.tableData[i].questionId) {

+ 15 - 14
src/views/resource/bankManagement/testPaperManagement/editPaper/baseEditPaper/index.vue

@@ -207,15 +207,15 @@ export default {
     this.getDict();
     // this.search();
   },
-  watch: {
-    "listDataIns.provinceId": {
-      handler(newVal, oldVal) {
-        this.changeCity(newVal);
-      },
-      // 立即处理 进入页面就触发
-      immediate: true,
-    },
-  },
+  // watch: {
+  //   "listDataIns.provinceId": {
+  //     handler(newVal, oldVal) {
+  //       this.changeCity(newVal);
+  //     },
+  //     // 立即处理 进入页面就触发
+  //     immediate: true,
+  //   },
+  // },
   methods: {
     getMessage() {
       if (!this.courType) {
@@ -239,11 +239,12 @@ export default {
             res.rows[0].businessId + "-" + res.rows[0].subjectId;
         });
     },
-    changeCity(newVal) {
-      this.optionsCity = this.cityList.filter((item) => {
-        return item.parentId === newVal;
-      });
-    },
+    // changeCity(newVal) {
+    //   console.log(newVal)
+    //   this.optionsCity = this.cityList.filter((item) => {
+    //     return item.parentId === newVal;
+    //   });
+    // },
     changeTypes() {
       var self = this;
       if (!this.sujectApis) {

+ 15 - 2
src/views/resource/bankManagement/testPaperManagement/editPaper/topicEditPaper/index.vue

@@ -346,7 +346,7 @@
                   size="mini"
                 ></el-input-number>
               </div>
-              <div class="margin_bs">
+              <div class="margin_bs" v-if="examsType === 2">
                 答卷时长:
                 <el-radio-group v-model="djTimeType">
                   <el-radio :label="0">无限时长</el-radio>
@@ -359,7 +359,7 @@
                   controls-position="right"
                   :min="1"
                   size="mini"
-                ></el-input-number>
+                ></el-input-number><span v-if="djTimeType === 1">分钟</span>
               </div>
               <div class="margin_bs">
                 答卷次数:
@@ -1454,6 +1454,19 @@ export default {
     },
     async submitTableAllInfos() {
       var self = this;
+      for (let i = 0; i < this.tableData.length; i++) {
+            if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+              this.$message.warning(`题目管理第${i + 1}条请输入排序`);
+              return;
+            }
+          }
+          let arr = this.tableData.map((items) => {
+            return items.sort;
+          });
+          if (new Set(arr).size != arr.length) {
+            this.$message.warning("排序不允许重复");
+            return
+          }
       var arrs = [];
       for (let i = 0; i < this.tableData.length; i++) {
         if (self.tableData[i].questionId && self.tableData[i].diff) {

+ 13 - 0
src/views/resource/bankManagement/volumeManagement/add/index.vue

@@ -522,6 +522,19 @@ export default {
             this.$message.error("请选择适用业务层级");
             return;
           }
+          for (let i = 0; i < this.tableData.length; i++) {
+            if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+              this.$message.warning(`管理章卷第${i + 1}条请输入排序`);
+              return;
+            }
+          }
+          let arr = this.tableData.map((items) => {
+            return items.sort;
+          });
+          if (new Set(arr).size != arr.length) {
+            this.$message.warning("排序不允许有重复值");
+            return
+          }
           this.rulesTableSumbit();
         } else {
           return false;

+ 13 - 0
src/views/resource/bankManagement/volumeManagement/edit/index.vue

@@ -557,6 +557,19 @@ export default {
             this.$message.error("请选择适用业务层级");
             return;
           }
+          for (let i = 0; i < this.tableData.length; i++) {
+            if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+              this.$message.warning(`管理章卷第${i + 1}条请输入排序`);
+              return;
+            }
+          }
+          let arr = this.tableData.map((items) => {
+            return items.sort;
+          });
+          if (new Set(arr).size != arr.length) {
+            this.$message.warning("排序不允许有重复值");
+            return
+          }
           this.rulesTableSumbit();
         } else {
           return false;

+ 3 - 0
src/views/resource/baseManageInfos/resource/businessLevel/index.vue

@@ -454,6 +454,7 @@ export default {
           };
           this.$api.editCourseBusiness(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("BUSINESSLEVEL");
             this.search();
           });
         })
@@ -496,6 +497,7 @@ export default {
         this.$api.appCourseBusiness(this.listData).then((res) => {
           this.$message.success("新增成功");
           this.dialogVisible = false;
+          this.$store.commit("BUSINESSLEVEL");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false
@@ -505,6 +507,7 @@ export default {
         this.$api.editCourseBusiness(this.listData).then((res) => {
           this.$message.success("修改成功");
           this.dialogVisible = false;
+          this.$store.commit("BUSINESSLEVEL");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false

+ 3 - 0
src/views/resource/baseManageInfos/resource/certificate/index.vue

@@ -217,6 +217,7 @@ disabledBtn: false,
           };
           this.$api.editBaseCertificate(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("CERTIFICATE");
             this.search();
           });
         })
@@ -260,6 +261,7 @@ loadingClose(){
         this.$api.appBaseCertificate(this.listData).then((res) => {
           this.$message.success("新增成功");
           this.dialogVisible = false;
+          this.$store.commit("CERTIFICATE");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false
@@ -269,6 +271,7 @@ loadingClose(){
         this.$api.editBaseCertificate(this.listData).then((res) => {
           this.$message.success("修改成功");
           this.dialogVisible = false;
+          this.$store.commit("CERTIFICATE");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false

+ 3 - 0
src/views/resource/baseManageInfos/resource/colleges/index.vue

@@ -463,6 +463,7 @@ export default {
           };
           this.$api.editUserSchool(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("SCHOOLLIST");
             this.search();
           });
         })
@@ -521,6 +522,7 @@ export default {
         this.$api.appUserSchool(this.listData).then((res) => {
           this.$message.success("新增成功");
           this.dialogVisible = false;
+          this.$store.commit("SCHOOLLIST");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false
@@ -530,6 +532,7 @@ export default {
         this.$api.editUserSchool(this.listData).then((res) => {
           this.$message.success("修改成功");
           this.dialogVisible = false;
+          this.$store.commit("SCHOOLLIST");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false

+ 3 - 0
src/views/resource/baseManageInfos/resource/educationTypes/index.vue

@@ -283,6 +283,7 @@ export default {
           };
           this.$api.editCourseEducationType(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("EDICATIONTYPE");
             this.search();
           });
         })
@@ -325,6 +326,7 @@ export default {
           this.$message.success("新增成功");
           this.dialogVisible = false;
           this.search();
+          this.$store.commit("EDICATIONTYPE");
         }).catch(()=>{
           this.disabledBtn = false
         })
@@ -333,6 +335,7 @@ export default {
         this.$api.editCourseEducationType(this.listData).then((res) => {
           this.$message.success("修改成功");
           this.dialogVisible = false;
+          this.$store.commit("EDICATIONTYPE");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false

+ 6 - 0
src/views/resource/baseManageInfos/resource/enrollmentArea/index.vue

@@ -479,6 +479,7 @@ export default {
           };
           this.$api.editapplyAreas(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("AREAS");
             this.search();
           });
         })
@@ -523,6 +524,7 @@ export default {
           .then((res) => {
             this.$message.success("新增成功");
             this.dialogVisible = false;
+          this.$store.commit("AREAS");
             this.search();
           })
           .catch(() => {
@@ -535,6 +537,7 @@ export default {
           .then((res) => {
             this.$message.success("修改成功");
             this.dialogVisible = false;
+          this.$store.commit("AREAS");
             this.search();
           })
           .catch(() => {
@@ -588,6 +591,7 @@ export default {
           };
           this.$api.editapplyAreas(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("CITYLIST");
             this.searchZ();
           });
         })
@@ -641,6 +645,7 @@ export default {
           .then((res) => {
             this.$message.success("新增成功");
             this.dialogVisibleZ = false;
+          this.$store.commit("CITYLIST");
             this.searchZ();
           })
           .catch(() => {
@@ -653,6 +658,7 @@ export default {
           .then((res) => {
             this.$message.success("修改成功");
             this.dialogVisibleZ = false;
+          this.$store.commit("CITYLIST");
             this.searchZ();
           })
           .catch(() => {

+ 3 - 0
src/views/resource/baseManageInfos/resource/label/index.vue

@@ -229,6 +229,7 @@ export default {
           };
           this.$api.editCourseLabelList(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("LABELLIST");
             this.search();
           });
         })
@@ -271,6 +272,7 @@ export default {
           .then((res) => {
             this.$message.success("新增成功");
             this.dialogVisible = false;
+          this.$store.commit("LABELLIST");
             this.search();
           })
           .catch(() => {
@@ -283,6 +285,7 @@ export default {
           .then((res) => {
             this.$message.success("修改成功");
             this.dialogVisible = false;
+          this.$store.commit("LABELLIST");
             this.search();
           })
           .catch(() => {

+ 3 - 0
src/views/resource/baseManageInfos/resource/professional/index.vue

@@ -408,6 +408,7 @@ disabledBtn: false,
           };
           this.$api.editCourseMajor(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("PROFESSIONAL");
             this.search();
           });
         })
@@ -461,6 +462,7 @@ disabledBtn: false,
         this.$api.appCourseMajor(this.listData).then((res) => {
           this.$message.success("新增成功");
           this.dialogVisible = false;
+          this.$store.commit("PROFESSIONAL");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false
@@ -470,6 +472,7 @@ disabledBtn: false,
         this.$api.editCourseMajor(this.listData).then((res) => {
           this.$message.success("修改成功");
           this.dialogVisible = false;
+          this.$store.commit("PROFESSIONAL");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false

+ 3 - 0
src/views/resource/baseManageInfos/resource/projectType/index.vue

@@ -259,6 +259,7 @@ export default {
           };
           this.$api.editCourseProjectType(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("PROJECTTYPE");
             this.search();
           });
         })
@@ -299,6 +300,7 @@ export default {
         this.$api.addCourseProjectType(this.listData).then((res) => {
           this.$message.success("新增成功");
           this.dialogVisible = false;
+          this.$store.commit("PROJECTTYPE");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false
@@ -308,6 +310,7 @@ export default {
         this.$api.editCourseProjectType(this.listData).then((res) => {
           this.$message.success("修改成功");
           this.dialogVisible = false;
+          this.$store.commit("PROJECTTYPE");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false

+ 3 - 0
src/views/resource/baseManageInfos/resource/suject/index.vue

@@ -365,6 +365,7 @@ loadingClose(){
           this.$api.editCourseSubject(data).then((res) => {
             this.$message.success("删除成功");
             this.search();
+          this.$store.commit("SUJECTTYPE");
           });
         })
         .catch(() => {
@@ -417,6 +418,7 @@ loadingClose(){
         this.$api.appCourseSubject(this.listData).then((res) => {
           this.$message.success("新增成功");
           this.dialogVisible = false;
+          this.$store.commit("SUJECTTYPE");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false
@@ -426,6 +428,7 @@ loadingClose(){
         this.$api.editCourseSubject(this.listData).then((res) => {
           this.$message.success("修改成功");
           this.dialogVisible = false;
+          this.$store.commit("SUJECTTYPE");
           this.search();
         }).catch(()=>{
           this.disabledBtn = false

+ 3 - 0
src/views/resource/baseManageInfos/resource/testPeriod/index.vue

@@ -430,6 +430,7 @@ export default {
           };
           this.$api.editCourseExamine(data).then((res) => {
             this.$message.success("删除成功");
+          this.$store.commit("COURSEEXAMINE");
             this.search();
           });
         })
@@ -488,6 +489,7 @@ export default {
           .then((res) => {
             this.$message.success("新增成功");
             this.dialogVisible = false;
+          this.$store.commit("COURSEEXAMINE");
             this.search();
           })
           .catch(() => {
@@ -500,6 +502,7 @@ export default {
           .then((res) => {
             this.$message.success("修改成功");
             this.dialogVisible = false;
+          this.$store.commit("COURSEEXAMINE");
             this.search();
           })
           .catch(() => {

+ 13 - 0
src/views/resource/videoManagement/chapter/add/index.vue

@@ -646,6 +646,19 @@ export default {
           //   this.$message.error("请上传章封面");
           //   return false;
           // }
+          for (let i = 0; i < this.tableData.length; i++) {
+            if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+              this.$message.warning(`管理节第${i + 1}条请输入排序`);
+              return;
+            }
+          }
+          let arr = this.tableData.map((items) => {
+            return items.sort;
+          });
+          if (new Set(arr).size != arr.length) {
+            this.$message.warning("排序不允许有重复值");
+            return
+          }
           this.rulesTableSumbit();
         } else {
           return false;

+ 13 - 0
src/views/resource/videoManagement/chapter/edit/index.vue

@@ -647,6 +647,19 @@ export default {
           //   this.$message.error("请上传章封面");
           //   return false;
           // }
+          for (let i = 0; i < this.tableData.length; i++) {
+            if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+              this.$message.warning(`管理节第${i + 1}条请输入排序`);
+              return;
+            }
+          }
+          let arr = this.tableData.map((items) => {
+            return items.sort;
+          });
+          if (new Set(arr).size != arr.length) {
+            this.$message.warning("排序不允许有重复值");
+            return
+          }
           this.rulesTableSumbit();
         } else {
           return false;

+ 7 - 0
src/views/resource/videoManagement/courseManagement/chapterContent/index.vue

@@ -40,6 +40,7 @@
             删除
           </el-button>
           <el-button
+          v-if="data.type === 2"
             type="text"
             size="mini"
             style="color: green"
@@ -432,6 +433,7 @@ export default {
         status: 1,
         publishStatus: 1,
         name: "",
+        key:""
       },
       formList5: [],
       total6:0,
@@ -441,6 +443,7 @@ export default {
         status: 1,
         publishStatus: 1,
         name: "",
+        key:'',
       },
       formList6: [
         {
@@ -644,6 +647,7 @@ export default {
       }
       if (int === 2) {
         this.formData6.name = "";
+        this.formData6.key = "";
         this.formData6.pageNum = 1;
         this.formData6.pageSize = 10;
       }
@@ -719,6 +723,7 @@ export default {
       }
       if (int === 2) {
         this.formData5.name = "";
+        this.formData5.key = "";
         this.formData5.pageNum = 1;
         this.formData5.pageSize = 10;
       }
@@ -738,6 +743,7 @@ export default {
       if (int === 2) {
         this.formData5.name = "";
         this.formData5.pageNum = 1;
+        this.formData5.key = "";
         this.formData5.pageSize = 10;
       }
       var data = JSON.parse(JSON.stringify(this.formData5));
@@ -755,6 +761,7 @@ export default {
       }
       if (int === 2) {
         this.formData5.name = "";
+        this.formData5.key = "";
         this.formData5.pageNum = 1;
         this.formData5.pageSize = 10;
       }

+ 1 - 1
src/views/resource/videoManagement/courseManagement/index.vue

@@ -223,7 +223,7 @@ export default {
       });
     },
     editInfo(v) {
-      this.addClick(v, 0);
+      this.edit(v);
     },
     search(int) {
       this.loading = true;

+ 21 - 10
src/views/resource/videoManagement/moduleManagement/add/index.vue

@@ -333,7 +333,7 @@
 import searchBoxNew from "@/components/searchBoxNew";
 import pagination from "@/components/pagination";
 export default {
-  components: { searchBoxNew,pagination },
+  components: { searchBoxNew, pagination },
   data() {
     return {
       //   弹窗数据
@@ -456,7 +456,7 @@ export default {
           status: 1,
           pageNum: 1,
           pageSize: 10,
-          publishStatus:1,
+          publishStatus: 1,
         })
         .then((res) => {
           var aList = [];
@@ -485,7 +485,7 @@ export default {
       this.getInfos(2);
     },
     getInfos(int) {
-       if (int === 1) {
+      if (int === 1) {
         this.formData.pageNum = 1;
       }
       if (int === 2) {
@@ -493,15 +493,13 @@ export default {
           status: 1,
           pageSize: 10,
           pageNum: 1,
-          publishStatus:1
+          publishStatus: 1,
         };
       }
-      this.$api
-        .inquireCourseListchapter(this.formData)
-        .then((res) => {
-          this.boxtableData = res.rows;
-          this.total = res.total;
-        });
+      this.$api.inquireCourseListchapter(this.formData).then((res) => {
+        this.boxtableData = res.rows;
+        this.total = res.total;
+      });
     },
     search() {
       this.$api.obtainCoursemodule(this.$route.query.id).then((res) => {
@@ -646,6 +644,19 @@ export default {
           //   this.$message.error("请上传节封面");
           //   return false;
           // }
+          for (let i = 0; i < this.tableData.length; i++) {
+            if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+              this.$message.warning(`管理章第${i + 1}条请输入排序`);
+              return;
+            }
+          }
+          let arr = this.tableData.map((items) => {
+            return items.sort;
+          });
+          if (new Set(arr).size != arr.length) {
+            this.$message.warning("排序不允许有重复值");
+            return
+          }
           this.rulesTableSumbit();
         } else {
           return false;

+ 13 - 0
src/views/resource/videoManagement/moduleManagement/edit/index.vue

@@ -650,6 +650,19 @@ export default {
           //   this.$message.error("请上传节封面");
           //   return false;
           // }
+          for (let i = 0; i < this.tableData.length; i++) {
+            if (!this.tableData[i].sort && this.tableData[i].sort !== 0) {
+              this.$message.warning(`管理章第${i + 1}条请输入排序`);
+              return;
+            }
+          }
+          let arr = this.tableData.map((items) => {
+            return items.sort;
+          });
+          if (new Set(arr).size != arr.length) {
+            this.$message.warning("排序不允许有重复值");
+            return
+          }
           this.rulesTableSumbit();
         } else {
           return false;

+ 1 - 1
src/views/systemManagement/accountManagement/index.vue

@@ -331,7 +331,7 @@ export default {
             userName: v.userName,
             roleIds: [],
           };
-          this.$api.editRole(data).then((res) => {
+          this.$api.editUser(data).then((res) => {
             if (res.code === 200) {
               this.$message.success("删除成功");
               this.search();

+ 1 - 1
src/views/systemManagement/registeredUser/index.vue

@@ -67,7 +67,7 @@ export default {
         },
         {
           label: "头像",
-          prop: "oneInchPhotos",
+          prop: "avatar",
           hidden: true,
           scope: "img",
         },

+ 1 - 1
src/views/systemManagement/systemConfig/videoConfig/index.vue

@@ -240,7 +240,7 @@ export default {
     },
     async submitBank() {
       // if (this.bankActive.configValue == 1) {
-      if (!this.bankPhotoJG.configValue.length) {
+      if (this.bankActive.configValue == 1 && !this.bankPhotoJG.configValue.length) {
         this.$modal.msgError("参数键值不能为空");
         return;
       } else {

+ 1 - 1
src/views/systemSettings/dictData/index.vue

@@ -288,7 +288,7 @@ export default {
       })
         .then(() => {
           var data = JSON.parse(JSON.stringify(v));
-          data.status = "-1";
+          data.status = -1;
           this.$api.editdictdata(data).then((res) => {
             this.$message.success("删除成功");
             this.search();