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 319156da..e3cc651a 100644
Binary files a/certificate/ios/jiaixuedev.mobileprovision and b/certificate/ios/jiaixuedev.mobileprovision differ
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 @@
+
+
+
+
+ {{subject_type_text}}
+
+
+ 5分
+
+
+
+
+
+
+
+
+
+ {{subject_data.qnsContent}}
+
+
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+ {{props.analysisVo.itemContent}}
+
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+ {{subject_type_text}}
+
+
+ 5分
+
+
+
+
+
+
+
+
+
+ {{subject_data.qnsContent}}
+
+
+
+
+
+ 确定
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+ 这里是练习名称
+
+
+
+
+
+
+ 答题进度 2/10
+
+
+ 剩余时间
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+ {{paperData.papersName}}
+
+
+
+
+
+
+ 答题进度 {{questionNumber + 1}}/{{topicList.length}}
+
+
+ 剩余时间
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 答题卡
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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 00000000..ca49f010
Binary files /dev/null and b/src/static/images/common/primary.png differ
diff --git a/src/static/images/examination/sheet.png b/src/static/images/examination/sheet.png
new file mode 100644
index 00000000..04168bb2
Binary files /dev/null and b/src/static/images/examination/sheet.png differ
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 00000000..06ef9097
Binary files /dev/null and b/src/static/images/testingHall/testing.png differ
diff --git a/src/uni_modules/uv-count-down/changelog.md b/src/uni_modules/uv-count-down/changelog.md
new file mode 100644
index 00000000..44392c2c
--- /dev/null
+++ b/src/uni_modules/uv-count-down/changelog.md
@@ -0,0 +1,9 @@
+## 1.0.3(2023-10-13)
+1. unmounted兼容vue3
+## 1.0.2(2023-06-20)
+1. 增加外部样式customStyle参数
+## 1.0.1(2023-05-16)
+1. 优化组件依赖,修改后无需全局引入,组件导入即可使用
+2. 优化部分功能
+## 1.0.0(2023-05-10)
+uv-count-down 倒计时
diff --git a/src/uni_modules/uv-count-down/components/uv-count-down/props.js b/src/uni_modules/uv-count-down/components/uv-count-down/props.js
new file mode 100644
index 00000000..c5b54618
--- /dev/null
+++ b/src/uni_modules/uv-count-down/components/uv-count-down/props.js
@@ -0,0 +1,25 @@
+export default {
+ props: {
+ // 倒计时时长,单位ms
+ time: {
+ type: [String, Number],
+ default: 0
+ },
+ // 时间格式,DD-日,HH-时,mm-分,ss-秒,SSS-毫秒
+ format: {
+ type: String,
+ default: 'HH:mm:ss'
+ },
+ // 是否自动开始倒计时
+ autoStart: {
+ type: Boolean,
+ default: true
+ },
+ // 是否展示毫秒倒计时
+ millisecond: {
+ type: Boolean,
+ default: false
+ },
+ ...uni.$uv?.props?.countDown
+ }
+}
\ No newline at end of file
diff --git a/src/uni_modules/uv-count-down/components/uv-count-down/utils.js b/src/uni_modules/uv-count-down/components/uv-count-down/utils.js
new file mode 100644
index 00000000..8c750050
--- /dev/null
+++ b/src/uni_modules/uv-count-down/components/uv-count-down/utils.js
@@ -0,0 +1,62 @@
+// 补0,如1 -> 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 @@
+
+
+
+ {{ formattedTime }}
+
+
+
+
+
\ 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 @@
+
+
+
+
+
+
+ {{innserPercentage + '%'}}
+
+
+
+
+
+
+
+
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群