Merge branch 'milestone-20251031-简版功能开发' of http://39.101.133.168:8807/qimaohong/deepChartVueApp into wangyi/feature-20251026183100-deepmate王毅
lihuilin/feature-20251024095243-我的
-
185api/home/mySelections.js
-
70api/marketSituation/marketSituation.js
-
64components/IndexCard.vue
-
5components/login-prompt.vue
-
256pages/home/home.vue
-
141pages/marketSituation/countryMarket.vue
-
382pages/marketSituation/globalIndex.vue
-
74pages/marketSituation/marketCondition.vue
-
275pages/marketSituation/marketDetail.vue
-
121pages/marketSituation/marketOverview.vue
-
252pages/marketSituation/marketSituation.vue
-
BINstatic/marketSituation-image/country-flag/can.png
-
BINstatic/marketSituation-image/country-flag/cn.png
-
BINstatic/marketSituation-image/country-flag/global.png
-
BINstatic/marketSituation-image/country-flag/hk.png
-
BINstatic/marketSituation-image/country-flag/my.png
-
BINstatic/marketSituation-image/country-flag/sg.png
-
BINstatic/marketSituation-image/country-flag/th.png
-
BINstatic/marketSituation-image/country-flag/us.png
-
BINstatic/marketSituation-image/country-flag/vi.png
-
78stores/modules/marketSituation.js
-
2utils/http.js
@ -0,0 +1,185 @@ |
|||||
|
/** |
||||
|
* 我的自选股相关API接口封装 |
||||
|
* 使用utils/http.js中的拦截器封装请求方法 |
||||
|
*/ |
||||
|
|
||||
|
import { http } from '../../utils/http.js' |
||||
|
|
||||
|
/** |
||||
|
* 我的自选股API接口类 |
||||
|
*/ |
||||
|
class MySelectionsAPI { |
||||
|
|
||||
|
/** |
||||
|
* 判断用户是否存在自选股分组 |
||||
|
* @param {Function} successCallback - 成功回调函数 |
||||
|
* @param {Function} failCallback - 失败回调函数 |
||||
|
* @param {Object} data - 请求参数 |
||||
|
* @returns {Promise} |
||||
|
*/ |
||||
|
static async checkExist(successCallback, failCallback = null, data = {}) { |
||||
|
const url = '/api/homePage/userStock/checkExist' |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 查询用户所有自选股分组 |
||||
|
* @param {Function} successCallback - 成功回调函数 |
||||
|
* @param {Function} failCallback - 失败回调函数 |
||||
|
* @param {Object} data - 请求参数 |
||||
|
* @returns {Promise} |
||||
|
*/ |
||||
|
static async getUserStockGroupList(successCallback, failCallback = null, data = {}) { |
||||
|
const url = '/api/homePage/userStockGroup/list' |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 分页查询某一个分组下的所有自选股 |
||||
|
* @param {Function} successCallback - 成功回调函数 |
||||
|
* @param {Function} failCallback - 失败回调函数 |
||||
|
* @param {Object} data - 请求参数 {groupId, pageNum, pageSize, ...} |
||||
|
* @returns {Promise} |
||||
|
*/ |
||||
|
static async getUserStockList(successCallback, failCallback = null, data = {}) { |
||||
|
const url = '/api/homePage/userStock/list' |
||||
|
|
||||
|
// 设置默认分页参数
|
||||
|
const requestData = { |
||||
|
pageNum: 1, |
||||
|
pageSize: 20, |
||||
|
...data |
||||
|
} |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 查询默认自选股 |
||||
|
* @param {Function} successCallback - 成功回调函数 |
||||
|
* @param {Function} failCallback - 失败回调函数 |
||||
|
* @param {Object} data - 请求参数 |
||||
|
* @returns {Promise} |
||||
|
*/ |
||||
|
static async getUserOrDefault(successCallback, failCallback = null, data = {}) { |
||||
|
const url = '/api/homePage/userStock/getUserOrDefault' |
||||
|
|
||||
|
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 |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 游客查询默认自选股 |
||||
|
* @param {Function} successCallback - 成功回调函数 |
||||
|
* @param {Function} failCallback - 失败回调函数 |
||||
|
* @returns {Promise} |
||||
|
*/ |
||||
|
static async getDefaultStocks(successCallback, failCallback = null) { |
||||
|
const url = '/api/homePage/userStock/getDefaultStocks' |
||||
|
|
||||
|
try { |
||||
|
const response = await http({ |
||||
|
url: url, |
||||
|
method: 'POST', |
||||
|
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 |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 导出API类
|
||||
|
export default MySelectionsAPI |
||||
|
|
||||
|
// 也可以导出单个方法供直接使用
|
||||
|
export const { |
||||
|
checkExist, |
||||
|
getUserStockGroupList, |
||||
|
getUserStockList, |
||||
|
getUserOrDefault, |
||||
|
getDefaultStocks |
||||
|
} = MySelectionsAPI |
||||
@ -0,0 +1,70 @@ |
|||||
|
/** @format */ |
||||
|
|
||||
|
import { http } from "../../utils/http"; |
||||
|
|
||||
|
export const getData = () => { |
||||
|
return http({ |
||||
|
method: "GET", |
||||
|
url: "/ka", |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* 获取全球指数 |
||||
|
* POST /api/global/getGlobalIndex |
||||
|
*/ |
||||
|
export const getGlobalIndexAPI = (data) => { |
||||
|
return http({ |
||||
|
method: "POST", |
||||
|
url: "/api/global/getGlobalIndex", |
||||
|
data, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* 获取地区分组列表 |
||||
|
* POST /api/global/regionalGroup |
||||
|
*/ |
||||
|
export const getRegionalGroupAPI = (data) => { |
||||
|
return http({ |
||||
|
method: "POST", |
||||
|
url: "/api/global/regionalGroup", |
||||
|
data, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* 获取地区详情 |
||||
|
* POST /api/global/regionalGroupList |
||||
|
*/ |
||||
|
export const getRegionalGroupListAPI = (data) => { |
||||
|
return http({ |
||||
|
method: "POST", |
||||
|
url: "/api/global/regionalGroupList", |
||||
|
data, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* 一次性查询所有Tab栏父子结构 |
||||
|
* POST /api/homework/tab/getAll |
||||
|
*/ |
||||
|
export const getAllTabsAPI = (data) => { |
||||
|
return http({ |
||||
|
method: "POST", |
||||
|
url: "/api/homework/tab/getAll", |
||||
|
data, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
/** |
||||
|
* 通用市场数据分页查询接口(默认1页20条) |
||||
|
* POST /api/market/data/page/query |
||||
|
*/ |
||||
|
export const queryStockDataAPI = (data) => { |
||||
|
return http({ |
||||
|
method: "POST", |
||||
|
url: "/api/market/data/page/query", |
||||
|
data, |
||||
|
}); |
||||
|
}; |
||||
|
After Width: 32 | Height: 32 | Size: 1.1 KiB |
|
After Width: 32 | Height: 32 | Size: 1.1 KiB |
|
After Width: 32 | Height: 32 | Size: 2.5 KiB |
|
After Width: 32 | Height: 32 | Size: 1.7 KiB |
|
After Width: 32 | Height: 32 | Size: 1.7 KiB |
|
After Width: 32 | Height: 32 | Size: 1.1 KiB |
|
After Width: 32 | Height: 32 | Size: 703 B |
|
After Width: 32 | Height: 32 | Size: 1.4 KiB |
|
After Width: 32 | Height: 32 | Size: 1.1 KiB |
@ -0,0 +1,78 @@ |
|||||
|
/** @format */ |
||||
|
|
||||
|
import { defineStore } from "pinia"; |
||||
|
import { ref } from "vue"; |
||||
|
// 定义 Store
|
||||
|
export const useMarketSituationStore = defineStore( |
||||
|
"marketSituation", |
||||
|
() => { |
||||
|
const cardData = ref([ |
||||
|
{ |
||||
|
market: "usa", |
||||
|
stockName: "道琼斯", |
||||
|
stockCode: "noCode", |
||||
|
currentPrice: "45757.90", |
||||
|
changeAmount: "-125.22", |
||||
|
changePercent: "-0.27%", |
||||
|
isRising: false, |
||||
|
}, |
||||
|
{ |
||||
|
market: "usa", |
||||
|
stockName: "纳斯达克", |
||||
|
stockCode: "noCode", |
||||
|
currentPrice: "22333.96", |
||||
|
changeAmount: "+125.22", |
||||
|
changePercent: "+0.47%", |
||||
|
isRising: true, |
||||
|
}, |
||||
|
{ |
||||
|
market: "usa", |
||||
|
stockName: "标普500", |
||||
|
stockCode: "noCode", |
||||
|
currentPrice: "6606.08", |
||||
|
changeAmount: "+125.22", |
||||
|
changePercent: "+0.27%", |
||||
|
isRising: true, |
||||
|
}, |
||||
|
{ |
||||
|
market: "cn", |
||||
|
stockName: "上证指数", |
||||
|
stockCode: "noCode", |
||||
|
currentPrice: "3333.96", |
||||
|
changeAmount: "+125.22", |
||||
|
changePercent: "+0.27%", |
||||
|
isRising: true, |
||||
|
}, |
||||
|
{ |
||||
|
market: "cn", |
||||
|
stockName: "科创50", |
||||
|
stockCode: "noCode", |
||||
|
currentPrice: "757.90", |
||||
|
changeAmount: "-25.22", |
||||
|
changePercent: "-0.27%", |
||||
|
isRising: false, |
||||
|
}, |
||||
|
]); |
||||
|
|
||||
|
// 记得 return
|
||||
|
return { |
||||
|
cardData |
||||
|
}; |
||||
|
}, |
||||
|
// TODO: 持久化
|
||||
|
{ |
||||
|
// 网页端持久化
|
||||
|
// persist: true,
|
||||
|
// 小程序端持久化
|
||||
|
persist: { |
||||
|
storage: { |
||||
|
getItem(key) { |
||||
|
return uni.getStorageSync(key); |
||||
|
}, |
||||
|
setItem(key, value) { |
||||
|
uni.setStorageSync(key, value); |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
} |
||||
|
); |
||||