| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- const emptyMapConfirmPayload = () => ({
- zone_name: '',
- coordinates: '',
- gridMultipolygon: '',
- selectedGridIds: [],
- });
- /** coordinates 可能是 WKT 数组,也可能是 merge 后的单条 MULTIPOLYGON 字符串 */
- export function normalizeMapCoordinates(coordinates) {
- if (Array.isArray(coordinates)) {
- return coordinates.filter((item) => item && String(item).trim().length > 10);
- }
- if (typeof coordinates === 'string') {
- const trimmed = coordinates.trim();
- return trimmed.length > 10 ? [trimmed] : [];
- }
- return [];
- }
- export default {
- namespaced: true,
- state() {
- return {
- mapConfirmPayload: emptyMapConfirmPayload(),
- };
- },
- getters: {
- hasMapConfirmPayload(state) {
- const { zone_name, coordinates } = state.mapConfirmPayload;
- return Boolean(zone_name) || normalizeMapCoordinates(coordinates).length > 0;
- },
- mapConfirmCoordinatesArray(state) {
- return normalizeMapCoordinates(state.mapConfirmPayload.coordinates);
- },
- },
- mutations: {
- SET_MAP_CONFIRM_PAYLOAD(state, payload) {
- state.mapConfirmPayload = {
- zone_name: payload?.zone_name || '',
- coordinates: payload?.coordinates ?? state.mapConfirmPayload.coordinates ?? '',
- gridMultipolygon: payload?.gridMultipolygon ?? state.mapConfirmPayload.gridMultipolygon ?? '',
- selectedGridIds: Array.isArray(payload?.selectedGridIds)
- ? payload.selectedGridIds
- : (state.mapConfirmPayload.selectedGridIds || []),
- };
- },
- CLEAR_MAP_CONFIRM_PAYLOAD(state) {
- state.mapConfirmPayload = emptyMapConfirmPayload();
- },
- },
- };
|