diff --git a/activitylink/package-lock.json b/activitylink/package-lock.json index c0eadc8..bdb532e 100644 --- a/activitylink/package-lock.json +++ b/activitylink/package-lock.json @@ -12,7 +12,9 @@ "axios": "^1.10.0", "element-plus": "^2.10.4", "file-saver": "^2.0.5", + "localforage": "^1.10.0", "pinia": "^3.0.3", + "pinia-plugin-persistedstate": "^4.4.1", "vite": "^4.5.3", "vue": "^3.5.17", "vue-router": "^4.5.1" @@ -812,6 +814,18 @@ "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", "license": "MIT" }, + "node_modules/deep-pick-omit": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/deep-pick-omit/-/deep-pick-omit-1.2.1.tgz", + "integrity": "sha512-2J6Kc/m3irCeqVG42T+SaUMesaK7oGWaedGnQQK/+O0gYc+2SP5bKh/KKTE7d7SJ+GCA9UUE1GRzh6oDe0EnGw==", + "license": "MIT" + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "license": "MIT" + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://mirrors.huaweicloud.com/repository/npm/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -821,6 +835,12 @@ "node": ">=0.4.0" } }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "license": "MIT" + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://mirrors.huaweicloud.com/repository/npm/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -1126,6 +1146,12 @@ "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", "license": "MIT" }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, "node_modules/is-what": { "version": "4.1.16", "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", @@ -1138,6 +1164,24 @@ "url": "https://github.com/sponsors/mesqueeb" } }, + "node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "license": "Apache-2.0", + "dependencies": { + "lie": "3.1.1" + } + }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash/-/lodash-4.17.21.tgz", @@ -1269,6 +1313,33 @@ } } }, + "node_modules/pinia-plugin-persistedstate": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-4.4.1.tgz", + "integrity": "sha512-lmuMPpXla2zJKjxEq34e1E9P9jxkWEhcVwwioCCE0izG45kkTOvQfCzvwhW3i38cvnaWC7T1eRdkd15Re59ldw==", + "license": "MIT", + "dependencies": { + "deep-pick-omit": "^1.2.1", + "defu": "^6.1.4", + "destr": "^2.0.5" + }, + "peerDependencies": { + "@nuxt/kit": ">=3.0.0", + "@pinia/nuxt": ">=0.10.0", + "pinia": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + }, + "@pinia/nuxt": { + "optional": true + }, + "pinia": { + "optional": true + } + } + }, "node_modules/pinia/node_modules/@vue/devtools-api": { "version": "7.7.7", "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.7.tgz", @@ -1898,11 +1969,26 @@ "resolved": "https://mirrors.huaweicloud.com/repository/npm/dayjs/-/dayjs-1.11.13.tgz", "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" }, + "deep-pick-omit": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/deep-pick-omit/-/deep-pick-omit-1.2.1.tgz", + "integrity": "sha512-2J6Kc/m3irCeqVG42T+SaUMesaK7oGWaedGnQQK/+O0gYc+2SP5bKh/KKTE7d7SJ+GCA9UUE1GRzh6oDe0EnGw==" + }, + "defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://mirrors.huaweicloud.com/repository/npm/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, + "destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==" + }, "dunder-proto": { "version": "1.0.1", "resolved": "https://mirrors.huaweicloud.com/repository/npm/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -2098,11 +2184,32 @@ "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==" }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "is-what": { "version": "4.1.16", "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==" }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "requires": { + "immediate": "~3.0.5" + } + }, + "localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "requires": { + "lie": "3.1.1" + } + }, "lodash": { "version": "4.17.21", "resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash/-/lodash-4.17.21.tgz", @@ -2193,6 +2300,16 @@ } } }, + "pinia-plugin-persistedstate": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-4.4.1.tgz", + "integrity": "sha512-lmuMPpXla2zJKjxEq34e1E9P9jxkWEhcVwwioCCE0izG45kkTOvQfCzvwhW3i38cvnaWC7T1eRdkd15Re59ldw==", + "requires": { + "deep-pick-omit": "^1.2.1", + "defu": "^6.1.4", + "destr": "^2.0.5" + } + }, "postcss": { "version": "8.5.6", "resolved": "https://mirrors.huaweicloud.com/repository/npm/postcss/-/postcss-8.5.6.tgz", diff --git a/activitylink/package.json b/activitylink/package.json index 9e2dbdd..557f07f 100644 --- a/activitylink/package.json +++ b/activitylink/package.json @@ -13,7 +13,9 @@ "axios": "^1.10.0", "element-plus": "^2.10.4", "file-saver": "^2.0.5", + "localforage": "^1.10.0", "pinia": "^3.0.3", + "pinia-plugin-persistedstate": "^4.4.1", "vite": "^4.5.3", "vue": "^3.5.17", "vue-router": "^4.5.1" diff --git a/activitylink/src/api/manage/activity.js b/activitylink/src/api/manage/activity.js index 950fad6..822a75f 100644 --- a/activitylink/src/api/manage/activity.js +++ b/activitylink/src/api/manage/activity.js @@ -65,11 +65,19 @@ export function showsetDetail(activityId){ }) } -export function showaddDetail(activityId,stock,addTotal){ +// export function showaddDetail(activityId,stock,addTotal){ +// return request({ +// url: '/admin/funding/addDateVirtual', +// method: 'post', +// params: { activityId,stock,addTotal } +// }) +// } + +export function showaddDetail(data){ return request({ url: '/admin/funding/addDateVirtual', method: 'post', - params: { activityId,stock,addTotal } + data }) } diff --git a/activitylink/src/api/manage/gift.js b/activitylink/src/api/manage/gift.js index 3a419d1..e3a7c04 100644 --- a/activitylink/src/api/manage/gift.js +++ b/activitylink/src/api/manage/gift.js @@ -1,9 +1,17 @@ import request from '@/utils/request' -export function deleteUser(id) { +// export function deleteUser(id) { +// return request({ +// url: '/admin/prize/update', +// method: 'post', +// params: { id } +// }) +// } + +export function getGiftList(pageNum,pageSize) { return request({ - url: '/admin/prize/update', + url: '/admin/prize/list', method: 'post', - params: { id } + params: { pageNum,pageSize } }) } \ No newline at end of file diff --git a/activitylink/src/api/manage/level.js b/activitylink/src/api/manage/level.js index bde8c3d..d7fed4e 100644 --- a/activitylink/src/api/manage/level.js +++ b/activitylink/src/api/manage/level.js @@ -1,10 +1,30 @@ import request from '@/utils/request' -export function deleteUser() { +export function deleteLevel() { return request({ - url: '/admin/funding/getActivity', - method: 'get', + url: '/admin/grade/delete', + method: 'post', }) +} + + +export function getLevelList(pageNum,pageSize){ + return request({ + url: '/admin/grade/list', + method: 'post', + params: { + pageNum, + pageSize + } + }) +} + +export function addLevel(data) { + return request({ + url: '/admin/grade/add', + method: 'post', + data + }) } \ No newline at end of file diff --git a/activitylink/src/api/manage/win.js b/activitylink/src/api/manage/win.js index d7ae09c..8e302d9 100644 --- a/activitylink/src/api/manage/win.js +++ b/activitylink/src/api/manage/win.js @@ -7,4 +7,12 @@ export function getWinList(pageNum,pageSize,data) { params: { pageNum,pageSize }, data }) +} + + +export function getWinLevelList(){ + return request({ + url: '/admin/grade/allGradeName', + method: 'post', + }) } \ No newline at end of file diff --git a/activitylink/src/main.js b/activitylink/src/main.js index cfb1058..171ec26 100644 --- a/activitylink/src/main.js +++ b/activitylink/src/main.js @@ -6,10 +6,12 @@ import App from './App.vue' import router from './router' import { createPinia } from 'pinia' import zhCn from 'element-plus/dist/locale/zh-cn.mjs' +import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' import axios from 'axios' // createApp(App).use(router).mount('#app') const app = createApp(App) const pinia = createPinia() +pinia.use(piniaPluginPersistedstate) window.axios = axios // axios.defaults.baseURL = 'http://47.92.148.30:3003/mock/3267' app.use(router) diff --git a/activitylink/src/stone/activityStone.js b/activitylink/src/stone/activityStone.js index fe88578..2f8c8f8 100644 --- a/activitylink/src/stone/activityStone.js +++ b/activitylink/src/stone/activityStone.js @@ -1,21 +1,47 @@ -// src/stone/giftFixedListStone.js +// src/stone/activityStone.js import { defineStore } from "pinia"; import { ref } from 'vue'; +import localforage from 'localforage'; + +// 创建本地存储实例 +const activityStorage = localforage.createInstance({ + name: 'activityStore', + storeName: 'activityData' +}); export const useactivitytone = defineStore('activityStone', () => { - // 响应式属性 - const selectactivityId = ref(0); + // 尝试从本地存储恢复初始值,否则使用默认值 + const selectactivityId = ref(localStorage.getItem('selectactivityId') || 0); - // 方法 - const setselectedactivityId = (name) => { - selectactivityId.value = name; - }; + // 方法 + const setselectedactivityId = (id) => { + selectactivityId.value = id; + // 同时保存到 localStorage 作为备份 + localStorage.setItem('selectactivityId', id); + }; + // 在 store 初始化时从持久化存储恢复数据 + const initialize = async () => { + try { + const storedId = await activityStorage.getItem('selectactivityId'); + if (storedId !== null) { + selectactivityId.value = storedId; + } + } catch (error) { + console.warn('从 localforage 恢复数据失败,尝试从 localStorage 恢复'); + const localStorageId = localStorage.getItem('selectactivityId'); + if (localStorageId !== null) { + selectactivityId.value = localStorageId; + } + } + }; + // 立即初始化 + initialize(); - // 暴露出去 - return { - selectactivityId, - setselectedactivityId, - }; + // 暴露出去 + return { + selectactivityId, + setselectedactivityId, + }; }); \ No newline at end of file diff --git a/activitylink/src/views/zhongchou/activity/index.vue b/activitylink/src/views/zhongchou/activity/index.vue index b970f28..bbd1842 100644 --- a/activitylink/src/views/zhongchou/activity/index.vue +++ b/activitylink/src/views/zhongchou/activity/index.vue @@ -176,6 +176,16 @@ const activityStone = useactivitytone(); // 响应式数据:市场列表 const marketList = ref([]) + +// 设置活动ID +const setActivityId = (id) => { + activityStone.setselectedactivityId(id) +} + +// 获取当前活动ID +const getActivityId = () => { + return activityStone.selectactivityId +} // 获取市场列表 const fetchMarketList = async () => { try { diff --git a/activitylink/src/views/zhongchou/activity/set/index.vue b/activitylink/src/views/zhongchou/activity/set/index.vue index 38c626d..0696157 100644 --- a/activitylink/src/views/zhongchou/activity/set/index.vue +++ b/activitylink/src/views/zhongchou/activity/set/index.vue @@ -199,11 +199,12 @@ const confirmAdd = async () => { // 调用接口 try { - const response = await showaddDetail( - activityStone.selectactivityId, - marketOne.value, - addCountOne.value - ); + console.log(marketOne.value) + const response = await showaddDetail({ + activityId: activityStone.selectactivityId, + stock: marketOne.value, + addTotal: addCountOne.value + }); if (response.code === 200) { fetchData(); @@ -230,11 +231,11 @@ const confirmAdd = async () => { // 调用接口 try { - const response = await showaddDetail( - activityStone.selectactivityId, - marketTwo.value, - addCountTwo.value - ); + const response = await showaddDetail({ + activityId: activityStone.selectactivityId, + stock: marketTwo.value, + addTotal: addCountTwo.value + }); if (response.code === 200) { fetchData(); diff --git a/activitylink/src/views/zhongchou/level/index.vue b/activitylink/src/views/zhongchou/level/index.vue index ebcd508..b01f96f 100644 --- a/activitylink/src/views/zhongchou/level/index.vue +++ b/activitylink/src/views/zhongchou/level/index.vue @@ -1,337 +1,242 @@ - - - - \ No newline at end of file + +.action-buttons { + margin-bottom: 20px; +} + +.table-container { + max-height: 600px; + overflow-y: auto; +} + \ No newline at end of file diff --git a/activitylink/src/views/zhongchou/winning/index.vue b/activitylink/src/views/zhongchou/winning/index.vue index b168053..d5d8dea 100644 --- a/activitylink/src/views/zhongchou/winning/index.vue +++ b/activitylink/src/views/zhongchou/winning/index.vue @@ -66,7 +66,7 @@