h5-Dooring/src/pages/editor/models/editorModal.js

97 lines
2.1 KiB
JavaScript

/*
* @Description:
* @Version: 2.0
* @Autor: dragon
* @Date: 2020-09-24 10:11:24
* @LastEditors: dragon
* @LastEditTime: 2020-10-08 16:12:26
*/
import { uuid } from '@/utils/tool';
const pointData = localStorage.getItem('userData') || '[]';
function overSave(name, data) {
localStorage.setItem(name, JSON.stringify(data));
}
export default {
namespace: 'editorModal',
state: {
pointData: JSON.parse(pointData),
curPoint: null,
},
reducers: {
addPointData(state, { payload }) {
let pointData = [...state.pointData, payload];
overSave('userData', pointData);
return {
...state,
pointData,
curPoint: payload,
};
},
modPointData(state, { payload }) {
const { id } = payload;
const pointData = state.pointData.map(item => {
if (item.id === id) {
return payload;
}
return { ...item };
});
overSave('userData', pointData);
return {
...state,
pointData,
curPoint: payload,
};
},
importTplData(state, { payload }) {
overSave('userData', payload);
return {
...state,
pointData: payload,
curPoint: null,
};
},
copyPointData(state, { payload }) {
const { id } = payload;
const pointData = [];
state.pointData.forEach(item => {
pointData.push({ ...item });
if (item.id === id) {
pointData.push({ ...item, id: uuid(6, 10) });
}
});
overSave('userData', pointData);
return {
...state,
pointData,
};
},
delPointData(state, { payload }) {
const { id } = payload;
const pointData = state.pointData.filter(item => item.id !== id);
overSave('userData', pointData);
return {
...state,
pointData,
curPoint: null,
};
},
clearAll(state) {
overSave('userData', []);
return {
...state,
pointData: [],
curPoint: null,
};
},
},
effects: {},
subscriptions: {
setup({ dispatch, history }) {
return history.listen(({ pathname, query }) => {});
},
},
};