Скорее всего никуда не попадает в if. Сделай инициализацию var desc = window.location.href и потом сравнивай. Уверен, ты увидишь не то значение, которое ожидаешь
Переименуйте свою переменную из data во что-то другое - тут коллизия с системным свойством. И, как писали выше, сделайте системное поле data функцией, возвращающей объект: data() { return {... vars... }}
Насчет промисов. Если используете синтаксис then, то async/await излишние. Они используются обычно, чтобы избавиться от гирлянды колбеков. По идее ваш вариант axios.get().then().finally(global_waiting_stop) вполне достаточен, если писать через async await, то это будет выглядеть как синхронный код в блоке try catch finally, где на каждый запрос к серверу просто добавляется await.
Также я обычно выношу инициализацию из блока объявления состояния (data) в хуки вроде created/beforeMount/mounted
Еще увидел у вас вызов this.dispatch('error', e). Не знаю, что имелось в виду, есть одноименный метод вызова действия для vuex хранилища (this.$store.dispatch), но хранилища у вас тут нет...
Также непонятно, почему в блоке инициализации options у вас есть axios.get, но нет после него then, а сразу catch
Думаю вряд ли такое есть... Имеет смысл поискать среди е коммерс решений (например, retailcrm или тот же опенкарт). Да, дубово, но некий функционал уже есть. Я тоже как-то писал црмку, но для ее развития нужна пгстоянная финансовая поддержка, поэтому забросил 3 года назад