analysiscf.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817
  1. <template>
  2. <view>
  3. <cu-custom bgColor="bg-blue" :isBack="true" backUrl="/pages/indexcf/indexcf">
  4. <block slot="content">数据分析</block>
  5. </cu-custom>
  6. <view class="header-line-2">
  7. <!-- <jp-picker v-model="yqid" rangeKey="label" rangeValue="value" :range="parkList"
  8. :onChangeNew="changeYQId" empty="选择园区">
  9. </jp-picker> -->
  10. <picker @change="changeYQId" :value="yqIndex" :range="showYQList">
  11. <view class=" picker action">
  12. <view style="color: #fff;">{{showYQList[yqIndex]}}</view>
  13. </view>
  14. </picker>
  15. </view>
  16. <view class="header-line">
  17. <view @click="changeShow(2)" :class="show == 2 ? 'actClass' : ''">楼宇</view>
  18. <view @click="changeShow(1)" :class="show == 1 ? 'actClass' : ''">统计报表</view>
  19. </view>
  20. <view class="page-box" v-show="show != 1">
  21. <view class="yqshpmfxBox">
  22. <view class="tab-header">
  23. <view class="header-name">楼宇税收排名分析</view>
  24. </view>
  25. <view class="pmfx-box">
  26. <qiun-data-charts type="column" :opts="opts" :chartData="chartData" :ontouch="true" />
  27. </view>
  28. <view class="line-box"></view>
  29. <view class="ssbox">
  30. <view class="ss-left-box">
  31. <view class="num">{{ssInfo.yearTax}}<text class="unit">万元</text></view>
  32. <view style="height: 20rpx;"></view>
  33. <view class="unit">税收总额</view>
  34. </view>
  35. <view class="ss-right-box">
  36. <view class="right-text-box">
  37. <view class="num">{{ssInfo.monthrTax}}<text class="unit">万元</text></view>
  38. <view style="height: 20rpx;"></view>
  39. <view class="unit">本月税收(占比)</view>
  40. </view>
  41. <view class="pie-box">
  42. <qiun-data-charts type="arcbar" :opts="opts2" :chartData="chartData2" />
  43. </view>
  44. </view>
  45. </view>
  46. </view>
  47. <view class="page-center-box">
  48. <view class="center-left-box">
  49. <view class="center-title">楼宇入住率排名分析</view>
  50. <view class="table-line" v-for="(item, index) in rzList" :key="index">
  51. <view class="index">{{index + 1 }}</view>
  52. <view class="name">{{item.name}}</view>
  53. <view class="percent">{{item.value}}%</view>
  54. </view>
  55. </view>
  56. <view class="center-right-box">
  57. <view class="center-title">楼宇企业数量类型分析</view>
  58. <view class="right-box-in">
  59. <qiun-data-charts type="pie" :opts="opts3" :chartData="chartData3" />
  60. </view>
  61. </view>
  62. </view>
  63. <view class="yqqsBox">
  64. <view class="tab-header">
  65. <view class="header-name">楼宇税收趋势分析</view>
  66. <jp-picker v-model="ssqsLYid" rangeKey="label" rangeValue="value" :range="LYList"
  67. :onChangeNew="changeSSLYId">
  68. </jp-picker>
  69. </view>
  70. <view class="pmfx-box">
  71. <qiun-data-charts type="line" :opts="opts4" :chartData="chartDataSSLY" />
  72. </view>
  73. <view style="height: 20rpx;"></view>
  74. </view>
  75. <view class="yqqsBox">
  76. <view class="tab-header">
  77. <view class="header-name">楼宇新增企业月增长量</view>
  78. <jp-picker v-model="yzlLYid" rangeKey="label" rangeValue="value" :range="LYList"
  79. :onChangeNew="changeData">
  80. </jp-picker>
  81. </view>
  82. <view class="pmfx-box">
  83. <qiun-data-charts type="line" :opts="opts4" :chartData="chartDataLLXZL" />
  84. </view>
  85. <view style="height: 20rpx;"></view>
  86. </view>
  87. </view>
  88. <view v-show="show == 1">
  89. <view class="page-box">
  90. <view class="yqqsBox">
  91. <view class="tab-header">
  92. <view class="header-name">园区企业总数统计分析</view>
  93. </view>
  94. <view class="pmfx-box">
  95. <qiun-data-charts type="line" :opts="opts4" :chartData="chartDataYQQYZS" />
  96. </view>
  97. <view style="height: 20rpx;"></view>
  98. </view>
  99. </view>
  100. <view class="page-box">
  101. <view class="yqqsBox">
  102. <view class="tab-header">
  103. <view class="header-name">本年度税收额分析</view>
  104. </view>
  105. <view class="pmfx-box">
  106. <qiun-data-charts type="column" :opts="opts" :chartData="BNDSSchartData" :ontouch="true" />
  107. </view>
  108. <view style="height: 20rpx;"></view>
  109. </view>
  110. </view>
  111. <view class="page-box">
  112. <view class="yqqsBox">
  113. <view class="tab-header">
  114. <view class="header-name">本年度销售额分析</view>
  115. </view>
  116. <view class="pmfx-box">
  117. <qiun-data-charts type="column" :opts="opts" :chartData="BNDXSchartData" :ontouch="true" />
  118. </view>
  119. <view style="height: 20rpx;"></view>
  120. </view>
  121. </view>
  122. <view class="page-box">
  123. <view class="yqqsBox">
  124. <view class="tab-header">
  125. <view class="header-name">园区企业参保人数统计分析</view>
  126. </view>
  127. <view class="pmfx-box">
  128. <qiun-data-charts type="line" :opts="opts4" :chartData="chartDataYQSBRS" />
  129. </view>
  130. <view style="height: 20rpx;"></view>
  131. </view>
  132. </view>
  133. <view class="page-box">
  134. <view class="yqqsBox">
  135. <view class="tab-header">
  136. <view class="header-name">人才分析</view>
  137. </view>
  138. <view class="pmfx-box">
  139. <qiun-data-charts type="pie" :opts="optsSS" :chartData="chartDataSBRS" />
  140. </view>
  141. <view style="height: 20rpx;"></view>
  142. </view>
  143. </view>
  144. </view>
  145. </view>
  146. </template>
  147. <script>
  148. import loginService from '@/api/auth/loginService.js'
  149. export default {
  150. components: {
  151. },
  152. data() {
  153. return {
  154. yqIndex: 0,
  155. show: 2,
  156. parkList: [],
  157. LYList: [],
  158. ssInfo: {},
  159. rzList: [],
  160. ssqsLYid: '',
  161. yzlLYid: '',
  162. yqid: '',
  163. chartData: {},
  164. BNDSSchartData: {},
  165. BNDXSchartData: {},
  166. //您可以通过修改 config-ucharts.js 文件中下标为 ['column'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
  167. opts: {
  168. color: ["#1FD094"],
  169. padding: [15, 15, 0, 5],
  170. touchMoveLimit: 24,
  171. enableScroll: true,
  172. legend: {
  173. show: false
  174. },
  175. xAxis: {
  176. disableGrid: true,
  177. scrollShow: true,
  178. itemCount: 4
  179. },
  180. yAxis: {
  181. data: [{
  182. min: 0
  183. }]
  184. },
  185. extra: {
  186. column: {
  187. type: "group",
  188. width: 30,
  189. activeBgColor: "#000000",
  190. activeBgOpacity: 0.08
  191. }
  192. }
  193. },
  194. chartData2: {},
  195. //您可以通过修改 config-ucharts.js 文件中下标为 ['arcbar'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
  196. opts2: {
  197. color: ["#1890FF"],
  198. title: {
  199. name: '',
  200. fontSize: 0,
  201. },
  202. subtitle: {
  203. name: '',
  204. fontSize: 0,
  205. },
  206. extra: {
  207. arcbar: {
  208. type: "circle",
  209. width: 4,
  210. backgroundColor: "#E9E9E9",
  211. startAngle: 1.5,
  212. endAngle: 0.25,
  213. gap: 2
  214. }
  215. }
  216. },
  217. chartData3: {},
  218. //您可以通过修改 config-ucharts.js 文件中下标为 ['pie'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
  219. opts3: {
  220. color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
  221. "#ea7ccc"
  222. ],
  223. padding: [5, 5, 5, 5],
  224. enableScroll: true,
  225. legend: {
  226. show: false
  227. },
  228. dataLabel: false,
  229. extra: {
  230. pie: {
  231. activeOpacity: 0.5,
  232. activeRadius: 10,
  233. offsetAngle: 0,
  234. labelWidth: 15,
  235. border: true,
  236. borderWidth: 3,
  237. borderColor: "#FFFFFF"
  238. }
  239. }
  240. },
  241. chartData4: {},
  242. chartDataSSLY: {},
  243. chartDataLLXZL: {},
  244. //您可以通过修改 config-ucharts.js 文件中下标为 ['line'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
  245. opts4: {
  246. color: ["#1890FF"],
  247. padding: [15, 10, 30, 15],
  248. enableScroll: false,
  249. legend: {
  250. show: false
  251. },
  252. xAxis: {
  253. disableGrid: true,
  254. rotateLabel: true,
  255. rotateAngle: 45,
  256. },
  257. yAxis: {
  258. gridType: "dash",
  259. dashLength: 2
  260. },
  261. extra: {
  262. line: {
  263. type: "straight",
  264. width: 2,
  265. activeType: "hollow"
  266. }
  267. }
  268. },
  269. chartDataSBRS: {},
  270. chartDataYQQYZS: {},
  271. chartDataYQSBRS: {},
  272. chartDataSSEFX: {},
  273. showYQList: [],
  274. optsSS: {
  275. color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
  276. "#ea7ccc"
  277. ],
  278. padding: [5, 5, 5, 5],
  279. enableScroll: true,
  280. extra: {
  281. pie: {
  282. activeOpacity: 0.5,
  283. activeRadius: 10,
  284. offsetAngle: 0,
  285. labelWidth: 15,
  286. border: false,
  287. borderWidth: 3,
  288. borderColor: "#FFFFFF"
  289. }
  290. }
  291. }
  292. }
  293. },
  294. created() {
  295. // this.getParkList()
  296. // this.getAllparkList()
  297. },
  298. mounted() {
  299. this.AppFirst()
  300. this.AppFirstAddTotle()
  301. this.AppFirstAddNwe()
  302. },
  303. methods: {
  304. changeData() {
  305. this.AppFirstAddNwe()
  306. },
  307. getAllparkList() {
  308. loginService.parkList({
  309. current: 1,
  310. size: 1000000,
  311. }).then(({
  312. data
  313. }) => {
  314. this.parkList = data.records.map((item) => {
  315. return {
  316. label: item.parkName,
  317. value: item.id
  318. }
  319. })
  320. this.showYQList = data.records.map((item) => item.parkName)
  321. this.yqid = this.parkList[0].value
  322. }).catch(e => {
  323. console.log(e)
  324. })
  325. },
  326. changeYQId(e) {
  327. console.log('更改园区id')
  328. console.log(e, '================>e')
  329. this.yqIndex = e.detail.value
  330. this.yqid = this.parkList[this.yqIndex].value
  331. },
  332. changeShow(index) {
  333. this.show = index
  334. if (index == 1) {
  335. this.getStatisticsForPark()
  336. this.getSaleStatisticsForPark()
  337. this.getSaleStatisticsForYear2()
  338. }
  339. },
  340. getSaleStatisticsForYear2() {
  341. let res = {
  342. categories: [2020, 2021, 2022, 2023, 2024],
  343. series: [{
  344. name: "税收",
  345. data: [1020, 980, 1011, 947, 1024]
  346. }]
  347. };
  348. this.BNDSSchartData = JSON.parse(JSON.stringify(res));
  349. let res2 = {
  350. categories: [2020, 2021, 2022, 2023, 2024],
  351. series: [{
  352. name: "销售",
  353. data: [2020, 1980, 3011, 1947, 2324]
  354. }]
  355. };
  356. this.BNDXSchartData = JSON.parse(JSON.stringify(res2));
  357. },
  358. // 楼宇新增企业月增量
  359. AppFirstAddNwe() {
  360. let res4 = {
  361. categories: ['1月', '2月', '3月', '4月'],
  362. series: [{
  363. name: "新增企业数",
  364. data: [5,0,2,7]
  365. }]
  366. };
  367. this.chartDataLLXZL = JSON.parse(JSON.stringify(res4));
  368. },
  369. changeSSLYId() {
  370. this.AppFirstAddTotle()
  371. },
  372. // 税收
  373. AppFirstAddTotle() {
  374. let res4 = {
  375. categories: ['1月', '2月', '3月', '4月'],
  376. series: [{
  377. name: "税收",
  378. data: [345,125,467,789]
  379. }]
  380. };
  381. this.chartDataSSLY = JSON.parse(JSON.stringify(res4));
  382. },
  383. getSaleStatisticsForPark() {
  384. let peopelList = [{
  385. name: '博士生',
  386. value: 29,
  387. },
  388. {
  389. name: '硕士生',
  390. value: 58,
  391. },
  392. {
  393. name: '本科生',
  394. value: 472,
  395. },
  396. {
  397. name: '本科以下',
  398. value: 289,
  399. },
  400. ]
  401. let res2 = {
  402. series: [{
  403. data: peopelList
  404. }]
  405. };
  406. this.chartDataSBRS = JSON.parse(JSON.stringify(res2));
  407. },
  408. getParkList() {
  409. loginService.list({
  410. current: 1,
  411. size: 1000000,
  412. }).then(({
  413. data
  414. }) => {
  415. this.LYList = data.records.map((item) => {
  416. return {
  417. label: item.buildingName,
  418. value: item.id
  419. }
  420. })
  421. this.ssqsLYid = this.LYList[0].value
  422. this.yzlLYid = this.LYList[0].value
  423. }).catch(e => {
  424. console.log(e)
  425. })
  426. },
  427. AppFirst() {
  428. let data = [{
  429. "B9": "1365.24",
  430. "B4": "638.81",
  431. "B8": "71.15",
  432. "B5": "69.44",
  433. "B10": "2.3"
  434. }, {
  435. "percentage": "0",
  436. "yearTax": "0.0",
  437. "monthrTax": "0.0"
  438. }, {
  439. "B10": "35.92",
  440. "B4": "36.99",
  441. "B5": "41.55",
  442. "B6": "30.38",
  443. "B8": "81.97",
  444. "B9": "92.14"
  445. }, {
  446. "5": "21.62",
  447. "5,10": "14.19",
  448. "1,10": "12.16",
  449. "1": "4.73",
  450. "5,12": "4.05",
  451. "2": "3.38",
  452. "5,10,16": "2.70",
  453. "4": "2.03",
  454. "5,12,13": "2.03",
  455. "5,10,11": "2.03",
  456. "5,9": "1.35",
  457. "5,10,14": "0.68",
  458. "1,17,18": "0.68",
  459. "1,12": "0.68",
  460. "5,1": "0.68",
  461. "6": "0.68",
  462. "5,10,9": "0.68",
  463. "5,17,18": "0.68",
  464. "7": "0.68",
  465. "5,15,10": "0.68",
  466. "5,17": "0.68",
  467. "5,10,15": "0.68",
  468. "9": "0.68",
  469. "1,9": "0.68"
  470. }];
  471. let lyssList = data[0]
  472. let keys = Object.keys(lyssList);
  473. let values = Object.values(lyssList);
  474. let res = {
  475. categories: keys,
  476. series: [{
  477. name: "税收",
  478. data: values
  479. }]
  480. };
  481. this.chartData = JSON.parse(JSON.stringify(res));
  482. this.ssInfo = data[1]
  483. let res2 = {
  484. series: [{
  485. color: "#2fc25b",
  486. data: Number(this.ssInfo.percentage).toFixed(2)
  487. }]
  488. };
  489. this.chartData2 = JSON.parse(JSON.stringify(res2));
  490. let rzList = data[2];
  491. const rzListNew = [];
  492. for (const key in rzList) {
  493. if (rzList.hasOwnProperty(key)) {
  494. rzListNew.push({
  495. name: key,
  496. value: parseFloat(rzList[key]).toFixed(2)
  497. });
  498. }
  499. }
  500. this.rzList = rzListNew.slice(0, 5)
  501. let lyslList = data[3]
  502. let lyslListNew = []
  503. for (const key in lyslList) {
  504. if (lyslList.hasOwnProperty(key)) {
  505. lyslListNew.push({
  506. 'name': this.$dictUtils.getDictLabel("industrial_type", key, '-'),
  507. 'value': parseFloat(lyslList[key]).toFixed(2) * 100
  508. });
  509. }
  510. }
  511. let res3 = {
  512. series: [{
  513. data: lyslListNew
  514. }]
  515. }
  516. this.chartData3 = JSON.parse(JSON.stringify(res3));
  517. },
  518. getStatisticsForPark() {
  519. let res = {
  520. categories: ['亭湖产业园', '数字基地', '环保产业园','光电产业园', '兴泰产业园'],
  521. series: [{
  522. name: "企业总数",
  523. data: [12, 20, 3, 7, 8]
  524. }]
  525. };
  526. this.chartDataYQQYZS = JSON.parse(JSON.stringify(res));
  527. // chartDataSBRS
  528. let resCB = {
  529. categories: ['亭湖产业园', '数字基地', '环保产业园','光电产业园', '兴泰产业园'],
  530. series: [{
  531. name: "企业参保人数统计",
  532. data: [82, 70, 35, 72, 81]
  533. }]
  534. };
  535. this.chartDataYQSBRS = JSON.parse(JSON.stringify(resCB));
  536. },
  537. },
  538. }
  539. </script>
  540. <style>
  541. @font-face {
  542. font-family: 'DIN';
  543. /* 自定义字体名称 */
  544. src: url('/static/fonts/DINSchrift.ttf');
  545. /* 字体文件路径 */
  546. }
  547. .header-line {
  548. display: flex;
  549. background: #36A7F3;
  550. font-weight: normal;
  551. font-size: 32rpx;
  552. color: #fff;
  553. justify-content: space-around;
  554. height: 240rpx;
  555. line-height: 80rpx;
  556. }
  557. .header-line-2 {
  558. background: #36A7F3;
  559. font-weight: normal;
  560. font-size: 32rpx;
  561. color: #fff !important;
  562. line-height: 40rpx;
  563. padding-left: 40rpx;
  564. }
  565. .text-grey {
  566. color: #fff;
  567. }
  568. .page-box {
  569. position: relative;
  570. top: -160rpx;
  571. }
  572. .yqshpmfxBox {
  573. width: 706rpx;
  574. border-radius: 40rpx;
  575. background: #fff;
  576. margin-left: auto;
  577. margin-right: auto;
  578. box-shadow: 0px 8px 16px 2px rgba(101, 101, 101, 0.2);
  579. }
  580. .actClass {
  581. color: #FAF82F;
  582. }
  583. .yqqsBox {
  584. margin-top: 30rpx;
  585. width: 706rpx;
  586. border-radius: 40rpx;
  587. background: #fff;
  588. margin-left: auto;
  589. margin-right: auto;
  590. box-shadow: 0px 8px 16px 2px rgba(101, 101, 101, 0.2);
  591. }
  592. .tab-header {
  593. display: flex;
  594. justify-content: space-between;
  595. padding-left: 40rpx;
  596. padding-right: 40rpx;
  597. border-bottom: 1rpx solid #D5D4D0;
  598. align-items: center;
  599. }
  600. .header-name {
  601. font-size: 32rpx;
  602. color: #40547E;
  603. line-height: 102rpx;
  604. }
  605. .pmfx-box {
  606. height: 440rpx;
  607. }
  608. .ssfx-box {
  609. height: 650rpx;
  610. }
  611. .line-box {
  612. height: 30rpx;
  613. border-bottom: 1rpx solid #D5D4D0;
  614. }
  615. .ssbox {
  616. display: flex;
  617. }
  618. .ss-left-box {
  619. flex: 1;
  620. display: flex;
  621. flex-direction: column;
  622. align-items: center;
  623. justify-content: center;
  624. height: 156rpx;
  625. border-right: 1rpx solid #D5D4D0;
  626. }
  627. .ss-right-box {
  628. flex: 1;
  629. display: flex;
  630. justify-content: center;
  631. align-items: center;
  632. }
  633. .num {
  634. font-weight: bold;
  635. font-size: 44rpx;
  636. font-family: 'DIN';
  637. color: #070303;
  638. }
  639. .unit {
  640. font-size: 28rpx;
  641. color: #07245A;
  642. opacity: 0.7;
  643. }
  644. .right-text-box {
  645. flex: 1;
  646. }
  647. .pie-box {
  648. height: 156rpx;
  649. width: 110rpx;
  650. }
  651. .page-center-box {
  652. display: flex;
  653. width: 706rpx;
  654. margin-left: auto;
  655. margin-right: auto;
  656. justify-content: space-between;
  657. margin-top: 30rpx;
  658. }
  659. .center-left-box {
  660. width: 344rpx;
  661. border-radius: 40rpx;
  662. border-radius: 40rpx;
  663. padding-left: 20rpx;
  664. padding-right: 20rpx;
  665. background: #fff;
  666. box-shadow: 0px 8px 16px 2px rgba(101, 101, 101, 0.2);
  667. padding-bottom: 30rpx;
  668. }
  669. .center-right-box {
  670. width: 344rpx;
  671. border-radius: 40rpx;
  672. border-radius: 40rpx;
  673. padding-left: 20rpx;
  674. padding-right: 20rpx;
  675. background: #fff;
  676. box-shadow: 0px 8px 16px 2px rgba(101, 101, 101, 0.2);
  677. padding-bottom: 30rpx;
  678. }
  679. .center-title {
  680. font-size: 24rpx;
  681. color: #064875;
  682. line-height: 18px;
  683. opacity: 0.7;
  684. padding-left: 22rpx;
  685. padding-top: 23rpx;
  686. padding-bottom: 23rpx;
  687. }
  688. .table-line {
  689. display: flex;
  690. line-height: 50rpx;
  691. height: 50rpx;
  692. }
  693. .table-line:nth-child(odd) {
  694. background-color: #fff;
  695. }
  696. .table-line:nth-child(even) {
  697. background-color: #F1F6F9;
  698. }
  699. .index {
  700. width: 15%;
  701. text-align: center;
  702. font-size: 28rpx;
  703. color: #122F64;
  704. font-family: 'DIN';
  705. }
  706. .name {
  707. font-size: 26rpx;
  708. color: #242323;
  709. width: 65%;
  710. overflow: hidden;
  711. text-overflow: ellipsis;
  712. white-space: nowrap;
  713. }
  714. .percent {
  715. font-weight: bold;
  716. font-size: 28rpx;
  717. color: #219BED;
  718. font-family: 'DIN';
  719. }
  720. .right-box-in {
  721. height: 220rpx;
  722. }
  723. </style>