Repository: zzy0202/FinanceMobileWeb-Vue Branch: main Commit: d18096edf395 Files: 32 Total size: 36.0 KB Directory structure: gitextract_ldjd61d0/ ├── .gitignore ├── README.md ├── babel.config.js ├── package.json ├── public/ │ └── index.html ├── src/ │ ├── App.vue │ ├── api/ │ │ ├── articleApi.js │ │ ├── fundApi.js │ │ ├── homeApi.js │ │ ├── index.js │ │ ├── loginApi.js │ │ └── stockApi.js │ ├── assets/ │ │ └── iconfont.css │ ├── components/ │ │ ├── Article/ │ │ │ └── Comment.vue │ │ ├── Home/ │ │ │ ├── Article.vue │ │ │ ├── BottomNav.vue │ │ │ ├── HeaderNav.vue │ │ │ ├── HotSpot.vue │ │ │ └── NaviList.vue │ │ └── Me/ │ │ ├── MeContent.vue │ │ └── MeHeader.vue │ ├── main.js │ ├── router/ │ │ └── index.js │ ├── store/ │ │ └── index.js │ ├── utils/ │ │ └── rem.js │ └── views/ │ ├── ArticlePage.vue │ ├── Fund.vue │ ├── Home.vue │ ├── Login.vue │ ├── Me.vue │ └── Stock.vue └── vue.config.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ .DS_Store node_modules /dist # local env files .env.local .env.*.local # Log files npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* # Editor directories and files .idea .vscode *.suo *.ntvs* *.njsproj *.sln *.sw? ================================================ FILE: README.md ================================================ # vue-finance mobile web 这是一个基于Vue2开发的移动端财经网站 ## Project setup ``` npm install ``` ### Compiles and hot-reloads for development ``` npm run serve ``` ### Compiles and minifies for production ``` npm run build ``` ### Customize configuration See [Configuration Reference](https://cli.vuejs.org/config/). ================================================ FILE: babel.config.js ================================================ module.exports = { presets: [ '@vue/cli-plugin-babel/preset' ] } ================================================ FILE: package.json ================================================ { "name": "vue-finance", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build" }, "dependencies": { "axios": "^0.26.1", "core-js": "^3.6.5", "vant": "^2.12.47", "vue": "^2.6.11", "vue-router": "^3.2.0", "vuex": "^3.4.0" }, "devDependencies": { "@vue/cli-plugin-babel": "~4.5.13", "@vue/cli-plugin-router": "~4.5.13", "@vue/cli-plugin-vuex": "~4.5.13", "@vue/cli-service": "~4.5.13", "babel-plugin-import": "^1.13.5", "less": "^3.0.4", "less-loader": "^5.0.0", "vue-template-compiler": "^2.6.11" } } ================================================ FILE: public/index.html ================================================ <%= htmlWebpackPlugin.options.title %>
================================================ FILE: src/App.vue ================================================ ================================================ FILE: src/api/articleApi.js ================================================ import request from "@/api/index"; let getComment = (params) => { return request({ url: '/article/comments', method:"GET", params, }) } export { getComment, } ================================================ FILE: src/api/fundApi.js ================================================ import request from "@/api/index"; //获取基金轮播图 let getFund = () => { return request({ url: '/fund/banner', method: "GET", }) } let getFundTabList = () => { return request({ url:'/fund/tablist', method:"GET", }) } export { getFund,getFundTabList } ================================================ FILE: src/api/homeApi.js ================================================ import request from "@/api/index"; let getHotspot = () => { return request({ method:'GET', url:'/quote', }) } let getArticle = (params) => { return request({ method:"GET", url:'/articles', params, }) } export { getHotspot,getArticle, } ================================================ FILE: src/api/index.js ================================================ import axios from "axios"; import store from '@/store/index' const request = axios.create({ baseURL: 'http://api.cpengx.cn/finance/api', }) request.interceptors.request.use(function (config) { if(store.state.user&&store.state.user.token) { config.headers.Authorization = 'Bearer '+store.state.user.token; } return config; }, function (error) { return Promise.reject(error); }) request.interceptors.response.use(function (response) { if(response.status===200) { //代表拦截到的回应没问题 return response.data; //返回数据 }else { return response; //返回数据有问题 } },function (error) { return Promise.reject(error); //出错了,显示错误 }) export default request; ================================================ FILE: src/api/loginApi.js ================================================ import request from "@/api/index"; let getLogin = (data) => { return request({ url: '/login', method: "POST", data, }) } let getVerifyCode = (params) => { return request({ url: '/code', method: "GET", params, }) } export { getLogin,getVerifyCode } ================================================ FILE: src/api/stockApi.js ================================================ import request from "@/api/index"; let getStockRank = (params) => { return request({ url: '/stocks', method: "GET", params, }) } export { getStockRank, } ================================================ FILE: src/assets/iconfont.css ================================================ @font-face { font-family: "iconfont"; /* Project id 3336648 */ src: url('//at.alicdn.com/t/font_3336648_zc9svdlbwz.woff2?t=1650537850371') format('woff2'), url('//at.alicdn.com/t/font_3336648_zc9svdlbwz.woff?t=1650537850371') format('woff'), url('//at.alicdn.com/t/font_3336648_zc9svdlbwz.ttf?t=1650537850371') format('truetype'); } .iconfont { font-family: "iconfont" !important; font-size: 16px; font-style: normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-comment:before { content: "\e667"; } .icon-star:before { content: "\e7df"; } .icon-like:before { content: "\e707"; } .icon-youxiang1:before { content: "\e664"; } .icon-gerenzhongxin:before { content: "\e61d"; } ================================================ FILE: src/components/Article/Comment.vue ================================================ ================================================ FILE: src/components/Home/Article.vue ================================================ ================================================ FILE: src/components/Home/BottomNav.vue ================================================ ================================================ FILE: src/components/Home/HeaderNav.vue ================================================ ================================================ FILE: src/components/Home/HotSpot.vue ================================================ ================================================ FILE: src/components/Home/NaviList.vue ================================================ ================================================ FILE: src/components/Me/MeContent.vue ================================================ ================================================ FILE: src/components/Me/MeHeader.vue ================================================ ================================================ FILE: src/main.js ================================================ import Vue from 'vue' import App from './App.vue' import router from './router' import store from './store' import './utils/rem' import Vant from 'vant'; import 'vant/lib/index.css'; import '@/assets/iconfont.css'; Vue.use(Vant); const bus = new Vue(); Vue.prototype.$bus = bus; Vue.config.productionTip = false new Vue({ router, store, render: h => h(App) }).$mount('#app') ================================================ FILE: src/router/index.js ================================================ import Vue from 'vue' import VueRouter from 'vue-router' import Home from '../views/Home.vue' import ArticlePage from "@/views/ArticlePage"; import Stock from "@/views/Stock"; import Fund from "@/views/Fund"; import Me from "@/views/Me"; import Login from "@/views/Login"; Vue.use(VueRouter) const routes = [ { path: '/', name: 'Home', component: Home }, { path: '/article/:id', name: 'Article', props: route => ({ article: route.params }), component: ArticlePage }, { path: '/stock', name: 'Stock', component: Stock, }, { path:'/fund', name:'Fund', component: Fund, }, { path: '/me', name: 'Me', component: Me, }, { path: '/login', name:'Login', component: Login, } ] const router = new VueRouter({ mode: 'hash', base: process.env.BASE_URL, routes }) export default router ================================================ FILE: src/store/index.js ================================================ import Vue from 'vue' import Vuex from 'vuex' import {getLogin} from "@/api/loginApi"; import {Toast} from "vant"; Vue.use(Vuex) export default new Vuex.Store({ state: { user:localStorage.user?JSON.parse(localStorage.user):null, }, mutations: { setUser(state,payload){ state.user = payload; console.log(state.user); } }, actions: { async asyncLogin(context,payload) { let res =await getLogin(payload); console.log(res) if(res.msg ==='操作成功') { Toast.success('登录成功'); context.commit('setUser',res.result); localStorage.user = JSON.stringify(res.result); return {user:res.result,successLogin:true}; } else { Toast.fail(res.result); return {user:res,successLogin:false}; } } }, modules: { } }) ================================================ FILE: src/utils/rem.js ================================================ function setRem() { let width = document.documentElement.clientWidth; let htmlFontsize = width/3.75; document.documentElement.style.fontSize = htmlFontsize+'px'; } window.addEventListener('resize',()=>{ setRem(); }) setRem(); ================================================ FILE: src/views/ArticlePage.vue ================================================ ================================================ FILE: src/views/Fund.vue ================================================ ================================================ FILE: src/views/Home.vue ================================================ ================================================ FILE: src/views/Login.vue ================================================ ================================================ FILE: src/views/Me.vue ================================================ ================================================ FILE: src/views/Stock.vue ================================================ ================================================ FILE: vue.config.js ================================================ module.exports = { publicPath: "./", };