From bb91e8a88b3f84ba4868989c0852cc4e7a0ef259 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B0=E5=B2=A9?= Date: Fri, 8 Aug 2025 14:22:50 +0800 Subject: [PATCH] 1 --- .env.development | 4 +- certificate/ios/jiaixuedev.mobileprovision | Bin 12136 -> 12217 bytes src/App.vue | 3 + src/api/examination.js | 16 + src/common/imgSvg.ts | 20 ++ .../examination/characters-subject.vue | 135 +++++++ .../examination/radio-subject-item.vue | 134 +++++++ src/components/examination/radio-subject.vue | 174 +++++++++ src/enum.js | 23 +- src/pages.json | 18 + src/pages/courseDetail/index.vue | 14 +- src/pages/examination/index-old.vue | 201 +++++++++++ src/pages/examination/index.vue | 304 ++++++++++++++++ src/pages/index/index.vue | 3 +- src/pages/messageNotification/index.vue | 2 +- src/pages/practice/index.vue | 8 + src/pages/testingHall/components/content.vue | 4 + src/pages/testingHall/details.vue | 329 ++++++++++++++---- src/pages/testingHall/index.vue | 18 +- src/pages/wrong_question_record/index.vue | 26 +- src/pagesA.json | 19 + src/static/images/common/primary.png | Bin 0 -> 738 bytes src/static/images/examination/sheet.png | Bin 0 -> 845 bytes .../delete_icon.png | Bin .../type_1.png | Bin .../type_2.png | Bin .../type_3.png | Bin .../type_4.png | Bin .../type_5.png | Bin src/static/images/testingHall/testing.png | Bin 0 -> 472 bytes src/uni_modules/uv-count-down/changelog.md | 9 + .../components/uv-count-down/props.js | 25 ++ .../components/uv-count-down/utils.js | 62 ++++ .../uv-count-down/uv-count-down.vue | 169 +++++++++ src/uni_modules/uv-count-down/package.json | 87 +++++ src/uni_modules/uv-count-down/readme.md | 11 + src/uni_modules/uv-line-progress/changelog.md | 7 + .../components/uv-line-progress/props.js | 29 ++ .../uv-line-progress/uv-line-progress.vue | 146 ++++++++ src/uni_modules/uv-line-progress/package.json | 87 +++++ src/uni_modules/uv-line-progress/readme.md | 11 + 41 files changed, 2003 insertions(+), 95 deletions(-) create mode 100644 src/api/examination.js create mode 100644 src/common/imgSvg.ts create mode 100644 src/components/examination/characters-subject.vue create mode 100644 src/components/examination/radio-subject-item.vue create mode 100644 src/components/examination/radio-subject.vue create mode 100644 src/pages/examination/index-old.vue create mode 100644 src/pages/examination/index.vue create mode 100644 src/pages/practice/index.vue create mode 100644 src/static/images/common/primary.png create mode 100644 src/static/images/examination/sheet.png rename src/static/images/{message_notification => messageNotification}/delete_icon.png (100%) rename src/static/images/{message_notification => messageNotification}/type_1.png (100%) rename src/static/images/{message_notification => messageNotification}/type_2.png (100%) rename src/static/images/{message_notification => messageNotification}/type_3.png (100%) rename src/static/images/{message_notification => messageNotification}/type_4.png (100%) rename src/static/images/{message_notification => messageNotification}/type_5.png (100%) create mode 100644 src/static/images/testingHall/testing.png create mode 100644 src/uni_modules/uv-count-down/changelog.md create mode 100644 src/uni_modules/uv-count-down/components/uv-count-down/props.js create mode 100644 src/uni_modules/uv-count-down/components/uv-count-down/utils.js create mode 100644 src/uni_modules/uv-count-down/components/uv-count-down/uv-count-down.vue create mode 100644 src/uni_modules/uv-count-down/package.json create mode 100644 src/uni_modules/uv-count-down/readme.md create mode 100644 src/uni_modules/uv-line-progress/changelog.md create mode 100644 src/uni_modules/uv-line-progress/components/uv-line-progress/props.js create mode 100644 src/uni_modules/uv-line-progress/components/uv-line-progress/uv-line-progress.vue create mode 100644 src/uni_modules/uv-line-progress/package.json create mode 100644 src/uni_modules/uv-line-progress/readme.md diff --git a/.env.development b/.env.development index 8329773c..1306b8df 100644 --- a/.env.development +++ b/.env.development @@ -16,5 +16,5 @@ VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001' # h5专用地址 # 王洋洋 -VITE_APP_BASE_H5_API_Url = 'http://25.64.16.140:9604' -#VITE_APP_BASE_H5_API_Url = 'https://aitstest.jlbank.com.cn:7001' \ No newline at end of file +#VITE_APP_BASE_H5_API_Url = 'http://25.64.16.140:9604' +VITE_APP_BASE_H5_API_Url = 'https://aitstest.jlbank.com.cn:7001' \ No newline at end of file diff --git a/certificate/ios/jiaixuedev.mobileprovision b/certificate/ios/jiaixuedev.mobileprovision index 319156dac72913d28825ded707e076c029584ebf..e3cc651ade3e5ccf8c383502fa797db0727ec96d 100644 GIT binary patch delta 911 zcmaD6w=>?(phd#AN85K^Ms}tJP5R4#LW`If84bA&IN4aW`IwocSQ!kOQ_7mvS-qp`0`wt;V!XVv6g+_ww@P5s?NP5i>WvVAKJ4E)1= z4SYg^GJr}-BC{M#qJj-`{ER}4qg*1(eZvDyqH-s5@CK*5mixNqI8`PYM-?O+<&-7m zhGhr2hZ!Y?`{g88IU2b*WtaQ9IF|dn02Kxs0NJhvej%<#{vn=5fgz4SzMC5sHKx8H zt_DE06@DR}U^Sbgcy)MDojge@NXNM#(b2x0$6^ zo<*upR(M{ZyMbe-tD`|-v6-ijUubzmX+V-ip1YZ=i&0KaNojFXP^Mc&S*2s1QD$YC zOL>Ut<`2?m&|+`$N!c=96H`MoOCvK!0|Ns?*U29kMK&ADF*2%HTBKT-CZ!nbnph^A z=$a%NSn4JjSfuKvnx~qlm>C$RSfr(Hj*$1~)3-1%H?TA@GBS=bP=+TOP8LHk7LmAO z)ywK{J1ycJZ`bInh<&*F^EJ=pYr2!_+YVL!p1fya;`g7$*UC>-D0zwf4rP6_`mf@J z2YUjK%;cWZRy8sB=BmTH84{c`tcr8I6h0|h$;{T(yVHBdO=It&{gV&yX54xbn-FMO zP+aD>kl{;Kq-R868RLh~n^&{#eCAoTM`Xt2t0y;>F8nd?Y47uA*Hn2!`gE&~Ep)rL zhFzq7yLsr_Dra7F%uUs8%gMEAP5*6sZcXj^axkjVWP$S3d#6vh?!UtD z>flQr6Pe?`PDCs1I3IY``^FTBIl6bBiuKKkxpMckitP0{Z_?AHy4OFsqkVfu->fh8 ro37pw3(tHMlXBt5Z_g)!7moa$xx#b~!@5qwPB{BRkWACjC&LP#_Z{qan8eCmX9aA2X8_D}zCkd?7*^ zo$VmoV<*koHcG^zzP+^2{hp_HztOcFy3?i^g`9_*Q9>=Nke;h5;`>{t@&nx5_x%Mw54O->MJF^b7H=^fd}J@pCpX@pTC; z_X!Eg@y&`X@pnndjdC^w%4cNwX8Be{h4>ozh6A++mIsG=c$KB(=2RtyTb4$J2f0Q? zL={9Dg;n`F75ln}I0CJ3H1Q2_tndM`L$WJ;Ljr-ct0B-O<-Vbz<^JX6VL|R;Mp2W` z^LT8o=hfy#b=fwlARR|f)3E#y^V}p~LpRR?OFwUI{j%UPQ$HgEv#Qi6caxmt5^cXw z=YpUx!>q|B((RE>E}l+#Mv*~zsU|5QA;9p=@HcevvP>)pH`6w$OmXw9Fwyq$^0Nrb z40FtMbuP5rzt`dgY`wrY}2LKXAvAFZ})uD;;hwZ7%MTlKz$ z&yBt;;C);)IV8@$sc9Yz^EtOf=08j>?W; Md)<(Hj484m0Iv)>DF6Tf diff --git a/src/App.vue b/src/App.vue index 5162413a..13e584a4 100644 --- a/src/App.vue +++ b/src/App.vue @@ -141,4 +141,7 @@ view { .no-overflow{ overflow: hidden; } +.bold{ + font-weight: bold; +} diff --git a/src/api/examination.js b/src/api/examination.js new file mode 100644 index 00000000..52225e08 --- /dev/null +++ b/src/api/examination.js @@ -0,0 +1,16 @@ +import request from '@/api/request' +import { getToken } from '@/common/common.js' +import { get_base_url } from '@/api/request' +const base_url = '/traexam' + +// 开始考试(试卷信息) +export const startTraExamPapersInfo = (data) => { + return request({ + url: base_url + '/traExamPapers/startTraExamPapersInfo', + method: 'post', + toastErrors: true, + data + }); +}; + + diff --git a/src/common/imgSvg.ts b/src/common/imgSvg.ts new file mode 100644 index 00000000..267ad39f --- /dev/null +++ b/src/common/imgSvg.ts @@ -0,0 +1,20 @@ +export const optionSuccessIcon = (color : string) : string => { + const svgXml = ` + + `.trim(); + + return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgXml)}`; +}; +export const optionErrorIcon = () : string => { + const svgXml = ` + + `.trim(); + return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgXml)}`; +}; + +export const examinationSheetIcon = () : string => { + const svgXml = ` + + `.trim(); + return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svgXml)}`; +}; \ No newline at end of file diff --git a/src/components/examination/characters-subject.vue b/src/components/examination/characters-subject.vue new file mode 100644 index 00000000..ef704eaf --- /dev/null +++ b/src/components/examination/characters-subject.vue @@ -0,0 +1,135 @@ + + + + \ No newline at end of file diff --git a/src/components/examination/radio-subject-item.vue b/src/components/examination/radio-subject-item.vue new file mode 100644 index 00000000..b0fbfcd5 --- /dev/null +++ b/src/components/examination/radio-subject-item.vue @@ -0,0 +1,134 @@ + + + + + \ No newline at end of file diff --git a/src/components/examination/radio-subject.vue b/src/components/examination/radio-subject.vue new file mode 100644 index 00000000..bf882627 --- /dev/null +++ b/src/components/examination/radio-subject.vue @@ -0,0 +1,174 @@ + + + + \ No newline at end of file diff --git a/src/enum.js b/src/enum.js index 86262504..a883e2f6 100644 --- a/src/enum.js +++ b/src/enum.js @@ -3,7 +3,8 @@ export const Max_Upload_Document_Size = 102400 // 最大文档上传限制 export const TextareaInputLimitCharacter = 160 // 全局多行文本输入框限制字数 // 公共tab页的图片 export const LineBg = - "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAABL0lEQVQ4T6XSv0uCURTG8e9jgpRNDS1BU1sELUFLQVM1tgQFtcR7A8m1LQqaLGhOkQKH/o5aKiiHlgiE0K1oCYLAMk9ov/RF8e313u2ew4dzzzmi2+NsA9gH3hCr6srzbAJxDkS/nbvwYNJilMkDow1FXYUHneWAlV/MqN3ZcKCzHWDb164MGa3/H/Qshdj0YbdUmORIL8HBNRsgShZjoQkznvioY/e19wCgCccSsAcM+bBnjHmyuvx5bw8mrJ93FoEkYrzFej0g5kjrpjH2BTrro8oIYhgYQ0xhTCPibfb0ggjLHKrojwvPEogDIBZgycsYKQrscqpKq3zh7BXo7YBVgRMibLWqqvnLzh6BwTZgESNHD8edoL+hOJupT9CII0oYJcQ14oy0CgHa0JTyCeBLVNeWygE5AAAAAElFTkSuQmCC"; + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAABL0lEQVQ4T6XSv0uCURTG8e9jgpRNDS1BU1sELUFLQVM1tgQFtcR7A8m1LQqaLGhOkQKH/o5aKiiHlgiE0K1oCYLAMk9ov/RF8e313u2ew4dzzzmi2+NsA9gH3hCr6srzbAJxDkS/nbvwYNJilMkDow1FXYUHneWAlV/MqN3ZcKCzHWDb164MGa3/H/Qshdj0YbdUmORIL8HBNRsgShZjoQkznvioY/e19wCgCccSsAcM+bBnjHmyuvx5bw8mrJ93FoEkYrzFej0g5kjrpjH2BTrro8oIYhgYQ0xhTCPibfb0ggjLHKrojwvPEogDIBZgycsYKQrscqpKq3zh7BXo7YBVgRMibLWqqvnLzh6BwTZgESNHD8edoL+hOJupT9CII0oYJcQ14oy0CgHa0JTyCeBLVNeWygE5AAAAAElFTkSuQmCC"; +// 性别 export const GENDER = [{ value: "m", label: "男性", @@ -12,4 +13,22 @@ export const GENDER = [{ value: "f", label: "女性", } -] // 性别 \ No newline at end of file +] +// 试题题型 +export const SUBJECT_TYPE = [{ + value: "SN", + label: "单选题", + }, + { + value: "MU", + label: "多选题", + }, + { + value: "JD", + label: "判断题", + }, + { + value: "ES", + label: "问答题", + }, +] \ No newline at end of file diff --git a/src/pages.json b/src/pages.json index ea44dae2..fdc554a0 100644 --- a/src/pages.json +++ b/src/pages.json @@ -190,6 +190,24 @@ } } }, + { + "path": "pages/examination/index", + "style": { + "navigationBarTitleText": "考试", + "app-plus": { + "titleNView": false + } + } + }, + { + "path": "pages/practice/index", + "style": { + "navigationBarTitleText": "练习", + "app-plus": { + "titleNView": false + } + } + }, { "path": "pages/course/index", "style": { diff --git a/src/pages/courseDetail/index.vue b/src/pages/courseDetail/index.vue index 673a46ae..e79e3d3f 100644 --- a/src/pages/courseDetail/index.vue +++ b/src/pages/courseDetail/index.vue @@ -73,14 +73,13 @@ 去学习 去练习 - 去考试 + 去考试 - @@ -161,7 +160,15 @@ const swiper_change = (res) => { tabAct.value = res.detail.current } - + // 去考试 + const goto_examination = () => { + // papersId.value = e.papersId + // paperData.value = setPageCache('examination_'+papersId.value) + // if (!papersId.value || !paperData.value) { + // common.navigateBack() + // return + // } + } // const getElementPosition = () => { // return new Promise((resolve) => { // uni.createSelectorQuery() @@ -181,6 +188,7 @@ tabAct.value = 2 }) }) + onLoad((params) => { crsNum.value = params.crsNum; }); diff --git a/src/pages/examination/index-old.vue b/src/pages/examination/index-old.vue new file mode 100644 index 00000000..335e4571 --- /dev/null +++ b/src/pages/examination/index-old.vue @@ -0,0 +1,201 @@ + + + + + \ No newline at end of file diff --git a/src/pages/examination/index.vue b/src/pages/examination/index.vue new file mode 100644 index 00000000..7f12a3ad --- /dev/null +++ b/src/pages/examination/index.vue @@ -0,0 +1,304 @@ + + + + + \ No newline at end of file diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index 31321cdf..58edb5d9 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -88,7 +88,8 @@ AI问答 - + + AI陪练 diff --git a/src/pages/messageNotification/index.vue b/src/pages/messageNotification/index.vue index bf68bb5b..7cc98cf3 100644 --- a/src/pages/messageNotification/index.vue +++ b/src/pages/messageNotification/index.vue @@ -6,7 +6,7 @@ 消息 - + diff --git a/src/pages/practice/index.vue b/src/pages/practice/index.vue new file mode 100644 index 00000000..02409e35 --- /dev/null +++ b/src/pages/practice/index.vue @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/src/pages/testingHall/components/content.vue b/src/pages/testingHall/components/content.vue index 3ef186e9..a428be7a 100644 --- a/src/pages/testingHall/components/content.vue +++ b/src/pages/testingHall/components/content.vue @@ -76,6 +76,7 @@ } const getData = (from = '') => { + console.log('getDatagetDatagetDatagetDatagetDatagetDatagetData'); if (from == 'first') { if (total.value !== -1) return; status.value = 'loading' @@ -100,8 +101,11 @@ params.examStat = 'N' } queryTraExamPapersPage(params).then(res => { + console.log('resresresresres', res); total.value = res.total data_list.push(...res.body) + }).catch(res => { + console.log('谢谢谢谢谢谢', res); }).finally(() => { if (data_list.length >= total.value) { status.value = 'nomore' diff --git a/src/pages/testingHall/details.vue b/src/pages/testingHall/details.vue index 7ab30a19..d3c75ac6 100644 --- a/src/pages/testingHall/details.vue +++ b/src/pages/testingHall/details.vue @@ -7,10 +7,10 @@ 考试详情 + 已完成 - {{detailData.papersName}}萨达萨达萨达萨达萨达阿斯顿萨达萨达萨达 + {{detailData.papersName}} - 已完成 起止时间: - - 试卷信息 + + + + 试卷信息 + - 试卷总分:{{detailData.totalGrade}}分 + 考试时长:{{detailData.totalGrade}}分钟 - - 通过分数:{{detailData.passGrade}}分 - - - 考试次数:不限制 - - - 试卷类型:随机试卷 - - - - 试卷结构 - - - - - 类型 + + + + + {{detailData.passGrade}} + + 试卷总分 + + + + + {{detailData.passGrade}} + + + + 通过分数 + + + + + 不限制 + + + 通过次数 + + + + + 随机 + + + 试卷类型 + + + + + + + + 题型 + + 数量 @@ -59,6 +87,7 @@ 判断题 + {{detailData.judgeNumber}} @@ -66,10 +95,11 @@ {{detailData.judgeGrade}} - + 单选题 + {{detailData.singleNumber}} @@ -81,6 +111,7 @@ 多选题 + {{detailData.multiNumber}} @@ -88,10 +119,11 @@ {{detailData.multiGrade}} - + 问答题 + {{detailData.essayNumber}} @@ -103,6 +135,7 @@ 总计 + 20 @@ -116,8 +149,7 @@ 发布评价 + :hairline="false" @click="goto_examination()">开始考试 @@ -131,6 +163,12 @@ import { reactive } from 'vue' + import { + startTraExamPapersInfo + } from '@/api/examination.js' + + import common from '@/common/common'; + import {setPageCache, getPageCache} from '@/common/common'; const detailData = reactive({ papersId: '', papersName: '', @@ -140,14 +178,30 @@ planPersionNumber: '', }) const customStyle = { - borderRadius: '40rpx', //圆角 - backgroundColor: 'rgb(12, 123, 245)', + backgroundColor: '#0066FF', border: '1px solid rgb(12, 123, 245)', } + const goto_examination = async () => { + common.loading() + startTraExamPapersInfo({ + examId : "1" + }).then(res => { + setPageCache('examination', res.body) + common.navigateTo('/pages/examination/index') + }).finally(() => { + common.hideLoading() + }) + // papersId.value = e.papersId + // paperData.value = setPageCache('examination_'+papersId.value) + // if (!papersId.value || !paperData.value) { + // common.navigateBack() + // return + // } + } onLoad((e) => { - console.log(e); + const testing_hall_details = getPageCache('testing_hall_details') Object.assign(detailData, { - ...e + ...testing_hall_details }) }) @@ -156,30 +210,89 @@ .fixed_button_div { position: fixed; bottom: 30rpx; - width: 80vw; + width: calc(100vw - 60rpx); + } + + .title-table { + display: flex; + align-items: center; + justify-content: space-around; + + background-color: #F4F6F9; + border-radius: 16rpx; + padding: 28rpx 28rpx 26rpx 28rpx; + margin: 32rpx 0 48rpx 0; + + .title-table-item { + // background-color: red; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + height: 96rpx; + } + + .text_1 { + font-family: PingFangTC; + font-weight: 400; + font-size: 26rpx; + color: #666666; + } + + .text_2 { + font-family: Arial, Arial; + font-weight: normal; + font-size: 34rpx; + color: #333333; + font-weight: 600; + } + + .text_3 {} } .paper_div { width: 100%; min-height: 100%; - background-color: rgb(130, 142, 244); flex: 1; .paper { // width: 100%; + background-color: red; height: 100%; - margin: 24rpx 24rpx 0 24rpx; - background-color: #fff; + margin: 24rpx 30rpx 0 30rpx; border-radius: 20rpx; padding: 16rpx; + background-color: #FFFFFF; + // /* 顶部100px区域设置渐变 */ + background-image: linear-gradient(to bottom, #EBF2FE, #FFFFFF); + // /* 只显示顶部100px的渐变 */ + background-size: 100% 100px; + background-repeat: no-repeat; + box-shadow: 0 23rpx 38rpx 0px rgba(0, 0, 0, 0.06); + border: 2rpx solid #fff; } - .title { - font-size: 30rpx; - color: rgb(0, 0, 0); - font-weight: 600; - height: 70rpx; - line-height: 70rpx; + .paper_title_div { + display: flex; + align-items: center; + + .img { + height: 32rpx; + } + + .title { + font-weight: 600; + height: 70rpx; + line-height: 70rpx; + font-family: PingFangTC; + font-weight: 600; + font-size: 30rpx; + color: #333333; + font-style: normal; + margin-left: 12rpx; + + + } } .title-note { @@ -197,18 +310,42 @@ justify-content: space-between; padding: 20rpx 0 80rpx 0; + .table_th { + flex: 1; + display: flex; + background-color: #F4F6F9; + padding: 0 20rpx; + } + + .table_tr_dark { + background-color: #FAFAFA; + } + + .table_th>.table_td { + color: #333333; + font-weight: 600; + } + .table_tr { flex: 1; display: flex; + padding: 0 20rpx; } .table_td { padding: 14rpx 0; flex: 1; - display: flex; - align-items: center; - justify-content: center; + font-family: PingFangSC; + font-size: 30rpx; + line-height: 30rpx; + text-align: center; } + + .table_tr>.table_td { + color: #666666; + font-weight: 400; + } + } } @@ -218,17 +355,55 @@ align-items: center; padding-top: var(--status-bar-height); overflow: hidden; + } + + .body-title { + background-color: #337FFF; + width: 100%; + position: relative; + text-align: center; + height: 140rpx; + line-height: 140rpx; + font-family: PingFangSC; + font-weight: 500; + font-size: 38rpx; + color: #FFFFFF; + font-style: normal; + } .detail_div { + margin-top: -20rpx; + z-index: 2; width: 100%; padding: 48rpx 40rpx 20rpx 40rpx; - - .title_div{ + background-color: #FFFFFF; + border-radius: 16rpx 16rpx 0 0; + position: relative; + overflow: hidden; + + .subscript { + position: absolute; + top: 0; + right: 0; + width: 102rpx; + height: 42rpx; + font-family: PingFangSC; + font-weight: 400; + font-size: 24rpx; + line-height: 42rpx; + display: flex; + align-items: center; + justify-content: center; + border-radius: 0 0 0 28rpx; + } + + .title_div { display: flex; justify-content: space-between; flex: 1; + .title { font-family: PingFangSC; font-weight: 600; @@ -238,21 +413,11 @@ text-align: left; font-style: normal; } - .subscript { - width: 102rpx; - height: 42rpx; - border-radius: 10rpx; - font-family: PingFangSC; - font-weight: 400; - font-size: 24rpx; - line-height: 42rpx; - display: flex; - align-items: center; - justify-content: center; - } - + + + } - + .time { font-size: 24rpx; color: #999999; @@ -283,29 +448,65 @@ color: #666666; } } + .incomplete { - + // 进行中 .subscript { color: #FFFFFF; background-color: #EF5705; } - + .color_class { color: #D70C18; } } - + .completed { - + // 已完成 .subscript { color: #FFFFFF; background-color: #33C583; } - + .color_class { color: #0066FF; } } + + .back_div { + position: absolute; + left: 26rpx; + height: 100%; + top: 0; + display: flex; + align-items: center; + + .back-icon { + position: relative; + width: 50rpx; + height: 50rpx; + cursor: pointer; + display: flex; + align-items: center; + } + + .back-icon::before, + .back-icon::after { + content: ''; + position: absolute; + transition: all 0.3s ease; + } + + .back-icon::after { + top: 25%; + left: 25%; + width: 40%; + height: 40%; + border-top: 4rpx solid #fff; + border-left: 4rpx solid #fff; + transform: rotate(-45deg); + } + } \ No newline at end of file diff --git a/src/pages/testingHall/index.vue b/src/pages/testingHall/index.vue index 5a2d7a2c..8b2453cd 100644 --- a/src/pages/testingHall/index.vue +++ b/src/pages/testingHall/index.vue @@ -47,6 +47,7 @@ import { onLoad } from '@dcloudio/uni-app' + import {setPageCache} from '@/common/common'; import common from '@/common/common'; const customStyle = { backgroundColor: "#F1F5FA", @@ -96,21 +97,16 @@ console.log('搜索', searchText.value); } const gotoDetails = (item) => { - - const detailData = { - ...item - }; - const params = new URLSearchParams(); - for (const key in detailData) { - params.append(key, detailData[key]); - } - const urlParams = params.toString(); - common.navigateTo(`/pages/testingHall/details?${urlParams}`); - + setPageCache('testing_hall_details', item) + common.navigateTo('/pages/testingHall/details'); } onMounted(() => { + triggered.value = true watch(tabAct, (newValue, oldValue) => { + console.log('resresresresresxxxxxxxxxx', contentRefs.value); + console.log('resresresresresxxxxxxxxxx', newValue); + console.log('resresresresresxxxxxxxxxx', contentRefs.value[newValue]); typeof contentRefs.value[newValue]?.getData === 'function' && contentRefs.value[newValue] ?.getData('first') }, { diff --git a/src/pages/wrong_question_record/index.vue b/src/pages/wrong_question_record/index.vue index 017ffc7f..a6604e73 100644 --- a/src/pages/wrong_question_record/index.vue +++ b/src/pages/wrong_question_record/index.vue @@ -39,7 +39,7 @@ computed, nextTick, onMounted, - watch + watch } from 'vue'; import { LineBg @@ -51,7 +51,7 @@ } from '@/api/courseDetail.js'; import common from '@/common/common'; const statusBarHeight = uni.getSystemInfoSync().statusBarHeight; - + const courseRef = ref(null); const correctRef = ref(null); const tabAct = ref(0); @@ -60,7 +60,7 @@ }, { name: '已订正' }]); - + const tabChange = (item) => { tabAct.value = item.index; }; @@ -68,13 +68,15 @@ tabAct.value = item.detail.current; }; onMounted(() => { - watch(tabAct, (newValue, oldValue) => { - if(newValue === 0) { - courseRef.value?.getData('first') - } else if(newValue === 1) { - correctRef.value?.getData('first') - } - }, { immediate: true }) // 这里的immediate会在onMounted之后执行 + watch(tabAct, (newValue, oldValue) => { + if (newValue === 0) { + courseRef.value?.getData('first') + } else if (newValue === 1) { + correctRef.value?.getData('first') + } + }, { + immediate: true + }) // 这里的immediate会在onMounted之后执行 }) @@ -82,6 +84,7 @@ $bg-margin-left: 50rpx; .my_tabs { + // 解决这个圆角的图片,开穿透 :deep(.uv-tabs__wrapper__nav__line) { height: 26rpx !important; @@ -90,7 +93,7 @@ background-repeat: no-repeat !important; } } - + .swiper { height: calc(100vh - var(--status-bar-height) - 54rpx - 88rpx - 20rpx - 10rpx); } @@ -134,6 +137,7 @@ align-items: center; justify-content: center; background-color: #fff; + .back_div { position: absolute; left: 20rpx; diff --git a/src/pagesA.json b/src/pagesA.json index 9dd07c3e..9b2725d7 100644 --- a/src/pagesA.json +++ b/src/pagesA.json @@ -125,6 +125,25 @@ "titleNView": false } } + }, + { + "path": "pages/examination/index", + "style": { + "navigationBarTitleText": "考试", + "app-plus": { + "titleNView": false + } + } + }, + { + "path": "pages/practice/index", + "style": { + "navigationBarTitleText": "练习", + "app-plus": { + "titleNView": false + } + } } + ] } \ No newline at end of file diff --git a/src/static/images/common/primary.png b/src/static/images/common/primary.png new file mode 100644 index 0000000000000000000000000000000000000000..ca49f0100f0e45f467682c7e6b504127738444c6 GIT binary patch literal 738 zcmV<80v-K{P)uM806o9|;kd~rSRLllZDP9qk+EP@CMWv`T6GWw`w0$0Zosn@&t0tSd?9N`Yvww5W zknhVmXJ$7m4E&OT^OFVS3K+P7+yVnHfII|q3*;6UxPjaP122HQ3*;8aEiiBcxdm3P z01Ca0aKc1>`mn851sHgE2K+!+^O3MR0?y%QKfITO)etZb?=7MK0?OgNB=lQ=8{R3Q zzXJT>mrCfTfN=Oy3H=ig4{s#wpu}vIXIH-j)C_Md^hZDf_;3M*zJQWbpCe|iF^S;A z1Q>WY0gh3!UMt|T#S+5%3pj_LebsL$xs+T&Vt79R^YAn7Bb00;lh6RXTR=Iy!Xb66}02lm>TKLFBuGc1^LHKe3zVPSN3MJ#p5*mhIEFc`-a%&Em%8h6VEx<1p zFw$!X$B`iKQF1FdwfUSgwz@CSMR^ihLuoBE&;L9ZvT8B?7z)E-wJYOK86Y%K;*qQJY z&F)_kIs@N~0DDf@LVn*3b_%{Z0k$2s|9?5bV@M_s>CgKCiBx0(iNyA1*}+%9FIX+{ ULB1}PuK)l507*qoM6N<$f=d5L@c;k- literal 0 HcmV?d00001 diff --git a/src/static/images/examination/sheet.png b/src/static/images/examination/sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..04168bb21ee7b3274ac6b90bc364bf9a90b89647 GIT binary patch literal 845 zcmV-T1G4;yP)3Nn+-CgFsj1)No-^ls@40i%xpVFqBTi!@Za)UV03I*_Sdv|_+0xv@-)B*6P z4#A%MAGEUyfYZQ{o)}oC<{99qZ%_z;oxoKO!*}2y@C4B3F3~h#3vd#c>``nNaLxTa z1i*D*n=|+ku%=5ESLpH-Sn2$K1K8dafDgc&!r-64V&HR609XjTadiC%%xwa|Oh8Z1 zB0T`s^~CsGO`jJijDIcK;adW$frpNKfu*CMV0)d&wwFJ zWGf<)ErC|FAA(Q=z^XwjhiyN=HbiVksEj}>TVhIt^s>}_52x>XSy|eH%k)teD4xR+ z;jT)4(nRQzCkxE&Qnt3&W8^bnMTGHn@{fL;T+TX; z-nsn!z{REjXxv>uZvQ{fJz#^+5IZtcGrfA4-14lazIcVs3~UA7h7_*zfSga;-byQH z_r&r~fEuVm+w$XPGzCBmlYnKw^6Z+}F))4s&$H_Vpi?fjGzb8-!umMC0O;ea4O8d8 XAHE4tW@#~W00000NkvXXu0mjf!I*)* literal 0 HcmV?d00001 diff --git a/src/static/images/message_notification/delete_icon.png b/src/static/images/messageNotification/delete_icon.png similarity index 100% rename from src/static/images/message_notification/delete_icon.png rename to src/static/images/messageNotification/delete_icon.png diff --git a/src/static/images/message_notification/type_1.png b/src/static/images/messageNotification/type_1.png similarity index 100% rename from src/static/images/message_notification/type_1.png rename to src/static/images/messageNotification/type_1.png diff --git a/src/static/images/message_notification/type_2.png b/src/static/images/messageNotification/type_2.png similarity index 100% rename from src/static/images/message_notification/type_2.png rename to src/static/images/messageNotification/type_2.png diff --git a/src/static/images/message_notification/type_3.png b/src/static/images/messageNotification/type_3.png similarity index 100% rename from src/static/images/message_notification/type_3.png rename to src/static/images/messageNotification/type_3.png diff --git a/src/static/images/message_notification/type_4.png b/src/static/images/messageNotification/type_4.png similarity index 100% rename from src/static/images/message_notification/type_4.png rename to src/static/images/messageNotification/type_4.png diff --git a/src/static/images/message_notification/type_5.png b/src/static/images/messageNotification/type_5.png similarity index 100% rename from src/static/images/message_notification/type_5.png rename to src/static/images/messageNotification/type_5.png diff --git a/src/static/images/testingHall/testing.png b/src/static/images/testingHall/testing.png new file mode 100644 index 0000000000000000000000000000000000000000..06ef90971c01f16dae6901a4c656d217d9467684 GIT binary patch literal 472 zcmV;}0Vn>6P)Nkl@6%rOWP>3M~3*7&CJ3q<43W#y!YJq{O)@W+>_L;nb#36EtpHi9;XtFeGz)%>&)=`CZwAO> z0v}Lanr4aWq9^6)#gD^&fJ0bmCr_=)K!9Ud{vQDz2`iFm>=mA4u@*FRb)3hZikP7s zn3JbFvUrR$3db#^rGZY(#JrB{Z2`Q&JCr4w5Z+5(4FKrkBzCj~&}LfFH*G zEXpCH+#LUd5MOaop7Q=28&mOxII8CcN_+Zk8 01 +function padZero(num, targetLength = 2) { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} +const SECOND = 1000 +const MINUTE = 60 * SECOND +const HOUR = 60 * MINUTE +const DAY = 24 * HOUR +export function parseTimeData(time) { + const days = Math.floor(time / DAY) + const hours = Math.floor((time % DAY) / HOUR) + const minutes = Math.floor((time % HOUR) / MINUTE) + const seconds = Math.floor((time % MINUTE) / SECOND) + const milliseconds = Math.floor(time % SECOND) + return { + days, + hours, + minutes, + seconds, + milliseconds + } +} +export function parseFormat(format, timeData) { + let { + days, + hours, + minutes, + seconds, + milliseconds + } = timeData + // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去 + if (format.indexOf('DD') === -1) { + hours += days * 24 + } else { + // 对天补0 + format = format.replace('DD', padZero(days)) + } + // 其他同理于DD的格式化处理方式 + if (format.indexOf('HH') === -1) { + minutes += hours * 60 + } else { + format = format.replace('HH', padZero(hours)) + } + if (format.indexOf('mm') === -1) { + seconds += minutes * 60 + } else { + format = format.replace('mm', padZero(minutes)) + } + if (format.indexOf('ss') === -1) { + milliseconds += seconds * 1000 + } else { + format = format.replace('ss', padZero(seconds)) + } + return format.replace('SSS', padZero(milliseconds, 3)) +} +export function isSameSecond(time1, time2) { + return Math.floor(time1 / 1000) === Math.floor(time2 / 1000) +} diff --git a/src/uni_modules/uv-count-down/components/uv-count-down/uv-count-down.vue b/src/uni_modules/uv-count-down/components/uv-count-down/uv-count-down.vue new file mode 100644 index 00000000..a758d310 --- /dev/null +++ b/src/uni_modules/uv-count-down/components/uv-count-down/uv-count-down.vue @@ -0,0 +1,169 @@ + + + \ No newline at end of file diff --git a/src/uni_modules/uv-count-down/package.json b/src/uni_modules/uv-count-down/package.json new file mode 100644 index 00000000..da501f12 --- /dev/null +++ b/src/uni_modules/uv-count-down/package.json @@ -0,0 +1,87 @@ +{ + "id": "uv-count-down", + "displayName": "uv-count-down 倒计时 全面兼容小程序、nvue、vue2、vue3等多端", + "version": "1.0.3", + "description": "该倒计时组件一般使用于某个活动的截止时间上,通过数字的变化,给用户明确的时间感受,提示用户进行某一个行为操作。", + "keywords": [ + "uv-count-down", + "uvui", + "uv-ui", + "countDown", + "倒计时" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [ + "uv-ui-tools" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uv-count-down/readme.md b/src/uni_modules/uv-count-down/readme.md new file mode 100644 index 00000000..0f326a85 --- /dev/null +++ b/src/uni_modules/uv-count-down/readme.md @@ -0,0 +1,11 @@ +## CountDown 倒计时 + +> **组件名:uv-count-down** + +该组件一般使用于某个活动的截止时间上,通过数字的变化,给用户明确的时间感受,提示用户进行某一个行为操作。 + +### 查看文档 + +### [完整示例项目下载 | 关注更多组件](https://ext.dcloud.net.cn/plugin?name=uv-ui) + +#### 如使用过程中有任何问题,或者您对uv-ui有一些好的建议,欢迎加入 uv-ui 交流群:uv-ui官方QQ群 diff --git a/src/uni_modules/uv-line-progress/changelog.md b/src/uni_modules/uv-line-progress/changelog.md new file mode 100644 index 00000000..975acce8 --- /dev/null +++ b/src/uni_modules/uv-line-progress/changelog.md @@ -0,0 +1,7 @@ +## 1.0.2(2023-06-20) +1. 适配height参数携带单位 +## 1.0.1(2023-05-16) +1. 优化组件依赖,修改后无需全局引入,组件导入即可使用 +2. 优化部分功能 +## 1.0.0(2023-05-10) +uv-line-progress 线形进度条 diff --git a/src/uni_modules/uv-line-progress/components/uv-line-progress/props.js b/src/uni_modules/uv-line-progress/components/uv-line-progress/props.js new file mode 100644 index 00000000..23138c7d --- /dev/null +++ b/src/uni_modules/uv-line-progress/components/uv-line-progress/props.js @@ -0,0 +1,29 @@ +export default { + props: { + // 激活部分的颜色 + activeColor: { + type: String, + default: '#19be6b' + }, + inactiveColor: { + type: String, + default: '#ececec' + }, + // 进度百分比,数值 + percentage: { + type: [String, Number], + default: 0 + }, + // 是否在进度条内部显示百分比的值 + showText: { + type: Boolean, + default: true + }, + // 进度条的高度,单位px + height: { + type: [String, Number], + default: 12 + }, + ...uni.$uv?.props?.lineProgress + } +} \ No newline at end of file diff --git a/src/uni_modules/uv-line-progress/components/uv-line-progress/uv-line-progress.vue b/src/uni_modules/uv-line-progress/components/uv-line-progress/uv-line-progress.vue new file mode 100644 index 00000000..229c2aa1 --- /dev/null +++ b/src/uni_modules/uv-line-progress/components/uv-line-progress/uv-line-progress.vue @@ -0,0 +1,146 @@ + + + + + diff --git a/src/uni_modules/uv-line-progress/package.json b/src/uni_modules/uv-line-progress/package.json new file mode 100644 index 00000000..01e550e4 --- /dev/null +++ b/src/uni_modules/uv-line-progress/package.json @@ -0,0 +1,87 @@ +{ + "id": "uv-line-progress", + "displayName": "uv-line-progress 线形进度条 全面兼容小程序、nvue、vue2、vue3等多端", + "version": "1.0.2", + "description": "uv-line-progress 该组件展示操作或任务的当前进度,比如上传文件,是一个线形的进度条。", + "keywords": [ + "uv-line-progress", + "uvui", + "uv-ui", + "progress", + "进度条" +], + "repository": "", + "engines": { + "HBuilderX": "^3.1.0" + }, + "dcloudext": { + "type": "component-vue", + "sale": { + "regular": { + "price": "0.00" + }, + "sourcecode": { + "price": "0.00" + } + }, + "contact": { + "qq": "" + }, + "declaration": { + "ads": "无", + "data": "插件不采集任何数据", + "permissions": "无" + }, + "npmurl": "" + }, + "uni_modules": { + "dependencies": [ + "uv-ui-tools" + ], + "encrypt": [], + "platforms": { + "cloud": { + "tcb": "y", + "aliyun": "y" + }, + "client": { + "Vue": { + "vue2": "y", + "vue3": "y" + }, + "App": { + "app-vue": "y", + "app-nvue": "y" + }, + "H5-mobile": { + "Safari": "y", + "Android Browser": "y", + "微信浏览器(Android)": "y", + "QQ浏览器(Android)": "y" + }, + "H5-pc": { + "Chrome": "y", + "IE": "y", + "Edge": "y", + "Firefox": "y", + "Safari": "y" + }, + "小程序": { + "微信": "y", + "阿里": "y", + "百度": "y", + "字节跳动": "y", + "QQ": "y", + "钉钉": "u", + "快手": "u", + "飞书": "u", + "京东": "u" + }, + "快应用": { + "华为": "u", + "联盟": "u" + } + } + } + } +} \ No newline at end of file diff --git a/src/uni_modules/uv-line-progress/readme.md b/src/uni_modules/uv-line-progress/readme.md new file mode 100644 index 00000000..98e5d495 --- /dev/null +++ b/src/uni_modules/uv-line-progress/readme.md @@ -0,0 +1,11 @@ +## LineProgress 线形进度条 + +> **组件名:uv-line-progress** + +展示操作或任务的当前进度,比如上传文件,是一个线形的进度条。 + +### 查看文档 + +### [完整示例项目下载 | 关注更多组件](https://ext.dcloud.net.cn/plugin?name=uv-ui) + +#### 如使用过程中有任何问题,或者您对uv-ui有一些好的建议,欢迎加入 uv-ui 交流群:uv-ui官方QQ群