index.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  1. <template>
  2. <view class="ezy-study-page">
  3. <view class="study-school-year" @click="clickGradeTerm">{{gradeTerm}}</view>
  4. <view class="ezy-study-wrap">
  5. <view class="chapter-box" @click="handleCheckCatalogue">{{infoData.numberStr}}</view>
  6. <view class="chapter-title-box">{{infoData.zhangName}}</view>
  7. <view>
  8. <view class="brand-item" v-for="(item,index) in infoData.jieList" :key="index" @click="listClick(item,index)"
  9. :class="index ==0?'brand-active':''">
  10. <!-- <view class="brand-icon" v-if="index ==0">1</view>
  11. <view class="brand-lock" v-else></view>
  12. <view class="brand-content">{{item.jieName}}</view> -->
  13. <view class="brand-icon" v-if="index === 0">1</view>
  14. <view class="brand-lock" v-else></view>
  15. <view class="brand-content" v-if="index !== infoData.jieList.length - 1">{{ item.jieName }}</view>
  16. <view class="brand-content" v-if="index === infoData.jieList.length - 1">{{ item.jieName }}</view>
  17. </view>
  18. </view>
  19. </view>
  20. <!-- <uni-button style="margin-top: 200px;display: block;" @click="goKaoshi">goKaoshi</uni-button>
  21. -->
  22. <!-- <uni-button @click="handleCheckCatalogue">go catalogue</uni-button>
  23. <uni-button @click="goKaoshi">goKaoshi</uni-button>
  24. <!-- 蛋 -->
  25. <egg-dialog ref="eggDialogRef" @eggBtn="eggBtn"></egg-dialog>
  26. <catalogue ref="catalogueRef" :nianji="routeParams.nianji" :xueqi="routeParams.xueqi"
  27. @change-zhang="handleChangeZhang"></catalogue>
  28. <CustomTabBar></CustomTabBar>
  29. </view>
  30. </template>
  31. <script setup>
  32. import {
  33. userZhangFirstInfo,
  34. getCommonZhangFirstInfo,
  35. userZhangInfo,
  36. userLocate,
  37. getCommonZhangInfo
  38. } from "@/api/learnPlan.js"
  39. import {
  40. reactive,
  41. ref,
  42. getCurrentInstance,
  43. onMounted
  44. } from "vue";
  45. import {
  46. onLoad,
  47. } from '@dcloudio/uni-app';
  48. import catalogue from "@/components/catalogue/catalogue.vue";
  49. import CustomTabBar from '@/components/custom-tabbar/custom-tabbar.vue';
  50. import {
  51. getAuth
  52. } from '@/utils/auth.js';
  53. import {
  54. useTabBarHistory
  55. } from '@/utils/emitEvents.js';
  56. import eggDialog from './eggDialog.vue'
  57. import { toast } from "../../utils/common";
  58. import cacheManager from "../../utils/cacheManager.js";
  59. const eggDialogRef = ref(null);
  60. const catalogueRef = ref(null);
  61. let gradeTerm = ref('');
  62. const selectZhang = ref(null);
  63. let infoData = reactive({
  64. jieList: [],
  65. haveFlag: '',
  66. nianji: '',
  67. number: '',
  68. xueqi: '',
  69. zhangId: '',
  70. zhangName: '',
  71. numberStr: '',
  72. });
  73. // 来自单元测试的路由参数缓存
  74. const gradeMapping = {
  75. 1: '一年级',
  76. 2: '二年级',
  77. 3: '三年级',
  78. 4: '四年级',
  79. 5: '五年级',
  80. 6: '六年级'
  81. };
  82. const termMapping = {
  83. 1: '上',
  84. 2: '下'
  85. };
  86. const routeParams = ref(null);
  87. onLoad((options) => {
  88. // appContext.config.globalProperties.$state
  89. // const state = appContext.config.globalProperties.$state;
  90. console.log(options)
  91. console.log(cacheManager);
  92. // 获取路由参数
  93. routeParams.value = options;
  94. if (getAuth()) {
  95. // 已登录
  96. // 选择年级进入调用此接口
  97. if (options.flag == 'selectGrades') {
  98. getZhangFirst()
  99. } else {
  100. getZhangInfo()
  101. }
  102. // 设置全局变量
  103. // 蛋
  104. // eggDialogRef.value.eggShow();
  105. } else {
  106. if (options.flag == 'selectGrades') {
  107. getCommonZhangFirst()
  108. } else {
  109. getCommonZhang();
  110. }
  111. // 未登录
  112. }
  113. })
  114. function getCommonZhang(data) {
  115. let req = data ? {
  116. nianji: selectZhang.value.nianji,
  117. xueqi: selectZhang.value.xueqi,
  118. zhangId: selectZhang.value.zhangId,
  119. } : {
  120. nianji: routeParams.value.nianji,
  121. xueqi: routeParams.value.xueqi,
  122. zhangId: routeParams.value.zhangId,
  123. };
  124. getCommonZhangInfo(req).then(res => {
  125. infoData.jieList = res.data.jieList
  126. infoData.haveFlag = res.data.haveFlag
  127. infoData.nianji = res.data.nianji
  128. infoData.number = res.data.number
  129. infoData.numberStr = res.data.numberStr
  130. infoData.xueqi = res.data.xueqi
  131. infoData.zhangId = res.data.zhangId
  132. infoData.zhangName = res.data.zhangName
  133. gradeTerm.value = translateData(res.data);
  134. useTabBarHistory().setTabBarStorage({nianji:res.data.nianji,zhangId:res.data.zhangId,xueqi:res.data.xueqi})
  135. cacheManager.set("zhangJieCacheInfo",res.data)
  136. })
  137. }
  138. function recordZhangJie() {
  139. let req = {
  140. nianji: routeParams.value.nianji,
  141. userId: JSON.parse(getAuth()).userId,
  142. zhangId: infoData.zhangId,
  143. xueqi: routeParams.value.xueqi,
  144. }
  145. userLocate(req).then(res => {
  146. })
  147. }
  148. function getCommonZhangFirst() {
  149. let req = {
  150. nianji: routeParams.value.nianji,
  151. xueqi: routeParams.value.xueqi,
  152. }
  153. getCommonZhangFirstInfo(req).then(res => {
  154. infoData.jieList = res.data.jieList
  155. infoData.haveFlag = res.data.haveFlag
  156. infoData.nianji = res.data.nianji
  157. infoData.number = res.data.number
  158. infoData.numberStr = res.data.numberStr
  159. infoData.xueqi = res.data.xueqi
  160. infoData.zhangId = res.data.zhangId
  161. infoData.zhangName = res.data.zhangName
  162. gradeTerm.value = translateData(res.data);
  163. useTabBarHistory().setTabBarStorage({nianji:res.data.nianji,zhangId:res.data.zhangId,xueqi:res.data.xueqi})
  164. cacheManager.set("zhangJieCacheInfo",res.data)
  165. })
  166. }
  167. function getZhangFirst() {
  168. let req = {
  169. nianji: routeParams.value.nianji,
  170. xueqi: routeParams.value.xueqi,
  171. }
  172. userZhangFirstInfo(req).then(res => {
  173. infoData.jieList = res.data.jieList
  174. infoData.haveFlag = res.data.haveFlag
  175. infoData.nianji = res.data.nianji
  176. infoData.number = res.data.number
  177. infoData.numberStr = res.data.numberStr
  178. infoData.xueqi = res.data.xueqi
  179. infoData.zhangId = res.data.zhangId
  180. infoData.zhangName = res.data.zhangName
  181. gradeTerm.value = translateData(res.data);
  182. recordZhangJie()
  183. useTabBarHistory().setTabBarStorage({nianji:res.data.nianji,zhangId:res.data.zhangId,xueqi:res.data.xueqi})
  184. })
  185. }
  186. function getZhangInfo(data) {
  187. let req = data ? {
  188. nianji: selectZhang.value.nianji,
  189. xueqi: selectZhang.value.xueqi,
  190. zhangId: selectZhang.value.zhangId,
  191. } : {
  192. nianji: routeParams.value.nianji,
  193. xueqi: routeParams.value.xueqi,
  194. zhangId: routeParams.value.zhangId,
  195. };
  196. userZhangInfo(req).then(res => {
  197. infoData.jieList = res.data.jieList
  198. infoData.haveFlag = res.data.haveFlag
  199. infoData.nianji = res.data.nianji
  200. infoData.number = res.data.number
  201. infoData.numberStr = res.data.numberStr
  202. infoData.xueqi = res.data.xueqi
  203. infoData.zhangId = res.data.zhangId
  204. infoData.zhangName = res.data.zhangName
  205. gradeTerm.value = translateData(res.data);
  206. recordZhangJie()
  207. useTabBarHistory().setTabBarStorage({nianji:res.data.nianji,zhangId:res.data.zhangId,xueqi:res.data.xueqi})
  208. })
  209. }
  210. function translateData(data) {
  211. return gradeMapping[data.nianji] + termMapping[data.xueqi]
  212. }
  213. function handleChangeZhang(data) {
  214. console.log("章", data);
  215. selectZhang.value = data;
  216. getZhangInfo(true)
  217. }
  218. function goKaoshi(data) {
  219. let zhangId = selectZhang.value ? selectZhang.value.zhangId : infoData.zhangId;
  220. let nianji = routeParams.value.nianji;
  221. let xueqi = routeParams.value.xueqi;
  222. uni.navigateTo({
  223. url: `/pages/unitTest/index?jieId=${data.jieId}&zhangId=${zhangId}&nianji=${nianji}&xueqi=${xueqi}`
  224. })
  225. }
  226. function goLookShipin(data) {
  227. data.progressMarkers = [{
  228. offset: 30,
  229. isCustomized: true,
  230. coverUrl: 'https://alivc-demo-vod.aliyuncs.com/image/cover/9A3F562E595E4764AD1DD546FA52C6E5-6-2.png',
  231. title: '变式1',
  232. time: '00:00:30',
  233. describe: 'test string',
  234. }, {
  235. offset: 120,
  236. isCustomized: true,
  237. coverUrl: 'https://alivc-demo-vod.aliyuncs.com/image/cover/1E7F402241CD4C0F94AD2BBB5CCC3EC7-6-2.png',
  238. title: '变式2',
  239. time: '00:02:00',
  240. describe: 'test string',
  241. }, {
  242. offset: 300,
  243. isCustomized: true,
  244. coverUrl: 'https://alivc-demo-vod.aliyuncs.com/image/cover/553AEA01161342C8A2B1756E83B69B5B-6-2.png',
  245. title: '变式3',
  246. time: '00:05:00',
  247. describe: 'test string',
  248. }]
  249. data.zhangId = infoData.zhangId
  250. data.nianji = infoData.nianji
  251. data.xueqi = infoData.xueqi
  252. const pageData = {
  253. // videoId:data.videoId,
  254. videoId: 'b997f16cb9cb474cb93526cff77d8801',
  255. progressMarkers: [{
  256. offset: 30,
  257. isCustomized: true,
  258. coverUrl: 'https://alivc-demo-vod.aliyuncs.com/image/cover/9A3F562E595E4764AD1DD546FA52C6E5-6-2.png',
  259. title: 'test title',
  260. describe: 'test string',
  261. }, {
  262. offset: 150,
  263. isCustomized: true,
  264. coverUrl: 'https://alivc-demo-vod.aliyuncs.com/image/cover/1E7F402241CD4C0F94AD2BBB5CCC3EC7-6-2.png',
  265. title: 'test title',
  266. describe: 'test string',
  267. }, {
  268. offset: 250,
  269. isCustomized: true,
  270. coverUrl: 'https://alivc-demo-vod.aliyuncs.com/image/cover/553AEA01161342C8A2B1756E83B69B5B-6-2.png',
  271. title: 'test title',
  272. describe: 'test string',
  273. }, {
  274. offset: 550,
  275. isCustomized: true,
  276. coverUrl: 'https://alivc-demo-vod.aliyuncs.com/image/cover/553AEA01161342C8A2B1756E83B69B5B-6-2.png',
  277. title: 'test title',
  278. describe: 'test string',
  279. }, {
  280. offset: 320,
  281. isCustomized: true,
  282. coverUrl: 'https://alivc-demo-vod.aliyuncs.com/image/cover/553AEA01161342C8A2B1756E83B69B5B-6-2.png',
  283. title: 'test title',
  284. describe: 'test string',
  285. }, {
  286. offset: 650,
  287. isCustomized: true,
  288. coverUrl: 'https://alivc-demo-vod.aliyuncs.com/image/cover/553AEA01161342C8A2B1756E83B69B5B-6-2.png',
  289. title: 'test title',
  290. describe: 'test string',
  291. }],
  292. }
  293. uni.navigateTo({
  294. //url: '/pages/study/lookShipin?studyData=' + JSON.stringify(pageData)
  295. url: '/pages/study/lookShipin?studyData=' + JSON.stringify(data)
  296. })
  297. }
  298. function listClick(data,index) {
  299. if (!getAuth()) {
  300. toast("当前为游客模式请登录!")
  301. uni.redirectTo({
  302. url: '/pages/login/index'
  303. })
  304. return;
  305. }
  306. if(index !=0&&data.jieId!=13){
  307. toast("付费章节!")
  308. return false
  309. }
  310. if(index ==infoData.jieList.length-1){
  311. // 最后一项
  312. goKaoshi(data)
  313. }else{
  314. goLookShipin(data)
  315. }
  316. }
  317. function handleCheckCatalogue() {
  318. catalogueRef.value.showPopup();
  319. }
  320. function clickGradeTerm() {
  321. uni.navigateTo({
  322. url: `/pages/selectGradesTerms/index?&nianji=${routeParams.value.nianji}&xueqi=${routeParams.value.xueqi}`,
  323. })
  324. }
  325. function eggBtn() {
  326. console.log('点击:开启提分之旅');
  327. }
  328. </script>
  329. <style>
  330. </style>