You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

882 lines
18 KiB

4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
4 weeks ago
  1. <template>
  2. <view class="main">
  3. <!-- 顶部状态栏占位 -->
  4. <view class="top" :style="{height:iSMT+'px'}"></view>
  5. <deepExploration_header></deepExploration_header>
  6. <view class="search">
  7. <input v-model="searchName" class="searchInput" type="text" placeholder="请输入股票名称、股票代码"
  8. placeholder-style="color: #A6A6A6; font-size: 22rpx;" />
  9. <image @click="searchStock" class="seachIcon" src="/static/deepExploration-images/search.png"
  10. mode="aspectFill"></image>
  11. </view>
  12. <view class="content">
  13. <view class="select">
  14. <image class="img" :src="navItems[currentIndex].icon" mode=""></image>
  15. <view v-for="(item, index) in navItems" :key="index" class="selectItem"
  16. :class="{ active: currentIndex === index }" @click="handleModel(index)">
  17. <button class="btn"></button>
  18. </view>
  19. </view>
  20. <view class="graphAndTxt">
  21. <view class="graph">
  22. <view class="graph_header">
  23. <view class="left">TESA</view>
  24. <view class="center">
  25. <image class="last" src="/static/deepExploration-images/last.png" mode="aspectFill"></image>
  26. <text>Taewlkj.sejssssssssf</text>
  27. <image class="next" src="/static/deepExploration-images/next.png" mode="aspectFill"></image>
  28. </view>
  29. <view class="right">2025/10/26</view>
  30. </view>
  31. <view class="graph_data">
  32. <text>435.900</text>
  33. <text>22.410</text>
  34. <text>5.120%</text>
  35. </view>
  36. <view class="graph_content">
  37. <view class="charts-box">
  38. <!-- uCharts 蜡烛图组件 -->
  39. <qiun-data-charts type="candle" :opts="opts" :chartData="chartData" :disableScroll="true"
  40. :ontouch="true" :onzoom="true" />
  41. </view>
  42. </view>
  43. </view>
  44. <view class="txt">
  45. <view class="txtHeader">
  46. <image src="/static/deepExploration-images/plus.png" mode="aspectFill"></image>
  47. <text>{{navItems[currentIndex].name}}</text>
  48. </view>
  49. <view class="txtContent">
  50. <view v-if="loading" class="loading">加载中...</view>
  51. <rich-text :nodes="htmlContent"></rich-text>
  52. </view>
  53. </view>
  54. </view>
  55. </view>
  56. <!-- 底部切换栏 -->
  57. <footerBar class="static-footer" :type="type"></footerBar>
  58. </view>
  59. </template>
  60. <script setup>
  61. import {
  62. ref,
  63. onMounted
  64. } from 'vue'
  65. import deepExploration_header from '@/components/deepExploration_header.vue'
  66. import footerBar from '@/components/footerBar.vue'
  67. import {
  68. onLoad
  69. } from '@dcloudio/uni-app'
  70. import {
  71. getModel1First,
  72. getModel1Second,
  73. getModel2First,
  74. getModel2Second,
  75. getModel3First,
  76. getModel3Second,
  77. getModel4First,
  78. getModel4Second,
  79. } from '/api/deepExploration/deepExploration.js'
  80. import marked from 'marked'; // 引入 marked 库
  81. import hljs from 'highlight.js';
  82. import 'highlight.js/styles/atom-one-dark.css'; // 可替换为其他主题
  83. // 响应式变量定义
  84. const type = ref('deepExploration')
  85. const iSMT = ref(0)
  86. const currentIndex = ref(0)
  87. const navItems = ref([{
  88. name: '主力追踪',
  89. icon: '/static/deepExploration-images/1.png'
  90. },
  91. {
  92. name: '主力雷达',
  93. icon: '/static/deepExploration-images/2.png'
  94. },
  95. {
  96. name: '主力解码',
  97. icon: '/static/deepExploration-images/3.png'
  98. },
  99. {
  100. name: '主力资金流',
  101. icon: '/static/deepExploration-images/4.png'
  102. },
  103. ])
  104. //搜索股票
  105. const searchStock = () => {
  106. console.log('搜索参数:', stockName.value);
  107. if (currentIndex.value == 0) {
  108. handleModel(0)
  109. } else if (currentIndex.value == 1) {
  110. console.log(index);
  111. handleModel(1)
  112. } else if (currentIndex.value == 2) {
  113. console.log(index);
  114. handleModel(2)
  115. } else if (currentIndex.value == 3) {
  116. console.log(index);
  117. handleModel(3)
  118. } else {
  119. uni.showToast({
  120. title: '请选择模块',
  121. icon: 'none',
  122. duration: 2000
  123. })
  124. }
  125. }
  126. //点击四大模块
  127. const handleModel = (index) => {
  128. currentIndex.value = index
  129. if (currentIndex.value == 0) {
  130. console.log(index);
  131. handleTrack()
  132. } else if (currentIndex.value == 1) {
  133. console.log(index);
  134. handleRadar()
  135. } else if (currentIndex.value == 2) {
  136. console.log(index);
  137. handleDecode()
  138. } else if (currentIndex.value == 3) {
  139. console.log(index);
  140. handleCapitalFlow()
  141. }
  142. }
  143. const stockName = ref('')
  144. const searchName = ref('')
  145. const stockCode = ref('')
  146. const language = ref('')
  147. const recordId = ref('')
  148. const parentId = ref('')
  149. const stockId = ref('')
  150. const loading = ref(true);
  151. const error = ref('');
  152. const htmlContent = ref('');
  153. const markdownContent = ref('');
  154. // 初始化 marked 配置(支持代码高亮)
  155. marked.setOptions({
  156. highlight: (code, lang) => {
  157. if (lang && hljs.getLanguage(lang)) {
  158. return hljs.highlight(code, { language: lang }).value;
  159. }
  160. return hljs.highlightAuto(code).value;
  161. },
  162. breaks: true,
  163. gfm: true,
  164. sanitize: true, // 过滤掉 Markdown 中的 inline style(可能导致横向溢出)
  165. sanitizer: (html) => {
  166. // 移除所有 style 属性,避免后端返回的 Markdown 带强制横向样式
  167. return html.replace(/style="[^"]*"/g, '');
  168. }
  169. });
  170. //点击主力追踪
  171. const handleTrack = async () => {
  172. try {
  173. markdownContent.value = '\n## 📊 主力解码分析:\n### 序列密码\n\tL2情绪解码。当前股票序列密码为53、0、17、158,市场情绪未出现确定性转折。\n\n### 股票温度\n\tL1情绪监控。当前股票温度为51,处于温热区,情绪积极向上,资金稳步进场。趋势健康,量价配合良好。此时应积极跟随趋势,顺势而为。\n\n### 市场温度\n\t当前市场温度为61,处于温热区,指数温和上行,技术面呈多头排列,资金有序进场,赚钱效应扩散。需警惕市场风险,以规避“甜蜜陷阱”。\n '
  174. htmlContent.value = marked.parse(markdownContent.value);
  175. loading.value = true;
  176. // const result = await getModel1First({
  177. // content: searchName.value,
  178. // language: "cn",
  179. // marketList: "hk,cn,usa,my,sg,vi,in,gb",
  180. // model: 1
  181. // })
  182. // console.log('result', result);
  183. // if (result.code == 200) {
  184. // stockCode.value = result.data.code
  185. // stockName.value = result.data.name
  186. // recordId.value = result.data.recordId
  187. // parentId.value = result.data.parentId
  188. // stockId.value = result.data.stockId
  189. // language.value = result.data.language
  190. // const res = await getModel1Second({
  191. // language: language.value,
  192. // recordId: recordId.value,
  193. // parentId: parentId.value,
  194. // stockId: stockId.value,
  195. // token: 'pCtw6AYK0EHAaIexoFHsbZjtsfEAIhcmwkCFm6uKko8VPfMvyDiODL9v9c0veic9fIpQbvT8zN4sH/Si6Q'
  196. // })
  197. // if (res.code == 200) {
  198. // markdownContent.value = res.data.markdown
  199. // htmlContent.value = marked.parse(markdownContent.value);
  200. // }
  201. // console.log('res', res);
  202. // }
  203. } catch {
  204. error.value = e.message || '加载失败,请重试';
  205. }finally{
  206. loading.value = false;
  207. }
  208. }
  209. //点击主力雷达
  210. const handleRadar = () => {
  211. }
  212. //点击主力解码
  213. const handleDecode = () => {
  214. }
  215. //点击主力资金流
  216. const handleCapitalFlow = () => {
  217. }
  218. // 1. K线图配置
  219. const opts = ref({
  220. rotate: false,
  221. rotateLock: false,
  222. color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4", "#ea7ccc"],
  223. padding: [15, 15, 0, 15],
  224. dataLabel: false,
  225. enableScroll: true,
  226. enableMarkLine: false,
  227. legend: {},
  228. xAxis: {
  229. labelCount: 4,
  230. itemCount: 30,
  231. disableGrid: true,
  232. gridColor: "#CCCCCC",
  233. gridType: "solid",
  234. dashLength: 4,
  235. scrollShow: false,
  236. scrollAlign: "left",
  237. scrollColor: "#A6A6A6",
  238. scrollBackgroundColor: "#EFEBEF",
  239. labelColor: "#8C8C8C",
  240. fontSize: 9
  241. },
  242. yAxis: {
  243. labelColor: "#8C8C8C",
  244. fontSize: 9
  245. },
  246. extra: {
  247. candle: {
  248. color: {
  249. upLine: "#f04864",
  250. upFill: "#f04864",
  251. downLine: "#2fc25b",
  252. downFill: "#2fc25b"
  253. },
  254. average: {
  255. show: false,
  256. name: ["MA5", "MA10", "MA30"],
  257. day: [5, 10, 20],
  258. color: ["#1890ff", "#2fc25b", "#facc14"]
  259. }
  260. },
  261. markLine: {
  262. type: "dash",
  263. dashLength: 5,
  264. data: [{
  265. value: 2150,
  266. lineColor: "#f04864",
  267. showLabel: false
  268. },
  269. {
  270. value: 2350,
  271. lineColor: "#f04864",
  272. showLabel: false
  273. }
  274. ]
  275. },
  276. tooltip: {
  277. showCategory: true
  278. }
  279. }
  280. })
  281. // 2. K线图数据(响应式定义)
  282. const chartData = ref({})
  283. // 获取K线数据函数(直接定义,无需methods)
  284. const getServerData = () => {
  285. // 模拟服务器请求延时
  286. setTimeout(() => {
  287. const res = {
  288. "categories": [
  289. "2025/08/25",
  290. "2025/08/26",
  291. "2025/08/27",
  292. "2025/08/28",
  293. "2025/08/29",
  294. "2025/09/01",
  295. "2025/09/02",
  296. "2025/09/03",
  297. "2025/09/04",
  298. "2025/09/05",
  299. "2025/09/08",
  300. "2025/09/09",
  301. "2025/09/10",
  302. "2025/09/11",
  303. "2025/09/12",
  304. "2025/09/15",
  305. "2025/09/16",
  306. "2025/09/17",
  307. "2025/09/18",
  308. "2025/09/19",
  309. "2025/09/22",
  310. "2025/09/23",
  311. "2025/09/24",
  312. "2025/09/25",
  313. "2025/09/26",
  314. "2025/09/29",
  315. "2025/09/30",
  316. "2025/10/09",
  317. "2025/10/10",
  318. "2025/10/13",
  319. "2025/10/14",
  320. "2025/10/15",
  321. "2025/10/16",
  322. "2025/10/17",
  323. "2025/10/20",
  324. "2025/10/21",
  325. "2025/10/22",
  326. "2025/10/23",
  327. "2025/10/24",
  328. "2025/10/27"
  329. ],
  330. series: [{
  331. "name": "贵州茅台",
  332. "data": [
  333. [
  334. 1470.01,
  335. 1496.0,
  336. 1466.0,
  337. 1499.33
  338. ],
  339. [
  340. 1490.32,
  341. 1474.23,
  342. 1480.01,
  343. 1481.61
  344. ],
  345. [
  346. 1481.88,
  347. 1484.93,
  348. 1448.0,
  349. 1448.0
  350. ],
  351. [
  352. 1447.97,
  353. 1456.1,
  354. 1438.77,
  355. 1446.1
  356. ],
  357. [
  358. 1453.0,
  359. 1482.58,
  360. 1452.0,
  361. 1480.0
  362. ],
  363. [
  364. 1482.2,
  365. 1488.0,
  366. 1465.7,
  367. 1476.1
  368. ],
  369. [
  370. 1478.66,
  371. 1509.0,
  372. 1478.0,
  373. 1491.3
  374. ],
  375. [
  376. 1491.0,
  377. 1503.5,
  378. 1466.0,
  379. 1480.55
  380. ],
  381. [
  382. 1472.0,
  383. 1479.3,
  384. 1460.47,
  385. 1480.66
  386. ],
  387. [
  388. 1471.0,
  389. 1486.97,
  390. 1464.0,
  391. 1483.0
  392. ],
  393. [
  394. 1483.0,
  395. 1506.44,
  396. 1477.5,
  397. 1501.23
  398. ],
  399. [
  400. 1505.0,
  401. 1509.95,
  402. 1493.42,
  403. 1505.0
  404. ],
  405. [
  406. 1506.66,
  407. 1529.95,
  408. 1496.0,
  409. 1522.01
  410. ],
  411. [
  412. 1522.01,
  413. 1526.02,
  414. 1508.5,
  415. 1523.5
  416. ],
  417. [
  418. 1526.0,
  419. 1538.02,
  420. 1510.53,
  421. 1516.0
  422. ],
  423. [
  424. 1515.87,
  425. 1517.48,
  426. 1501.5,
  427. 1515.1
  428. ],
  429. [
  430. 1515.1,
  431. 1520.99,
  432. 1496.21,
  433. 1499.98
  434. ],
  435. [
  436. 1499.99,
  437. 1510.28,
  438. 1490.01,
  439. 1493.0
  440. ],
  441. [
  442. 1492.0,
  443. 1497.8,
  444. 1463.5,
  445. 1467.96
  446. ],
  447. [
  448. 1467.99,
  449. 1475.5,
  450. 1457.01,
  451. 1467.97
  452. ],
  453. [
  454. 1465.09,
  455. 1467.97,
  456. 1450.01,
  457. 1453.35
  458. ],
  459. [
  460. 1450.5,
  461. 1457.5,
  462. 1440.0,
  463. 1447.42
  464. ],
  465. [
  466. 1434.07,
  467. 1456.78,
  468. 1434.07,
  469. 1442.0
  470. ],
  471. [
  472. 1442.83,
  473. 1445.21,
  474. 1436.0,
  475. 1439.0
  476. ],
  477. [
  478. 1441.18,
  479. 1447.11,
  480. 1428.01,
  481. 1435.0
  482. ],
  483. [
  484. 1439.38,
  485. 1469.99,
  486. 1435.0,
  487. 1460.86
  488. ],
  489. [
  490. 1460.0,
  491. 1460.76,
  492. 1440.0,
  493. 1443.99
  494. ],
  495. [
  496. 1436.0,
  497. 1439.38,
  498. 1420.0,
  499. 1436.78
  500. ],
  501. [
  502. 1437.6,
  503. 1439.94,
  504. 1427.5,
  505. 1430.0
  506. ],
  507. [
  508. 1415.7,
  509. 1422.85,
  510. 1415.12,
  511. 1419.2
  512. ],
  513. [
  514. 1429.99,
  515. 1464.0,
  516. 1429.99,
  517. 1451.02
  518. ],
  519. [
  520. 1450.98,
  521. 1463.0,
  522. 1445.08,
  523. 1462.0
  524. ],
  525. [
  526. 1461.92,
  527. 1484.95,
  528. 1458.88,
  529. 1484.91
  530. ],
  531. [
  532. 1483.1,
  533. 1488.0,
  534. 1454.03,
  535. 1455.0
  536. ],
  537. [
  538. 1455.0,
  539. 1469.5,
  540. 1454.88,
  541. 1457.93
  542. ],
  543. [
  544. 1459.0,
  545. 1469.94,
  546. 1455.5,
  547. 1462.26
  548. ],
  549. [
  550. 1462.08,
  551. 1465.73,
  552. 1456.0,
  553. 1458.7
  554. ],
  555. [
  556. 1455.0,
  557. 1468.8,
  558. 1447.2,
  559. 1467.98
  560. ],
  561. [
  562. 1467.95,
  563. 1478.88,
  564. 1449.34,
  565. 1450.0
  566. ],
  567. [
  568. 1440.0,
  569. 1452.49,
  570. 1435.99,
  571. 1440.41
  572. ]
  573. ],
  574. }]
  575. }
  576. // 给响应式变量赋值(需修改.value)
  577. chartData.value = JSON.parse(JSON.stringify(res))
  578. }, 500)
  579. }
  580. // 生命周期钩子:组件挂载后执行(替代onReady)
  581. onMounted(() => {
  582. iSMT.value = uni.getSystemInfoSync().statusBarHeight
  583. getServerData() // 调用数据获取函数
  584. })
  585. // 页面加载时执行
  586. onLoad((e) => {
  587. if (e.index) {
  588. currentIndex.value = e.index - 1
  589. console.log('模块:', currentIndex.value)
  590. }
  591. if (e.stockName) {
  592. stockName.value = e.stockName
  593. console.log('股票名称:', stockName.value)
  594. }
  595. })
  596. </script>
  597. <style scoped lang="scss">
  598. .main {
  599. width: 100%;
  600. min-height: 100vh;
  601. background-color: #fff;
  602. padding-bottom: 120rpx;
  603. .search {
  604. position: relative;
  605. display: flex;
  606. align-items: center;
  607. background-color: #F3F3F3;
  608. width: calc(100% - 60rpx);
  609. height: 80rpx;
  610. border-radius: 50rpx;
  611. box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
  612. padding: 0 40rpx;
  613. margin: 15rpx 30rpx 0 30rpx;
  614. .seachIcon {
  615. position: absolute;
  616. right: 50rpx;
  617. width: 32rpx;
  618. height: 32rpx;
  619. }
  620. .searchInput {
  621. color: #111;
  622. }
  623. }
  624. .content {
  625. margin-top: 30rpx;
  626. padding-top: 30rpx;
  627. background-color: rgb(248, 248, 248);
  628. .select {
  629. position: relative;
  630. margin-bottom: -5rpx;
  631. .img {
  632. width: 750rpx;
  633. height: 198rpx;
  634. }
  635. .selectItem {
  636. .btn {
  637. position: absolute;
  638. width: 120rpx;
  639. height: 150rpx;
  640. background-color: transparent;
  641. &::after {
  642. border: none;
  643. }
  644. }
  645. &:nth-of-type(1) .btn {
  646. top: 30rpx;
  647. left: 60rpx;
  648. }
  649. &:nth-of-type(2) .btn {
  650. top: 30rpx;
  651. left: 230rpx;
  652. }
  653. &:nth-of-type(3) .btn {
  654. top: 30rpx;
  655. left: 400rpx;
  656. }
  657. &:nth-of-type(4) .btn {
  658. top: 30rpx;
  659. left: 570rpx;
  660. }
  661. }
  662. }
  663. .graphAndTxt {
  664. background-color: #fff;
  665. border-radius: 50rpx 50rpx 0 0;
  666. padding: 68.6rpx 36.5rpx 0 36.5rpx;
  667. .graph {
  668. border: 1rpx solid #e2e2e2;
  669. border-radius: 30rpx 30rpx 0 0;
  670. .graph_header {
  671. padding: 32rpx 20.5rpx 0 24rpx;
  672. display: flex;
  673. align-items: center;
  674. .left {
  675. color: #333333;
  676. font-family: "PingFang SC";
  677. font-size: 15px;
  678. font-style: normal;
  679. font-weight: 400;
  680. line-height: 15px;
  681. }
  682. .center {
  683. margin-left: 105rpx;
  684. display: flex;
  685. align-items: center;
  686. text {
  687. width: 160rpx;
  688. height: 36rpx;
  689. padding-left: 10rpx;
  690. color: #000000;
  691. white-space: nowrap;
  692. overflow: hidden;
  693. text-overflow: ellipsis;
  694. text-align: center;
  695. font-family: "PingFang SC";
  696. font-size: 18px;
  697. font-style: normal;
  698. font-weight: 500;
  699. line-height: 18px;
  700. }
  701. .last {
  702. width: 15rpx;
  703. height: 20rpx;
  704. margin-right: 30rpx;
  705. }
  706. .next {
  707. width: 15rpx;
  708. height: 20rpx;
  709. margin-left: 30rpx;
  710. }
  711. }
  712. .right {
  713. margin-left: 50rpx;
  714. color: #6a6a6a;
  715. font-family: "PingFang SC";
  716. font-size: 13px;
  717. font-style: normal;
  718. font-weight: 400;
  719. line-height: 15px;
  720. }
  721. }
  722. .graph_data {
  723. display: flex;
  724. padding: 48rpx 24rpx;
  725. text {
  726. display: flex;
  727. color: #25ba5d;
  728. font-family: "PingFang SC";
  729. font-size: 17px;
  730. line-height: 17px;
  731. }
  732. text:nth-child(2) {
  733. margin-left: 120rpx;
  734. }
  735. text:nth-child(3) {
  736. margin-left: 150rpx;
  737. }
  738. }
  739. .graph_content {
  740. .charts-box {
  741. width: 100%;
  742. height: 100%;
  743. }
  744. }
  745. }
  746. .txt {
  747. background-color: #F3F3F3;
  748. margin-top: 48rpx;
  749. border-radius: 30rpx;
  750. .txtHeader {
  751. padding: 30rpx 24rpx;
  752. image {
  753. width: 20rpx;
  754. height: 20rpx;
  755. }
  756. text {
  757. background-color: #FFFFFF;
  758. color: #000000;
  759. padding: 0 22rpx;
  760. border-radius: 22rpx;
  761. font-size: 28rpx;
  762. font-weight: 400;
  763. line-height: 37rpx;
  764. }
  765. }
  766. .txtContent {
  767. min-height: 200rpx;
  768. padding: 20rpx 30rpx;
  769. margin-bottom: 100rpx;
  770. ::v-deep * {
  771. box-sizing: border-box;
  772. width: 100% !important; // 强制所有解析后的标签占满容器宽度
  773. white-space: normal !important; // 取消强制不换行
  774. word-wrap: break-word !important; // 长词/长数字自动换行
  775. }
  776. // 标题样式(确保换行)
  777. ::v-deep h2 {
  778. font-size: 32rpx;
  779. color: #333;
  780. margin: 25rpx 0 15rpx;
  781. line-height: 1.5;
  782. }
  783. // 段落样式(核心换行控制)
  784. ::v-deep p {
  785. font-size: 26rpx;
  786. color: #666;
  787. margin: 15rpx 0;
  788. line-height: 1.8; // 增加行高,提升可读性
  789. text-align: justify; // 两端对齐,避免单侧参差不齐
  790. }
  791. // 列表样式(纵向排列)
  792. ::v-deep ul, ::v-deep ol {
  793. margin: 15rpx 0 15rpx 30rpx;
  794. }
  795. ::v-deep li {
  796. margin: 10rpx 0;
  797. line-height: 1.6;
  798. }
  799. // 加载状态样式
  800. .loading {
  801. text-align: center;
  802. padding: 50rpx 0;
  803. color: #666;
  804. font-size: 26rpx;
  805. }
  806. }
  807. }
  808. }
  809. }
  810. .static-footer {
  811. position: fixed;
  812. bottom: 0;
  813. width: 100%;
  814. }
  815. }
  816. * {
  817. box-sizing: border-box;
  818. }
  819. </style>