瀏覽代碼

公共课程

zaijin 2 年之前
父節點
當前提交
492453ed4c
共有 34 個文件被更改,包括 758 次插入515 次删除
  1. 5 1
      h5_web/common/apiurl.js
  2. 247 233
      h5_web/common/http.api.js
  3. 10 1
      h5_web/pages.json
  4. 266 231
      h5_web/pages/index/index.vue
  5. 73 49
      h5_web/pages/publicCourse/publicCourse.vue
  6. 75 0
      h5_web/pages/publicCourse/videoDetails/videoDetails.scss
  7. 82 0
      h5_web/pages/publicCourse/videoDetails/videoDetails.vue
  8. 二進制
      h5_web/static/img/major-党务工作.png
  9. 二進制
      h5_web/static/img/major-工商企业管理.png
  10. 二進制
      h5_web/static/img/major-应用化工技术.png
  11. 二進制
      h5_web/static/img/major-建筑工程技术.png
  12. 二進制
      h5_web/static/img/major-机电一体化技术.png
  13. 二進制
      h5_web/static/img/major-计算机应用技术.png
  14. 二進制
      h5_web/static/img/major01.png
  15. 二進制
      h5_web/static/img/major02.png
  16. 二進制
      h5_web/static/img/major03.png
  17. 二進制
      h5_web/static/img/major04.png
  18. 二進制
      h5_web/static/img/major05.png
  19. 二進制
      h5_web/static/img/major06.png
  20. 二進制
      h5_web/static/img/skill-01.png
  21. 二進制
      h5_web/static/img/skill-02.png
  22. 二進制
      h5_web/static/img/skill-03.png
  23. 二進制
      h5_web/static/img/skill-04.png
  24. 二進制
      h5_web/static/img/skill-05.png
  25. 二進制
      h5_web/static/img/skill-06.png
  26. 二進制
      h5_web/static/img/skill-农产品食品检验员.png
  27. 二進制
      h5_web/static/img/skill-化学检验员.png
  28. 二進制
      h5_web/static/img/skill-工业机器人.png
  29. 二進制
      h5_web/static/img/skill-工业机器人系统运维员.png
  30. 二進制
      h5_web/static/img/skill-机床装调维修工.png
  31. 二進制
      h5_web/static/img/skill-汽车维修.png
  32. 二進制
      h5_web/static/img/skill-焊接.png
  33. 二進制
      h5_web/static/img/skill-电工.png
  34. 二進制
      h5_web/static/img/skill-车身修理.png

+ 5 - 1
h5_web/common/apiurl.js

@@ -230,7 +230,11 @@ const apiurl = {
     addEntrepreneurshipUrl: '/guidance',
     addEntrepreneurshipUrl: '/guidance',
     getEntrepreneurshipListUrl: '/guidance',
     getEntrepreneurshipListUrl: '/guidance',
     getEntrepreneurshipDetailsUrl: '/guidance/getDetail/'
     getEntrepreneurshipDetailsUrl: '/guidance/getDetail/'
-  }
+  },
+	// 公共课程
+	publicClasses: {
+		getPublicClassesListUrl: '/publicclass/'
+	}
 };
 };
 
 
 export { apiurl };
 export { apiurl };

+ 247 - 233
h5_web/common/http.api.js

@@ -1,252 +1,266 @@
-import { apiurl } from './apiurl.js';
+import {
+	apiurl
+} from './apiurl.js';
 
 
 // 此处第二个参数vm,就是我们在页面使用的this,你可以通过vm获取vuex等操作,更多内容详见uView对拦截器的介绍部分:
 // 此处第二个参数vm,就是我们在页面使用的this,你可以通过vm获取vuex等操作,更多内容详见uView对拦截器的介绍部分:
 const install = (Vue, vm) => {
 const install = (Vue, vm) => {
-  let getPhoneLoginCode = (params = {}) => vm.$u.post(apiurl.phoneLoginCodeUrl, params);
-  let logoutApi = (params = {}) => vm.$u.delete(apiurl.logoutUrl, params);
-  let phoneLoginAuth = (params = {}) =>
-    vm.$u.post(
-      apiurl.phoneLoginAuthUrl,
-      {
-        code: params.code
-      },
-      {
-        Authorization: `Bearer ${params.accessToken}`,
-        user_id: params.userId
-      }
-    );
-  // 获取自定义富文本内容: 0-包月须知 1-用户服务条款 2-隐私权政策信息 3-收费标准 4-退款温馨提示
-  let getSysterms = (params = {}) => vm.$u.get(apiurl.getSystermsApi + params.termsType);
-  // 新闻详情
-  let getNewsDetails = (params = {}) => vm.$u.get(apiurl.newsDetailsUrl, params);
-  // 政策法规详情
-  let getPolicyNewsDetails = (params = {}) => vm.$u.get(apiurl.policyNewsDetailsUrl, params);
-  // 军人认证
-  let veteEduc = (params = {}) => vm.$u.post(apiurl.veteEducUrl, params);
-  // 认证状态查询
-  let getVeteEducCheck = (params = {}) => vm.$u.get(apiurl.veteEducCheckUrl, params);
-  //我的认证申请
-  let getVeteEducData = (params = {}) => vm.$u.get(apiurl.veteEducUrl, params);
-  // 我的详细信息
-  let getmemberinfo = (params = {}) => vm.$u.get(apiurl.memberinfoUrl, params);
-  // 首页新闻列表
-  let getpolicyNewsList = (params = {}) => vm.$u.get(apiurl.policyNewsListUrl, params);
-  // 枚举值key查询 key 新闻类型 news_type, 政策法规 policy_type 人员属性 vete_attribute
-  let getDictdataUrl = (params = {}) => vm.$u.get(apiurl.dictdataUrl, params);
-  // 适应性培训课程列表
-  let getAdaptTrainOnline = (params = {}) => vm.$u.get(apiurl.adaptTrainOnlineUrl, params);
-  // 适应性培训课程详情
-  let getAdaptTrainOnlineDetails = (params = {}) => vm.$u.get(apiurl.adaptTrainOnlineDetailsUrl + params.id);
-  // 适应性培训学习进度
-  let getAdaptTrainOnlineRate = (params = {}) => vm.$u.post(apiurl.adaptTrainOnlineRateUrl, params);
-  // 上传适应性培训视频播放情况
-  let upAdaptTrainOnlineInfo = (params = {}) => vm.$u.post(apiurl.upAdaptTrainOnlineInfoUrl, params);
-  // 适应性培训线下内容
-  let getAdaptTrainOffline = (params = {}) => vm.$u.get(apiurl.adaptTrainOfflineUrl, params);
-  // 查询线下培训详情
-  let getAdaptTrainIdOffline = (params = {}) => vm.$u.get(apiurl.adaptTrainIdOfflineUrl + params.id);
-  // 页面点击统计
-  let postAnalysis = (params = {}) => vm.$u.post(apiurl.analysisUrl, params);
-  // 线下培训签到
-  let postSignOffline = (params = {}) => vm.$u.post(apiurl.signOfflineUrl, params);
-  // 根据身份证号读取信息
-  let getIdInfo = (params = {}) => vm.$u.get(apiurl.getIdInfoUrl + params.id);
-  // 获取学院分页数据
-  let getSchoolList = (params = {}) => vm.$u.get(apiurl.getSchoolListUrl, params);
-  // 修改用户信息
-  let modifyUserInfo = (params = {}) => vm.$u.put(apiurl.modifyUserInfoUrl, params);
+	let getPhoneLoginCode = (params = {}) => vm.$u.post(apiurl.phoneLoginCodeUrl, params);
+	let logoutApi = (params = {}) => vm.$u.delete(apiurl.logoutUrl, params);
+	let phoneLoginAuth = (params = {}) =>
+		vm.$u.post(
+			apiurl.phoneLoginAuthUrl, {
+				code: params.code
+			}, {
+				Authorization: `Bearer ${params.accessToken}`,
+				user_id: params.userId
+			}
+		);
+	// 获取自定义富文本内容: 0-包月须知 1-用户服务条款 2-隐私权政策信息 3-收费标准 4-退款温馨提示
+	let getSysterms = (params = {}) => vm.$u.get(apiurl.getSystermsApi + params.termsType);
+	// 新闻详情
+	let getNewsDetails = (params = {}) => vm.$u.get(apiurl.newsDetailsUrl, params);
+	// 政策法规详情
+	let getPolicyNewsDetails = (params = {}) => vm.$u.get(apiurl.policyNewsDetailsUrl, params);
+	// 军人认证
+	let veteEduc = (params = {}) => vm.$u.post(apiurl.veteEducUrl, params);
+	// 认证状态查询
+	let getVeteEducCheck = (params = {}) => vm.$u.get(apiurl.veteEducCheckUrl, params);
+	//我的认证申请
+	let getVeteEducData = (params = {}) => vm.$u.get(apiurl.veteEducUrl, params);
+	// 我的详细信息
+	let getmemberinfo = (params = {}) => vm.$u.get(apiurl.memberinfoUrl, params);
+	// 首页新闻列表
+	let getpolicyNewsList = (params = {}) => vm.$u.get(apiurl.policyNewsListUrl, params);
+	// 枚举值key查询 key 新闻类型 news_type, 政策法规 policy_type 人员属性 vete_attribute
+	let getDictdataUrl = (params = {}) => vm.$u.get(apiurl.dictdataUrl, params, {
+		noLoginFlag: true
+	});
+	// 适应性培训课程列表
+	let getAdaptTrainOnline = (params = {}) => vm.$u.get(apiurl.adaptTrainOnlineUrl, params);
+	// 适应性培训课程详情
+	let getAdaptTrainOnlineDetails = (params = {}) => vm.$u.get(apiurl.adaptTrainOnlineDetailsUrl + params.id);
+	// 适应性培训学习进度
+	let getAdaptTrainOnlineRate = (params = {}) => vm.$u.post(apiurl.adaptTrainOnlineRateUrl, params);
+	// 上传适应性培训视频播放情况
+	let upAdaptTrainOnlineInfo = (params = {}) => vm.$u.post(apiurl.upAdaptTrainOnlineInfoUrl, params);
+	// 适应性培训线下内容
+	let getAdaptTrainOffline = (params = {}) => vm.$u.get(apiurl.adaptTrainOfflineUrl, params);
+	// 查询线下培训详情
+	let getAdaptTrainIdOffline = (params = {}) => vm.$u.get(apiurl.adaptTrainIdOfflineUrl + params.id);
+	// 页面点击统计
+	let postAnalysis = (params = {}) => vm.$u.post(apiurl.analysisUrl, params);
+	// 线下培训签到
+	let postSignOffline = (params = {}) => vm.$u.post(apiurl.signOfflineUrl, params);
+	// 根据身份证号读取信息
+	let getIdInfo = (params = {}) => vm.$u.get(apiurl.getIdInfoUrl + params.id);
+	// 获取学院分页数据
+	let getSchoolList = (params = {}) => vm.$u.get(apiurl.getSchoolListUrl, params);
+	// 修改用户信息
+	let modifyUserInfo = (params = {}) => vm.$u.put(apiurl.modifyUserInfoUrl, params);
 
 
-  let getMoreCourseListApi = (params = {}) => vm.$u.get(apiurl.getMoreCourseListUrl + params.id, params);
-  /**
-   * 首页模块
-   */
-  let indexApi = {
-    // 获取消息未读条数
-    getUnreadInfoNumApi: (params = {}) => vm.$u.get(apiurl.index.getUnreadInfoNumUrl, params),
-    // 获取轮播
-    indexBannerListApi: (params = {}) => vm.$u.get(apiurl.index.indexBannerListUrl, params),
-    // 获取最新三条消息
-    getNewestInfoApi: (params = {}) => vm.$u.get(apiurl.index.getNewestInfoUrl, params),
-    // 首页新闻列表
-    getIndexNewsListApi: (params = {}) => vm.$u.get(apiurl.index.getIndexNewsListUrl, params)
-  };
+	let getMoreCourseListApi = (params = {}) => vm.$u.get(apiurl.getMoreCourseListUrl + params.id, params);
+	/**
+	 * 首页模块
+	 */
+	let indexApi = {
+		// 获取消息未读条数
+		getUnreadInfoNumApi: (params = {}) => vm.$u.get(apiurl.index.getUnreadInfoNumUrl, params),
+		// 获取轮播
+		indexBannerListApi: (params = {}) => vm.$u.get(apiurl.index.indexBannerListUrl, params),
+		// 获取最新三条消息
+		getNewestInfoApi: (params = {}) => vm.$u.get(apiurl.index.getNewestInfoUrl, params),
+		// 首页新闻列表
+		getIndexNewsListApi: (params = {}) => vm.$u.get(apiurl.index.getIndexNewsListUrl, params)
+	};
 
 
-  /**
-   * 通知消息模块
-   */
-  let noticeApi = {
-    // 查询每类通知未读的条数
-    getClassifyUnreadNumApi: (params = {}) => vm.$u.get(apiurl.notice.getClassifyUnreadNumUrl, params),
-    // 获取各种类型消息
-    getNoticeListByTypeApi: (params = {}) => vm.$u.get(apiurl.notice.getNoticeListByTypeUrl + params.type, params),
-    // 获取通知消息详情
-    getNoticeDetailsApi: (params = {}) => vm.$u.get(apiurl.notice.getNoticeDetailsUrl + params.id, params)
-  };
+	/**
+	 * 通知消息模块
+	 */
+	let noticeApi = {
+		// 查询每类通知未读的条数
+		getClassifyUnreadNumApi: (params = {}) => vm.$u.get(apiurl.notice.getClassifyUnreadNumUrl, params),
+		// 获取各种类型消息
+		getNoticeListByTypeApi: (params = {}) => vm.$u.get(apiurl.notice.getNoticeListByTypeUrl + params.type, params),
+		// 获取通知消息详情
+		getNoticeDetailsApi: (params = {}) => vm.$u.get(apiurl.notice.getNoticeDetailsUrl + params.id, params)
+	};
 
 
-  // 学院模块
-  let school = {
-    // 获取学院分页数据
-    getSchoolList: (params = {}) => vm.$u.get(apiurl.school.getSchoolListUrl, params),
-    // 不带分页列表
-    getList: (params = {}) => vm.$u.get(apiurl.school.getListUrl, params),
-    // 通过学院id获取详情
-    getSchoolDetails: (params = {}) => vm.$u.get(apiurl.school.getSchoolDetailsUrl + params.id),
-    // 通过专业id获取专业详情
-    getProfessonDetails: (params = {}) => vm.$u.get(apiurl.school.getProfessonDetailsUrl + params.id),
-    // 通过学院id获取专业
-    getProfesson: (params = {}) => vm.$u.get(apiurl.school.getProfessonUrl + params.id),
-    // 获取学院专业包详情
-    getLearnpackageDetails: (params = {}) => vm.$u.get(apiurl.school.getLearnpackageDetailsUrl + params.id),
-    // 获取学院专业包课程详情
-    getPackageCourseDetail: (params = {}) => vm.$u.get(apiurl.school.getPackageCourseDetailsUrl + params.id),
-    // 获取学校招生详情
-    getSchoolIntroduction: (params = {}) => vm.$u.get(apiurl.school.getSchoolIntroductionUrl + params.id)
-  };
+	// 学院模块
+	let school = {
+		// 获取学院分页数据
+		getSchoolList: (params = {}) => vm.$u.get(apiurl.school.getSchoolListUrl, params),
+		// 不带分页列表
+		getList: (params = {}) => vm.$u.get(apiurl.school.getListUrl, params),
+		// 通过学院id获取详情
+		getSchoolDetails: (params = {}) => vm.$u.get(apiurl.school.getSchoolDetailsUrl + params.id),
+		// 通过专业id获取专业详情
+		getProfessonDetails: (params = {}) => vm.$u.get(apiurl.school.getProfessonDetailsUrl + params.id),
+		// 通过学院id获取专业
+		getProfesson: (params = {}) => vm.$u.get(apiurl.school.getProfessonUrl + params.id),
+		// 获取学院专业包详情
+		getLearnpackageDetails: (params = {}) => vm.$u.get(apiurl.school.getLearnpackageDetailsUrl + params.id),
+		// 获取学院专业包课程详情
+		getPackageCourseDetail: (params = {}) => vm.$u.get(apiurl.school.getPackageCourseDetailsUrl + params.id),
+		// 获取学校招生详情
+		getSchoolIntroduction: (params = {}) => vm.$u.get(apiurl.school.getSchoolIntroductionUrl + params.id)
+	};
 
 
-  // 公司模块
-  let company = {
-    // 获取公司列表
-    getCompanyList: (params = {}) => vm.$u.get(apiurl.company.getCompanyListUrl, params),
-    // 获取公司详情
-    getCompanyDetails: (params = {}) => vm.$u.get(apiurl.company.getCompanyDetailsUrl + params.id),
-    // 获取岗位列表
-    getCompanyPostList: (params = {}) => vm.$u.get(apiurl.company.getCompanyPostListUrl + params.id, params),
-    // 获取岗位详情
-    getPostDetails: (params = {}) => vm.$u.get(apiurl.company.getPostDetailsUrl + params.id),
-    // 投递简历
-    deliveryResume: (params = {}) => vm.$u.post(apiurl.company.deliveryResumeUrl, params),
-    // 判断是否已投递
-    judgeIsSubmit: (params = {}) => vm.$u.get(apiurl.company.judgeIsSubmitUrl + params.id)
-  };
+	// 公司模块
+	let company = {
+		// 获取公司列表
+		getCompanyList: (params = {}) => vm.$u.get(apiurl.company.getCompanyListUrl, params),
+		// 获取公司详情
+		getCompanyDetails: (params = {}) => vm.$u.get(apiurl.company.getCompanyDetailsUrl + params.id),
+		// 获取岗位列表
+		getCompanyPostList: (params = {}) => vm.$u.get(apiurl.company.getCompanyPostListUrl + params.id, params),
+		// 获取岗位详情
+		getPostDetails: (params = {}) => vm.$u.get(apiurl.company.getPostDetailsUrl + params.id),
+		// 投递简历
+		deliveryResume: (params = {}) => vm.$u.post(apiurl.company.deliveryResumeUrl, params),
+		// 判断是否已投递
+		judgeIsSubmit: (params = {}) => vm.$u.get(apiurl.company.judgeIsSubmitUrl + params.id)
+	};
 
 
-  // 政策资讯模块
-  let policyInfo = {
-    // 政策资讯列表
-    getPolicyInfoList: (params = {}) => vm.$u.get(apiurl.policyInfo.getPolicyInfoListUrl, params),
-    // 政策资讯详情
-    getPolicyInfoDetails: (params = {}) => vm.$u.get(apiurl.policyInfo.getPolicyInfoDetailsUrl, params)
-  };
+	// 政策资讯模块
+	let policyInfo = {
+		// 政策资讯列表
+		getPolicyInfoList: (params = {}) => vm.$u.get(apiurl.policyInfo.getPolicyInfoListUrl, params),
+		// 政策资讯详情
+		getPolicyInfoDetails: (params = {}) => vm.$u.get(apiurl.policyInfo.getPolicyInfoDetailsUrl, params)
+	};
 
 
-  // 招聘就业模块
-  let recruitment = {
-    // 企业推荐列表
-    getRecommendList: (params = {}) => vm.$u.get(apiurl.recruitment.getRecommendListUrl, params),
-    // 招聘就业岗位列表
-    getRecruitmentJobList: (params = {}) => vm.$u.get(apiurl.recruitment.getRecruitmentJobListUrl, params),
-    // 岗位详情
-    getJobDetails: (params = {}) => vm.$u.get(apiurl.recruitment.getJobDetailsUrl + params.id)
-  };
+	// 招聘就业模块
+	let recruitment = {
+		// 企业推荐列表
+		getRecommendList: (params = {}) => vm.$u.get(apiurl.recruitment.getRecommendListUrl, params),
+		// 招聘就业岗位列表
+		getRecruitmentJobList: (params = {}) => vm.$u.get(apiurl.recruitment.getRecruitmentJobListUrl, params),
+		// 岗位详情
+		getJobDetails: (params = {}) => vm.$u.get(apiurl.recruitment.getJobDetailsUrl + params.id)
+	};
 
 
-  // 我的投递
-  let delivery = {
-    getDeliveryList: (params = {}) => vm.$u.get(apiurl.delivery.deliveryListUrl, params)
-  };
+	// 我的投递
+	let delivery = {
+		getDeliveryList: (params = {}) => vm.$u.get(apiurl.delivery.deliveryListUrl, params)
+	};
 
 
-  // 我的面试
-  let interview = {
-    getInterviewList: (params = {}) => vm.$u.get(apiurl.interview.getInterviewListUrl, params),
-    changeInterviewStateApi: (params = {}) => vm.$u.put(apiurl.interview.changeInterviewStateUrl, params)
-  };
+	// 我的面试
+	let interview = {
+		getInterviewList: (params = {}) => vm.$u.get(apiurl.interview.getInterviewListUrl, params),
+		changeInterviewStateApi: (params = {}) => vm.$u.put(apiurl.interview.changeInterviewStateUrl, params)
+	};
 
 
-  // 我的简历
-  let resume = {
-    submitJobIntention: (params = {}) => vm.$u.put(apiurl.resume.submitJobIntentionUrl, params),
-    submitSelfAssessment: (params = {}) => vm.$u.put(apiurl.resume.submitSelfAssessmentUrl, params)
-  };
+	// 我的简历
+	let resume = {
+		submitJobIntention: (params = {}) => vm.$u.put(apiurl.resume.submitJobIntentionUrl, params),
+		submitSelfAssessment: (params = {}) => vm.$u.put(apiurl.resume.submitSelfAssessmentUrl, params)
+	};
 
 
-  // 我的评价
-  let evaluation = {
-    getEvaluationList: (params = {}) => vm.$u.get(apiurl.evaluation.getEvaluationListUrl, params)
-  };
+	// 我的评价
+	let evaluation = {
+		getEvaluationList: (params = {}) => vm.$u.get(apiurl.evaluation.getEvaluationListUrl, params)
+	};
 
 
-  // 我的
-  let mine = {
-    submitEmploymentCondition: (params = {}) => vm.$u.post(apiurl.mine.employmentConditionUrl, params),
-    totalCount: (params = {}) => vm.$u.get(apiurl.mine.totalCountUrl, params),
-    integralList: (params = {}) => vm.$u.get(apiurl.mine.integralListUrl, params),
-    getCountResulApi: (params = {}) => vm.$u.get(apiurl.mine.getCountResultUrl, params),
-    getIntegralTotalApi: (params = {}) => vm.$u.get(apiurl.mine.getIntegralTotalUrl, params),
-    updatePositionStatusApi: (params = {}) => vm.$u.put(apiurl.mine.updatePositionStatusUrl, params),
+	// 我的
+	let mine = {
+		submitEmploymentCondition: (params = {}) => vm.$u.post(apiurl.mine.employmentConditionUrl, params),
+		totalCount: (params = {}) => vm.$u.get(apiurl.mine.totalCountUrl, params),
+		integralList: (params = {}) => vm.$u.get(apiurl.mine.integralListUrl, params),
+		getCountResulApi: (params = {}) => vm.$u.get(apiurl.mine.getCountResultUrl, params),
+		getIntegralTotalApi: (params = {}) => vm.$u.get(apiurl.mine.getIntegralTotalUrl, params),
+		updatePositionStatusApi: (params = {}) => vm.$u.put(apiurl.mine.updatePositionStatusUrl, params),
 		signInNowApi: (params = {}) => vm.$u.post(apiurl.mine.signInNowUrl, params)
 		signInNowApi: (params = {}) => vm.$u.post(apiurl.mine.signInNowUrl, params)
-  };
+	};
 
 
-  // 适应性培训
-  let training = {
-    // 获取线上培训列表
-    getOnlineListApi: (params = {}) => vm.$u.get(apiurl.training.getOnlineListurl, params),
-    getOnlineStatusApi: (params = {}) => vm.$u.get(apiurl.training.getOnlineStatusUrl, params),
-    getOnlineDetailsApi: (params = {}) => vm.$u.get(apiurl.training.getOnlineDetailsUrl + params.id),
-    videoTimeLongApi: (params = {}) => vm.$u.post(apiurl.training.videoTimeLongUrl, params),
-    getClassesCommentApi: (params = {}) => vm.$u.get(apiurl.training.getClassesCommentUrl, params),
-    addClassesCommentApi: (params = {}) => vm.$u.post(apiurl.training.addClassesCommentUrl, params),
-    getOfflineListApi: (params = {}) => vm.$u.get(apiurl.training.getOfflineListUrl, params),
-    getOfflineDetailsApi: (params = {}) => vm.$u.get(apiurl.training.getOfflineDetailsUrl + params.id)
-  };
-  /**
-   * 技能培训
-   */
-  let skillTraining = {
-    getSkillPackageListApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getPackageListUrl, params),
-    signUpClassApi: (params = {}) => vm.$u.post(apiurl.skillTraining.signUpClassUrl, params),
-    getPackageDetailApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getPackageDetailsUrl + params.id),
-    getClassNoticeApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getClassNoticeUrl, params),
-    getTrainingTotalApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getTrainingTotalUrl, params),
-    isApplyTrainingApi: (params = {}) => vm.$u.get(apiurl.skillTraining.isApplyTrainingUrl + params.id),
-    getMyTrainingListApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getMyTrainingListUrl + params.type, params),
-    getMyTrainingDetailsApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getMyTrainingDetailsUrl + params.id, params),
-    getCertificateListApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getCertificateListUrl + params.id, params),
-    addCertificateApi: (params = {}) => vm.$u.post(apiurl.skillTraining.addCertificateUrl, params),
-    deleteCertificateApi: (params = {}) => vm.$u.delete(apiurl.skillTraining.deleteCertificateUrl + params.id, params),
-    queryIsAttendedClassApi: (params = {}) => vm.$u.get(apiurl.skillTraining.queryIsAttendedClassUrl, params)
-  };
-  let entrepreneurship = {
-    addEntrepreneurshipApi: (params = {}) => vm.$u.post(apiurl.entrepreneurship.addEntrepreneurshipUrl, params),
-    getEntrepreneurshipListApi: (params = {}) => vm.$u.get(apiurl.entrepreneurship.getEntrepreneurshipListUrl, params),
-    getEntrepreneurshipDetailsApi: (params = {}) => vm.$u.get(apiurl.entrepreneurship.getEntrepreneurshipDetailsUrl + params.id)
-  };
-  // 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下
-  vm.$u.api = {
-    getPhoneLoginCode,
-    logoutApi,
-    phoneLoginAuth,
-    getSysterms,
-    getNewsDetails,
-    veteEduc,
-    getVeteEducCheck,
-    getmemberinfo,
-    getpolicyNewsList,
-    getVeteEducData,
-    getPolicyNewsDetails,
-    getDictdataUrl,
-    getAdaptTrainOnline,
-    getAdaptTrainOnlineDetails,
-    getAdaptTrainOnlineRate,
-    upAdaptTrainOnlineInfo,
-    getAdaptTrainOffline,
-    postAnalysis,
-    postSignOffline,
-    getAdaptTrainIdOffline,
-    getIdInfo,
-    getMoreCourseListApi,
-    getSchoolList,
-    indexApi,
-    noticeApi,
-    school,
-    company,
-    policyInfo,
-    delivery,
-    recruitment,
-    interview,
-    resume,
-    modifyUserInfo,
-    evaluation,
-    mine,
-    training,
-    skillTraining,
-    entrepreneurship
-  };
+	// 适应性培训
+	let training = {
+		// 获取线上培训列表
+		getOnlineListApi: (params = {}) => vm.$u.get(apiurl.training.getOnlineListurl, params),
+		getOnlineStatusApi: (params = {}) => vm.$u.get(apiurl.training.getOnlineStatusUrl, params),
+		getOnlineDetailsApi: (params = {}) => vm.$u.get(apiurl.training.getOnlineDetailsUrl + params.id),
+		videoTimeLongApi: (params = {}) => vm.$u.post(apiurl.training.videoTimeLongUrl, params),
+		getClassesCommentApi: (params = {}) => vm.$u.get(apiurl.training.getClassesCommentUrl, params),
+		addClassesCommentApi: (params = {}) => vm.$u.post(apiurl.training.addClassesCommentUrl, params),
+		getOfflineListApi: (params = {}) => vm.$u.get(apiurl.training.getOfflineListUrl, params),
+		getOfflineDetailsApi: (params = {}) => vm.$u.get(apiurl.training.getOfflineDetailsUrl + params.id)
+	};
+	/**
+	 * 技能培训
+	 */
+	let skillTraining = {
+		getSkillPackageListApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getPackageListUrl, params),
+		signUpClassApi: (params = {}) => vm.$u.post(apiurl.skillTraining.signUpClassUrl, params),
+		getPackageDetailApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getPackageDetailsUrl + params.id),
+		getClassNoticeApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getClassNoticeUrl, params),
+		getTrainingTotalApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getTrainingTotalUrl, params),
+		isApplyTrainingApi: (params = {}) => vm.$u.get(apiurl.skillTraining.isApplyTrainingUrl + params.id),
+		getMyTrainingListApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getMyTrainingListUrl + params.type,
+			params),
+		getMyTrainingDetailsApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getMyTrainingDetailsUrl + params.id,
+			params),
+		getCertificateListApi: (params = {}) => vm.$u.get(apiurl.skillTraining.getCertificateListUrl + params.id,
+			params),
+		addCertificateApi: (params = {}) => vm.$u.post(apiurl.skillTraining.addCertificateUrl, params),
+		deleteCertificateApi: (params = {}) => vm.$u.delete(apiurl.skillTraining.deleteCertificateUrl + params.id,
+			params),
+		queryIsAttendedClassApi: (params = {}) => vm.$u.get(apiurl.skillTraining.queryIsAttendedClassUrl, params)
+	};
+	let entrepreneurship = {
+		addEntrepreneurshipApi: (params = {}) => vm.$u.post(apiurl.entrepreneurship.addEntrepreneurshipUrl, params),
+		getEntrepreneurshipListApi: (params = {}) => vm.$u.get(apiurl.entrepreneurship.getEntrepreneurshipListUrl,
+			params),
+		getEntrepreneurshipDetailsApi: (params = {}) => vm.$u.get(apiurl.entrepreneurship
+			.getEntrepreneurshipDetailsUrl +
+			params.id)
+	};
+	let publicClasses = {
+		getPublicClassesListApi: (params = {}) => vm.$u.get(apiurl.publicClasses.getPublicClassesListUrl + params.id,
+			params)
+	}
+	// 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下
+	vm.$u.api = {
+		getPhoneLoginCode,
+		logoutApi,
+		phoneLoginAuth,
+		getSysterms,
+		getNewsDetails,
+		veteEduc,
+		getVeteEducCheck,
+		getmemberinfo,
+		getpolicyNewsList,
+		getVeteEducData,
+		getPolicyNewsDetails,
+		getDictdataUrl,
+		getAdaptTrainOnline,
+		getAdaptTrainOnlineDetails,
+		getAdaptTrainOnlineRate,
+		upAdaptTrainOnlineInfo,
+		getAdaptTrainOffline,
+		postAnalysis,
+		postSignOffline,
+		getAdaptTrainIdOffline,
+		getIdInfo,
+		getMoreCourseListApi,
+		getSchoolList,
+		indexApi,
+		noticeApi,
+		school,
+		company,
+		policyInfo,
+		delivery,
+		recruitment,
+		interview,
+		resume,
+		modifyUserInfo,
+		evaluation,
+		mine,
+		training,
+		skillTraining,
+		entrepreneurship,
+		publicClasses
+	};
 };
 };
 
 
 export default {
 export default {
-  install
-};
+	install
+};

+ 10 - 1
h5_web/pages.json

@@ -646,7 +646,16 @@
       "style": {
       "style": {
         "navigationBarTitleText": "公共课程",
         "navigationBarTitleText": "公共课程",
         "enablePullDownRefresh": true,
         "enablePullDownRefresh": true,
-				"navigationBarBackgroundColor": "#3D5D4C",
+        "navigationBarBackgroundColor": "#3D5D4C",
+        "navigationBarTextStyle": "white"
+      }
+    },
+    {
+      "path": "pages/publicCourse/videoDetails/videoDetails",
+      "style": {
+        "navigationBarTitleText": "",
+        "enablePullDownRefresh": false,
+        "navigationBarBackgroundColor": "#3D5D4C",
         "navigationBarTextStyle": "white"
         "navigationBarTextStyle": "white"
       }
       }
     }
     }

+ 266 - 231
h5_web/pages/index/index.vue

@@ -1,8 +1,8 @@
 <template>
 <template>
-	<view class="index">
-		<view class="index-header">
-			<view class="index-header-container">
-				<!-- <view class="index-header-left"></view>
+  <view class="index">
+    <view class="index-header">
+      <view class="index-header-container">
+        <!-- <view class="index-header-left"></view>
 				<view class="index-header-right"></view>
 				<view class="index-header-right"></view>
 				<view class="index-header-top">
 				<view class="index-header-top">
 					<u-search placeholder="请输入您关键词" v-model="headerTopKeyword" :show-action="false"
 					<u-search placeholder="请输入您关键词" v-model="headerTopKeyword" :show-action="false"
@@ -17,242 +17,277 @@
 						<u-icon name="scan" color="#FFFFFF" size="48" class="header-scan-icon"></u-icon>
 						<u-icon name="scan" color="#FFFFFF" size="48" class="header-scan-icon"></u-icon>
 					</view>
 					</view>
 				</view> -->
 				</view> -->
-				<view class="index-header-banner">
-					<u-swiper :list="bannerList" name="bannerUrl" border-radius="0" mode="round" height="380"
-						img-mode="scaleToFill" @click="swiperClick" :mode="bannerList.length > 1 ? 'round' : 'none'"/>
-				</view>
-			</view>
-		</view>
+        <view class="index-header-banner">
+          <u-swiper
+            :list="bannerList"
+            name="bannerUrl"
+            border-radius="0"
+            mode="round"
+            height="380"
+            img-mode="scaleToFill"
+            @click="swiperClick"
+            :mode="bannerList.length > 1 ? 'round' : 'none'"
+          />
+        </view>
+      </view>
+    </view>
 
 
-		<!-- 滚动通知 -->
-		<view class="notice">
-			<u-notice-bar mode="horizontal" :type="unreadInfoNum > 0 ? 'primary' : 'none'" :list="noticeList" bg-color="#fff" duration="2000" @click="noticeBarClick" />
-		</view>
+    <!-- 滚动通知 -->
+    <view class="notice">
+      <u-notice-bar
+        mode="horizontal"
+        :type="unreadInfoNum > 0 ? 'primary' : 'none'"
+        :list="noticeList"
+        bg-color="#fff"
+        duration="2000"
+        @click="noticeBarClick"
+      />
+    </view>
 
 
-		<!-- 宫格 -->
-		<view class="service">
-			<view class="service-body u-flex u-flex-wrap u-row-left">
-				<view class="service-item" @click="openPage('pages/policyInfo/policyInfo')">
-					<image class="service-item-img" src="../../static/img/index-service-01.png" mode="aspectFill">
-					</image>
-					<view class="service-item-text">政策资讯</view>
-				</view>
-				<view class="service-item" @click="openPage('pages/recruitment/recruitment')">
-					<image class="service-item-img" src="../../static/img/index-service-02.png" mode="aspectFill">
-					</image>
-					<view class="service-item-text">招聘就业</view>
-				</view>
-				<view class="service-item" @click="openPage('pages/cooperativeEnterprise/cooperativeEnterprise')">
-					<image class="service-item-img" src="../../static/img/index-service-03.png" mode="aspectFill">
-					</image>
-					<view class="service-item-text">合作企业</view>
-				</view>
-				<view class="service-item" @click="openPage('pages/schools/schools')">
-					<image class="service-item-img" src="../../static/img/index-service-04.png" mode="aspectFill">
-					</image>
-					<view class="service-item-text">合作院校</view>
-				</view>
-				<view class="service-item" @click="openPage('pages/skillsTraining/skillsTraining')">
-					<image class="service-item-img" src="../../static/img/index-service-05.png" mode="aspectFill">
-					</image>
-					<view class="service-item-text">技能培训</view>
-				</view>
-				<view class="service-item" @click="openPage('pages/basicTraining/basicTraining')">
-					<image class="service-item-img" src="../../static/img/index-service-06.png" mode="aspectFill">
-					</image>
-					<view class="service-item-text">适应性培训</view>
-				</view>
-				<view class="service-item" @click="openPage('pages/upgrade/upgrade/upgrade')">
-					<image class="service-item-img" src="../../static/img/index-service-07.png" mode="aspectFill">
-					</image>
-					<view class="service-item-text">学历提升</view>
-				</view>
-				<view class="service-item" @click="openPage('pages/entrepreneurshipGuidelines/entrepreneurshipGuidelines')">
-					<image class="service-item-img" src="../../static/img/index-service-08.png" mode="aspectFill">
-					</image>
-					<view class="service-item-text">创业指导</view>
-				</view>
-			</view>
-		</view>
+    <!-- 宫格 -->
+    <view class="service">
+      <view class="service-body u-flex u-flex-wrap u-row-left">
+        <view class="service-item" @click="openPage('pages/policyInfo/policyInfo')">
+          <image class="service-item-img" src="../../static/img/index-service-01.png" mode="aspectFill"> </image>
+          <view class="service-item-text">政策资讯</view>
+        </view>
+        <view class="service-item" @click="openPage('pages/recruitment/recruitment')">
+          <image class="service-item-img" src="../../static/img/index-service-02.png" mode="aspectFill"> </image>
+          <view class="service-item-text">招聘就业</view>
+        </view>
+        <view class="service-item" @click="openPage('pages/cooperativeEnterprise/cooperativeEnterprise')">
+          <image class="service-item-img" src="../../static/img/index-service-03.png" mode="aspectFill"> </image>
+          <view class="service-item-text">合作企业</view>
+        </view>
+        <view class="service-item" @click="openPage('pages/schools/schools')">
+          <image class="service-item-img" src="../../static/img/index-service-04.png" mode="aspectFill"> </image>
+          <view class="service-item-text">合作院校</view>
+        </view>
+        <view class="service-item" @click="openPage('pages/skillsTraining/skillsTraining')">
+          <image class="service-item-img" src="../../static/img/index-service-05.png" mode="aspectFill"> </image>
+          <view class="service-item-text">技能培训</view>
+        </view>
+        <view class="service-item" @click="openPage('pages/basicTraining/basicTraining')">
+          <image class="service-item-img" src="../../static/img/index-service-06.png" mode="aspectFill"> </image>
+          <view class="service-item-text">适应性培训</view>
+        </view>
+        <view class="service-item" @click="openPage('pages/upgrade/upgrade/upgrade')">
+          <image class="service-item-img" src="../../static/img/index-service-07.png" mode="aspectFill"> </image>
+          <view class="service-item-text">学历提升</view>
+        </view>
+        <view class="service-item" @click="openPage('pages/entrepreneurshipGuidelines/entrepreneurshipGuidelines')">
+          <image class="service-item-img" src="../../static/img/index-service-08.png" mode="aspectFill"> </image>
+          <view class="service-item-text">创业指导</view>
+        </view>
+      </view>
+    </view>
 
 
-		<!-- 新闻动态 -->
-		<view class="news">
-			<u-card class="news-list" :body-style="{ 'padding-top':0 }" :border="false" :foot-border-top="false"
-				:head-border-bottom="false" :full="true" :border-radius="10" margin="0">
-				<view class="news-list-head" slot="head">
-					<view class="news-list-head-item">
-						<view class="card-head-title">新闻动态</view>
-						<view @click="openPage('/pages/newsInformation/newsInformation')">更多<u-icon name="arrow-right"
-								color="#d2d3d5"></u-icon>
-						</view>
-					</view>
-				</view>
-				<view class="news-list-body" slot="body">
-					<u-nodata notice="暂无新闻" v-if="newsList.length == 0"></u-nodata>
-					<view v-for="(item,index) in newsList"
-						@click="$u.route('/pages/newsDetails/newsDetails',{ artId: item.artId })" :key="item.artId"
-						class="news-list-body-item u-body-item u-flex u-col-between u-row-between">
-						<view class="news-text">
-							<view class="news-text-title u-body-item-title u-line-2">{{item.artTitle}}</view>
-							<view class="news-text-foot foot u-flex u-flex-wrap">
-								<view>{{item.artCategoryName}}</view>
-								<view>{{$u.timeFormat(item.createTime.replace(/-/g, '/'), 'mm-dd hh:MM')}}</view>
-							</view>
-						</view>
-						<view class="image-border">
-							<u-image :src="item.artImage" mode="aspectFill" width="160" height="120"
-								border-radius="10">
-								<view slot="error">
-									<u-image src="../../static/img/default-news.png" mode="aspectFill" width="160" height="120" border-radius="10"/>
-								</view>
-							</u-image>
-						</view>
-					</view>
-				</view>
-			</u-card>
-		</view>
+    <!-- 新闻动态 -->
+    <view class="news">
+      <u-card
+        class="news-list"
+        :body-style="{ 'padding-top': 0 }"
+        :border="false"
+        :foot-border-top="false"
+        :head-border-bottom="false"
+        :full="true"
+        :border-radius="10"
+        margin="0"
+      >
+        <view class="news-list-head" slot="head">
+          <view class="news-list-head-item">
+            <view class="card-head-title">新闻动态</view>
+            <view @click="openPage('/pages/newsInformation/newsInformation')">更多<u-icon name="arrow-right" color="#d2d3d5"></u-icon> </view>
+          </view>
+        </view>
+        <view class="news-list-body" slot="body">
+          <u-nodata notice="暂无新闻" v-if="newsList.length == 0"></u-nodata>
+          <view
+            v-for="(item, index) in newsList"
+            @click="newsItemClick(item)"
+            :key="index"
+            class="news-list-body-item u-body-item u-flex u-col-between u-row-between"
+          >
+            <view class="news-text">
+              <view class="news-text-title u-body-item-title u-line-2">{{ item.artTitle }}</view>
+              <view class="news-text-foot foot u-flex u-flex-wrap">
+                <view>{{ item.artCategoryName }}</view>
+                <view>{{ $u.timeFormat(item.createTime.replace(/-/g, '/'), 'mm-dd hh:MM') }}</view>
+              </view>
+            </view>
+            <view class="image-border">
+              <u-image :src="item.artImage" mode="aspectFill" width="160" height="120" border-radius="10">
+                <view slot="error">
+                  <u-image src="../../static/img/default-news.png" mode="aspectFill" width="160" height="120" border-radius="10" />
+                </view>
+              </u-image>
+            </view>
+          </view>
+        </view>
+      </u-card>
+    </view>
 
 
-		<!-- ########################## -- 底部导航栏 -- ################################ -->
-		<u-tabbar :list="tabbarConfig.tabbarList" :height="tabbarConfig.height" :mid-button="tabbarConfig.midButton"
-			:inactive-color="tabbarConfig.inactiveColor" :active-color="tabbarConfig.activeColor"
-			:mid-button-size="tabbarConfig.midButtonSize" />
-	</view>
+    <!-- ########################## -- 底部导航栏 -- ################################ -->
+    <u-tabbar
+      :list="tabbarConfig.tabbarList"
+      :height="tabbarConfig.height"
+      :mid-button="tabbarConfig.midButton"
+      :inactive-color="tabbarConfig.inactiveColor"
+      :active-color="tabbarConfig.activeColor"
+      :mid-button-size="tabbarConfig.midButtonSize"
+    />
+  </view>
 </template>
 </template>
 
 
 <script>
 <script>
-	import tabbarconfig from 'tabbarconfig.js';
-	export default {
-		data() {
-			return {
-				unreadInfoNum: 0,
-				headerTopKeyword: '',
-				paginationConfig: {
-					pageNo: 1,
-					pageSize: 10
-				},
-				// 轮播图
-				bannerList: [{
-					bannerUrl: '../../static/img/default.png'
-				}],
-				// 新闻列表
-				newsList: [],
-				// 消息通知
-				noticeList: [],
-				// 自定义tabbar
-				tabbarConfig: tabbarconfig
-			}
-		},
-		onLoad() {
-		},
-		onShow() {
-			this.getUnreadInfoNum();
-			this.getBannerList();
-			this.getNewsList();
-			this.getNewestInfo();
-		},
-		methods: {
-			/**
-			 * 打开新页面
-			 * @param {String} path 跳转路径
-			 * */
-			openPage(path, msg) {
-				let tempRoute = {
-					url: path
-				};
-				if (msg) {
-					tempRoute.params = {
-						msg: msg
-					};
-				}
-				this.$u.route(tempRoute);
-			},
-			/**
-			 * 获取未读消息条数
-			 */
-			getUnreadInfoNum() {
-				this.$u.api.indexApi.getUnreadInfoNumApi().then(res => {
-					if (res?.code === 200) {
-						this.unreadInfoNum = res.data;
-					}
-				})
-			},
-			/**
-			 * 获取最新三条信息
-			 */
-			getNewestInfo() {
-				this.$u.api.indexApi.getNewestInfoApi().then(res => {
-					if (res?.code === 200) {
-						this.noticeList = res.data.map(item => {
-							return item.name
-						})
-					}
-				})
-			},
-			/**
-			 * 获取新闻列表
-			 */
-			getNewsList() {
-				let params = {
-					artCategoryId: 2,
-					pageNum: 1,
-					pageSize: 5
-				}
-				this.$u.api.indexApi.getIndexNewsListApi(params).then(res => {
-					if (res?.code == 200) {
-						this.newsList = res.rows;
-					}
-				})
-			},
-			/**
-			 * 获取轮播广告
-			 */
-			getBannerList() {
-				this.$u.api.indexApi.indexBannerListApi({
-					type: 0
-				}).then(res => {
-					if (res?.code === 200) {
-						this.bannerList = res.data.map(item => {
-							return {
-								...item,
-								image: item.bannerUrl,
-								title: item.name
-							}
-						});
-					} else {
-
-					}
-				})
-			},
-			/**
-			 * 轮播图点击
-			 * @param {Object} index
-			 */
-			swiperClick(index) {
-				if (this.bannerList[index].jumpUrl) {
-					let url = this.bannerList[index].jumpUrl.split('#')[1];
-					this.$u.route({
-						url: url,
-					});
-				} else {
-					this.$u.route({
-						url: 'pages/bannerDetails/bannerDetails',
-						params: {
-							id: this.bannerList[index].id,
-							type: 0
-						}
-					})
-				}
-			},
-			/**
-			 * 滚动条
-			 */
-			noticeBarClick() {
-				this.openPage('pages/notification/notification')
+import tabbarconfig from 'tabbarconfig.js';
+export default {
+  data() {
+    return {
+      unreadInfoNum: 0,
+      headerTopKeyword: '',
+      paginationConfig: {
+        pageNo: 1,
+        pageSize: 10
+      },
+      // 轮播图
+      bannerList: [
+        {
+          bannerUrl: '../../static/img/default.png'
+        }
+      ],
+      // 新闻列表
+      newsList: [],
+      // 消息通知
+      noticeList: [],
+      // 自定义tabbar
+      tabbarConfig: tabbarconfig
+    };
+  },
+  onLoad() {},
+  onShow() {
+    this.getUnreadInfoNum();
+    this.getBannerList();
+    this.getNewsList();
+    this.getNewestInfo();
+  },
+  methods: {
+    /**
+     * 打开新页面
+     * @param {String} path 跳转路径
+     * */
+    openPage(path, msg) {
+      let tempRoute = {
+        url: path
+      };
+      if (msg) {
+        tempRoute.params = {
+          msg: msg
+        };
+      }
+      this.$u.route(tempRoute);
+    },
+    /**
+     * 获取未读消息条数
+     */
+    getUnreadInfoNum() {
+      this.$u.api.indexApi.getUnreadInfoNumApi().then((res) => {
+        if (res?.code === 200) {
+          this.unreadInfoNum = res.data;
+        }
+      });
+    },
+    /**
+     * 获取最新三条信息
+     */
+    getNewestInfo() {
+      this.$u.api.indexApi.getNewestInfoApi().then((res) => {
+        if (res?.code === 200) {
+          this.noticeList = res.data.map((item) => {
+            return item.name;
+          });
+        }
+      });
+    },
+    /**
+     * 获取新闻列表
+     */
+    getNewsList() {
+      let params = {
+        artCategoryId: 2,
+        pageNum: 1,
+        pageSize: 5
+      };
+      this.$u.api.indexApi.getIndexNewsListApi(params).then((res) => {
+        if (res?.code == 200) {
+          this.newsList = res.rows;
+        }
+      });
+    },
+    /**
+     * 获取轮播广告
+     */
+    getBannerList() {
+      this.$u.api.indexApi
+        .indexBannerListApi({
+          type: 0
+        })
+        .then((res) => {
+          if (res?.code === 200) {
+            this.bannerList = res.data.map((item) => {
+              return {
+                ...item,
+                image: item.bannerUrl,
+                title: item.name
+              };
+            });
+          } else {
+          }
+        });
+    },
+    /**
+     * 轮播图点击
+     * @param {Object} index
+     */
+    swiperClick(index) {
+      if (this.bannerList[index].jumpUrl) {
+        let url = this.bannerList[index].jumpUrl.split('#')[1];
+        this.$u.route({
+          url: url
+        });
+      } else {
+        this.$u.route({
+          url: 'pages/bannerDetails/bannerDetails',
+          params: {
+            id: this.bannerList[index].id,
+            type: 0
+          }
+        });
+      }
+    },
+    /**
+     * 滚动条
+     */
+    noticeBarClick() {
+      this.openPage('pages/notification/notification');
+    },
+    /**
+     * @description: 新闻点击
+     * @param {*} item
+     * @return {*}
+     */
+    newsItemClick(item) {
+      let routeUrl = '/pages/newsDetails/newsDetails';
+      if (item.artLinkUrl) {
+				location.href = item.artLinkUrl
+      } else {
+				this.$u.route(routeUrl, { artId: item.artId });
 			}
 			}
-		}
-	}
+    }
+  }
+};
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
-	@import "./index.scss";
+@import './index.scss';
 </style>
 </style>

+ 73 - 49
h5_web/pages/publicCourse/publicCourse.vue

@@ -1,18 +1,18 @@
 <template>
 <template>
   <view class="content">
   <view class="content">
     <view class="content-list">
     <view class="content-list">
-      <view class="content-list-item" v-for="(item, index) in videoList" :key="index">
+      <view class="content-list-item" v-for="(item, index) in videoList" :key="index" @click="clickVideo(item)">
         <view class="content-list-item-image">
         <view class="content-list-item-image">
-          <u-image class="image" width="100%" height="224rpx" :src="item.image" />
-					<view class="play-btn">
-						<u-image width="70rpx" height="70rpx" src="/static/img/play-video-icon.svg" />
-					</view>
+          <u-image class="image" width="100%" height="224rpx" :src="item.coverUrl" />
+          <view class="play-btn">
+            <u-image width="70rpx" height="70rpx" src="/static/img/play-video-icon.svg" />
+          </view>
         </view>
         </view>
         <view class="content-list-item-title">
         <view class="content-list-item-title">
-          <text>{{ item.title }}</text>
+          <text>{{ item.chapterName }}</text>
         </view>
         </view>
         <view class="content-list-item-subtitle">
         <view class="content-list-item-subtitle">
-          <text>{{ item.subtitle }}</text>
+          <text>{{ '颂军魂' }}</text>
         </view>
         </view>
       </view>
       </view>
     </view>
     </view>
@@ -25,18 +25,7 @@ export default {
   data() {
   data() {
     return {
     return {
       status: 'loadmore',
       status: 'loadmore',
-      videoList: [
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' }
-      ],
+      videoList: [],
       page: {
       page: {
         num: 1,
         num: 1,
         size: 10,
         size: 10,
@@ -48,25 +37,15 @@ export default {
     uni.setNavigationBarTitle({
     uni.setNavigationBarTitle({
       title: '颂军魂'
       title: '颂军魂'
     });
     });
+		this.getDict();
   },
   },
   onPullDownRefresh() {
   onPullDownRefresh() {
     Object.assign(this, {
     Object.assign(this, {
       status: 'loadmore',
       status: 'loadmore',
-      videoList: [
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' }
-      ],
+      videoList: [],
       page: {
       page: {
         num: 1,
         num: 1,
-        size: 10,
+        size: 12,
         total: 0
         total: 0
       }
       }
     });
     });
@@ -84,23 +63,68 @@ export default {
     }, 1500);
     }, 1500);
   },
   },
   methods: {
   methods: {
-    handleVideoList() {
-      this.videoList = this.videoList.concat([
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' },
-        { image: '', title: '诞生', subtitle: '颂军魂' }
-      ]);
-      this.page.total = 100;
-      if (this.page.num >= this.page.total) this.status = 'nomore';
-      else this.status = 'loading';
-    }
+    async handleVideoList() {
+			const { num, size } = this.page
+			const { code, data } = await this.$u.api.publicClasses.getPublicClassesListApi({ id: 1, pageNum: num, pageSize: size });
+			if (code === 200) {
+				this.videoList = this.videoList.concat(data?.rows ?? [])
+				this.page.total = Number(data?.total ?? 0);
+				if (this.page.num >= this.page.total) this.status = 'nomore';
+				else this.status = 'loading';
+			}
+    },
+		async getDict() {
+			const { code, data } = await this.$u.api.getDictdataUrl({
+				key: 'site_type'
+			})
+			if (code === 200) {
+				const type = this.iswap();
+				const { text } = data.find((item) => item.label === type);
+				if (!location.href.includes(text)) {
+					location.href = text;
+					return
+				}
+				this.handleVideoList()
+			}
+		},
+    clickVideo(item) {
+      this.$u.route({
+        url: '/pages/publicCourse/videoDetails/videoDetails',
+				params: {
+					chapterName: item.chapterName,
+					videoUrl: item.videoUrl
+				}
+      });
+    },
+		iswap() {
+			var uA = navigator.userAgent.toLowerCase();
+			var ipad = uA.match(/ipad/i) == "ipad";
+			var iphone = uA.match(/iphone os/i) == "iphone os";
+			var midp = uA.match(/midp/i) == "midp";
+			var uc7 = uA.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
+			var uc = uA.match(/ucweb/i) == "ucweb";
+			var android = uA.match(/android/i) == "android";
+			var windowsce = uA.match(/windows ce/i) == "windows ce";
+			var windowsmd = uA.match(/windows mobile/i) == "windows mobile";
+			if (
+				!(
+					ipad ||
+					iphone ||
+					midp ||
+					uc7 ||
+					uc ||
+					android ||
+					windowsce ||
+					windowsmd
+				)
+			) {
+				// PC 端
+				return "Pc";
+			} else {
+				// 移动端
+				return "Mobile";
+			}
+		},
   }
   }
 };
 };
 </script>
 </script>

+ 75 - 0
h5_web/pages/publicCourse/videoDetails/videoDetails.scss

@@ -0,0 +1,75 @@
+.container {
+  &-video {
+    width: 100%;
+    height: 400rpx;
+    position: relative;
+
+    .video-control {
+      background-color: rgba(0, 0, 0, 0.1);
+      height: 90rpx;
+      position: absolute;
+      top: 0;
+      left: 0;
+      width: 100%;
+      z-index: 997;
+    }
+
+    .multi-list.full-screen.vertical {
+      height: 100vh !important;
+      padding: 8vh 0;
+    }
+    .multi-list.full-screen.horizontal {
+      height: 100vw !important;
+      padding: 8vw 0;
+    }
+    .multi {
+      position: absolute;
+      right: 30rpx;
+      top: 50%;
+      transform: translateY(-50%);
+      z-index: 998;
+      width: 100rpx;
+      color: #fff;
+      padding: 10rpx 0;
+      text-align: center;
+      transition: color ease 0.3s;
+    }
+    .multi.rate {
+      right: 30rpx;
+    }
+    .multi-list {
+      position: absolute;
+      height: 100%;
+      width: 0;
+      background-color: rgba(0, 0, 0, 0.65);
+      top: 0;
+      right: 0;
+      transition: width 0.3s ease;
+      z-index: 999;
+      box-sizing: border-box;
+      padding: 20rpx 0;
+    }
+    .multi-list.rate {
+      padding: 25rpx 0;
+    }
+    .multi-list.active {
+      width: 200rpx;
+    }
+    .multi-item {
+      text-align: center;
+      color: #fff;
+      line-height: 80rpx;
+      transition: color ease 0.3s;
+    }
+    .multi-item.rate {
+      line-height: 70rpx;
+    }
+    .multi-item:hover,
+    .multi:hover {
+      color: #00d8ff;
+    }
+    .multi-item.active {
+      color: #00d8ff;
+    }
+  }
+}

+ 82 - 0
h5_web/pages/publicCourse/videoDetails/videoDetails.vue

@@ -0,0 +1,82 @@
+<template>
+  <view class="container" v-loading="loading">
+    <video
+      v-if="videoInfo.url"
+      class="container-video"
+      id="myVideo"
+      @timeupdate="timeUpdate"
+      :src="videoInfo.url"
+      controls
+      :initial-time="videoInfo.initial_time"
+      object-fit="fill"
+      play-btn-position="center"
+      @ended="videoEnded"
+      @tap="videoClick"
+      @loadedmetadata="loadedmetadata"
+    >
+      <cover-view class="video-control">
+        <cover-view class="multi rate" @tap.stop="showSwitchRate">x {{ videoInfo.currentRate }}</cover-view>
+      </cover-view>
+      <cover-view class="multi-list rate" :class="{ active: rateShow }">
+        <cover-view
+          v-for="(item, index) in rateList"
+          :key="index"
+          class="multi-item rate"
+          :data-rate="item"
+          @tap="switchRate"
+          :class="{ active: item == videoInfo.currentRate }"
+        >
+          {{ item }}
+        </cover-view>
+      </cover-view>
+    </video>
+  </view>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      loading: false,
+      videoInfo: {
+        url: '',
+        initial_time: '',
+        currentRate: 1.0
+      },
+      // 视频创建dom
+      videoContext: uni.createVideoContext('myVideo', this),
+      // 倍速
+      rateList: [0.5, 1.0, 1.5, 2.0],
+      rateShow: false
+    };
+  },
+  onLoad(options) {
+		const { chapterName, videoUrl } = options
+		if (videoUrl) {
+			this.videoInfo.url = videoUrl
+		}
+    this.loading = true;
+  },
+  methods: {
+    videoClick() {},
+    timeUpdate() {},
+    videoEnded() {},
+    loadedmetadata() {
+      this.loading = false;
+    },
+    showSwitchRate() {
+      this.rateShow = true;
+    },
+    switchRate(e) {
+      let rate = Number(e.currentTarget.dataset.rate);
+      this.videoInfo.currentRate = rate;
+      this.rateShow = false;
+      this.videoContext.playbackRate(rate);
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+@import './videoDetails.scss';
+</style>

二進制
h5_web/static/img/major-党务工作.png


二進制
h5_web/static/img/major-工商企业管理.png


二進制
h5_web/static/img/major-应用化工技术.png


二進制
h5_web/static/img/major-建筑工程技术.png


二進制
h5_web/static/img/major-机电一体化技术.png


二進制
h5_web/static/img/major-计算机应用技术.png


二進制
h5_web/static/img/major01.png


二進制
h5_web/static/img/major02.png


二進制
h5_web/static/img/major03.png


二進制
h5_web/static/img/major04.png


二進制
h5_web/static/img/major05.png


二進制
h5_web/static/img/major06.png


二進制
h5_web/static/img/skill-01.png


二進制
h5_web/static/img/skill-02.png


二進制
h5_web/static/img/skill-03.png


二進制
h5_web/static/img/skill-04.png


二進制
h5_web/static/img/skill-05.png


二進制
h5_web/static/img/skill-06.png


二進制
h5_web/static/img/skill-农产品食品检验员.png


二進制
h5_web/static/img/skill-化学检验员.png


二進制
h5_web/static/img/skill-工业机器人.png


二進制
h5_web/static/img/skill-工业机器人系统运维员.png


二進制
h5_web/static/img/skill-机床装调维修工.png


二進制
h5_web/static/img/skill-汽车维修.png


二進制
h5_web/static/img/skill-焊接.png


二進制
h5_web/static/img/skill-电工.png


二進制
h5_web/static/img/skill-车身修理.png