假如我想創(chuàng)建一個(gè)文件,order.js用來(lái)管理緩存,放在store文件夾下面
1)注冊(cè)moudle
在store/index.js里面
//index.js
import Vue from 'vue';
import Vuex from 'vuex';
import OrderSystem from './order'; //商城訂單 add 引入
Vue.use(Vuex);
export default new Vuex.Store({
modules: {
order: OrderSystem//商城訂單 add 引入
}
});
2)order.js編寫(xiě)方法
import Vue from 'vue';
import ApiConf from '@/config/api.conf';
const State = {
mallOrderExportExcel: {}, //注冊(cè)變量
}
const MutAtions = {
mallOrderExportExcel(state, data) {
state.mallOrderExportExcel = data;
}
}
const Actions = {
mallOrderExportExcel({ commit }, params) {
return new Promise((resolve, reject) => {
const exl = { responseType: 'blob', headers: { download: '1' } };
Vue.$api.post({ getway: ApiConf.order.$getway, api: ApiConf.order.mallOrderExportExcel }, params, exl).then(response => {
//getway為網(wǎng)關(guān)地址,api為url子路徑
commit('mallOrderExportExcel', response.data);//刷新緩存,調(diào)用了MutAtions的mallOrderExportExcel方法
resolve(response.data);
}).catch(reason => {
reject(reason);
});
});
}
}
const Getters = {
mallOrderExportExcel: state => state.mallOrderExportExcel
};
export default {
namespaced: true,
strict: true,
state: State,
getters: Getters,
mutations: MutAtions,
actions: Actions
};
3)組件中應(yīng)用
computed: {
...mapGetters({
mallOrderExportExcel2: 'order/mallOrderExportExcel' //這里不是字符串的意思,是將order.js的mallOrderExportExcel賦值給mallOrderExportExcel2,這里是取緩存的值
})
},
//function
exportexc() {
if (this.$refs.search.handleDatePickerChange()) {
this.exportLoading = true;
const formSearch = this.$refs.search.formSearch;
const params = {
contain_mix_pay_model: Number(formSearch.contain_mix_pay_model),
start_date: date(formSearch.start_date),
end_date: date(formSearch.end_date),
is_down_load: 1
};
console.warn({ ...formSearch, ...params }, '參數(shù)');
let rdata0=this.mallOrderExportExcel;//數(shù)據(jù)緩存已更新
var url='order/mallOrderExportExcel';
var params={name:'jiangyingying',relation:'lover'};
this.$store.dispatch(url, params ).then(res => { //調(diào)用store/order.js下面的Actions:mallOrderExportExcel方法
if (res.code === '40004') {
this.$message.error(res.sub_msg);
}
});
let rdata=this.mallOrderExportExcel;//調(diào)用之后,數(shù)據(jù)緩存已更新
let _this = this;
const file = new BlobFile({
data: rdata,
filename: '訂單列表',
mime: MIME['xls'],
endings: 'native'
});
file.download();
file.destory();
this.$message.success('導(dǎo)出成功');
this.exportLoading = false;
}
}