count.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632
  1. <template>
  2. <view>
  3. <view class="count">
  4. <view class="left">
  5. <scroll-view :scroll-y="true" :scroll-with-animation="true" :style="{ height: '100vh' }">
  6. <view v-for="(item, index) in list" :key="index">
  7. <view :class="['title', { act: item.val === currentNum }]" :id="index" @click="setId(item.val)">{{item.tit }}</view>
  8. </view>
  9. </scroll-view>
  10. </view>
  11. <view class="right">
  12. <!-- 总分排名 -->
  13. <view class="flex0 pd">
  14. <view class="search mb15" v-if="currentNum==0||currentNum==1">
  15. <image :src="searimg"></image>
  16. <input placeholder="请输入学生姓名进行搜索" v-model="scoreDataName"/>
  17. <view class="btn" @click="getSearch">搜索</view>
  18. </view>
  19. <view class="mind_s flexc">
  20. <!-- 只有自己班级和全部班级 -->
  21. <!-- <picker range-key="dictLabel" :range="xlhealthrange" :value="mindidx" @change="bindDateChangea">
  22. <view class="flexc mind_sa">
  23. <view class="alldatain f15 cofe f500" >{{mind||'选择班级'}}</view>
  24. <image :src="upimg"></image>
  25. </view>
  26. </picker> -->
  27. <block v-if='currentNum==1'>
  28. <image :src="secm" class="mind_sl"></image>
  29. <picker range-key="dictLabel" :range="subjectlist" :value="subidx" @change="bindDateChanged">
  30. <view class="flexc mind_sa">
  31. <view class="alldatain f15 cofe f500" >{{xueke||'选择科目'}}</view>
  32. <image :src="upimg"></image>
  33. </view>
  34. </picker>
  35. </block>
  36. <view class="flex1"></view>
  37. <view class="ser_toa" v-if="currentNum==3">总分平均分:<text>{{avg}}</text>分</view>
  38. </view>
  39. </view>
  40. <!-- 列表 -->
  41. <view class="flex1 tab" v-if="currentNum==0">
  42. <view class="tab_top flexc">
  43. <view class="a topt w20">排名</view>
  44. <view class="a topt w30">姓名</view>
  45. <view class="a topt w25">总分</view>
  46. <view class="a topt w25">年级排名</view>
  47. </view>
  48. <view class="flex1 overa" v-if="gradeRank.length">
  49. <block v-for="(ite ,idx) in gradeRank" :key="idx">
  50. <view class="tab_tr" v-if="idx<3">
  51. <image :src="onebgimg" class="bgimg" v-if="idx==0"></image>
  52. <image :src="twobgimg" class="bgimg" v-if="idx==1"></image>
  53. <image :src="threebgimg" class="bgimg" v-if="idx==2"></image>
  54. <view class="a idx w20">
  55. <image :src="oneimg" v-if="idx==0"></image>
  56. <image :src="twoimg" v-if="idx==1"></image>
  57. <image :src="threeimg" v-if="idx==2"></image>
  58. </view>
  59. <view class="a tit w30" >{{ite.scoreDataName}}</view>
  60. <view class="a num w25">{{ite.zongfen}}</view>
  61. <view class="a num w25">{{ite.scoreSortGrade}}</view>
  62. </view>
  63. <view class="tab_tr bg1" v-if="idx>2">
  64. <view class="a idx w20">{{idx+1}}</view>
  65. <view class="a tit w30">{{ite.scoreDataName}}</view>
  66. <view class="a num w25">{{ite.zongfen}}</view>
  67. <view class="a num w25">{{ite.scoreSortGrade}}</view>
  68. </view>
  69. </block>
  70. </view>
  71. <view class="flex1 overa" v-else>
  72. <no-data></no-data>
  73. </view>
  74. </view>
  75. <!-- 科目排名 -->
  76. <view class="flex1 tab" v-if="currentNum==1">
  77. <view class="tab_top flexc">
  78. <view class="a topt w20">排名</view>
  79. <view class="a topt w50">姓名</view>
  80. <view class="a topt w30">{{xueke}}</view>
  81. </view>
  82. <view class="flex1 overa" v-if="xuekeRank.length">
  83. <block v-for="(ite ,idx) in xuekeRank" :key="idx">
  84. <view class="tab_tr" v-if="idx<3">
  85. <image :src="onebgimg" class="bgimg" v-if="idx==0"></image>
  86. <image :src="twobgimg" class="bgimg" v-if="idx==1"></image>
  87. <image :src="threebgimg" class="bgimg" v-if="idx==2"></image>
  88. <view class="a idx w20">
  89. <image :src="oneimg" v-if="idx==0"></image>
  90. <image :src="twoimg" v-if="idx==1"></image>
  91. <image :src="threeimg" v-if="idx==2"></image>
  92. </view>
  93. <view class="a tit w50" >{{ite.scoreDataName}}</view>
  94. <view class="a num w30">{{ite.score}}</view>
  95. </view>
  96. <view class="tab_tr bg1" v-if="idx>2">
  97. <view class="a idx w20">{{idx+1}}</view>
  98. <view class="a tit w50">{{ite.scoreDataName}}</view>
  99. <view class="a num w30">{{ite.score}}</view>
  100. </view>
  101. </block>
  102. </view>
  103. <view class="flex1 overa" v-else>
  104. <no-data></no-data>
  105. </view>
  106. </view>
  107. <!-- 班级排名 -->
  108. <view class="flex1 tab" v-if="currentNum==2">
  109. <view class="tab_top flexc">
  110. <view class="a topt w30">排名</view>
  111. <view class="a topt w70">班级</view>
  112. </view>
  113. <view class="flex1 overa" v-if="classRank.length">
  114. <block v-for="(ite ,idx) in classRank" :key="idx">
  115. <view class="tab_tr" v-if="idx<3">
  116. <image :src="onebgimg" class="bgimg" v-if="idx==0"></image>
  117. <image :src="twobgimg" class="bgimg" v-if="idx==1"></image>
  118. <image :src="threebgimg" class="bgimg" v-if="idx==2"></image>
  119. <view class="a idx w30">
  120. <image :src="oneimg" v-if="idx==0"></image>
  121. <image :src="twoimg" v-if="idx==1"></image>
  122. <image :src="threeimg" v-if="idx==2"></image>
  123. </view>
  124. <view class="a tit w70" >{{ite.scoreClassName}}</view>
  125. </view>
  126. <view class="tab_tr bg1" v-if="idx>2">
  127. <view class="a idx w30">{{idx+1}}</view>
  128. <view class="a tit w70">{{ite.scoreClassName}}</view>
  129. </view>
  130. </block>
  131. </view>
  132. <view class="flex1 overa" v-else>
  133. <no-data></no-data>
  134. </view>
  135. </view>
  136. <!-- 平均分统计 -->
  137. <!-- 图标表 -->
  138. <view class="flex1 tabchart" v-if="currentNum==3">
  139. <view style="width: 100%;height: 600rpx;">
  140. <qiun-data-charts type="column" :chartData="chartDatab" :opts='optsb' :ontouch="true"></qiun-data-charts>
  141. </view>
  142. <image :src="line" class="lineimg"></image>
  143. <view class="flex1 tab" >
  144. <view class="tab_top flexc">
  145. <view class="a topt w20">排名</view>
  146. <view class="a topt w30">班级</view>
  147. <view class="a topt w25">均分以上</view>
  148. <view class="a topt w25">均分以下</view>
  149. </view>
  150. <view class="flex1 overa" v-if="avgRank.length">
  151. <block v-for="(ite ,idx) in avgRank" :key="idx">
  152. <view class="tab_tr" v-if="idx<3">
  153. <image :src="onebgimg" class="bgimg" v-if="idx==0"></image>
  154. <image :src="twobgimg" class="bgimg" v-if="idx==1"></image>
  155. <image :src="threebgimg" class="bgimg" v-if="idx==2"></image>
  156. <view class="a idx w20">
  157. <image :src="oneimg" v-if="idx==0"></image>
  158. <image :src="twoimg" v-if="idx==1"></image>
  159. <image :src="threeimg" v-if="idx==2"></image>
  160. </view>
  161. <view class="a tit w30" style="font-size: 28rpx;">{{ite.scoreClassName}}</view>
  162. <view class="a tit w25" >{{ite.up}}</view>
  163. <view class="a tit w25" >{{ite.down}}</view>
  164. </view>
  165. <view class="tab_tr bg1" v-if="idx>2">
  166. <view class="a idx w20" >{{idx+1}}</view>
  167. <view class="a tit w30" style="font-size: 28rpx;">{{ite.scoreClassName}}</view>
  168. <view class="a tit w25" >{{ite.up}}</view>
  169. <view class="a tit w25" >{{ite.down}}</view>
  170. </view>
  171. </block>
  172. </view>
  173. <view class="flex1 overa" v-else>
  174. <no-data></no-data>
  175. </view>
  176. </view>
  177. </view>
  178. <!-- 分数段统计 -->
  179. <view class="flex1 tabchart" v-if="currentNum==4">
  180. <view style="width: 100%;height: 600rpx;">
  181. <qiun-data-charts type="ring" :chartData="chartDataa" :opts='optsa'></qiun-data-charts>
  182. </view>
  183. <image :src="line" class="lineimg"></image>
  184. <view class="flex1 tab" >
  185. <!-- <block v-for="(ite ,idx) in avgRank" :key="idx"></block> -->
  186. <view class="tab_top flexc">
  187. <view class="a topt w40">分数段</view>
  188. <view class="a topt w30">人数</view>
  189. <view class="a topt w30">占比</view>
  190. </view>
  191. <view class="flex1 overa">
  192. <view class="tab_tr bg1" v-for="(ite,idx) in fsRank" :key="idx">
  193. <view class="a idx w40">{{ite.tit}}</view>
  194. <view class="a tit w30" >{{ite.num}}</view>
  195. <view class="a tit w30" >{{ite.mix}}</view>
  196. </view>
  197. </view>
  198. </view>
  199. <!-- v-if="bingTuRank.length" -->
  200. <!-- <view class="flex1 tab" v-else>
  201. <no-data></no-data>
  202. </view> -->
  203. </view>
  204. </view>
  205. </view>
  206. </view>
  207. </template>
  208. <script>
  209. import {getDictionaryFn} from '@/api/mine/register.js'
  210. import {getscoregradeRank,getscorexuekeRank,getscoreclassRank,getscoreavgRank,getscoreavgRankZheXian,getscorebingTuRank} from "@/api/mine/score.js"
  211. import noData from "@/components/nodata/nodata.vue"
  212. import qiunDataCharts from "@/mine/components/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue"
  213. export default {
  214. components:{
  215. noData,qiunDataCharts
  216. },
  217. data() {
  218. return {
  219. list: [{tit: '总分排名',val:'0'},{tit: '科目排名',val:'1'},{tit: '班级排名',val:'2'},{tit: '平均分统计',val:'3'},{tit: '分数段统计',val:'4'}],
  220. clickId: '',
  221. clickToId: '',
  222. currentNum: '0',
  223. searimg:require("@/mine/static/score/search.png"),
  224. oneimg:require("@/mine/static/score/one.png"),
  225. twoimg:require("@/mine/static/score/two.png"),
  226. threeimg:require("@/mine/static/score/three.png"),
  227. onebgimg:require("@/mine/static/score/onebg.png"),
  228. twobgimg:require("@/mine/static/score/twobg.png"),
  229. threebgimg:require("@/mine/static/score/threebg.png"),
  230. secm:require("@/mine/static/score/secm.png"),
  231. upimg:require("@/mine/static/score/up.png"),
  232. line:require("@/mine/static/score/line.png"),
  233. xlhealthrange:[{dictLabel:'一年级一班'}],
  234. mindidx:0,
  235. mind:'',
  236. avg:'',//总分平均分
  237. optsa: {
  238. color: ["#4775EA","#3BA272","#FAC858","#EE6666","#73C0DE","#91CC75","#3CA272","#FC8452","#9A60B4","#ea7ccc"],
  239. padding:[0,0,0,0],
  240. title: {
  241. name: "",
  242. },
  243. legend:{
  244. // show: false,
  245. position: "bottom",
  246. padding: 0,
  247. margin: 0,
  248. },
  249. // 副标题
  250. subtitle: {name: "分数段统计",fontSize: 13,color: "#666666"},
  251. extra: {
  252. ring:{border: false,ringWidth: 20,},
  253. }
  254. },
  255. chartDataa:{
  256. "categories": [],
  257. series: [
  258. // {
  259. // data: [{name: '700-800', labelShow: false, value: 0},
  260. // {name: '0-100', labelShow: false, value: 1},]
  261. // }
  262. ],
  263. "enableScroll":false
  264. },
  265. optsb:{
  266. color: ["#4775EA","#99C827","#FAC858","#EE6666","#73C0DE","#3CA272","#FC8452","#9A60B4","#ea7ccc"],
  267. padding: [15,15,0,5],
  268. enableScroll:true,
  269. legend: {},
  270. xAxis: {
  271. disableGrid: true,
  272. ecrollShow:true,
  273. itemCount:3,
  274. },
  275. yAxis: {
  276. data: [
  277. {
  278. min: 0
  279. }
  280. ]
  281. },
  282. extra: {
  283. column: {
  284. type: "group",
  285. width: 30,
  286. activeBgColor: "#000000",
  287. activeBgOpacity: 0.08,
  288. categoryGap:10,
  289. }
  290. }
  291. },
  292. chartDatab:{
  293. // categories: ["2018","2019","2020","2021","2022","2023"],
  294. // series: [
  295. // {
  296. // name: "成交量A",
  297. // data: [20,20,25,25,30,30]
  298. // },
  299. // {
  300. // name: "成交量b",
  301. // data: [10,30,21,5,3,10]
  302. // },
  303. // ]
  304. },
  305. countobj:{},//数据格式
  306. gradeRank:[],//总分排名
  307. xuekeRank:[],//学科统计
  308. classRank:[],//班级总分平均分排名统计
  309. avgRank:[],//班级总分平均分人数统计
  310. avgRankZheXian:[],//分平均分人数统计折线图
  311. bingTuRank:[],//年级分数段统计
  312. // 分数段固定
  313. fsRank:[{tit:'700-800',type:8},{tit:'600-700',type:7},{tit:'500-600',type:6},{tit:'400-500',type:5},
  314. {tit:'300-400',type:4},{tit:'200-300',type:3},{tit:'100-200',type:2},{tit:'0-100',type:1},],
  315. subjectlist:[],//学科
  316. xueke:'',
  317. subidx:0,
  318. scoreDataName:'',//名称
  319. };
  320. },
  321. onLoad() {
  322. let that = this;
  323. // 判断角色 老师 看自己班级,家长不用选班级
  324. var data = JSON.parse(uni.getStorageSync('scorecount'))//取出缓存数据
  325. this.countobj=data;
  326. this.init()
  327. },
  328. methods: {
  329. setId(val) {
  330. this.currentNum=val;
  331. if(val==0){
  332. if(this.gradeRank&&this.gradeRank.length<1){
  333. this.getscoregradeRank()
  334. }
  335. }else if(val==1){
  336. if(this.xuekeRank&&this.xuekeRank.length<1){
  337. this.getscorexuekeRank()
  338. }
  339. }else if(val==2){
  340. if(this.classRank&&this.classRank.length<1){
  341. this.getscoreclassRank()
  342. }
  343. }else if(val==3){
  344. if(this.avgRank&&this.avgRank.length<1){
  345. this.getscoreavgRank()
  346. this.getscoreavgRankZheXian()
  347. }
  348. }else if(val==4){
  349. this.getscorebingTuRank()
  350. }
  351. },
  352. bindDateChangea(e){
  353. var idx=e.detail.value
  354. this.mind=this.xlhealthrange[idx].dictLabel
  355. },
  356. bindDateChanged(e){
  357. var idx=e.detail.value
  358. this.xueke=this.subjectlist[idx].dictLabel;
  359. this.getscorexuekeRank()
  360. },
  361. init(){
  362. getDictionaryFn('chjbxk').then(res=>{
  363. if(res.code==200){
  364. if(res.data&&res.data.length){
  365. this.subjectlist = res.data.map(v => {
  366. return {
  367. dictLabel: v.dictLabel,
  368. dictValue:v.dictValue,
  369. }
  370. })
  371. this.xueke=res.data[0].dictLabel;
  372. // this.getscorexuekeRank()
  373. }
  374. }
  375. })
  376. this.getscoregradeRank()
  377. // this.getscoregradeRank()
  378. // this.getscoreclassRank()
  379. // this.getscoreavgRank()
  380. },
  381. getSearch(){
  382. // 搜索暂时有问题
  383. var val=this.currentNum
  384. if(val==0){
  385. this.getscoregradeRank()
  386. }else if(val==1){
  387. this.getscorexuekeRank()
  388. }
  389. },
  390. // 总分统计
  391. getscoregradeRank(){
  392. var params={
  393. scoreTime:this.countobj.scoreTime,
  394. scoreClassName:this.countobj.scoreClassName,
  395. scoreType:this.countobj.scoreType,
  396. }
  397. if(this.scoreDataName){
  398. params.scoreDataName=this.scoreDataName
  399. }
  400. getscoregradeRank(params).then(res=>{
  401. if(res.code==200){
  402. this.gradeRank=res.rows;
  403. }else{
  404. this.$toast(res.msg)
  405. }
  406. })
  407. },
  408. // 成绩学科统计
  409. getscorexuekeRank(){
  410. var params={
  411. scoreTime:this.countobj.scoreTime,
  412. xueke:this.xueke,
  413. scoreClassName:this.countobj.scoreClassName,
  414. scoreType:this.countobj.scoreType,
  415. }
  416. if(this.scoreDataName){
  417. params.scoreDataName=this.scoreDataName
  418. }
  419. getscorexuekeRank(params).then(res=>{
  420. if(res.code==200){
  421. this.xuekeRank=res.rows;
  422. }else{
  423. this.$toast(res.msg)
  424. }
  425. })
  426. },
  427. // 班级总分平均分排名统计
  428. getscoreclassRank(){
  429. var params={
  430. scoreTime:this.countobj.scoreTime,
  431. scoreClassName:this.countobj.scoreClassName,
  432. scoreType:this.countobj.scoreType,
  433. // scoreId:this.countobj.scoreId,
  434. }
  435. getscoreclassRank(params).then(res=>{
  436. if(res.code==200){
  437. this.classRank=res.rows;
  438. }else{
  439. this.$toast(res.msg)
  440. }
  441. })
  442. },
  443. //平均人数
  444. getscoreavgRank(){
  445. var params={
  446. scoreTime:this.countobj.scoreTime,
  447. scoreType:this.countobj.scoreType,
  448. scoreClassName:this.countobj.scoreClassName,
  449. }
  450. getscoreavgRank(params).then(res=>{
  451. if(res.code==200){
  452. this.avgRank=res.rows;
  453. }else{
  454. this.$toast(res.msg)
  455. }
  456. })
  457. },
  458. //班级总分平均分人数统计折线图
  459. getscoreavgRankZheXian(){
  460. var params={
  461. scoreClassName:this.countobj.scoreClassName,
  462. scoreTime:this.countobj.scoreTime,
  463. scoreType:this.countobj.scoreType,
  464. }
  465. getscoreavgRankZheXian(params).then(res=>{
  466. if(res.code==200){
  467. var x=res.data.x;
  468. var avg=res.data.avg;
  469. this.avg=Number(avg).toFixed(2);
  470. let nobj = {
  471. categories: x,
  472. series: [
  473. {
  474. name: "均分以下",
  475. data: res.data.y2
  476. },
  477. {
  478. name: "均分以上",
  479. data: res.data.y1
  480. },
  481. ],
  482. };
  483. if(x.length>3){
  484. nobj.enableScroll=true;//是否滚动
  485. }else{
  486. nobj.enableScroll=false;//是否滚动
  487. }
  488. this.chartDatab = JSON.parse(JSON.stringify(nobj));
  489. // this.avgRankZheXian=res.rows;
  490. }else{
  491. this.$toast(res.msg)
  492. }
  493. })
  494. },
  495. //年级分数段统计
  496. getscorebingTuRank(){
  497. var params={
  498. scoreClassName:this.countobj.scoreClassName,
  499. scoreTime:this.countobj.scoreTime,
  500. scoreType:this.countobj.scoreType,
  501. }
  502. getscorebingTuRank(params).then(res=>{
  503. if(res.code==200){
  504. // 数据处理
  505. var fsRank=this.fsRank;
  506. var chartarr=[];
  507. var data=res.data;
  508. fsRank.forEach(ite=>{
  509. var obj={};
  510. obj.name=ite.tit;
  511. obj.labelShow=false;
  512. if(ite.type=='8'){
  513. obj.value=data.Eig;
  514. ite.num=data.Eig;
  515. ite.mix=data.EigZ;
  516. }else if(ite.type=='7'){
  517. obj.value=data.Sev;
  518. ite.num=data.Sev;
  519. ite.mix=data.SevZ;
  520. }else if(ite.type=='6'){
  521. obj.value=data.Six;
  522. ite.num=data.Six;
  523. ite.mix=data.SixZ;
  524. }else if(ite.type=='5'){
  525. obj.value=data.Fiv;
  526. ite.num=data.Fiv;
  527. ite.mix=data.FivZ;
  528. }else if(ite.type=='4'){
  529. obj.value=data.For;
  530. ite.num=data.For;
  531. ite.mix=data.ForZ;
  532. }else if(ite.type=='3'){
  533. obj.value=data.Thr;
  534. ite.num=data.Thr;
  535. ite.mix=data.ThrZ;
  536. }else if(ite.type=='2'){
  537. obj.value=data.Tow;
  538. ite.num=data.Tow;
  539. ite.mix=data.TowZ;
  540. }else if(ite.type=='1'){
  541. obj.value=data.One;
  542. ite.num=data.One;
  543. ite.mix=data.OneZ;
  544. }
  545. chartarr.push(obj)
  546. })
  547. var cobj={
  548. data:JSON.parse(JSON.stringify(chartarr))
  549. }
  550. var series=[];
  551. series.push(cobj)
  552. this.chartDataa.series = JSON.parse(JSON.stringify(series));
  553. this.fsRank=JSON.parse(JSON.stringify(fsRank));
  554. // var newArr=res.data;
  555. // this.bingTuRank=res.rows;
  556. }else{
  557. this.$toast(res.msg)
  558. }
  559. })
  560. },
  561. },
  562. };
  563. </script>
  564. <style lang="less">
  565. .count {
  566. display: flex;min-height: 100vh;background-color: #ffffff;
  567. .left {
  568. width: 210rpx;
  569. .title {
  570. background: #F6F6F8;margin-bottom: 6rpx;
  571. text-align: center;
  572. height: 120rpx;
  573. line-height: 120rpx;
  574. color: #161616;font-weight: 500;
  575. }
  576. .act {
  577. background: #FFFFFF;font-weight: bold;color: #4775EA;
  578. }
  579. }
  580. .pd{padding:0rpx 20rpx 0 32rpx;}
  581. .right {
  582. flex: 1;overflow: hidden;height: 100vh;padding-top:26rpx;flex-direction: column;display: flex;
  583. .search{width: 100%;height: 60rpx;border: 2rpx solid #C1C1C1;border-radius: 10rpx; box-sizing: border-box;display: flex;padding-left: 24rpx;align-items: center;
  584. image{width: 26rpx;height: 26rpx;flex: 0 0 auto;margin-right: 20rpx;}
  585. input{font-size: 28rpx;color: #161616;line-height: 56rpx;}
  586. .btn{padding: 0 24rpx 0 20rpx;flex: 0 0 auto;font-size: 28rpx;font-weight: bold;color: #4775EA;height: 100%;line-height: 56rpx;}
  587. }
  588. .ser_toa{font-size: 28rpx;color: #161616;font-weight: bold;
  589. text{color: #4775EA;}
  590. }
  591. .mind_s{margin-bottom: 20rpx;
  592. .mind_sl{width: 30rpx;height: 28rpx;margin-right: 16rpx;}
  593. .mind_sa{padding-right:40rpx ;
  594. image{width: 22rpx;height: 12rpx;margin-left: 16rpx;}
  595. }
  596. }
  597. // 列表
  598. .tabchart{display: flex;flex-direction: column;overflow: auto;}
  599. .tab{display: flex;flex-direction: column;overflow: hidden;padding:0rpx 20rpx 0 32rpx;box-sizing: border-box;min-height: 600rpx;}
  600. .tab_top{flex: 0 0 auto;margin-bottom: 4rpx;}
  601. .a{width: 25%;flex: 0 0 auto;display: flex;align-items: center;justify-content: center;z-index: 1;padding:8rpx 0;
  602. image{width: 32rpx;height: 40rpx;}
  603. &.w20{width: 20%;}
  604. &.w25{width: 25%;}
  605. &.w30{width: 30%;}
  606. &.w40{width: 40%;}
  607. &.w50{width: 50%;}
  608. &.w70{width: 70%;}
  609. }
  610. .topt{font-size: 28rpx;font-weight: 500;color: #666666;}
  611. .idx{font-size: 30rpx;font-weight: 500;color: #8C93AD;}
  612. .tit{font-size: 30rpx;font-weight: 500;color: #161616;}
  613. .num{font-size: 30rpx;font-weight: bold;color: #161616;}
  614. .tab_tr{position: relative;width: 100%;min-height: 70rpx;flex: 1;margin-bottom: 24rpx;display: flex;
  615. .bgimg{width: 100%;height: 100%;position: absolute;left: 0;}
  616. &.bg1{background: #F2F6FF;min-height: 70rpx;height: auto;}
  617. }
  618. .lineimg{width: 162rpx;height: 10rpx;margin: 28rpx auto;}
  619. }
  620. }
  621. </style>