Browse Source

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

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

152
api/home/mySelections.js

@ -1,9 +1,9 @@
/** /**
* 我的自选股相关API接口封装 * 我的自选股相关API接口封装
* 使用common/util.js中的请求方法
* 使用utils/http.js中的拦截器封装请求方法
*/ */
import util from '../../common/util.js'
import { http } from '../../utils/http.js'
/** /**
* 我的自选股API接口类 * 我的自选股API接口类
@ -15,27 +15,30 @@ class MySelectionsAPI {
* @param {Function} successCallback - 成功回调函数 * @param {Function} successCallback - 成功回调函数
* @param {Function} failCallback - 失败回调函数 * @param {Function} failCallback - 失败回调函数
* @param {Object} data - 请求参数 * @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' const url = '/api/homePage/userStock/checkExist'
util.request(
url,
(response) => {
console.log('检查用户自选股分组存在性 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
}
},
data,
(error) => {
console.error('检查用户自选股分组存在性 - 失败:', error)
if (failCallback && typeof failCallback === 'function') {
failCallback(error)
}
try {
const response = await http({
url: url,
method: 'POST',
data: data
})
console.log('检查用户自选股分组存在性 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
} }
)
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} successCallback - 成功回调函数
* @param {Function} failCallback - 失败回调函数 * @param {Function} failCallback - 失败回调函数
* @param {Object} data - 请求参数 * @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' const url = '/api/homePage/userStockGroup/list'
util.request(
url,
(response) => {
console.log('查询用户自选股分组列表 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
}
},
data,
(error) => {
console.error('查询用户自选股分组列表 - 失败:', error)
if (failCallback && typeof failCallback === 'function') {
failCallback(error)
}
try {
const response = await http({
url: url,
method: 'POST',
data: data
})
console.log('查询用户自选股分组列表 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
} }
)
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} successCallback - 成功回调函数
* @param {Function} failCallback - 失败回调函数 * @param {Function} failCallback - 失败回调函数
* @param {Object} data - 请求参数 {groupId, pageNum, pageSize, ...} * @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' const url = '/api/homePage/userStock/list'
// 设置默认分页参数 // 设置默认分页参数
@ -83,22 +89,25 @@ class MySelectionsAPI {
...data ...data
} }
util.request(
url,
(response) => {
console.log('分页查询分组自选股 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
}
},
requestData,
(error) => {
console.error('分页查询分组自选股 - 失败:', error)
if (failCallback && typeof failCallback === 'function') {
failCallback(error)
}
try {
const response = await http({
url: url,
method: 'POST',
data: requestData
})
console.log('分页查询分组自选股 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
} }
)
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} successCallback - 成功回调函数
* @param {Function} failCallback - 失败回调函数 * @param {Function} failCallback - 失败回调函数
* @param {Object} data - 请求参数 * @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' const url = '/api/homePage/userStock/getUserOrDefault'
util.request(
url,
(response) => {
console.log('查询默认自选股 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
}
},
data,
(error) => {
console.error('查询默认自选股 - 失败:', error)
if (failCallback && typeof failCallback === 'function') {
failCallback(error)
}
try {
const response = await http({
url: url,
method: 'POST',
data: data
})
console.log('查询默认自选股 - 响应:', response)
if (successCallback && typeof successCallback === 'function') {
successCallback(response)
} }
)
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="main">
<!-- 顶部状态栏占位 --> <!-- 顶部状态栏占位 -->
<view class="top" :style="{height:iSMT+'px'}"></view> <view class="top" :style="{height:iSMT+'px'}"></view>
<!-- 登录的提示 -->
<LoginPrompt ref="loginPrompt"></LoginPrompt>
<!-- 头部导航 --> <!-- 头部导航 -->
<view class="header"> <view class="header">
<view class="headphone-icon"> <view class="headphone-icon">
@ -194,6 +195,7 @@ import DeepMate from '../../components/DeepMate.vue'
import tcpConnection from '../../api/tcpConnection.js' import tcpConnection from '../../api/tcpConnection.js'
import th from '../../static/language/th' import th from '../../static/language/th'
import MySelectionsAPI from '../../api/home/mySelections.js' import MySelectionsAPI from '../../api/home/mySelections.js'
import { useUserStore } from '../../stores/modules/userInfo'
export default { export default {
components: { components: {
footerBar, footerBar,
@ -205,6 +207,9 @@ export default {
type: 'home', type: 'home',
iSMT: 0, iSMT: 0,
// store
userStore: null,
// //
explorationItems: [ explorationItems: [
{ title: '主力追踪', icon: '/static/c1.png' }, { title: '主力追踪', icon: '/static/c1.png' },
@ -319,6 +324,9 @@ export default {
// //
this.iSMT = uni.getSystemInfoSync().statusBarHeight; this.iSMT = uni.getSystemInfoSync().statusBarHeight;
// store
this.userStore = useUserStore();
// //
this.myStocks.forEach(stock => { this.myStocks.forEach(stock => {
// 使uni.getImageInfoImage // 使uni.getImageInfoImage
@ -337,6 +345,14 @@ export default {
// TCP // TCP
this.initTcpListeners() this.initTcpListeners()
//
if (this.userStore.userInfo) {
console.log('用户已登录,加载自选股数据')
this.loadMySelectionsData()
} else {
console.log('用户未登录,跳过自选股数据加载')
}
// TCP // TCP
// this.$nextTick(() => { // this.$nextTick(() => {
// console.log('TCP...') // console.log('TCP...')
@ -401,6 +417,147 @@ export default {
}, delay) }, 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
// TCP // TCP

2
utils/http.js

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

Loading…
Cancel
Save