diff --git a/.env.stage b/.env.stage index 97ff37b..e4c019b 100644 --- a/.env.stage +++ b/.env.stage @@ -1,4 +1,4 @@ -NODE_ENV = production +NODE_ENV = development VITE_ENV = stage diff --git a/bun.lockb b/bun.lockb index 2f17657..40eb7d9 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index 9735a43..1e5a11b 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "dev": "vite", "build": "vite build", - "build:sta": "vite build --mode stage", + "build:sta": "vite build --mode stage", "preview": "vite preview" }, "dependencies": { @@ -19,6 +19,9 @@ "lodash": "^4.17.21", "moment": "^2.29.4", "nprogress": "^0.2.0", + "pinia": "^2.1.7", + "pinia-plugin-persist": "^1.0.0", + "pinia-plugin-persistedstate": "^3.2.0", "pwacompat": "^2.0.17", "qrcode.vue": "^3.4.1", "register-service-worker": "^1.7.2", diff --git a/src/App.vue b/src/App.vue index 554d89c..b0b4280 100644 --- a/src/App.vue +++ b/src/App.vue @@ -15,7 +15,11 @@ // import { useStore } from 'vuex' // const store = useStore() +// import { useUserStore } from '@/store/user' +// const userStore = useUserStore(); + +// userStore.getUserData(); diff --git a/src/views/Member/index.vue b/src/views/Member/index.vue index 1d80447..e8f90b4 100644 --- a/src/views/Member/index.vue +++ b/src/views/Member/index.vue @@ -2,19 +2,23 @@ import _ from 'lodash' import axios from 'axios' -import { ref , nextTick, onBeforeMount} from 'vue' +import { ref, onBeforeMount, onMounted } from 'vue' import { Cropper } from 'vue-advanced-cropper'; import 'vue-advanced-cropper/dist/style.css'; // import Footer from '@/components/Footer.vue' import { useStore } from 'vuex' + +import { useUserStore } from '@/store/user' + import { useRouter } from 'vue-router' -import { showToast } from 'vant' -import { showLoadingToast,showSuccessToast } from 'vant'; +import { showToast, showFailToast, showLoadingToast, showSuccessToast } from 'vant'; + +import { getUserInfo, updateUserInfo, updateCard, searchConnection, addUserFavi, setUserNfcTpl } from '@/api' -import { getUserInfo, updateUserInfo, updateCard, searchConnection, addUserFavi, setUserNfcTpl} from '@/api' +import { updateUserExtra, updateUserLink, updateUserAddon } from '@/api/user'; import imgTp1 from '@/assets/images/tp/tp_1.jpg' import imgTp2 from '@/assets/images/tp/tp_2.jpg' @@ -24,10 +28,14 @@ import imgTp4 from '@/assets/images/tp/tp_4.jpg' const URL = window.URL || window.webkitURL; const store = useStore() + +const userStore = useUserStore() + const router = useRouter() -const form = ref({addon:[]}) -const uInfoForm = ref({addon:[]}) +const form = ref({ addon: [] }) + +const uInfoForm = ref({ addon: [] }) const genderChecked = ref() @@ -38,54 +46,58 @@ const fileList = ref([]); const myCrop = ref(null) const tabActive = ref(0) + const tabItemObj = ref([ - {title:"基本資料",icon:"fa-id-card-clip"}, - {title:"社群分享",icon:"fa-share-nodes"}, - {title:"人脈資訊",icon:"fa-gem"}, - {title:"版型設定",icon:"fa-layer-group"} + { title: "基本資料", icon: "fa-id-card-clip" }, + { title: "社群分享", icon: "fa-share-nodes" }, + { title: "人脈資訊", icon: "fa-gem" }, + { title: "版型設定", icon: "fa-layer-group" } ]); -const crop = ref({ - show: false, - img: null, -}) - const validatorUrl = (val) => { - if(val.length>0){ + if (val.length > 0) { return /(https?:\/\/|line:\/\/|tel:|mailto:)\S+/.test(val) - }else{ + } else { return true } }; const validatorTel = (val) => { - if(val.length>0){ + if (val.length > 0) { return /(\d{2,3}-?|\(\d{2,3}\))\d{3,4}-?\d{4}/.test(val) - }else{ + } else { return true } }; +// START: 基本資料 + +const crop = ref({ + show: false, + img: null, +}) -// onMounted(async ()=>{ +onMounted(async () => { let userRes = await getUserInfo() - if(userRes.code===200){ - form.value = userRes.data - }else{ + if (userRes.code === 200) { + form.value = userRes.data + } else { } -// }) -if (userRes.data.nfc_addon && (userRes.data.nfc_addon.length > 0)) { + + if (userRes.data.nfc_addon && (userRes.data.nfc_addon.length > 0)) { form.value.addon = JSON.parse(userRes.data.nfc_addon) -} -console.log(form,"form") + } + +}) + const onCrop = () => { const { canvas } = myCrop.value.getResult(); if (canvas) { const imgFile = new FormData(); canvas.toBlob(async (blob) => { - let ufile = new File([blob], "image.jpg"); + let ufile = new File([blob], "image.jpg"); imgFile.append("user_id", form.value.user_id) imgFile.append("fileType", "IMAGE") imgFile.append('file', ufile) @@ -106,21 +118,21 @@ const onCrop = () => { ) if (res.data.code == 200) { - form.value.avatar = res.data.data - showSuccessToast('上傳成功'); - }else{ - showToast.fail('上傳失敗'); + form.value.avatar = res.data.data + showSuccessToast('上傳成功'); + } else { + showToast.fail('上傳失敗'); } }, 'image/jpeg'); - } - + } + return } -const afterRead = async(file, name) => { +const afterRead = async (file, name) => { crop.value.show = true - + const ofile = file.file crop.value.img = URL.createObjectURL(ofile); // crop.value.img = ofile @@ -128,62 +140,62 @@ const afterRead = async(file, name) => { }; const onAddBtn = () => { - if(form.value.addon){ - form.value.addon.push({icon:'',name:'',link:''}) - }else{ - form.value.addon = [{icon:'',name:'',link:''}] + if (form.value.addon) { + form.value.addon.push({ icon: '', name: '', link: '' }) + } else { + form.value.addon = [{ icon: '', name: '', link: '' }] } } const onDelBtn = (index) => { - form.value.addon.splice(index, 1) + form.value.addon.splice(index, 1) } const onMoveBtn = (type, index) => { - if (type === 0) { - if (index !== 0) { - [form.value.addon[index], form.value.addon[index - 1]] = [form.value.addon[index - 1], form.value.addon[index]] - } - } else { - if (index + 1 !== form.value.addon.length) { - [form.value.addon[index + 1], form.value.addon[index]] = [form.value.addon[index], form.value.addon[index + 1]] - } + if (type === 0) { + if (index !== 0) { + [form.value.addon[index], form.value.addon[index - 1]] = [form.value.addon[index - 1], form.value.addon[index]] + } + } else { + if (index + 1 !== form.value.addon.length) { + [form.value.addon[index + 1], form.value.addon[index]] = [form.value.addon[index], form.value.addon[index + 1]] } + } } const onSubmit = async () => { - showLoadingToast({ - duration: 0, - message: '資料更新中...', - forbidClick: true, - }); - // console.log(form.value,"test"); - let res = await updateCard(form.value) - if(res.code===200){ - showSuccessToast('更新成功') - store.commit('user/setUserInfo',form.value) - router.push('/member') - }else{ - showToast.fail('更新失敗') - } + showLoadingToast({ + duration: 0, + message: '資料更新中...', + forbidClick: true, + }); + // console.log(form.value,"test"); + let res = await updateCard(form.value) + if (res.code === 200) { + showSuccessToast('更新成功') + store.commit('user/setUserInfo', form.value) + router.push('/member') + } else { + showToast.fail('更新失敗') + } }; const userInfoSubmit = async (values) => { - showLoadingToast({ - duration: 0, - message: '資料更新中...', - forbidClick: true, - }); - console.log("test",values); - let res = await updateUserInfo(values) - if(res.code===200){ - showSuccessToast('更新成功') - store.commit('user/setUserInfo',values) - router.push('/member') - }else{ - showToast.fail('更新失敗') - } + showLoadingToast({ + duration: 0, + message: '資料更新中...', + forbidClick: true, + }); + console.log("test", values); + let res = await updateUserInfo(values) + if (res.code === 200) { + showSuccessToast('更新成功') + store.commit('user/setUserInfo', values) + router.push('/member') + } else { + showToast.fail('更新失敗') + } }; const searchChecked = ref(true); @@ -198,22 +210,58 @@ const searchOnUpdateValue = (newValue) => { const userExtraSubmit = async (values) => { - // showLoadingToast({ - // duration: 0, - // message: '資料更新中...', - // forbidClick: true, - // }); - console.log("test",values); - let res = await updateUserInfo(values) - if(res.code===200){ - showSuccessToast('更新成功') - store.commit('user/setUserInfo',values) - router.push('/member') - }else{ - showToast.fail('更新失敗') - } + // showLoadingToast({ + // duration: 0, + // message: '資料更新中...', + // forbidClick: true, + // }); + let res = await updateUserExtra(values) + if (res.code === 200) { + showSuccessToast('更新成功') + // router.push('/member') + } else { + showFailToast('更新失敗') + } +}; + +// END: 基本資料 + +// START: 社群分享 + +const userLinkSubmit = async (values) => { + // showLoadingToast({ + // duration: 0, + // message: '資料更新中...', + // forbidClick: true, + // }); + let res = await updateUserLink(values) + if (res.code === 200) { + showSuccessToast('更新成功') + // router.push('/member') + } else { + showFailToast('更新失敗') + } +}; + +const userAddonSubmit = async (values) => { + // showLoadingToast({ + // duration: 0, + // message: '資料更新中...', + // forbidClick: true, + // }); + console.log(form.value.addon) + let res = await updateUserAddon(form.value.addon) + if (res.code === 200) { + showSuccessToast('更新成功') + } else { + showFailToast('更新失敗') + } }; +// END: 社群分享 + + + // START: 人脈資源 const search = ref({ @@ -240,10 +288,10 @@ const tab2OnSearch = async () => { }; const handleSearch = async () => { - let res = await searchConnection(search.value); - if(res.code===200){ - tab2list.value = res.data; - } + let res = await searchConnection(search.value); + if (res.code === 200) { + tab2list.value = res.data; + } }; const tab2list = ref([]); @@ -272,9 +320,9 @@ const tab2ListonLoad = () => { }; const handleAddFavi = async (uf_user_id) => { - let res = await addUserFavi({uf_user_id}); + let res = await addUserFavi({ uf_user_id }); - if(res.code===200){ + if (res.code === 200) { return showToast({ message: '已加入好友', duration: 1000, @@ -291,7 +339,7 @@ const handleAddFavi = async (uf_user_id) => { const tab3list = ref([]); onBeforeMount(async () => { let res = await setUserNfcTpl(); - if(res.code===200){ + if (res.code === 200) { tab3list.value = res.data; } }); @@ -305,342 +353,184 @@ onBeforeMount(async () => {
會員資料
- + -
- - -
- -
- - -
-

上傳圖片,預設為Line頭像

- 上傳檔案 -
+
+ + +
+ +
+ + +
+

上傳圖片,預設為Line頭像

+ 上傳檔案
- - -
- - - - - - - - - - - - - - - - - - - - +
+ + +
+ + + + + + + + + + + + + -
- - 確認修改 - -
- - - - - - - - - - - - - - 貴人資源共享 -
- 下面為客製型會員專屬提供被搜尋 -
- - - - - - - - - - - - - - - -
- - 確認修改 - -
-
-
+ + + + + + + +
+ + 確認修改 + +
+ + + + + + + + + + + + + + 貴人資源共享 + + + + + + + + + + + + + + + +
+ + 確認修改 + +
+
+
-
- - - - - - - - - -
- -
確認修改
+
+ + + + + + + + + + +
+ +
確認修改
+
+
+
+
+ + + + + + @@ -832,65 +691,73 @@ onBeforeMount(async () => { \ No newline at end of file diff --git a/src/views/Shop/index.vue b/src/views/Shop/index.vue index 1a2fd1d..b527181 100644 --- a/src/views/Shop/index.vue +++ b/src/views/Shop/index.vue @@ -1,41 +1,26 @@ @@ -56,25 +41,28 @@ const setlevel = async (level)=>{ \ No newline at end of file +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index f25b3b0..0af9cf4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,16 +7,121 @@ resolved "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.6.tgz" integrity sha512-pvFiLP2BeOKA/ZOS6jxx4XhKzdVLHDhGlFEaZ2flWWYf2xOqVniqpk38I04DFRyz+L0ASggl7SkItTc+ZLju4w== -"@babel/parser@^7.15.8", "@babel/parser@^7.23.0": +"@babel/parser@^7.23.0": version "7.23.0" resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz" integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + "@esbuild/linux-x64@0.18.20": version "0.18.20" resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz" integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + "@jridgewell/gen-mapping@^0.3.0": version "0.3.3" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" @@ -596,7 +701,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -650,7 +755,7 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz" integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ== -"@types/node@*", "@types/node@^18.0.0", "@types/node@>= 14": +"@types/node@*", "@types/node@^18.0.0": version "18.18.6" resolved "https://registry.npmjs.org/@types/node/-/node-18.18.6.tgz" integrity sha512-wf3Vz+jCmOQ2HV1YUJuCWdL64adYxumkrxtc+H1VUQlnQI04+5HtH+qZCOE21lBE7gIrt+CwX2Wv8Acrw5Ak6w== @@ -765,7 +870,7 @@ "@vue/compiler-ssr" "3.3.6" "@vue/shared" "3.3.6" -"@vue/shared@^3.0.0", "@vue/shared@3.3.6": +"@vue/shared@3.3.6", "@vue/shared@^3.0.0": version "3.3.6" resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.3.6.tgz" integrity sha512-Xno5pEqg8SVhomD0kTSmfh30ZEmV/+jZtyh39q6QflrjdJCXah5lrnOLi9KB6a5k5aAHXMXjoMnxlzUkCNfWLQ== @@ -800,7 +905,7 @@ asn1@~0.2.3: dependencies: safer-buffer "~2.1.0" -assert-plus@^1.0.0, assert-plus@1.0.0: +assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== @@ -1010,6 +1115,13 @@ debounce@^1.2.0: resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@^3.2.6: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" @@ -1024,16 +1136,9 @@ debug@^4.3.4: dependencies: ms "2.1.2" -debug@2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - deepmerge@^4.2.2: version "4.3.1" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== define-data-property@^1.1.1: @@ -1128,7 +1233,7 @@ extend@~3.0.2: resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -extsprintf@^1.2.0, extsprintf@1.3.0: +extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== @@ -1205,6 +1310,11 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -1327,13 +1437,6 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" @@ -1341,6 +1444,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + ieee754@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" @@ -1351,7 +1461,7 @@ image-size@~0.5.0: resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz" integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== -inherits@^2.0.3, inherits@2.0.4: +inherits@2.0.4, inherits@^2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1457,7 +1567,7 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" -less@*, less@^4.2.0: +less@^4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/less/-/less-4.2.0.tgz" integrity sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA== @@ -1551,11 +1661,6 @@ moment@^2.29.4: resolved "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz" integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - ms@2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" @@ -1566,6 +1671,11 @@ ms@2.1.2: resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + nanoid@^3.3.6: version "3.3.6" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" @@ -1675,6 +1785,26 @@ pify@^4.0.1: resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pinia-plugin-persist@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pinia-plugin-persist/-/pinia-plugin-persist-1.0.0.tgz#fc696f225527f30bd5955109fafadd43c725e888" + integrity sha512-M4hBBd8fz/GgNmUPaaUsC29y1M09lqbXrMAHcusVoU8xlQi1TqgkWnnhvMikZwr7Le/hVyMx8KUcumGGrR6GVw== + dependencies: + vue-demi "^0.12.1" + +pinia-plugin-persistedstate@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz#9932ca2ae88aa6c0d6763bebc6447d7bd1f097d0" + integrity sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw== + +pinia@^2.1.7: + version "2.1.7" + resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.1.7.tgz#4cf5420d9324ca00b7b4984d3fbf693222115bbc" + integrity sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ== + dependencies: + "@vue/devtools-api" "^6.5.0" + vue-demi ">=0.14.5" + pngjs@^3.3.3: version "3.4.0" resolved "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz" @@ -1719,11 +1849,6 @@ qrcode.vue@^3.4.1: resolved "https://registry.npmjs.org/qrcode.vue/-/qrcode.vue-3.4.1.tgz" integrity sha512-wq/zHsifH4FJ1GXQi8/wNxD1KfQkckIpjK1KPTc/qwYU5/Bkd4me0w4xZSg6EXk6xLBkVDE0zxVagewv5EMAVA== -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - qs@6.11.0: version "6.11.0" resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" @@ -1731,6 +1856,11 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" @@ -1814,7 +1944,7 @@ reusify@^1.0.4: resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0, rollup@^3.27.1: +rollup@^3.27.1: version "3.29.4" resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz" integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== @@ -1833,7 +1963,7 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safer-buffer@^2.0.2, safer-buffer@^2.1.0, "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -1878,7 +2008,7 @@ setprototypeof@1.2.0: shvl@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/shvl/-/shvl-2.0.3.tgz#eb4bd37644f5684bba1fc52c3010c96fb5e6afd1" integrity sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw== side-channel@^1.0.4: @@ -1948,7 +2078,7 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -terser@^5.24.0, terser@^5.4.0: +terser@^5.24.0: version "5.24.0" resolved "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz" integrity sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw== @@ -2097,7 +2227,7 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vite@^4.0.0, vite@^4.4.5: +vite@^4.4.5: version "4.5.0" resolved "https://registry.npmjs.org/vite/-/vite-4.5.0.tgz" integrity sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw== @@ -2122,6 +2252,16 @@ vue-cropper@^0.6.4: resolved "https://registry.npmjs.org/vue-cropper/-/vue-cropper-0.6.4.tgz" integrity sha512-U3bm17Li/Xwfw2t3pr8/hFE/tYhvwIWqepHK9IFC1TnX1KFd64VyfCD9nMBhPY91RyvMC6jSQgT/DyDNKuTpIQ== +vue-demi@>=0.14.5: + version "0.14.6" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92" + integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w== + +vue-demi@^0.12.1: + version "0.12.5" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.12.5.tgz#8eeed566a7d86eb090209a11723f887d28aeb2d1" + integrity sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q== + vue-router@^4.2.5: version "4.2.5" resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz" @@ -2129,7 +2269,7 @@ vue-router@^4.2.5: dependencies: "@vue/devtools-api" "^6.5.0" -vue@^3.0.0, vue@^3.2.0, vue@^3.2.25, vue@^3.3.4, "vue@2 || 3", vue@3.3.6: +vue@^3.3.4: version "3.3.6" resolved "https://registry.npmjs.org/vue/-/vue-3.3.6.tgz" integrity sha512-jJIDETeWJnoY+gfn4ZtMPMS5KtbP4ax+CT4dcQFhTnWEk8xMupFyQ0JxL28nvT/M4+p4a0ptxaV2WY0LiIxvRg== @@ -2142,13 +2282,13 @@ vue@^3.0.0, vue@^3.2.0, vue@^3.2.25, vue@^3.3.4, "vue@2 || 3", vue@3.3.6: vuex-persistedstate@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz#127165f85f5b4534fb3170a5d3a8be9811bd2a53" integrity sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ== dependencies: deepmerge "^4.2.2" shvl "^2.0.3" -"vuex@^3.0 || ^4.0.0-rc", vuex@^4.1.0: +vuex@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz" integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==