vue-apps/com.actionsoft.apps.coe.pal/store/index.js

116 lines
4.2 KiB
JavaScript
Raw Normal View History

2022-06-28 01:29:37 +08:00
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
sessionId: settingParam.sessionId,
topMainHeight: '',// PAL主页面主体高度
navigationQueryVisible: false, // 导航栏输入框的快速搜索结果显示控制
navigationConditionQueryVisible: false, // 导航栏输入框的快速搜索结果显示控制
wsId: '',// 资产库id
teamId: ''// 小组id
},
getters: {// 提供获取state相关数据的方法
getTopMainHeightFn(state) {// 获取PAL主页面主体高度
//console.log('get height ' + state.topMainHeight);
return state.topMainHeight;
},
getNavigationQueryVisibleFn(state) {// 获取PAL导航栏搜索框结果的显示与隐藏
return state.navigationQueryVisible;
},
getNavigationConditionQueryVisibleFn(state) {// 获取PAL导航栏条件搜索框结果的显示与隐藏
return state.navigationConditionQueryVisible;
},
getTeamIdFn(state) {// 获取小组id
return state.teamId;
},
getWsIdFn(state) {// 获取资产库id
return state.wsId;
}
},
actions: {// 提供跟后台接口交互的方法并且调用mutations提供的方法进行更新提交
setTopMainHeightFn({commit, state}, height) {// 设置PAL主页面主体高度更新
commit("setTopMainHeightFn", height);
//console.log('dispatch update height ' + height);
},
setNavigationQueryVisibleFn({commit, state}, visible) {// 设置PAL导航栏搜索框结果的显示与隐藏
commit("setNavigationQueryVisibleFn", visible);
},
setNavigationConditionQueryVisibleFn({commit, state}, visible) {// 设置PAL导航栏条件搜索框结果的显示与隐藏
commit("setNavigationConditionQueryVisibleFn", visible);
},
setTeamIdFn({commit, state}, teamId) {
commit('setTeamIdFn', teamId)
},
setWsIdFn({commit, state}, wsId) {
commit('setWsIdFn', wsId)
}
},
mutations: {// 提供存储设置state数据的方法
setTopMainHeightFn(state, height) {// 设置PAL主页面主体高度更新
state.topMainHeight = height;
},
setNavigationQueryVisibleFn(state, visible) {// 设置PAL导航栏搜索框结果的显示与隐藏
state.navigationQueryVisible = visible;
},
setNavigationConditionQueryVisibleFn(state, visible) {// 设置PAL导航栏条件搜索框结果的显示与隐藏
state.navigationConditionQueryVisible = visible;
},
setTeamIdFn(state, teamId) {// 设置资产库小组Id
state.teamId = teamId;
},
setWsIdFn(state, wsId) {// 设置资产库Id
state.wsId = wsId;
},
edit(state, data) {
for (let p in data) {
state[p] = data[p];
}
}
},
modules: {
}
})
/*
在state中定义数据
Getter相当于vue中的computed计算属性getter 的返回值会根据它的依赖被缓存起来且只有当它的依赖值发生了改变才会被重新计算Getters 可以用于监听state中的值的变化返回计算后的结果
给action注册事件处理函数当这个函数被触发时候将状态提交到mutations中处理actions里面自定义的函数接收一个context参数和要变化的形参
mutations是一个对象里面的方法 都是同步事务是更改state初始状态的唯一合法方法具体的用法就是给里面的方法传入参数state或额外的参数
代码中设置全局存储方法
dispatch含有异步操作例如向后台提交数据写法 this.$store.dispatch('action方法名',)
commit同步操作写法this.$store.commit('mutations方法名',)
代码中取值方法
getters: 写法this.$store.getters.getTopMainHeightFn
*/
/*
多级嵌套组件监听用法
父组件Main.vue
某子组件Child.vue
父组件进行变量赋值
this.$store.commit('setTopMainHeightFn',this.bodyHeight);// 更新主体高度存储
子组件获取并监听父组件设置的变量变化
computed: {
listenTopMainHeight() {
return this.$store.getters.getTopMainHeightFn;
}
},
watch : {
listenTopMainHeight: function (newd, old) {
console.log("old " + old);
console.log("new " + newd);
}
}
*/