Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
thinkApp
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
游洁
thinkApp
Commits
96e8f48e
Commit
96e8f48e
authored
Aug 19, 2022
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改部分内容
parent
2a168bcb
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
145 additions
and
26 deletions
+145
-26
penta.vue
src/components/charts/penta.vue
+11
-1
analysisTest.vue
src/components/index/scoreDetails/analysisTest.vue
+55
-9
examList.vue
src/components/index/workSituation/examList.vue
+22
-6
scoreDetails.vue
src/pages/index/scoreDetails.vue
+56
-9
request.js
src/utils/request.js
+1
-1
No files found.
src/components/charts/penta.vue
View file @
96e8f48e
<
template
>
<
template
>
<view
class=
"charts-box"
>
<view
class=
"charts-box"
>
<qiun-data-charts
type=
"radar"
:opts=
"opts"
:chartData=
"chartData"
:canvas2d=
"true"
<qiun-data-charts
type=
"radar"
:opts=
"opts"
:chartData=
"chartData"
:canvas2d=
"true"
canvasId=
"XLAUeMWrMjRnxVcbmxKOcXWEcyGYvjAY
"
/>
:canvasId=
"canId
"
/>
</view>
</view>
</
template
>
</
template
>
...
@@ -48,6 +48,15 @@
...
@@ -48,6 +48,15 @@
},
},
})
})
let
methods
=
{
let
methods
=
{
randomCoding
(){
var
arr
=
[
'A'
,
'B'
,
'C'
,
'D'
,
'E'
,
'F'
,
'G'
,
'H'
,
'I'
,
'J'
,
'K'
,
'L'
,
'M'
,
'N'
,
'O'
,
'P'
,
'Q'
,
'R'
,
'S'
,
'T'
,
'U'
,
'V'
,
'W'
,
'X'
,
'Y'
,
'Z'
];
var
idvalue
=
''
;
let
n
=
8
;
for
(
let
i
=
0
;
i
<
n
;
i
++
){
idvalue
+=
arr
[
Math
.
floor
(
Math
.
random
()
*
26
)];
}
return
idvalue
;
},
getServerData
()
{
getServerData
()
{
//模拟从服务器获取数据时的延时
//模拟从服务器获取数据时的延时
setTimeout
(()
=>
{
setTimeout
(()
=>
{
...
@@ -88,6 +97,7 @@
...
@@ -88,6 +97,7 @@
},
500
);
},
500
);
}
}
}
}
data
.
canId
=
methods
.
randomCoding
()
onMounted
(()
=>
{
onMounted
(()
=>
{
methods
.
getServerData
()
methods
.
getServerData
()
})
})
...
...
src/components/index/scoreDetails/analysisTest.vue
View file @
96e8f48e
...
@@ -10,13 +10,18 @@
...
@@ -10,13 +10,18 @@
<th
<th
v-for=
"(item, index) in TitleList"
v-for=
"(item, index) in TitleList"
:key=
"index"
:key=
"index"
width=
"200"
><text
style=
"width: 100%;text-align: center;"
>
{{
item
}}
</text></th>
width=
"200"
:style=
"
{'height':t==1?'10.325%':'11.8%'}"
>
<text
style=
"width: 100%;text-align: center;"
>
{{
item
}}
</text></th>
</tr>
</tr>
<tr
class=
"analysisTest-content-right"
>
<tr
class=
"analysisTest-content-right"
>
<scroll-view
scroll-x=
"true"
class=
"flex"
style=
"width:100%;
height: 561.6rpx;
"
>
<scroll-view
scroll-x=
"true"
class=
"flex"
style=
"width:100%;
"
:style=
"
{'height':t==1?'627.6rpx':'561.6rpx'}
">
<view
style=
"height: 100%;display: flex;flex-direction: row;flex-wrap: nowrap;"
>
<view
style=
"height: 100%;display: flex;flex-direction: row;flex-wrap: nowrap;"
>
<td
class=
"analysisTest-td"
style=
"min-width: 56rpx;"
:style=
"
{'min-width':(item.KnowledgePoint.length*20+20)+'rpx'}" v-for="(item,index) in ScoreList" :key="index">
<template
v-for=
"x in groups"
>
<view
class=
"analysisTest-number"
>
{{
item
.
Sort
}}
</view>
<td
class=
"analysisTest-td"
:class=
"
{'groups':t==1}" style="min-width: 56rpx;" :style="{'min-width':(item.KnowledgePoint.length*20+20)+'rpx'}" v-for="(item,index) in x.data" :key="index">
<view
v-if=
"t==1"
style=
"position: relative;"
>
<view
v-if=
"index==0"
style=
"position: absolute;left: 0px;z-index: 2;"
:style=
"
{'width':`${x.w}rpx`}">
{{
x
.
key
}}
</view>
</view>
<view
class=
"analysisTest-number"
>
{{
item
.
Sort
}}
</view>
<view
class=
"analysisTest-difficulty"
>
<view
class=
"analysisTest-difficulty"
>
<template
v-if=
"item.Difficulty == '易'"
><van-icon
name=
"star"
v-for=
"(s,i) in 1"
:key=
"i"
/></
template
>
<template
v-if=
"item.Difficulty == '易'"
><van-icon
name=
"star"
v-for=
"(s,i) in 1"
:key=
"i"
/></
template
>
<
template
v-else-if=
"item.Difficulty == '中'"
><van-icon
name=
"star"
v-for=
"(s,i) in 2"
:key=
"i"
/></
template
>
<
template
v-else-if=
"item.Difficulty == '中'"
><van-icon
name=
"star"
v-for=
"(s,i) in 2"
:key=
"i"
/></
template
>
...
@@ -29,6 +34,7 @@
...
@@ -29,6 +34,7 @@
<view
class=
"analysisTest-TheAverageAcore"
>
{{item.AvgScore.toFixed(1)}}
</view>
<view
class=
"analysisTest-TheAverageAcore"
>
{{item.AvgScore.toFixed(1)}}
</view>
<view
class=
"analysisTest-averageScoringRate"
>
{{(item.AvgScoreRate * 100).toFixed(0)}}%
</view>
<view
class=
"analysisTest-averageScoringRate"
>
{{(item.AvgScoreRate * 100).toFixed(0)}}%
</view>
</td>
</td>
</template>
</view>
</view>
</scroll-view>
</scroll-view>
</tr>
</tr>
...
@@ -52,17 +58,53 @@
...
@@ -52,17 +58,53 @@
export
default
{
export
default
{
props
:
[
"ScoreList"
],
props
:
[
"ScoreList"
],
components
:
{},
components
:
{},
setup
()
{
setup
(
props
)
{
let
data
=
reactive
({
let
data
=
reactive
({
obj
:
{
obj
:
{
Name
:
''
,
Name
:
''
,
Photo
:
''
,
Photo
:
''
,
},
},
t
:
1
,
//t0为普通的考试信息,1为AB卷
showPhone
:
false
,
showPhone
:
false
,
scores
:[],
groups
:[],
showLogin
:
true
,
//多次点击
showLogin
:
true
,
//多次点击
TitleList
:[
'题号'
,
'难度'
,
'知识点'
,
'分值'
,
'得分'
,
'得分率'
,
'平均分'
,
'平均得分率'
]
TitleList
:[
'
分组'
,
'
题号'
,
'难度'
,
'知识点'
,
'分值'
,
'得分'
,
'得分率'
,
'平均分'
,
'平均得分率'
]
});
});
//伪装数据
data
.
scores
=
props
.
ScoreList
data
.
t
=
data
.
scores
[
0
].
GroupName
==
""
?
0
:
1
const
groupBy
=
(
array
,
f
)
=>
{
const
groups
=
{};
array
.
forEach
(
function
(
o
)
{
//注意这里必须是forEach 大写
const
group
=
JSON
.
stringify
(
f
(
o
));
groups
[
group
]
=
groups
[
group
]
||
[];
groups
[
group
].
push
(
o
);
});
let
result
=
[]
Object
.
keys
(
groups
).
map
(
x
=>
{
let
tempReuslt
=
{}
tempReuslt
.
key
=
JSON
.
parse
(
x
)[
0
]
tempReuslt
.
data
=
groups
[
x
]
result
.
push
(
tempReuslt
)
})
return
result
}
if
(
data
.
t
!=
1
){
data
.
TitleList
.
splice
(
0
,
1
)
}
data
.
groups
=
groupBy
(
data
.
scores
,
(
item
)
=>
{
return
[
item
.
GroupName
];
});
data
.
groups
.
forEach
(
x
=>
{
let
w
=
0
x
.
data
.
forEach
(
y
=>
{
w
+=
y
.
KnowledgePoint
.
length
*
20
+
20
})
x
.
w
=
w
})
return
{
return
{
...
toRefs
(
data
),
...
toRefs
(
data
),
};
};
...
@@ -78,8 +120,12 @@
...
@@ -78,8 +120,12 @@
background
:
#FCEEEF
;
background
:
#FCEEEF
;
}
}
.analysisTest-td
view
:last-child
{
.analysisTest-td
view
:last-child
{
height
:
17.4%
;
height
:
17.4%
!important
;
}
}
.analysisTest-td.groups
view
{
height
:
10.325%
;
line-height
:
10.325%
;
}
.analysisTest-td
view
{
.analysisTest-td
view
{
background
:
#F7D8DA
;
background
:
#F7D8DA
;
border-right
:
1px
solid
#F6DDDF
;
border-right
:
1px
solid
#F6DDDF
;
...
@@ -115,7 +161,7 @@
...
@@ -115,7 +161,7 @@
text-align
:
center
;
text-align
:
center
;
}
}
.analysisTest-content-left
th
:last-child
{
.analysisTest-content-left
th
:last-child
{
height
:
17.4%
;
height
:
17.4%
!important
;
}
}
.analysisTest-content-left
{
.analysisTest-content-left
{
width
:
120
rpx
;
width
:
120
rpx
;
...
...
src/components/index/workSituation/examList.vue
View file @
96e8f48e
<
template
>
<
template
>
<view
class=
"examList-box"
>
<view
class=
"examList-box"
>
<view
class=
"examList-import"
@
click=
"goUrlWebview"
>
<view
style=
"display: flex;"
>
<van-icon
name=
"plus"
/>
<view
class=
"examList-import"
@
click=
"goUrlWebview"
>
<text>
导入考试信息
</text>
<van-icon
name=
"plus"
/>
</view>
<text>
导入考试信息
</text>
</view>
<view
class=
"examList-import"
@
click=
"setCensus"
>
<text>
生成分析统计表
</text>
</view>
</view>
<block
v-if=
"dataList && dataList.length>0"
>
<block
v-if=
"dataList && dataList.length>0"
>
<view
style=
"border-radius: 50rpx;background: #ffffff;overflow: hidden;box-shadow: 0px 6px 29px 0px rgba(76, 76, 76, 0.09);margin-bottom: 40rpx;"
<view
style=
"border-radius: 50rpx;background: #ffffff;overflow: hidden;box-shadow: 0px 6px 29px 0px rgba(76, 76, 76, 0.09);margin-bottom: 40rpx;"
class=
"examList activeOne"
v-for=
"(item,index) in dataList"
:key=
"index"
>
class=
"examList activeOne"
v-for=
"(item,index) in dataList"
:key=
"index"
>
...
@@ -163,6 +169,16 @@
...
@@ -163,6 +169,16 @@
break
;
break
;
}
}
},
},
setCensus
(){
//1、调用后台生成接口
uni
.
showLoading
({
title
:
'正在生成中...'
})
setTimeout
(()
=>
{
uni
.
hideLoading
()
},
3000
)
//2、重新调用列表接口请求
},
// 跳web上传
// 跳web上传
goUrlWebview
(){
goUrlWebview
(){
if
(
data
.
platform
==
'windows'
||
data
.
platform
==
'mac'
){
if
(
data
.
platform
==
'windows'
||
data
.
platform
==
'mac'
){
...
@@ -290,7 +306,7 @@
...
@@ -290,7 +306,7 @@
}
}
let
host
=
''
let
host
=
''
if
(
process
.
env
.
NODE_ENV
===
"development"
)
{
if
(
process
.
env
.
NODE_ENV
===
"development"
)
{
host
=
'http
s://jjswapi.oytour.com
/api'
host
=
'http
://192.168.10.11:8082
/api'
}
else
{
}
else
{
host
=
'https://jjswapi.oytour.com/api'
host
=
'https://jjswapi.oytour.com/api'
}
}
...
@@ -581,7 +597,7 @@
...
@@ -581,7 +597,7 @@
margin-left
:
15
rpx
;
margin-left
:
15
rpx
;
}
}
.examList-import
{
.examList-import
{
width
:
2
47
rpx
;
width
:
2
00
rpx
;
border
:
1
rpx
solid
#F2A1A8
;
border
:
1
rpx
solid
#F2A1A8
;
background
:
#FFFFFF
;
background
:
#FFFFFF
;
line-height
:
54
rpx
;
line-height
:
54
rpx
;
...
...
src/pages/index/scoreDetails.vue
View file @
96e8f48e
...
@@ -14,8 +14,9 @@
...
@@ -14,8 +14,9 @@
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1653464014000_713.png"
/>
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1653464014000_713.png"
/>
</view>
</view>
<view
class=
"scoreDetails-header-tetx"
>
<view
class=
"scoreDetails-header-tetx"
>
<view
class=
"scoreDetails-header-name"
>
<view
class=
"scoreDetails-header-name"
style=
"display: flex;align-items: center;"
>
{{
ExamScore
.
StuName
}}
<text>
{{
ExamScore
.
StuName
}}
</text>
<view
class=
"score-shenqing"
@
click=
"queryScore"
>
查分申请
</view>
</view>
</view>
<view
class=
"scoreDetails-header-title"
>
{{
ExamScore
.
ExamName
}}
</view>
<view
class=
"scoreDetails-header-title"
>
{{
ExamScore
.
ExamName
}}
</view>
</view>
</view>
...
@@ -58,13 +59,26 @@
...
@@ -58,13 +59,26 @@
<view>
(共
{{
ExamScore
.
ScoreList
.
length
}}
小题)
</view>
<view>
(共
{{
ExamScore
.
ScoreList
.
length
}}
小题)
</view>
</view>
</view>
<analysisTest
:ScoreList=
"ExamScore.ScoreList"
></analysisTest>
<analysisTest
:ScoreList=
"ExamScore.ScoreList"
></analysisTest>
<view
class=
"scoreDetails-title flex"
>
<template
v-if=
"!ExamScore.GroupModuleList"
>
<text>
各板块掌握情况
</text>
<view
class=
"scoreDetails-title flex"
>
</view>
<text>
各板块掌握情况
</text>
<view
class=
"index-student-information"
>
</view>
<penta
:ModuleList=
"ExamScore.ModuleList"
v-if=
"!Loading"
></penta>
<view
class=
"index-student-information"
>
<allGraspTheSituation
:ModuleList=
"ExamScore.ModuleList"
></allGraspTheSituation>
<penta
:ModuleList=
"ExamScore.ModuleList"
v-if=
"!Loading"
></penta>
</view>
<allGraspTheSituation
:ModuleList=
"ExamScore.ModuleList"
></allGraspTheSituation>
</view>
</
template
>
<
template
v-else
>
<template
v-for=
"x in ExamScore.GroupModuleList"
>
<view
class=
"scoreDetails-title flex"
>
<text>
{{
x
.
GroupName
.
GroupName
}}
掌握情况
</text>
</view>
<view
class=
"index-student-information"
>
<penta
:ModuleList=
"x.GroupList"
v-if=
"!Loading"
></penta>
<allGraspTheSituation
:ModuleList=
"x.GroupList"
></allGraspTheSituation>
</view>
</
template
>
</template>
<view
class=
"scoreDetails-title flex"
>
<view
class=
"scoreDetails-title flex"
>
<text>
试卷难度分析
</text>
<text>
试卷难度分析
</text>
</view>
</view>
...
@@ -151,6 +165,27 @@
...
@@ -151,6 +165,27 @@
delta
:
1
delta
:
1
});
});
},
},
queryScore
(){
// uni.navigateTo({
// url:"/pages/webview/upload?url="+encodeURIComponent('https://doc.weixin.qq.com/forms/AJEAPAfgABUAaEAeAaUAAcP3Sbh3adRUf')
// })
wx
.
navigateToMiniProgram
({
appId
:
'wxd45c635d754dbf59'
,
path
:
'pages/detail/detail.html?url=https%3A%2F%2Fdoc.weixin.qq.com%2Fforms%2FAJEAPAfgABUAaEAeAaUAAcP3Sbh3adRUf'
,
envVersion
:
'release'
,
success
(
res
)
{
console
.
log
(
'跳转了'
)
// 跳转成功
},
fail
:
function
(
e
)
{
wx
.
showModal
({
title
:
'提示'
,
content
:
'跳转失败'
,
showCancel
:
false
,
})
}
})
}
};
};
onMounted
(()
=>
{
onMounted
(()
=>
{
...
@@ -188,6 +223,18 @@
...
@@ -188,6 +223,18 @@
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
.score-shenqing
{
width
:
120
rpx
;
height
:
27
rpx
;
background
:
linear-gradient
(
90deg
,
#E53F4E
,
#EE7F82
);
box-shadow
:
0px
0px
10
rpx
0px
rgba
(
247
,
167
,
174
,
0.63
);
border-radius
:
10
rpx
;
margin-left
:
20
rpx
;
font-size
:
24
rpx
;
color
:
#FFFFFF
;
line-height
:
27
rpx
;
text-align
:
center
;
}
.index-student-information
{
.index-student-information
{
min-height
:
500
rpx
;
min-height
:
500
rpx
;
background
:
rgba
(
255
,
255
,
255
,
.7
);
background
:
rgba
(
255
,
255
,
255
,
.7
);
...
...
src/utils/request.js
View file @
96e8f48e
...
@@ -3,7 +3,7 @@ let host = ''
...
@@ -3,7 +3,7 @@ let host = ''
if
(
process
.
env
.
NODE_ENV
===
"development"
)
{
if
(
process
.
env
.
NODE_ENV
===
"development"
)
{
//host = 'http://localhost:5004/api'
//host = 'http://localhost:5004/api'
host
=
'https://jjswapi.oytour.com/api'
host
=
'https://jjswapi.oytour.com/api'
// host = 'http://192.168.10.46:8900
/api'
host
=
'http://192.168.10.11:8082
/api'
// host = 'http://192.168.10.36:8082/api'
// host = 'http://192.168.10.36:8082/api'
}
else
{
}
else
{
host
=
'https://jjswapi.oytour.com/api'
host
=
'https://jjswapi.oytour.com/api'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment