將card的vuex換到pinia去

dev
Wayne 3 years ago
parent eeffd9d43d
commit ffea1f6c7c

@ -0,0 +1,6 @@
import ajax from "./ajax";
//通訊錄
export const getCardData = async () =>
ajax(`/Card/getCardData`);

@ -2,9 +2,9 @@ import { createApp } from "vue";
import App from "./App.vue"; import App from "./App.vue";
import router from "./router"; import router from "./router";
import store from "./store"; import store from "./store";
import { createPinia } from 'pinia' import pinia from './store/pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate' import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import { initStore } from './utils/initStore';
import liff from '@line/liff'; import liff from '@line/liff';
import { VueClipboard } from "@soerenmartius/vue3-clipboard"; import { VueClipboard } from "@soerenmartius/vue3-clipboard";
@ -20,11 +20,13 @@ liff.init({
window.liff = liff; window.liff = liff;
const vue = createApp(App); const vue = createApp(App);
const pinia = createPinia();
pinia.use(piniaPluginPersistedstate); pinia.use(piniaPluginPersistedstate);
// 將LIFF實例提供給應用 // 將LIFF實例提供給應用
vue.use(VueClipboard); vue.use(VueClipboard);
vue.use(pinia); vue.use(pinia);
// 初始化Store
initStore(pinia);
vue.use(store).use(router).mount("#app"); vue.use(store).use(router).mount("#app");
}).catch((error) => { }).catch((error) => {

@ -0,0 +1,26 @@
import { defineStore } from 'pinia'
import { updateCusCard } from "@/api";
export const useCardStore = defineStore('card', {
state: () => {
return {
cusCard: '',
vipCard: '',
}
},
getters: {
},
actions: {
async updateCusCard(payload) {
let res = await updateCusCard(payload);
if (res.code === 200) {
this.cusCard = payload;
return true;
}
return false;
}
},
persist: true
})

@ -0,0 +1,5 @@
import { createPinia } from 'pinia';
const pinia = createPinia();
export default pinia;

@ -0,0 +1,12 @@
import { useCardStore } from '@/store/card.js';
import { getCardData } from '@/api/card.js';
export const initStore = async (pinia) => {
const cardStore = useCardStore();
let res = await getCardData();
if (res.code === 200) {
cardStore.cusCard = res.data.cus_card;
cardStore.vipCard = res.data.vip_card;
}
};

@ -4,22 +4,23 @@ import FlexView from "@/components/FlexView.vue";
import { ref, reactive, watch } from "vue"; import { ref, reactive, watch } from "vue";
import { updateCusCard } from "@/api"; import { useCardStore } from '@/store/card'
import { useStore } from "vuex";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import axios from "axios"; import axios from "axios";
import _ from "lodash"; import _ from "lodash";
import { showToast } from "vant"; import { showToast, showLoadingToast, showSuccessToast,showFailToast } from "vant";
import { showLoadingToast, showSuccessToast } from "vant";
import { Cropper } from "vue-advanced-cropper"; import { Cropper } from "vue-advanced-cropper";
import "vue-advanced-cropper/dist/style.css"; import "vue-advanced-cropper/dist/style.css";
import { onMounted } from "vue";
const URL = window.URL || window.webkitURL; const URL = window.URL || window.webkitURL;
const store = useStore(); const cardStore = useCardStore();
const router = useRouter(); const router = useRouter();
const showNfc = ref(false); const showNfc = ref(false);
@ -78,6 +79,12 @@ const form = ref({
}, },
}); });
onMounted(() => {
if (cardStore.cusCard.cus_card && cardStore.cusCard.cus_card.length > 0) {
form.value = JSON.parse(cardStore.cusCard.cus_card);
}
});
const sizeColumns = ref([ const sizeColumns = ref([
{ text: "xxs", value: "xxs" }, { text: "xxs", value: "xxs" },
{ text: "xs", value: "xs" }, { text: "xs", value: "xs" },
@ -91,13 +98,6 @@ const sizeColumns = ref([
{ text: "5xl", value: "5xl" }, { text: "5xl", value: "5xl" },
]); ]);
if (
store.state.user.userInfo.cus_card &&
store.state.user.userInfo.cus_card.length > 0
) {
form.value = JSON.parse(_.clone(store.state.user.userInfo.cus_card));
}
watch( watch(
() => form.value.title, () => form.value.title,
(newVal) => { (newVal) => {
@ -273,18 +273,28 @@ const handleSubmit = async () => {
forbidClick: true, forbidClick: true,
}); });
let res = await updateCusCard({ let cusCard = {
user_id: user_id,
card_title: form.value.title, card_title: form.value.title,
show_cus: form.value.showNfc, show_cus: form.value.showNfc,
cus_card: JSON.stringify(form.value), cus_card: JSON.stringify(form.value),
}); };
if (res.code === 200) {
store.commit("user/setCusCard", JSON.stringify(form.value)); let res = cardStore.updateCusCard(cusCard);
if(res){
showSuccessToast("建立成功"); showSuccessToast("建立成功");
}else{ }else{
showToast.fail("建立失敗"); showFailToast("建立失敗");
} }
// let res = await updateCusCard(cusCard);
// if (res.code === 200) {
// cardStore.cusCard = cusCard;
// showSuccessToast("");
// } else {
// showToast.fail("");
// }
router.push("/card/edit"); router.push("/card/edit");
}; };
</script> </script>

Loading…
Cancel
Save