Перейти к содержанию

Frontend

Vue 3 Vuetify 3 Pinia JWT auth

Stores

api.js

Работа с бекендом
const apiUrl = "https://sup.oboi.ru/service/"       // передаю в настройку axios
const datasheff = reactive({                        // коплю данные с которыми работал
2023: {02: { snapshot_time: utc,
             data: {...}
}}
12023: {...},
122022: {...},
})


// functions

err.js

Обработчик ошибок - создает всплывающее окно для пользователя
const id = ref(0)
const show = ref(false)

// functions
add({
        title: 'ваша сессия устарела',
        message: 'введите логин и проль для авторизации на сайте',
        level: 'info',
        from: 'auth.oboi.ru/token/refresh'
})

auth.js

Авторизация
const isLoader = ref(false)
const isLogin = computed(() => refreshToken.value ? true : false)

const accessTokenHuman = ref(Object)  // human readable varian with human time format
const userLogin = computed(() => accessTokenHuman.value.identity)
const userName = computed(() => accessTokenHuman.value.user_claims.name)


// functions
makeLogin(username, password)
makeLogout()
makeRefresh()                    // обновить accessToken с помощью refresh

Layouts

роль пользователя = отдельный layout
path name description
/ Login Логин и выбор Layout если несколько ролей
/admin Administrator Менеджер
/seller Seller Продавец
/boss Boss Топ менеджер
/producer Producer Поставщик - контроль продаж своего товара

Vews

- role: A-S-B-P = Administrator-Seller-Boss-Producer
- layout: M-A-D = Mobile-Adaptive-Desktop
path name layout: M-A-D role: A-S-B-P description
/ Login --A-- A-S-B-P логин
plan Planning A---B-- магазины, планы, лимиты, смены
rating Ratings A-S-B-- рейтинги
sell SellEmployee A-S---- список продаж сотрудника
salary SalaryEmployee --S---- зарплата сотрудника
salary Salary A---B-- табель зарплаты по всем сотрудниками
salarySet SalarySetting A------ настройка зарплаты
orders Orders --S---- заказы через офис
A-S-B-P

Components

bar
@/components/bar/:
        counter-widget: виджет заголовок и цифра # (1)!
                - count: {default: 0, type: Number}
                - name: {default: '---', type: String}
        progress-rate-widget: прогресс факт план с одним показателем - есть смысл выкинуть... смотри ниже
                - plan: {default: 0.0001, type: Number},
                - fact: {default: 0, type: Number},
                - name: {default: '---', type: String},
                - color: {default: 'primary', type: String},
                - bg_color: {default: 'phone-main', type: String},
        progress-rate-prognosis-widget: прогресс + прогноз, # (2)!
                - plan: {default: 0.0001, type: Number},
                - fact: {default: 0, type: Number},
                - name: {default: '---', type: String},
                - color: {default: 'primary', type: String},
                - bg_color: {default: 'phone-main', type: String},
        progress-rate-circle-indicator: прогресс + прогноз 3,
                - prognosPercent: {default: 0, type: Number},
                - factPercent: {default: 0, type: Number},
                - isCurrentTime: {default: true, type: Boolean},
                - size: {default: 'small', type: String}
  1. h-counter-default
  2. h-progress-rate-prognosis-default
user
@/components/user/:
        user-indicator: иконка пользователя отображающая состояние
            - data: {default: {}, type: Object},
        user-card: информация о сотруднике
            - id: {default: null, type: Number},
        user-sales: информация о продажах по сотруднику - разбито по сменам
            - id: {default: null, type: Number},
                -> @/components/sale
        user-salary: информация о зарплате пользователя за месяц
            - id: {default: null, type: Number},
        user-state: информация о показателях за месяц
            - id: {default: null, type: Number},
        user-card-change: редактирование сотрудника
            - id: {default: null, type: Number},
sale
@/components/sale/:
        sales-list: перечень чеков
            - data: {default: {}, type: Object},
        sales-check: чек
            - data: {default: {}, type: Object},
good
@/components/good/:
        goods-icon: иконка товара
            - id: {default: null, type: String},
            - pic: {default: null, type: String},
        goods-card: карточка товара
            - id: {default: null, type: String},
shop
@/components/shop/:
        shop-shift-icon: иконка состояния смены
            - data: {default: {}, type: Object},
        shop-work-time-widget: виджет текущего рабочего времени
            - data: {default: {}, type: Object},
        shop-work-time-card: график рабочего времени
            - data: {default: {}, type: Object},
        shop-work-time-card-change: форма изменения рабочего времени
            - data: {default: {}, type: Object},
login
@/components/login/:
        login-auth-action: удалить
        login-email-restore: удалить
        login-email: логин с email
        login-phone-restore: восстановить пароль - телефон
            - username: {default: '', type: String},
            - password: {default: '', type: String},
        login-phone: логин с номером телефона
administrator
@/components/administrator/:
        Planner: 0
        AppBar: 0
        NavigationBottom: 0
        NavigationDrawer: 0
        h-shop-button-plus: 0