Browse Source

修改我的自选方法文件;http中加入打印最终请求参数;首页弹登录提示;加入用户登录后才会调用接口的逻辑;

zhaowenkang/feature-20251028181547-行情页面
宋杰 4 weeks ago
parent
commit
be05468cea
  1. 88
      api/home/mySelections.js
  2. 159
      pages/home/home.vue
  3. 2
      utils/http.js

88
api/home/mySelections.js

@ -1,9 +1,9 @@
/**
* 我的自选股相关API接口封装
* 使用common/util.js中的请求方法
* 使用utils/http.js中的拦截器封装请求方法
*/
import util from '../../common/util.js'
import { http } from '../../utils/http.js'
/**
* 我的自选股API接口类
@ -15,27 +15,30 @@ class MySelectionsAPI {
* @param {Function} successCallback - 成功回调函数
* @param {Function} failCallback - 失败回调函数
* @param {Object} data - 请求参数
* @returns {void}
* @returns {Promise}
*/
static checkExist(successCallback, failCallback = null, data = {}) {
static async checkExist(successCallback, failCallback = null, data = {}) {
const url = '/api/homePage/userStock/checkExist'
util.request(
url,
(response) => {
try {
const response = await http({
url: url,
method: 'POST',
data: data
})
console.log('检查用户自选股分组存在性 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
}
},
data,
(error) => {
return response
} catch (error) {
console.error('检查用户自选股分组存在性 - 失败:', error)
if (failCallback && typeof failCallback === 'function') {
failCallback(error)
}
throw error
}
)
}
/**
@ -43,27 +46,30 @@ class MySelectionsAPI {
* @param {Function} successCallback - 成功回调函数
* @param {Function} failCallback - 失败回调函数
* @param {Object} data - 请求参数
* @returns {void}
* @returns {Promise}
*/
static getUserStockGroupList(successCallback, failCallback = null, data = {}) {
static async getUserStockGroupList(successCallback, failCallback = null, data = {}) {
const url = '/api/homePage/userStockGroup/list'
util.request(
url,
(response) => {
try {
const response = await http({
url: url,
method: 'POST',
data: data
})
console.log('查询用户自选股分组列表 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
}
},
data,
(error) => {
return response
} catch (error) {
console.error('查询用户自选股分组列表 - 失败:', error)
if (failCallback && typeof failCallback === 'function') {
failCallback(error)
}
throw error
}
)
}
/**
@ -71,9 +77,9 @@ class MySelectionsAPI {
* @param {Function} successCallback - 成功回调函数
* @param {Function} failCallback - 失败回调函数
* @param {Object} data - 请求参数 {groupId, pageNum, pageSize, ...}
* @returns {void}
* @returns {Promise}
*/
static getUserStockList(successCallback, failCallback = null, data = {}) {
static async getUserStockList(successCallback, failCallback = null, data = {}) {
const url = '/api/homePage/userStock/list'
// 设置默认分页参数
@ -83,22 +89,25 @@ class MySelectionsAPI {
...data
}
util.request(
url,
(response) => {
try {
const response = await http({
url: url,
method: 'POST',
data: requestData
})
console.log('分页查询分组自选股 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
}
},
requestData,
(error) => {
return response
} catch (error) {
console.error('分页查询分组自选股 - 失败:', error)
if (failCallback && typeof failCallback === 'function') {
failCallback(error)
}
throw error
}
)
}
/**
@ -106,27 +115,30 @@ class MySelectionsAPI {
* @param {Function} successCallback - 成功回调函数
* @param {Function} failCallback - 失败回调函数
* @param {Object} data - 请求参数
* @returns {void}
* @returns {Promise}
*/
static getUserOrDefault(successCallback, failCallback = null, data = {}) {
static async getUserOrDefault(successCallback, failCallback = null, data = {}) {
const url = '/api/homePage/userStock/getUserOrDefault'
util.request(
url,
(response) => {
try {
const response = await http({
url: url,
method: 'POST',
data: data
})
console.log('查询默认自选股 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
}
},
data,
(error) => {
return response
} catch (error) {
console.error('查询默认自选股 - 失败:', error)
if (failCallback && typeof failCallback === 'function') {
failCallback(error)
}
throw error
}
)
}
}

159
pages/home/home.vue

@ -2,7 +2,8 @@
<view class="main">
<!-- 顶部状态栏占位 -->
<view class="top" :style="{height:iSMT+'px'}"></view>
<!-- 登录的提示 -->
<LoginPrompt ref="loginPrompt"></LoginPrompt>
<!-- 头部导航 -->
<view class="header">
<view class="headphone-icon">
@ -194,6 +195,7 @@ import DeepMate from '../../components/DeepMate.vue'
import tcpConnection from '../../api/tcpConnection.js'
import th from '../../static/language/th'
import MySelectionsAPI from '../../api/home/mySelections.js'
import { useUserStore } from '../../stores/modules/userInfo'
export default {
components: {
footerBar,
@ -205,6 +207,9 @@ export default {
type: 'home',
iSMT: 0,
// store
userStore: null,
//
explorationItems: [
{ title: '主力追踪', icon: '/static/c1.png' },
@ -319,6 +324,9 @@ export default {
//
this.iSMT = uni.getSystemInfoSync().statusBarHeight;
// store
this.userStore = useUserStore();
//
this.myStocks.forEach(stock => {
// 使uni.getImageInfoImage
@ -337,6 +345,14 @@ export default {
// TCP
this.initTcpListeners()
//
if (this.userStore.userInfo) {
console.log('用户已登录,加载自选股数据')
this.loadMySelectionsData()
} else {
console.log('用户未登录,跳过自选股数据加载')
}
// TCP
// this.$nextTick(() => {
// console.log('TCP...')
@ -401,6 +417,147 @@ export default {
}, delay)
},
//
//
async loadMySelectionsData() {
try {
console.log('开始加载自选股数据...')
// checkExist
const checkResult = await MySelectionsAPI.checkExist()
console.log('检查用户自选股存在性结果:', checkResult)
if (checkResult.code === 200) {
const isHave = checkResult.data.is_have
if (isHave === 1) {
//
console.log('用户存在自选股,查询所有分组...')
await this.loadUserStockGroups()
} else {
//
console.log('用户不存在自选股,查询默认自选股...')
await this.loadDefaultStocks()
}
} else {
console.error('检查用户自选股存在性失败:', checkResult.message)
//
await this.loadDefaultStocks()
}
} catch (error) {
console.error('加载自选股数据失败:', error)
//
await this.loadDefaultStocks()
}
},
//
async loadUserStockGroups() {
try {
const groupResult = await MySelectionsAPI.getUserStockGroupList()
console.log('查询用户自选股分组结果:', groupResult)
if (groupResult.code === 200 && groupResult.data && groupResult.data.length > 0) {
// id
const minIdGroup = groupResult.data.reduce((min, current) => {
return current.id < min.id ? current : min
})
console.log('找到最小id分组:', minIdGroup)
//
await this.loadGroupStocks(minIdGroup.id)
} else {
console.log('没有找到用户自选股分组,加载默认自选股')
await this.loadDefaultStocks()
}
} catch (error) {
console.error('加载用户自选股分组失败:', error)
await this.loadDefaultStocks()
}
},
//
async loadGroupStocks(groupId) {
try {
const stockResult = await MySelectionsAPI.getUserStockList(null, null, {
groupId: groupId,
pageNum: 1,
pageSize: 20
})
console.log('查询分组自选股结果:', stockResult)
if (stockResult.code === 200 && stockResult.data) {
this.processStockData(stockResult.data)
} else {
console.log('分组下没有股票数据,加载默认自选股')
await this.loadDefaultStocks()
}
} catch (error) {
console.error('加载分组股票失败:', error)
await this.loadDefaultStocks()
}
},
//
async loadDefaultStocks() {
try {
const defaultResult = await MySelectionsAPI.getUserOrDefault()
console.log('查询默认自选股结果:', defaultResult)
if (defaultResult.code === 200 && defaultResult.data) {
this.processStockData(defaultResult.data)
} else {
console.log('没有默认自选股数据')
}
} catch (error) {
console.error('加载默认自选股失败:', error)
}
},
//
processStockData(stockData) {
console.log('处理股票数据:', stockData)
// myStocks
// API
if (Array.isArray(stockData)) {
//
this.myStocks = stockData.map(stock => ({
name: stock.name || stock.stock_name || '',
code: stock.code || stock.stock_code || '',
// price: stock.price || stock.current_price || '0.00',
// change: stock.change || stock.change_percent || 0,
chartImg: stock.chartImg || '/static/c5.png' //
}))
//
this.institutionalReports = stockData.map(stock => ({
stock: stock.name || stock.stock_name || '',
status: stock.code || stock.stock_code || '',
}))
} else if (stockData.list && Array.isArray(stockData.list)) {
//
this.myStocks = stockData.list.map(stock => ({
name: stock.name || stock.stock_name || '',
code: stock.code || stock.stock_code || '',
// price: stock.price || stock.current_price || '0.00',
// change: stock.change || stock.change_percent || 0,
chartImg: stock.chartImg || '/static/c5.png' //
}))
//
//
this.institutionalReports = stockData.map(stock => ({
stock: stock.name || stock.stock_name || '',
status: stock.code || stock.stock_code || '',
}))
}
console.log('更新后的自选股数据:', this.myStocks)
},
// TCP
// TCP

2
utils/http.js

@ -43,10 +43,12 @@ const httpInterceptor = {
//4 添加token,优先用store,没有则回退到body中的token,保持与Apifox一致
const memberStore = useUserStore()
const token = memberStore.userInfo?.token || options.data?.token
// const token = '2d0b5654409646713cdd40ec0d0bb56c'
// const token = '1b3a58424c5324e40d4bf4d085e18047'
if (token) {
options.header.token = token
}
console.log("最终请求参数:",options)
// 避免误用 Authorization 头,后端要求的是 token 头
// if (options.header.Authorization) delete options.header.Authorization
return options

Loading…
Cancel
Save