detail.vue 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989
  1. <template>
  2. <div class="main">
  3. <view class="back" @click="getBack" style="background: #efefef;">
  4. <view class="backBtn">返回</view>
  5. </view>
  6. <div class="main-a">
  7. <div class="main-a-title">
  8. <div class="project">{{ details.examsName }}</div>
  9. <div class="date">{{ details.cdate }}</div>
  10. </div>
  11. <div class="main-a-con">
  12. <div class="main-a-con-left">
  13. <div class="userInfo">
  14. <strong>{{ details.name }}</strong><span>{{ details.grade_name + details.class_name }}</span>
  15. </div>
  16. <div class="fraction">
  17. <strong>{{ details.score }}</strong><span>分</span>
  18. </div>
  19. <div class="score">
  20. <i>成绩</i><strong>{{ details.result }}</strong>
  21. <span>{{ details.unit }}</span>
  22. </div>
  23. <div class="ranking">
  24. <i>排名</i> <strong>{{ details.area_rank }}</strong><span>/{{ details.area_totals }}</span>
  25. </div>
  26. </div>
  27. <div class="main-a-con-right">
  28. <div class="main-a-con-right-box">
  29. <img v-if="query.exam_name == 'jump'" src="@/assets/images/analysis/jump.png" />
  30. <img v-if="['run800', 'runa800'].includes(query.exam_name)" src="@/assets/images/analysis/run800.png" />
  31. <img
  32. v-if="['run50', 'run60', 'run100', 'run200', 'run400', 'run1000', 'runa1000', 'run15x4', 'run50x8'].includes(query.exam_name)"
  33. src="@/assets/images/analysis/run1000.png" />
  34. <img v-if="query.exam_name == 'basketball' ||
  35. query.exam_name == 'basketballv1'
  36. " src="@/assets/images/analysis/basketball.png" />
  37. <img v-if="query.exam_name == 'football' || query.exam_name == 'footballv1'
  38. " src="@/assets/images/analysis/football.png" />
  39. <img v-if="query.exam_name == 'badminton' ||
  40. query.exam_name == 'badmintonv1'
  41. " src="@/assets/images/analysis/badminton.png" />
  42. <img v-if="query.exam_name == 'pingpong'" src="@/assets/images/analysis/pingpong.png" />
  43. <img v-if="query.exam_name == 'volleyball'" src="@/assets/images/analysis/volleyball.png" />
  44. <img v-if="query.exam_name == 'volleyballv1'" src="@/assets/images/analysis/volleyball.png" />
  45. <img v-if="query.exam_name == 'solidball'" src="@/assets/images/analysis/solidBall.png" />
  46. <img v-if="query.exam_name == 'situp'" src="@/assets/images/analysis/sitUp.png" />
  47. <img v-if="query.exam_name == 'pullup'" src="@/assets/images/analysis/pullUp.png" />
  48. <img v-if="query.exam_name == 'jumprope'" src="@/assets/images/analysis/jumprope.png" />
  49. <img v-if="query.exam_name == 'jumpingjack'" src="@/assets/images/analysis/jumpingjack.png" />
  50. <img v-if="query.exam_name == 'highknees'" src="@/assets/images/analysis/highknees.png" />
  51. <img v-if="query.exam_name == 'longjump'" src="@/assets/images/analysis/longjump.png" />
  52. <img v-if="query.exam_name == 'skiprope'" src="@/assets/images/analysis/skiprope.png" />
  53. <div class="svg-box" v-if="details.score">
  54. <svg class="svg" width="100%" height="100%" viewBox="0 0 400 400">
  55. <!-- 1圈 -->
  56. <circle cx="200" cy="200" r="100" stroke="#39BBBB" stroke-width="25" fill="none"
  57. :stroke-dasharray="0 + ',' + 2 * Math.PI * 100" :stroke-dashoffset="0" stroke-linecap="butt">
  58. <animate attributeName="stroke-dasharray" :from="0" :to="2 * Math.PI * 100 * (details.score / details.total_score)
  59. " dur="1.2s" begin="0" fill="freeze" />
  60. </circle>
  61. <!-- 2圈 -->
  62. <circle cx="200" cy="200" r="60" stroke="#506794" stroke-width="25" fill="none"
  63. :stroke-dasharray="0 + ',' + 2 * Math.PI * 60" :stroke-dashoffset="0" stroke-linecap="butt">
  64. <animate attributeName="stroke-dasharray" :from="0" :to="2 * Math.PI * 60 * (details.score / details.total_score)
  65. " dur="1.0s" begin="0" fill="freeze" />
  66. </circle>
  67. <!-- 3圈 -->
  68. <circle cx="200" cy="200" r="20" stroke="#FF8165" stroke-width="25" fill="none"
  69. :stroke-dasharray="0 + ',' + 2 * Math.PI * 20" :stroke-dashoffset="0" stroke-linecap="butt">
  70. <animate attributeName="stroke-dasharray" :from="0" :to="2 * Math.PI * 20 * (details.score / details.total_score)
  71. " dur="0.8s" begin="0" fill="freeze" />
  72. </circle>
  73. </svg>
  74. </div>
  75. </div>
  76. </div>
  77. <div class="grade">
  78. <img v-if="details.score_level == '优秀'" src="@/assets/images/analysis/grade1.png" />
  79. <img v-if="details.score_level == '良好'" src="@/assets/images/analysis/grade2.png" />
  80. <img v-if="details.score_level == '及格'" src="@/assets/images/analysis/grade3.png" />
  81. <img v-if="details.score_level == '不及格'" src="@/assets/images/analysis/grade4.png" />
  82. </div>
  83. </div>
  84. </div>
  85. <div class="main-b" :class="{ 'main-b-margintop': details.score == 0 }">
  86. <div class="main-b-title">分数评级</div>
  87. <div class="main-b-con">
  88. <div class="drawingItem" v-if="JSON.stringify(details.std) != '{}' && details.std?.scores != undefined">
  89. <span class="a" :style="{ width: details.std.scores[0] * 100 + '%' }">不及格</span><span class="b" :style="{
  90. width:
  91. (details.std.scores[1] - details.std.scores[0]) * 100 + '%',
  92. }">及格</span><span class="c" :style="{
  93. width:
  94. (details.std.scores[2] - details.std.scores[1]) * 100 + '%',
  95. }">良好</span><span class="d" :style="{
  96. width:
  97. (details.std.scores[3] - details.std.scores[2]) * 100 + '%',
  98. }">优秀</span>
  99. </div>
  100. <div class="drawingItem" v-else>
  101. <span class="a">不及格</span><span class="b">及格</span><span class="c">良好</span><span class="d">优秀</span>
  102. </div>
  103. <div v-if="JSON.stringify(details.std) != '{}' && details.std?.scores != undefined">
  104. <i class="branchA scoreType">成绩</i>
  105. <i class="branchB scoreType" :style="{
  106. left: (details.std.scores[0] / details.std.scores[3]) * 100 + '%',
  107. }">{{ details.std.values[0] }}</i>
  108. <i class="branchC scoreType" :style="{
  109. left: (details.std.scores[1] / details.std.scores[3]) * 100 + '%',
  110. }">{{ details.std.values[1] }}</i>
  111. <i class="branchD scoreType" :style="{
  112. left: (details.std.scores[2] / details.std.scores[3]) * 100 + '%',
  113. }">{{ details.std.values[2] }}</i>
  114. <i class="branchE scoreType" :style="{
  115. left: (details.std.scores[3] / details.std.scores[3]) * 100 + '%',
  116. }">{{ details.std.values[3] }}</i>
  117. </div>
  118. <div v-if="JSON.stringify(details.std) != '{}' && details.std?.scores != undefined">
  119. <i class="branchA">分数</i>
  120. <i class="branchB" :style="{
  121. left: (details.std.scores[0] / details.std.scores[3]) * 100 + '%',
  122. }">{{ details.std.scores[0] }}</i>
  123. <i class="branchC" :style="{
  124. left: (details.std.scores[1] / details.std.scores[3]) * 100 + '%',
  125. }">{{ details.std.scores[1] }}</i>
  126. <i class="branchD" :style="{
  127. left: (details.std.scores[2] / details.std.scores[3]) * 100 + '%',
  128. }">{{ details.std.scores[2] }}</i>
  129. <i class="branchE" :style="{
  130. left: (details.std.scores[3] / details.std.scores[3]) * 100 + '%',
  131. }">{{ details.std.scores[3] }}</i>
  132. </div>
  133. <div v-else>
  134. <i class="branchA">分数</i>
  135. <i class="branchB">60</i>
  136. <i class="branchC">80</i>
  137. <i class="branchD">90</i>
  138. <i class="branchE">100</i>
  139. </div>
  140. <div v-if="JSON.stringify(details.std) != '{}' && details.std?.scores != undefined" class="currentDian" :style="{
  141. left:
  142. (details.score / details.std.scores[3] > 1
  143. ? 1
  144. : details.score / details.std.scores[3]) *
  145. 100 +
  146. '%',
  147. }">
  148. <div class="chengji">
  149. <span>{{ details.result }}</span>
  150. </div>
  151. <div class="fenshu">
  152. <span>{{ details.score }}</span>
  153. </div>
  154. </div>
  155. </div>
  156. </div>
  157. <div class="main-c" v-if="JSON.stringify(details) != '{}'">
  158. <!--立定跳远-->
  159. <Jump :detailsData="details" v-if="JSON.stringify(details) != '{}' && ['jump'].includes(query.exam_name)
  160. " />
  161. <!--实心球-->
  162. <SolidBall :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
  163. ['solidball'].includes(query.exam_name)
  164. " />
  165. <!--脚环跑步-->
  166. <Runa :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
  167. ['runa800', 'runa1000', 'runwb800', 'runwb1000'].includes(query.exam_name)
  168. " />
  169. <!--跑步-->
  170. <Run :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
  171. ['run50', 'run60', 'run100', 'run200', 'run400', 'run800', 'run1000', 'run15x4', 'run50x8'].includes(query.exam_name)
  172. " />
  173. <!--仰卧起坐-->
  174. <SitUp :detailsData="details" v-if="JSON.stringify(details) != '{}' && ['situp'].includes(query.exam_name)
  175. " />
  176. <!--引体向上-->
  177. <PullUp :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
  178. ['pullup'].includes(query.exam_name)
  179. " />
  180. <!--跳绳类-->
  181. <RopeSkipping :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
  182. ['jumprope', 'jumpingjack', 'highknees', 'skiprope'].includes(query.exam_name)
  183. " />
  184. <!--球类-->
  185. <Balls :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
  186. [
  187. 'footballv1',
  188. 'football',
  189. 'basketballv1',
  190. 'basketball',
  191. 'volleyballv1',
  192. 'volleyball',
  193. 'badmintonv1',
  194. 'badminton',
  195. 'pingpong',
  196. ].includes(query.exam_name)
  197. " />
  198. <!--斜身引体-->
  199. <SidePullUp :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
  200. ['sidepullup'].includes(query.exam_name)
  201. " />
  202. <!--三级蛙跳-->
  203. <TriJump :detailsData="details" v-if="JSON.stringify(details) != '{}' && ['trijump'].includes(query.exam_name)
  204. " />
  205. <!--铅球-->
  206. <ShotPut :detailsData="details" v-if="JSON.stringify(details) != '{}' &&
  207. ['shotput'].includes(query.exam_name)
  208. " />
  209. <!--急行跳远-->
  210. <LongJump :detailsData="details" v-if="JSON.stringify(details) != '{}' && ['longjump'].includes(query.exam_name)
  211. " />
  212. <div class="tip">
  213. <!-- 温馨提示:<br />
  214. 因为光线或人员遮挡等环境问题,导致测试数据偶尔有偏差,最终解释权归卓浦士科技所有。<br />客服热线:<a
  215. href="tel:020-37804867"
  216. >020-37804867</a
  217. > -->
  218. </div>
  219. </div>
  220. </div>
  221. </template>
  222. <script setup lang="ts">
  223. import dataDictionary from "@/utils/dataDictionary"
  224. import Balls from "./components/balls.vue";
  225. import Jump from "./components/jump.vue";
  226. import LongJump from "./components/longJump.vue";
  227. import SolidBall from "./components/solidBall.vue";
  228. import Run from "./components/run.vue";
  229. import Runa from "./components/runa.vue";
  230. import SitUp from "./components/sitUp.vue";
  231. import PullUp from "./components/pullUp.vue";
  232. import RopeSkipping from "./components/ropeSkipping.vue";
  233. import SidePullUp from "./components/sidePullUp.vue";
  234. import TriJump from "./components/triJump.vue";
  235. import ShotPut from "./components/shotPut.vue";
  236. const { proxy } = getCurrentInstance() as any;
  237. const router = useRouter();
  238. const route = useRoute();
  239. const dic: any = dataDictionary;
  240. const data = reactive<any>({
  241. query: {},
  242. details: {},
  243. gradeType: []
  244. });
  245. const { query, details, gradeType } = toRefs(data);
  246. /**
  247. * 测试详情
  248. */
  249. const getTestExamDetails = () => {
  250. let params = {
  251. exam_name: query.value.exam_name,
  252. stu_key: query.value.stu_key,
  253. test_key: query.value.test_key
  254. };
  255. proxy?.$http.analysis.testExamDetails(params)
  256. .then((res: any) => {
  257. //console.log(res);
  258. details.value = res.data || {};
  259. getDetails();
  260. })
  261. .catch(() => {
  262. proxy?.$modal.msgWarning('无效报告');
  263. setTimeout(() => {
  264. getBack();
  265. }, 1500)
  266. });
  267. };
  268. /**
  269. * 上课详情
  270. */
  271. const getTrainExamDetails = () => {
  272. let params = {
  273. exam_name: query.value.exam_name,
  274. student_id: query.value.student_id,
  275. result_ids: query.value.result_ids
  276. };
  277. proxy?.$http.analysis.trainExamDetails(params)
  278. .then((res: any) => {
  279. //console.log(res);
  280. details.value = res.data || {};
  281. getDetails();
  282. })
  283. .catch(() => {
  284. proxy?.$modal.msgWarning('无效报告');
  285. setTimeout(() => {
  286. getBack();
  287. }, 1500)
  288. });
  289. };
  290. /**
  291. * 重组详情
  292. */
  293. const getDetails = () => {
  294. let myList: any = [];
  295. dataDictionary.gradeLists.forEach((item: any) => {
  296. item.child.forEach((items: any) => {
  297. let myIndex = myList.findIndex((itemss: any) => {
  298. return itemss.value == items.value;
  299. });
  300. if (myIndex == -1) {
  301. myList.push(items)
  302. }
  303. })
  304. })
  305. console.log("myList", myList)
  306. gradeType.value = myList;
  307. let obj = gradeType.value.find((item: any) => {
  308. return item.value == details.value.grade;
  309. });
  310. details.value.grade_name = obj?.label || "";
  311. details.value.unit = dic.unit[query.value.exam_name];
  312. details.value.examsName = dic.project[query.value.exam_name];
  313. details.value.image_url_list = details.value.image_url ?
  314. details.value.image_url.split(" ") : [];
  315. if (['trijump', 'solidball', 'shotput', 'longjump'].includes(query.value.exam_name)
  316. ) {
  317. details.value.result = Number(details.value.result / 100).toFixed(2);
  318. } else if (['runa800', 'runa1000', 'run800', 'run1000'].includes(query.value.exam_name)) {
  319. let myTime = String(details.value.result).indexOf(".") == -1 ?
  320. details.value.result :
  321. Number(details.value.result).toFixed(2);
  322. details.value.result = proxy?.runTime(myTime)
  323. } else if (['run50', 'run60', 'run70', 'run100', 'run200', 'run400', 'run15x4'].includes(query.value.exam_name)) {
  324. details.value.result =
  325. String(details.value.result).indexOf(".") == -1 ?
  326. details.value.result :
  327. Number(details.value.result).toFixed(2);
  328. } else if (['basketballv1'].includes(query.value.exam_name)) {
  329. details.value.result = proxy?.$utils.runTime(details.value.result, true, 0)
  330. } else {
  331. details.value.result =
  332. String(details.value.result).indexOf(".") == -1 ?
  333. details.value.result :
  334. Number(details.value.result).toFixed(1);
  335. }
  336. if (
  337. ['runa800', 'runa1000', 'run50', 'run60', 'run70', 'run100', 'run200', 'run400', 'run800', 'run1000', 'run15x4']
  338. .includes(query.value.exam_name) &&
  339. details.value.result == 0
  340. ) {
  341. proxy?.$modal.alertError(`无数据原因:${details.value.comments}`);
  342. }
  343. };
  344. //返回
  345. const getBack = () => {
  346. router.go(-1);
  347. };
  348. onBeforeMount(() => {
  349. query.value = route.query;
  350. if (query.value.test_key) {
  351. //测试
  352. getTestExamDetails();
  353. } else {
  354. //上课
  355. getTrainExamDetails();
  356. }
  357. })
  358. onMounted(() => {
  359. })
  360. </script>
  361. <style lang="scss">
  362. @media screen and (max-width: 1280px) {
  363. :root {
  364. font-size: calc(1280px / 106);
  365. }
  366. }
  367. .main {
  368. background: #efefef;
  369. height: calc(100vh - 10vh - 20px);
  370. overflow-y: scroll;
  371. overflow-x: hidden;
  372. padding-bottom: 20px;
  373. padding-top: 10vh;
  374. .back {
  375. position: fixed;
  376. top: 0;
  377. width: 100%;
  378. height: 10vh;
  379. line-height: 10vh;
  380. display: flex;
  381. align-items: center;
  382. justify-content: flex-start;
  383. box-sizing: border-box;
  384. padding: 0 1.5rem;
  385. cursor: pointer;
  386. z-index: 2;
  387. }
  388. .back::before {
  389. content: "";
  390. width: 100%;
  391. height: 0.4vw;
  392. position: absolute;
  393. bottom: 0px;
  394. left: 0;
  395. background: url("@/assets/images/common/xian.png") center bottom no-repeat;
  396. background-size: 100% 100%;
  397. }
  398. .backBtn {
  399. font-size: 3.8vh;
  400. color: #97d4a4;
  401. padding-left: calc(2vh + 24px);
  402. background: url("@/assets/images/common/back.png") left center no-repeat;
  403. background-size: 2vh 3.8vh;
  404. }
  405. .main-a {
  406. padding: 1.5rem 1.5rem 0 1.5rem;
  407. margin-bottom: 2.4rem;
  408. .main-a-title {
  409. display: flex;
  410. .project {
  411. font-weight: bold;
  412. color: #464646;
  413. font-size: 2.2rem;
  414. line-height: 2.2rem;
  415. padding-right: 1.6rem;
  416. margin-right: 1.6rem;
  417. border-right: 1px solid #464646;
  418. }
  419. .date {
  420. font-size: 1.6rem;
  421. line-height: 2.2rem;
  422. color: #999999;
  423. font-weight: normal;
  424. }
  425. }
  426. .main-a-con {
  427. display: flex;
  428. justify-content: space-between;
  429. position: relative;
  430. overflow: hidden;
  431. .main-a-con-left {
  432. width: 50%;
  433. margin-top: 2rem;
  434. .userInfo {
  435. margin-bottom: 1.2rem;
  436. display: flex;
  437. line-height: 1.3;
  438. strong {
  439. font-size: 1.5rem;
  440. font-weight: bold;
  441. margin-right: 1rem;
  442. flex-shrink: 0;
  443. }
  444. span {
  445. font-size: 1.5rem;
  446. }
  447. }
  448. .fraction {
  449. margin-bottom: 2rem;
  450. strong {
  451. font-size: 6.4rem;
  452. color: #39bbbb;
  453. font-weight: bold;
  454. }
  455. span {
  456. font-size: 1.6rem;
  457. color: #999999;
  458. margin-left: 0.4rem;
  459. }
  460. }
  461. .score {
  462. margin-bottom: 1.2rem;
  463. i {
  464. padding-left: 2.22rem;
  465. background: url("@/assets/images/analysis/resultIcon.png") left center no-repeat;
  466. background-size: 1.6rem;
  467. font-size: 1.4rem;
  468. margin-right: 1.2rem;
  469. }
  470. strong {
  471. font-size: 2.4rem;
  472. color: #464646;
  473. font-weight: bold;
  474. }
  475. span {
  476. font-size: 1.6rem;
  477. color: #999999;
  478. }
  479. }
  480. .ranking {
  481. i {
  482. padding-left: 2.2rem;
  483. background: url("@/assets/images/analysis/rankingIcon.png") left center no-repeat;
  484. background-size: 1.6rem;
  485. font-size: 1.4rem;
  486. margin-right: 1.2rem;
  487. }
  488. strong {
  489. font-size: 2.4rem;
  490. color: #464646;
  491. font-weight: bold;
  492. }
  493. span {
  494. font-size: 1.6rem;
  495. color: #999999;
  496. }
  497. }
  498. }
  499. .main-a-con-right {
  500. width: 50%;
  501. display: flex;
  502. align-items: flex-end;
  503. justify-content: center;
  504. .main-a-con-right-box {
  505. display: flex;
  506. flex-wrap: wrap;
  507. align-items: flex-end;
  508. justify-content: center;
  509. }
  510. img {
  511. max-width: 88%;
  512. max-height: 16rem;
  513. position: relative;
  514. z-index: 1;
  515. margin-bottom: 11vw;
  516. }
  517. .svg-box {
  518. position: absolute;
  519. z-index: 0;
  520. width: 35vw;
  521. height: 35vw;
  522. transform: rotate(155deg);
  523. bottom: -12vw;
  524. .svg {
  525. display: block;
  526. width: 100%;
  527. height: 100%;
  528. transform: skewX(60deg);
  529. }
  530. }
  531. }
  532. .grade {
  533. width: 7.2rem;
  534. position: absolute;
  535. left: 50%;
  536. top: 40%;
  537. margin-left: -3.6rem;
  538. margin-top: -3.6rem;
  539. img {
  540. width: 100%;
  541. }
  542. }
  543. }
  544. }
  545. .main-b {
  546. padding: 0rem 1.5rem;
  547. margin-bottom: 4.4rem;
  548. .main-b-title {
  549. font-size: 1.6rem;
  550. color: #464646;
  551. margin-bottom: 3.2rem;
  552. }
  553. .main-b-con {
  554. display: flex;
  555. border-radius: 12rem;
  556. text-align: center;
  557. font-size: 1.2rem;
  558. color: #ffffff;
  559. position: relative;
  560. span {
  561. height: 2.3rem;
  562. line-height: 2.3rem;
  563. }
  564. .a {
  565. width: 60%;
  566. background: #dcdcdc;
  567. border-radius: 12rem 0 0 12rem;
  568. }
  569. .b {
  570. width: 20%;
  571. background: #ff8165;
  572. }
  573. .c {
  574. width: 10%;
  575. background: #f7b249;
  576. }
  577. .d {
  578. width: 10%;
  579. background: #39bbbb;
  580. border-radius: 0 12rem 12rem 0;
  581. }
  582. i {
  583. position: absolute;
  584. color: #999999;
  585. top: 2.8rem;
  586. }
  587. .scoreType {
  588. top: -2rem;
  589. }
  590. .branchA {
  591. left: 0;
  592. }
  593. .branchB {
  594. left: 60%;
  595. margin-left: -0.8rem;
  596. }
  597. .branchC {
  598. left: 80%;
  599. margin-left: -0.8rem;
  600. }
  601. .branchD {
  602. left: 90%;
  603. margin-left: -0.8rem;
  604. }
  605. .branchE {
  606. right: 0;
  607. left: auto !important;
  608. }
  609. .currentVal {
  610. position: absolute;
  611. height: 2.8rem;
  612. left: 0%;
  613. top: -3.2rem;
  614. border-radius: 0.8rem;
  615. color: #464646;
  616. width: 4rem;
  617. margin-left: -2rem;
  618. font-size: 1.4rem;
  619. font-weight: bold;
  620. background: #c9c9c990;
  621. display: flex;
  622. align-items: center;
  623. .currentValBox {
  624. width: 100%;
  625. text-align: center;
  626. }
  627. em {
  628. font-size: 1.2rem;
  629. color: #999999;
  630. font-weight: normal;
  631. }
  632. &::after {
  633. content: "";
  634. width: 0;
  635. height: 0;
  636. border-left: 1px solid transparent;
  637. border-right: 1px solid transparent;
  638. border-top: 2px solid #c9c9c990;
  639. position: absolute;
  640. top: 2.72rem;
  641. left: 50%;
  642. margin-left: -0.816rem;
  643. }
  644. }
  645. .currentDian {
  646. width: 0.26rem;
  647. height: 4.8rem;
  648. position: absolute;
  649. top: 50%;
  650. left: 0%;
  651. margin-top: -2.4rem;
  652. margin-left: -0.2rem;
  653. background: #464646;
  654. color: #464646;
  655. .chengji {
  656. position: absolute;
  657. top: 0px;
  658. span {
  659. position: absolute;
  660. top: -2.4rem;
  661. margin-left: -1.2rem;
  662. font-size: 1.6rem;
  663. }
  664. &::before {
  665. content: "";
  666. display: block;
  667. width: 0.8rem;
  668. height: 0.8rem;
  669. margin-left: -0.24rem;
  670. border-radius: 50%;
  671. background: #464646;
  672. }
  673. }
  674. .fenshu {
  675. position: absolute;
  676. bottom: 0px;
  677. span {
  678. position: absolute;
  679. bottom: -2.4rem;
  680. margin-left: -1.2rem;
  681. font-size: 1.6rem;
  682. }
  683. &::before {
  684. content: "";
  685. display: block;
  686. width: 0.8rem;
  687. height: 0.8rem;
  688. margin-left: -0.24rem;
  689. border-radius: 50%;
  690. background: #464646;
  691. }
  692. }
  693. }
  694. .drawingItem {
  695. display: flex;
  696. width: 100%;
  697. }
  698. }
  699. }
  700. .main-b-margintop {
  701. margin-top: 3.2rem;
  702. }
  703. .main-c {
  704. padding: 0rem 1.5rem 1.5rem 1.5rem;
  705. .column {
  706. margin-bottom: 2rem;
  707. .column-title {
  708. margin-bottom: 1.6rem;
  709. font-size: 2rem;
  710. color: #555555;
  711. font-weight: bold;
  712. }
  713. .column-con {
  714. padding: 1.2rem;
  715. background: #ffffff;
  716. border-radius: 1.2rem;
  717. font-size: 1.6rem;
  718. line-height: 1.6;
  719. .item {
  720. border-bottom: 1px solid #d2d2d2;
  721. margin-bottom: 1.6rem;
  722. padding-bottom: 1.2rem;
  723. .item-title {
  724. margin-bottom: 1.6rem;
  725. font-weight: bold;
  726. font-size: 1.88rem;
  727. color: #555555;
  728. display: flex;
  729. line-height: 1;
  730. i {
  731. padding: 0.2rem 0.4rem;
  732. font-size: 1.2rem;
  733. margin-left: 1.2rem;
  734. border-radius: 0.4rem;
  735. line-height: 1.4rem;
  736. color: #ffffff;
  737. }
  738. .you {
  739. background: #39bbbb;
  740. }
  741. .liang {
  742. background: #f7b249;
  743. }
  744. .cha {
  745. background: #ff8165;
  746. }
  747. }
  748. .item-title2 {
  749. padding: 0px;
  750. background: none;
  751. }
  752. .item-con {
  753. font-size: 1.6rem;
  754. color: #999999;
  755. .item-con-li {
  756. margin-bottom: 1.6rem;
  757. position: relative;
  758. .item-con-li-label {
  759. position: absolute;
  760. left: 1.2rem;
  761. top: 1.2rem;
  762. border-radius: 0.4rem;
  763. color: #ffffff;
  764. font-size: 1.2rem;
  765. padding: 0.12rem 0.8rem;
  766. }
  767. .item-con-li-label-bg1 {
  768. background: #39bbbb;
  769. }
  770. .item-con-li-label-bg2 {
  771. background: #ff8165;
  772. }
  773. .item-con-li-title {
  774. font-size: 1.84rem;
  775. margin-bottom: 1.2rem;
  776. color: #464646;
  777. }
  778. .item-con-li-con {
  779. font-size: 1.6rem;
  780. margin-bottom: 1.6rem;
  781. color: #999999;
  782. .item-con-li-con-val {
  783. display: flex;
  784. justify-content: space-around;
  785. .item-con-li-con-val-li-name1 {
  786. font-size: 1.6rem;
  787. padding-bottom: 0.9rem;
  788. display: inline;
  789. border-bottom: 2px solid #ff8165;
  790. position: relative;
  791. &::after {
  792. content: "";
  793. width: 0.8rem;
  794. height: 0.8rem;
  795. border-radius: 100%;
  796. background: #ff8165;
  797. left: 0;
  798. bottom: -0.52rem;
  799. position: absolute;
  800. }
  801. &::before {
  802. content: "";
  803. width: 0.8rem;
  804. height: 0.8rem;
  805. border-radius: 100%;
  806. background: #ff8165;
  807. right: 0;
  808. bottom: -0.52rem;
  809. position: absolute;
  810. }
  811. }
  812. .item-con-li-con-val-li-name2 {
  813. font-size: 1.6rem;
  814. padding-bottom: 0.8rem;
  815. display: inline;
  816. border-bottom: 2px solid #39bbbb;
  817. position: relative;
  818. &::after {
  819. content: "";
  820. width: 0.8rem;
  821. height: 0.8rem;
  822. border-radius: 100%;
  823. background: #39bbbb;
  824. left: 0;
  825. bottom: -0.52rem;
  826. position: absolute;
  827. }
  828. &::before {
  829. content: "";
  830. width: 0.8rem;
  831. height: 0.8rem;
  832. border-radius: 100%;
  833. background: #39bbbb;
  834. right: 0;
  835. bottom: -0.52rem;
  836. position: absolute;
  837. }
  838. }
  839. .item-con-li-con-val-li-con {
  840. font-weight: bold;
  841. font-size: 2rem;
  842. display: block;
  843. padding-top: 1.2rem;
  844. color: #555555;
  845. text-align: center;
  846. }
  847. }
  848. .item-con-li-con-strong {
  849. font-weight: 350;
  850. margin-bottom: 0.4rem;
  851. color: #666666;
  852. }
  853. }
  854. }
  855. }
  856. }
  857. .item:last-child {
  858. margin-bottom: 0;
  859. padding: 0;
  860. border: none;
  861. }
  862. }
  863. video {
  864. width: 100%;
  865. background: #ffffff;
  866. }
  867. img {
  868. max-width: 100%;
  869. }
  870. table {
  871. max-width: 100%;
  872. }
  873. }
  874. .tip {
  875. font-size: 1.4rem;
  876. color: #999999;
  877. line-height: 1.6;
  878. a {
  879. color: #555555;
  880. }
  881. }
  882. .bigImg {
  883. width: 100%;
  884. }
  885. }
  886. }
  887. </style>