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
================================================
今日市场
{{ item.quote.name }}
{{ item.quote.chg }}%
{{ item.quote.current }}
================================================
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
================================================
{{ articleDetails.original_status.title }}
{{ articleDetails.original_status.like_count }}
{{ articleDetails.original_status.retweet_count }}
{{ commentArr.count }}
================================================
FILE: src/views/Fund.vue
================================================
{{ item.comment }}
{{ item.tips }}
{{ content.name }}
{{ content.content[0].desc }}
{{ content.content[0].value }}
{{ content.content[1].desc }}
{{ content.content[1].value }}
================================================
FILE: src/views/Home.vue
================================================
================================================
FILE: src/views/Login.vue
================================================
登录账户
登录
================================================
FILE: src/views/Me.vue
================================================
================================================
FILE: src/views/Stock.vue
================================================
股票榜单
{{ index + 1 }}
{{ item.name }}
{{ item.current }}
================================================
FILE: vue.config.js
================================================
module.exports = {
publicPath: "./",
};
评论