1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/iteaj-ivzone

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

О ivzone (Iboot, веб-шлюз для интернета вещей, UI)

  1. Прежде всего, этот фреймворк основан на последних технологиях: vite4, vue3, antdv4, vuex4 и vue-router4.
  2. Большая часть бизнес-функций реализуется с помощью декларативных инструкций, что позволяет сократить объём кода на 80%. Например, для добавления новой функции достаточно одной строки кода: <UButton func="add">Добавить</UButton>
  3. На этой основе также реализована комплексная система управления бэкендом для часто используемых функций (пользователь, роль, меню, словарь, организация, конфигурация и т. д.).
  4. Адрес предварительного просмотра проекта: https://iot.iteaj.com/#/login. Также доступен соответствующий Java-проект на стороне сервера: https://gitee.com/iteaj/iboot.

Присоединиться к сообществу

QQ3 группа — 272518000. QQ2 группа — 616124620 (заполнена). QQ1 группа — 552167793 (заполнена).

Каталог репозитория

Каталог Описание Пример
src/components/basic Часто используемые базовые компоненты Нет
src/components/directive Vue-директивы Директива контроля доступа
src/components/drawer Редактируемый базовый компонент ящика Нет
src/components/modal Редактируемый основной компонент модального окна Нет
src/components/edit Компоненты для редактирования представления Компонент модального и редактируемого ящика представления
src/components/form Компоненты форм antdv Включает в себя компоненты antdv2, которые можно редактировать
src/components/functional Функциональные компоненты vue Нет
src/components/list Компоненты представления списка Нет
src/components/view Компоненты, связанные с представлением страницы UView
src/event Глобальные события
src/router Информация о маршрутизации
src/store Информация vuex
src/theme Тема
src/utils Базовая библиотека инструментов
src/views Пользовательские функциональные страницы просмотра Страницы управления бэкенда (пользователь, словарь, роль, конфигурация, организация и т.д.)

Лаконичный стиль написания

<template>
  <UView> // Базовый компонент страницы представления
    <UViewSearch> // Основной компонент поиска
      <UInputItem field="name" label="Название чая"/>
      <template #func>
        <UButton func='view' url='/product/list'>Поиск</UButton>&nbsp;
        <UButton func="add" url='/product/add'>Добавить</UButton>
      </template>
    </USearch> // Основной компонент таблицы
    <UViewTable :bordered="true" :columns="columns" :dataSource="dataSource" rowKey="id">
      <template #c_action="{record}">
        <UFuncTag func='edit' url='/product/edit'>Изменить</UFuncTag>
        <UFuncTag func="del" url='/product/del'>Удалить</UFuncTag>
      </template>
    </UTable>
    <UViewModal>// Основной компонент модального окна редактирования
      <UInputItem field="name" label="Название чая"/>
      <template #title="{model}">
        {{model.id ? 'Редактировать продукт' : 'Добавить продукт'}}
      </template>
      <template #footer>
        <UButton func='cancel'>Отменить</UButton>
        <UButton func='submit' url='/product/add'>Отправить</UButton>
        <UButton func='reset'>Сбросить</UButton>
      </template>
    </UFormModal>
  </UView>
</template>

<script>
export default {
  name: "Demo",
  setup() {
    let columns = [
      {field: 'name', title: 'Название продукта'},
      {field: 'type', title: 'Тип продукта'},
      {field: 'action', type:'action', title: 'Действие'},
    ]
    let dataSource = [
      {id: 1, name: 'Чистый осенний чай', type: 'Чистый тип'}
    ]
    return {columns, dataSource}
  }
}
</script>

Основная идея

Соглашение важнее конфигурации
  1. Согласовано, что страница функций содержит более 0 компонентов для добавления, удаления, изменения и поиска, а компоненты разделены и связаны.
  2. Возможно, каждая страница будет содержать некоторые из следующих функций: добавление, удаление, изменение, поиск, импорт, экспорт, удаление, сброс, отмена, развёртывание, отправка.
  3. Реализация общей функциональности имеет общую логику (например, логика отправки формы заключается в проверке формы перед отправкой на серверную часть, отображении сообщения об ошибке при неудачной отправке и закрытии диалогового окна редактирования и обновлении списка при успешной отправке).
  4. Определены некоторые отношения между уровнями компонентов, например, компонент UTable должен быть дочерним компонентом UView, а UView должен быть корневым компонентом.
Гибкость (только усиление без ограничений)
  1. Гибкость API: помимо использования уже реализованных API, все функции могут быть разработаны обычным способом.
  2. Гибкая компоновка: макет может быть настроен произвольно, и гибкость компоновки не теряется из-за существования общих функций.

Основные функции

  1. Это набор простых и красивых базовых функциональных фреймворков (на основе ui-компонентов antd2), которые в основном готовы к использованию.
  2. Предоставляет набор компонентов для добавления, удаления, изменения и поиска. Они легко настраиваются и просты в использовании, что снижает объём кода на 30%+
  3. Поддерживает динамическую маршрутизацию, то есть генерирует информацию о маршрутах на основе информации о меню с сервера, поддерживает генерацию функциональных точек из информации о меню (добавление, удаление, изменение и поиск, а также другие пользовательские функции).
  4. Компонент antd Table упакован неудобно, и его можно настроить с помощью слота столбца.
  5. Расширены возможности компонента ATable, добавлены поля dict и url, позволяющие преобразовывать значения столбцов в соответствующие метки (label), такие как использование словаря и URL.
  6. Расширены параметры (select, checkbox, autocomplete, tree, radio) и другие компоненты, поддерживающие использование словарей и URL для динамического создания.
  7. Расширена функциональность формы, поддерживается автоматическое создание модели данных на основе полей, поддерживается вложение путей (a.b).
  8. Поддерживается независимая упаковка сторонних библиотек, что уменьшает проблемы с аннулированием кэша браузера при каждом обновлении приложения.
  9. Предоставляются другие бизнес-библиотеки компонентов на основе antd2ui.
  10. Используется Mock для имитации данных всех компонентов представления.
  11. Не зависит от языка программирования серверной части (java, php, c# и т. д.), дружественный интерфейс API и поля могут легко взаимодействовать с любой серверной частью.

Руководство по использованию компонентов

Функциональные компоненты

  1. Функциональные компоненты в основном используются для расширения и упрощения операций. Использование функциональных компонентов предоставляет набор стандартных операций.
  2. Доступные функции включают добавление, удаление, редактирование, запрос, импорт, экспорт, сброс, отмену, отправку и расширение, а также смешанные операции связывания.
UButton

Функциональная кнопка: используется в компонентах поиска и редактирования.

<UView>
    <UViewSearch>
        <template #func={model}>
            <UButton func='add'>Добавить</UButton> // При нажатии действие по умолчанию: открыть диалоговое окно редактирования (UViewModal или UViewDrawer)
            <UButton func='query' url="/project/query">Поиск</UButton> // При нажатии действие по умолчанию: обновить список
            <UButton func='reset'>Сброс</UButton> // При нажатии действие по умолчанию: сбросить форму поиска и обновить список (связано с таблицей компонентов)
        </template>
    </UViewSearch>
    <UViewModal>
       <template #footer={model}>
          <UButton func='cancel'>Отмена</UButton> // При нажатии действие по умолчанию: закрыть текущий диалог редактирования, закрыть анимацию отправки и кнопку отправки (предотвратить повторную отправку) 
          // При нажатии действие по умолчанию: проверить, прошла ли форма проверку, затем отправить форму, запустить анимацию отправки формы и анимацию кнопки отправки (чтобы предотвратить многократную отправку) **UButton func='reset'>重置</UButton> // 点击默认动作:重置编辑表单**

При нажатии происходит сброс редактирования формы.

**<UView rowKey="id">**
    **<UViewTable>**
        **<template #c_action={record}>**
            **// 点击默认动действие: открыть редактирование, и получить и отобразить данные, соответствующие URL**
            **<UButton func='edit' :data="record" url="/project/edit">Редактировать</UButton>**

Происходит открытие окна редактирования и отображение данных, соответствующих URL.

            **// При нажатии происходит следующее: всплывает окно для подтверждения удаления, после подтверждения вызывается соответствующий интерфейс для удаления данных, в качестве параметра передаётся массив: [record[rowKey]]**
            **<UButton func='del' :data="record" url="/project/del">Удалить</UButton>**
        **</template>**
    **</UViewSearch>**
**</UView>**

Здесь при нажатии кнопки происходит удаление данных.

**##### UFuncTag**
**Функциональный тег: используется для операций с таблицами**

**<UView rowKey="id">**
    **<UViewTable>**
        **<template #c_action={record}>**
            **// Действие по умолчанию: открыть форму редактирования, и получить и отобразить данные, соответствующие URL; также происходит получение и рендеринг данных из URL, соответствующего URL**
            **<UButton func='edit' :data="record" url="/project/edit">Редактирование</UButton>**

Открытие формы редактирования и получение и отображение данных из соответствующего URL.

            **// Действие при нажатии: появляется окно подтверждения удаления; после подтверждения выполняется вызов интерфейса для удаления данных; в качестве параметра передаётся массив вида: [record[rowKey]]**
            **<UButton func='del' :data="record" url="/project/del">Удаление</UButton>**
        **</template>**
    **</UViewSearch>**
**</UView>**

Удаление данных после подтверждения.

**##### Ошибочное подтверждение операции**
Иногда для предотвращения ошибочных действий при выполнении определённых функций перед нажатием на кнопку будет появляться окно подтверждения. В этом случае можно использовать атрибут confirm.

**<UButton func='demo' :data="record" url="/project/demo" confirm>Легко сделать ошибку</UButton>**

Подтверждение операции перед её выполнением.

**##### Связь с формой редактирования**
В основном используется при нажатии на функциональную кнопку для отображения соответствующей формы редактирования.

1. **Открыть другую форму редактирования**

**<UView rowKey="id">**
    **<UViewTable>**
        **<template #c_action={record}>**
            **// Действие по умолчанию: открытие формы редактирования с id = "modPwd"; также происходит установка модели формы: model[rowKey] = record[rowKey]**
            **<UButton func='edit:modPwd' :data="record">Изменить пароль</UButton>**
        **</template>**
    **</UViewSearch>**

    **// Форма изменения пароля**
    **<UFormModal id="modPwd" :rules="[пользовательские правила проверки]">**
       **<IvzPassword label="Пароль" field="password" />**

Форма для изменения пароля.

        **<template #footer={model}>**
            **<UButton func='cancel'>Отмена</UButton>**

Кнопка отмены.

            **// Действия по умолчанию: проверка формы, затем отправка формы; запуск анимации отправки формы; запуск анимации нажатия кнопки отправки (для предотвращения многократной отправки)**
            **<UButton func='submit' :url="model.id ? '/project/edit':'/project/add'">Отправить</UButton>**

Отправка формы.

            **<UButton func='reset'>Сброс</UButton>**

Сброс формы.

        **</tempalte>**
    **</USearch>**
**</UView>**

2. **Добавить дочернюю запись (формат дерева)**

**<UView rowKey="id">**
    **<UViewTable>**
        **<template #c_action={record}>**
            **// Открыть форму добавления, а также установить идентификатор формы: model[pid] = record[rowKey]**
            **<UButton func='add:child' :data="record">Добавить дочерний элемент меню</UButton>**
        **</template>**
    **</UViewSearch>**
**</UView>**

Добавление дочерней записи.

#### **Функциональные разрешения**
Функциональные разрешения используются для управления отображением соответствующих функций на странице.

**##### Директива v-auth**

**// Базовый способ использования**
**// Если строка разрешений существует, отображается кнопка**
**<AButton v-auth="'core:project:add'">Добавить</ABtton>**

Отображение кнопки при наличии строки разрешений.

**// Расширенный способ использования**
**// Параметр and: необходимо выполнить оба разрешения из массива**
**<AButton v-auth:and="['core:project:view', 'core:project:info']">Подробности</ABtton>**

Выполнение обоих разрешений из массива.

**// Параметр or: достаточно выполнить любое разрешение из массива**
**<AButton v-auth:or="['core:project:view', 'core:project:info']">Подробности</ABtton>**

Достаточно выполнить одно разрешение из массива.

**// Сокращённая запись параметра and**
**<AButton v-auth="['core:project:view', 'core:project:info']">Подробности</ABtton>**

Сокращённая запись выполнения обоих разрешений.

**// Способ записи параметра disabled (только отключает функцию, не удаляет кнопку); поддерживает компоненты UTag и UButton**
**<UTag v-auth:disabled="['core:project:view']">Подробности</UTag>**

Отключение функции.

**##### Использование URL для принятия решения о разрешении**
Способ управления разрешениями с помощью URL заключается в проверке наличия соответствующего компонента функциональной кнопки или UButton в ответе сервера.

**<UView auth>**
    **<UViewSearch>**
        **<template #func>**
            **<UButton func='add' url='/project/add'>Добавить</UButton>  // Отображается**
            **<UButton func='import' url='/project/import'>Импорт</UButton>  // Не отображается**
        **</template>**
    **</UViewSearch>**
    **<UViewTable>**
        **<template #c_action={record}>**
            **<UFuncTag func='edit' url='/project/edit' :data="record">Изменение</UFuncTag >  // Отображается**
            **<UFuncTag func='del' url='/project/del' :data="record">Удаление</UFuncTag >  // Не отображается**
        **</template>**
    **EndUViewSearch>**
**EndUView>**

Проверка наличия компонентов функциональных кнопок.

**##### URL для получения подробной информации**
Этот URL используется для получения данных для подробного просмотра, но параметры не указаны.

**<UFuncTag func='edit' url='/project/edit' :data="record">Модификация</UFuncTag>**

Получение данных для просмотра.

#### **Компоненты представления**
Компоненты представления используются для организации компонентов представления и должны использоваться в качестве верхнего компонента страницы .vue. Внутри этого контейнера можно выполнять операции связывания для всех интерактивных компонентов представления. Например, нажатие кнопки поиска в компоненте поиска приведёт к запуску запроса таблицы.

**##### Компонент UView**

**<template>**
   **<UView>**
       **...**
   **</UView>**
**endtemplate>**
**script>...</script>**

Контейнер для компонентов представления.

**Указание уникального ключа функции**

**<UView rowKey="id">...**
**endUView>**

Ключ используется для определения таблицы, редактирования и добавления дочерних записей. Поддержка всех свойств компонентов AForm и AModal.

Поддержка всех свойств компонентов UViewDrawer и ADrawerl.
Добавление свойства span в качестве сокращённой формы для labelCol и wrapperCol компонента AForm, формат [6, 18].
Относится к компонентам редактирования, которые могут быть связаны с другими страницами.

**UViewTable**

Поддерживает все свойства компонента ATable.

**UFormModal**

Поддерживает все свойства компонентов AForm и AModal.
Добавление нового свойства primary для обозначения того, что компонент является интерактивным.

**UFormDrawer**

Поддерживает все свойства компонентов AForm и ADrawerl.
Добавление нового свойства primary для объявления компонента интерактивным.

### Расширение компонентов antd

#### Улучшение компонента ATable

Компонент antd ATable может быть сложным для понимания без изучения и практики. Многие функции требуют самостоятельной реализации, такие как одиночный и двойной щелчок, таблицы и множественный выбор. Без опыта использования он может показаться неудобным в использовании. Поэтому был разработан компонент UTable для улучшения ATable. UTable поддерживает большинство свойств ATable, но есть некоторые различия:

* **Неподдерживаемые свойства:**
    * rowSelection — это свойство ATable используется для описания множественного выбора в таблице. В UTable оно помещается непосредственно в свойство columns. Пример:
        ```
        const columns = [
            // Поддерживает большинство свойств rowSelection
            // type не поддерживается, по умолчанию: checkbox, radio не поддерживается
            {type: 'selection', title: 'Множественный выбор'},
            {field: 'name', title: 'Название меню', align: 'left'}
        ]
        // Методы onChange, onSelect, onSelectAll, onSelectInvert будут напрямую использоваться на компоненте UTable
        <UTable ref="tableRef" @selectChange="xx" @select="xx" @selectAll="xx" @selectInvert="xx"></UTable>
        * selectedRowKeys не поддерживается. Вместо этого предоставляется метод.
        * Другие свойства полностью поддерживаются.

    * **Пользовательский слот столбцов:**
        * Столбцы в ATable не поддерживают customRender, вместо этого используется слот. Это позволяет настраивать столбец.
        * Пример:
            * ```
            const columns = [
                {field: 'name', title: 'Название меню', align: 'left'},
                {field: 'user.name', title: 'Имя пользователя', align: 'left'}
            ]
            ```
            * Шаблоны имеют префикс c_ + имя поля = c_name. Если формат a.b, то '.' заменяется на '_', например: c_a_b.
            * Пример использования слотов:
                * ```
                <UTable rowKey="id">
                    <template #c_name="{record}">
                        <a>{{record.name}}</a>
                    </template>
                    <template #c_user_name="{record}">
                        <a>{{record.user.name}}</a>
                    </template>
                </UTable>
                ```

    * **Словари и URL:**
        * Можно преобразовать значение в метку, например, для пола. В базе данных хранится значение «man», а в таблице отображается «мужчина».
        * Существует два способа:
            * Использование локальных переменных sex:
                * ```
                const sex = [
                    {label: 'Мужчина', value: 'man'}, {label: 'Женщина', value: 'woman'}
                ]
                const columns = [
                    {field: 'sex', title: 'Пол', options: sex}
                ]
                ```
            * С использованием словаря, который должен возвращать массив в формате options:
                * ```
                const columns = [
                    {field: 'sex', title: 'Пол', dict: 'sex'}
                ]
                ```
            * Через URL, который должен возвращать массив в формате options:
                * ```
                const columns = [
                    {field: 'sex', title: 'Пол', url: '/core/getSex'}
                ]
                ```

    * **Форматирование даты:**
        * Если столбец является датой, он будет автоматически отформатирован в указанный формат. Можно использовать стандартный формат или настроить свой собственный.
        * Пример с использованием типа date:
            * ```
            const columns = [
                {field: 'createTime', title: 'Время создания', type: 'date'}
            ]
            ```
        * По умолчанию используются форматы {datetime: 'YYYY-MM-DD HH:mm:ss', date: 'YYYY-MM-DD', month: 'MM', week: 'E', time: 'HH:mm:ss'}.
        * При использовании picker можно указать конкретный тип, иначе по умолчанию используется datetime.
            * Пример:
                * ```
                const columns = [
                    {field: 'createTime', title: 'Время создания', type: 'date', picker: 'month'}
                ]
                ```

    * **Операционные столбцы:**
        * UTable поддерживает два способа определения операционных столбцов:
            * Первый способ — использование списка функций:
                * ```
                // Использование type="action" для объявления этого столбца операционным
                const columns = [
                    {field: 'action', title: 'Операция', type: 'action', funMetas: [
                            {field:'Edit', 'Редактировать', props: {onClick: (row) => {}}}, {field:'Del', 'Удалить', props: {onClick: (row) => {}}}
                        ]
                    }
                ]
                ```
            * Второй способ — использование пользовательского слота:
                * ```
                // template
                <template #c_action={record, column}>
                    <a-button>Редактировать</a-button>
                    <a-button>Изменить</a-button>
                </template>

                // js
                const columns = [
                    {field: 'action', title: 'Операция', type: 'action'}
                ]
                ```

    * **Формат данных:**
        * Помимо пользовательских слотов и форматирования дат, UTable также поддерживает пользовательское форматирование данных.
        * Пример:
            * ```
            const columns = [
                {field: 'createTime', title: 'Время создания', formatter: ({value, record, column}) => value}
            ]
            ```

### Установка руководства

1. Установите Node версии 12.0.0 или выше.
2. Клонируйте проект или используйте IDE для импорта.
3. Установите зависимости package.json.
4. Запустите среду разработки.
5. Соберите пакет для официальной среды.

### Инструкция по использованию

1. Сначала загрузите и настройте серверную часть.
2. Настройте адрес прокси-сервера в файле vite.config.js. ```
<UButton func='cancel'>取消</UButton> // 点击默认动作:关�зе текущий редактор, закрыть анимацию отправки, закрыть кнопку отправки.
<UButton func='submit' :url="model.id ? '/project/edit':'/project/add'">отправить</UButton>
<UButton func='reset'>сбросить</UButton>  // 点击默认动действие: сбросить редактор формы.
<UView rowKey="id">
    <UViewTable>
        <template #c_action={record}>
            // 点击 по умолчанию действие: открыть редактор с id = "modPwd" и установить модель [rowKey] = запись [rowKey].
            <UButton func='edit:modPwd' :data="record">изменить пароль</UButton> 
        </template>
    </UViewSearch>
    // редактор изменения пароля
    <UFormModal id="modPwd" :rules="[пользовательские правила проверки]">
       <IvzPassword label="пароль" field="password" />
       <template #footer={model}>
          <UButton func='cancel'>отмена</UButton> // действие по умолчанию: закрыть текущий редактор, закрыть отправку анимации, закрыть кнопку отправки (предотвратить многократную отправку).
          // действие по умолчанию: проверка формы, затем отправка формы, запуск отправки анимации формы, запуск анимации кнопки отправки (предотвращение многократной отправки).
          <UButton func='submit' :url="model.id ? '/project/edit':'/project/add'">отправка</UButton> 
          <UButton func='reset'>сброс</UButton> // действие по умолчанию: сброс редактора формы.
       </tempalte>
    </USearch>
</UView>
<UView rowKey="id">
    <UViewTable>
        <template #c_action={record}>
            // открыть новый редактор и установить родительский идентификатор модели [pid] = запись [rowKey].
            <UButton func='add:child' :data="record">добавить дочерний пункт меню</UButton> 
        </template>
    </UViewSearch>
</UView>

Функциональные полномочия

Функциональные полномочия в основном используются для управления отображением соответствующих функций на странице.

// базовый способ использования
// если есть строка разрешений, она будет отображаться.
<AButton v-auth="'core:project:add'">добавить</ABtton>

// продвинутый способ использования
// параметр and, оба разрешения в массиве должны быть удовлетворены.
<AButton v-auth:and="['core:project:view', 'core:project:info']">подробности</ABtton>
// или параметр, только одно из разрешений в массиве должно быть удовлетворено.
<AButton v-auth:or="['core:project:view', 'core:project:info']">подробности</ABtton>
// и сокращение
<AButton v-auth="['core:project:view', 'core:project:info']">подробности</ABtton>
// disabled написание (только отключает функцию, не удаляет кнопку функции), поддержка значений UTag и UButton компонентов.
<UTag v-auth:disabled="['core:project:view']">подробности</UTag>

Использование URL для контроля разрешений

Способ управления правами доступа с помощью URL заключается в том, чтобы контролировать, возвращает ли сервер функциональные компоненты [UButton или UFuncTag], соответствующие URL.

// используйте атрибут auth для управления переключателем проверки прав доступа.
// например, возвращаемые функции меню включают добавление (/project/add), редактирование (/project/edit), поиск (/project/query)
<UView auth>
    <UViewSearch>
        <template #func>
            <UButton func='add' url='/project/add'>добавить</UButton> // показать
            <UButton func='import' url='/project/import'>импорт</UButton> // не показывать
        </template>
    </UViewSearch>
    <UViewTable>
        <template #c_action={record}>
            <UFuncTag func='edit' url='/project/edit' :data="record">изменение</UFuncTag > // показать
            <UFuncTag func='del' url='/project/del' :data="record">удаление</UFuncTag > // не показать
        </template>
    </UViewSearch>
</UView>

URL редактирования сведений

Здесь URL используется для получения данных для редактирования сведений, но параметры не указаны, и нет необходимости указывать параметры.

<UFuncTag func='edit' url='/project/edit' :data="record">изменение</UFuncTag >

Если вышеуказанный метод не может удовлетворить получение URL, вы можете переопределить этот метод в хуке mount, перезаписав его. Ниже все компоненты могут использоваться только в качестве подкомпонентов компонентов уровня страницы (UView, IvzMenuView), чтобы сформировать полную функциональную страницу.

UViewModal, IvzVieDrawer, UViewTable — компоненты представления, которые служат для расширения функционала и могут использовать любые свойства исходных компонентов. Для свойств, которые не могут быть использованы, будет дано пояснение.

UViewSearch
  1. Поддерживает все свойства компонента AForm (https://2x.antdv.com/components/form-cn).
  2. Является компонентом поиска, который может взаимодействовать с другими компонентами страницы.
UViewModal
  1. Поддерживает все свойства компонента AForm (https://2x.antdv.com/components/form-cn).
  2. Поддерживает все свойства компонента AModal (https://2x.antdv.com/components/modal-cn).
  3. Добавлен атрибут span в качестве сокращённого обозначения labelCol и wrapperCol для компонента AForm. Формат: [6, 18].
  4. Является редактирующим компонентом, который может взаимодействовать с другими компонентами страницы.
UViewDrawer
  1. Поддерживает все свойства компонента AForm (https://2x.antdv.com/components/form-cn).
  2. Поддерживает все свойства компонента ADrawerl (https://2x.antdv.com/components/drawer-cn).
  3. Добавлен атрибут span в качестве сокращённого обозначения labelCol и wrapperCol для компонента AForm. Формат: [6, 18].
  4. Является редактирующим компонентом, который может взаимодействовать с другими компонентами страницы.
UViewTable
  1. Поддерживает все свойства компонента ATable (https://2x.antdv.com/components/table-cn).
UFormModal
  1. Поддерживает все свойства компонента AForm (https://2x.antdv.com/components/form-cn).
  2. Поддерживает все свойства компонента AModal (https://2x.antdv.com/components/modal-cn).
  3. Добавлен атрибут primary для объявления этого компонента как компонента, способного к взаимодействию.
UFormDrawer
  1. Поддерживает все свойства компонента AForm (https://2x.antdv.com/components/form-cn).
  2. Поддерживает все свойства компонента ADrawerl (https://2x.antdv.com/components/drawer-cn).
  3. Добавлен атрибут primary для объявления этого компонента как компонента, способного к взаимодействию.

Расширение компонентов antd

Расширение компонента ATable

Компонент таблицы antd может быть сложным для понимания без изучения документации и практики. Многие функции требуют самостоятельной реализации, например, одиночный и двойной щелчок, таблицы и множественный выбор. Без опыта использования он может показаться сложным в использовании. Поэтому был разработан компонент UTable, расширяющий возможности компонента ATable. Компонент UTable поддерживает большинство свойств компонента ATable, но есть некоторые различия. Рассмотрим их подробнее.

Неподдерживаемые свойства

  1. rowSelection — этот атрибут используется в компоненте ATable для описания множественного выбора в таблице. В компоненте UTable этот объект помещается непосредственно в свойство columns. Вот пример:
const columns = [
 // Поддерживает большинство свойств rowSelection
 //  type не поддерживается по умолчанию: checkbox, не поддерживает radio
  {type: 'selection', title: 'Множественный выбор'},
  {field: 'name', title: 'Название меню', align: 'left'}
]
// onChange, onSelect, onSelectAll, onSelectInvert методы будут напрямую поддерживаться на компоненте UTable.
<UTable ref="tableRef" @selectChange="xx" @select="xx" @selectAll="xx" @selectInvert="xx"></UTable>
// selectedRowKeys не поддерживается, предоставляется через метод.
this.$refs['tableRef'].getSelectedRowKeys();
  1. Все остальные свойства поддерживаются.

Пользовательский слот столбца

// Столбец columns не поддерживает customRender, предоставляется через слот.
// Отображение пользовательского столбца с помощью слота.
const columns = [
  {field: 'name', title: 'Название меню', align: 'left'},
  {field: 'user.name', title: 'Имя пользователя', align: 'left'}
]

// Имя слота соответствует правилам: префикс c_ + поле = c_name
// Если формат a.b, то '.' заменяется на '_', т. е. c_a_b
<UTable rowKey="id">
    <template #c_name="{record}">
        <a>{{record.name}}</a>
    </template>
    <template #c_user_name="{record}">
        <a>{{record.user.name}}</a>
    </template>
</UTable>

Словарь и URL

Можно преобразовать значение в метку, например, для поля пола: база данных хранит значение «man», а таблица должна отображать «мужчина».

// Через локальную переменную sex
const sex = [
    {label: 'Мужчина', value: 'man'},{label: 'Женщина', value: 'woman'}
]
const columns = [
    {field: 'sex', title: 'Пол', options: sex}
]
// Через словарь, предоставленный словарь типа sex, должен возвращать массив опций того же формата.
const columns = [
    {field: 'sex', title: 'Пол', dict: 'sex'}
]
// Через URL, предоставленный URL должен возвращать массив опций того же формата.
const columns = [
    {field: 'sex', title: 'Пол', url: '/core/getSex'}
]

Форматирование даты

Если это столбец даты, дата будет автоматически отформатирована в указанный формат. Можно использовать стандартный формат или настроить свой собственный.

// Указание type='date'
const columns = [
    {field: 'createTime', title: 'Время создания', type: 'date'}
]
// Стандартный формат {datetime: 'ГГГГ-ММ-ДД ЧЧ:мм:сс', дата: 'ГГГГ-ММ-ДД', месяц: 'ММ', неделя: 'E', время: 'ЧЧ:мм:сс'}
// Использование picker для указания конкретного типа, по умолчанию используется datetime.
const columns = [
    {field: 'createTime', title: 'Время создания', type: 'date', picker: 'month'}
]

Операционный столбец

Компонент UTable позволяет определить операционный столбец двумя способами. Первый использует список функциональных точек.

// Использование type="action" для обозначения этого столбца как операционного.
const columns = [
    {field: 'action', title: 'Действие', type: 'action', funMetas: [
            {field:'Edit', 'Редактировать',props: {onClick: (row) => {}}, {field:'Del', 'Удалить', props: {onClick: (row) => {}}}
        ]
    }
]

Второй использует пользовательский слот.

// template
<template #c_action={record, column}>
    <a-button>Редактировать</a-button>
    <a-button>Изменить</a-button>
</template>

// js
const columns = [
    {field: 'action', title: 'Операция', type: 'action'}
]

Форматирование данных

Помимо пользовательских слотов и форматирования дат, компонент UTable также поддерживает пользовательское форматирование данных.

const columns = [
    {field: 'createTime', title: 'Время создания', formatter: ({value,record,column}) => value}
] ### Установка

4. **Запуск в среде разработки:**

    vite dev

5. **Сборка для рабочей среды:**

    vite build

### Использование

1. Пожалуйста, скачайте и настройте серверную часть.
2. Настройте адрес прокси-сервера для серверной части:

// Изменить файл vite.config.js server: { proxy: { '^/api/.*': { changeOrigin: true, target: 'http://127.0.0.1:8085', // Адрес серверной части rewrite: (path) => path.replace(/^/api/, '') }, } }


Также можно использовать онлайн-адрес:

server: { proxy: { '^/api/.*': { changeOrigin: true, target: 'http://demo.iteaj.com', // Адрес серверной части }, } }

2. 
[Учебное пособие по использованию vite4](https://cn.vitejs.dev/).
1. Если у вас возникли проблемы при использовании, вы можете отправить запрос на включение изменений (pr) или сообщить об ошибке.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
JavaScript и 4 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/iteaj-ivzone.git
git@api.gitlife.ru:oschina-mirror/iteaj-ivzone.git
oschina-mirror
iteaj-ivzone
iteaj-ivzone
develop