const runPlan = { namespaced: true, state: { stations: [], // 车站列表 planData: {}, // 运行图原始数据 editData: {}, // 运行图编辑数据 planSizeCount: 0, // 运行图canvas 大小变更标识 planLoadedCount: 0, // 运行图数据更新 planUpdateCount: 0, // 运行图更新标识 selected: {}, // 选择的对象 width: 800, // 运行图canvas 容器 宽度 height: 600, // 运行图canvas 容器 高度 refreshCount: 0, // 刷新页面重新加载 initialPlanData: {} // 运行图原始数据 }, getters: { stations: (state) => { return state.stations || []; }, convertPlanData: (state) => () => { const data = { serviceNumberDataList: [] }; const serviceNumberList = Object.keys(state.editData).sort((a, b) => { return state.editData[a].oldIndex - state.editData[b].oldIndex; }); serviceNumberList.forEach(serviceNumber => { const serviceObj = { serviceNumber: serviceNumber, tripNumberDataList: [] }; if (state.editData[serviceNumber].backup) { serviceObj['backup'] = state.editData[serviceNumber].backup; } const trainMap = state.editData[serviceNumber].trainMap; const tripNumberList = Object.keys(trainMap).sort((a, b) => { return trainMap[a].oldIndex - trainMap[b].oldIndex; }); tripNumberList.forEach(tripNumber => { serviceObj.tripNumberDataList.push(trainMap[tripNumber]); }); data.serviceNumberDataList.push(serviceObj); }); return data; } }, mutations: { setWidth: (state, width) => { state.width = width; state.planSizeCount += 1; }, setHeight: (state, height) => { state.height = height; state.planSizeCount += 1; }, setStations: (state, stations) => { state.stations = stations; }, setInitialPlanData: (state, data) => { state.initialPlanData = {}; if (data && data.serviceNumberDataList && data.serviceNumberDataList.length) { const serviceList = data.serviceNumberDataList; serviceList.forEach((service, i) => { const trainList = service.tripNumberDataList; state.initialPlanData[service.serviceNumber] = { oldIndex: i, serviceNumber: service.serviceNumber, backup: service.backup, trainMap: {} }; trainList.forEach((train, j) => { state.initialPlanData[service.serviceNumber].trainMap[`${train.directionCode}${train.tripNumber}`] = { oldIndex: j, tripNumber: train.tripNumber, directionCode: train.directionCode, reentry: train.reentry, stationTimeList: train.stationTimeList }; }); }); } }, setPlanData: (state, data) => { state.planData = data; state.editData = {}; if (data && data.serviceNumberDataList && data.serviceNumberDataList.length) { const serviceList = data.serviceNumberDataList; serviceList.forEach((service, i) => { const trainList = service.tripNumberDataList; state.editData[service.serviceNumber] = { oldIndex: i, serviceNumber: service.serviceNumber, backup: service.backup, trainMap: {} }; trainList.forEach((train, j) => { state.editData[service.serviceNumber].trainMap[`${train.directionCode}${train.tripNumber}`] = { oldIndex: j, tripNumber: train.tripNumber, directionCode: train.directionCode, reentry: train.reentry, stationTimeList: train.stationTimeList }; }); }); } state.planLoadedCount++; }, setSelected: (state, selected) => { state.selected = selected; }, addserviceNumber: (state, serviceNumber) => { const serviceObj = state.planData[serviceNumber]; if (serviceObj) { const oldIndex = serviceObj.oldIndex; state.planData[serviceNumber] = { oldIndex, serviceNumber, trainMap: {} }; state.planLoadedCount++; } }, clear: (state) => { state.stations = []; state.planData = {}; state.editData = {}; state.selected = {}; }, refresh: (state) => { state.refreshCount++; } }, actions: { /** 设置运行图大小*/ resize({ commit }, opt) { if (opt.width) { commit('setWidth', opt.width); } if (opt.height) { commit('setHeight', opt.height); } }, /** 设置stations数据 */ setStations: ({ commit }, mapModel) => { return new Promise((resolve) => { commit('setStations', mapModel); resolve(mapModel); }); }, /** 重置运行图数据更新池 */ resetRunPlanData:({ commit }) => { commit('resetRunPlanData'); }, /** 删除运行图第一条shuj */ shiftRunPlanData:({ commit }) => { commit('shiftRunPlanData'); }, /** 设置运行图数据 */ setPlanData: ({ commit }, data) => { commit('setPlanData', data); }, /** 设置初始运行图数据 */ setInitialPlanData: ({ commit }, data) => { commit('setInitialPlanData', data); }, /** 增加服务号*/ addserviceNumber: ({ commit }, serviceNumber) => { commit('addserviceNumber', serviceNumber); }, /** 选择车次*/ setSelected: ({ commit }, selected) => { commit('setSelected', selected); }, /** 更新数据*/ updateRunPlanData: ({ commit }, data) => { commit('updateRunPlanData', data); }, /** 清空数据*/ clear: ({ commit }) => { commit('clear'); }, /** 刷新页面*/ refresh: ({commit}) => { commit('refresh'); } } }; export default runPlan;