index.vue 11 KB

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