feat: 【ele】新增 general 树表代码生成示例
							parent
							
								
									f6a9340c53
								
							
						
					
					
						commit
						d4e4caa50e
					
				| 
						 | 
					@ -0,0 +1,267 @@
 | 
				
			||||||
 | 
					<script lang="ts" setup>
 | 
				
			||||||
 | 
					import type { Demo02CategoryApi } from '#/api/infra/demo/demo02';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { h, onMounted, reactive, ref } from 'vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { Page, useVbenModal } from '@vben/common-ui';
 | 
				
			||||||
 | 
					import { Download, Plus } from '@vben/icons';
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  cloneDeep,
 | 
				
			||||||
 | 
					  downloadFileFromBlobPart,
 | 
				
			||||||
 | 
					  formatDateTime,
 | 
				
			||||||
 | 
					  isEmpty,
 | 
				
			||||||
 | 
					} from '@vben/utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  ElButton,
 | 
				
			||||||
 | 
					  ElDatePicker,
 | 
				
			||||||
 | 
					  ElForm,
 | 
				
			||||||
 | 
					  ElFormItem,
 | 
				
			||||||
 | 
					  ElInput,
 | 
				
			||||||
 | 
					  ElLoading,
 | 
				
			||||||
 | 
					  ElMessage,
 | 
				
			||||||
 | 
					} from 'element-plus';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { VxeColumn, VxeTable } from '#/adapter/vxe-table';
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  deleteDemo02Category,
 | 
				
			||||||
 | 
					  exportDemo02Category,
 | 
				
			||||||
 | 
					  getDemo02CategoryList,
 | 
				
			||||||
 | 
					} from '#/api/infra/demo/demo02';
 | 
				
			||||||
 | 
					import { ContentWrap } from '#/components/content-wrap';
 | 
				
			||||||
 | 
					import { TableToolbar } from '#/components/table-toolbar';
 | 
				
			||||||
 | 
					import { useTableToolbar } from '#/hooks';
 | 
				
			||||||
 | 
					import { $t } from '#/locales';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import Demo02CategoryForm from './modules/form.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const loading = ref(true); // 列表的加载中
 | 
				
			||||||
 | 
					const list = ref<any[]>([]); // 树列表的数据
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const queryParams = reactive({
 | 
				
			||||||
 | 
					  name: undefined,
 | 
				
			||||||
 | 
					  parentId: undefined,
 | 
				
			||||||
 | 
					  createTime: undefined,
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					const queryFormRef = ref(); // 搜索的表单
 | 
				
			||||||
 | 
					const exportLoading = ref(false); // 导出的加载中
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 查询列表 */
 | 
				
			||||||
 | 
					const getList = async () => {
 | 
				
			||||||
 | 
					  loading.value = true;
 | 
				
			||||||
 | 
					  try {
 | 
				
			||||||
 | 
					    const params = cloneDeep(queryParams) as any;
 | 
				
			||||||
 | 
					    if (params.createTime && Array.isArray(params.createTime)) {
 | 
				
			||||||
 | 
					      params.createTime = (params.createTime as string[]).join(',');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    list.value = await getDemo02CategoryList(params);
 | 
				
			||||||
 | 
					  } finally {
 | 
				
			||||||
 | 
					    loading.value = false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 搜索按钮操作 */
 | 
				
			||||||
 | 
					const handleQuery = () => {
 | 
				
			||||||
 | 
					  getList();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 重置按钮操作 */
 | 
				
			||||||
 | 
					const resetQuery = () => {
 | 
				
			||||||
 | 
					  queryFormRef.value.resetFields();
 | 
				
			||||||
 | 
					  handleQuery();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const [FormModal, formModalApi] = useVbenModal({
 | 
				
			||||||
 | 
					  connectedComponent: Demo02CategoryForm,
 | 
				
			||||||
 | 
					  destroyOnClose: true,
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 创建示例分类 */
 | 
				
			||||||
 | 
					function handleCreate() {
 | 
				
			||||||
 | 
					  formModalApi.setData({}).open();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 编辑示例分类 */
 | 
				
			||||||
 | 
					function handleEdit(row: Demo02CategoryApi.Demo02Category) {
 | 
				
			||||||
 | 
					  formModalApi.setData(row).open();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 新增下级示例分类 */
 | 
				
			||||||
 | 
					function handleAppend(row: Demo02CategoryApi.Demo02Category) {
 | 
				
			||||||
 | 
					  formModalApi.setData({ parentId: row.id }).open();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 删除示例分类 */
 | 
				
			||||||
 | 
					async function handleDelete(row: Demo02CategoryApi.Demo02Category) {
 | 
				
			||||||
 | 
					  const loadingInstance = ElLoading.service({
 | 
				
			||||||
 | 
					    text: $t('ui.actionMessage.deleting', [row.id]),
 | 
				
			||||||
 | 
					    background: 'rgba(0, 0, 0, 0.7)',
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					  try {
 | 
				
			||||||
 | 
					    await deleteDemo02Category(row.id as number);
 | 
				
			||||||
 | 
					    ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.id]));
 | 
				
			||||||
 | 
					    await getList();
 | 
				
			||||||
 | 
					  } finally {
 | 
				
			||||||
 | 
					    loadingInstance.close();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 导出表格 */
 | 
				
			||||||
 | 
					async function onExport() {
 | 
				
			||||||
 | 
					  try {
 | 
				
			||||||
 | 
					    exportLoading.value = true;
 | 
				
			||||||
 | 
					    const data = await exportDemo02Category(queryParams);
 | 
				
			||||||
 | 
					    downloadFileFromBlobPart({ fileName: '示例分类.xls', source: data });
 | 
				
			||||||
 | 
					  } finally {
 | 
				
			||||||
 | 
					    exportLoading.value = false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 切换树形展开/收缩状态 */
 | 
				
			||||||
 | 
					const isExpanded = ref(true);
 | 
				
			||||||
 | 
					function toggleExpand() {
 | 
				
			||||||
 | 
					  isExpanded.value = !isExpanded.value;
 | 
				
			||||||
 | 
					  tableRef.value?.setAllTreeExpand(isExpanded.value);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 初始化 */
 | 
				
			||||||
 | 
					const { hiddenSearchBar, tableToolbarRef, tableRef } = useTableToolbar();
 | 
				
			||||||
 | 
					onMounted(() => {
 | 
				
			||||||
 | 
					  getList();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <Page auto-content-height>
 | 
				
			||||||
 | 
					    <FormModal @success="getList" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <ContentWrap v-if="!hiddenSearchBar">
 | 
				
			||||||
 | 
					      <!-- 搜索工作栏 -->
 | 
				
			||||||
 | 
					      <ElForm :model="queryParams" ref="queryFormRef" inline>
 | 
				
			||||||
 | 
					        <ElFormItem label="名字">
 | 
				
			||||||
 | 
					          <ElInput
 | 
				
			||||||
 | 
					            v-model="queryParams.name"
 | 
				
			||||||
 | 
					            placeholder="请输入名字"
 | 
				
			||||||
 | 
					            clearable
 | 
				
			||||||
 | 
					            @keyup.enter="handleQuery"
 | 
				
			||||||
 | 
					            class="!w-[240px]"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
 | 
					        </ElFormItem>
 | 
				
			||||||
 | 
					        <ElFormItem label="父级编号">
 | 
				
			||||||
 | 
					          <ElInput
 | 
				
			||||||
 | 
					            v-model="queryParams.parentId"
 | 
				
			||||||
 | 
					            placeholder="请输入父级编号"
 | 
				
			||||||
 | 
					            clearable
 | 
				
			||||||
 | 
					            @keyup.enter="handleQuery"
 | 
				
			||||||
 | 
					            class="!w-[240px]"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
 | 
					        </ElFormItem>
 | 
				
			||||||
 | 
					        <ElFormItem label="创建时间">
 | 
				
			||||||
 | 
					          <ElDatePicker
 | 
				
			||||||
 | 
					            v-model="queryParams.createTime"
 | 
				
			||||||
 | 
					            type="daterange"
 | 
				
			||||||
 | 
					            value-format="YYYY-MM-DD"
 | 
				
			||||||
 | 
					            range-separator="至"
 | 
				
			||||||
 | 
					            start-placeholder="开始日期"
 | 
				
			||||||
 | 
					            end-placeholder="结束日期"
 | 
				
			||||||
 | 
					            class="!w-[240px]"
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
 | 
					        </ElFormItem>
 | 
				
			||||||
 | 
					        <ElFormItem>
 | 
				
			||||||
 | 
					          <ElButton class="ml-2" @click="resetQuery"> 重置 </ElButton>
 | 
				
			||||||
 | 
					          <ElButton class="ml-2" @click="handleQuery" type="primary">
 | 
				
			||||||
 | 
					            搜索
 | 
				
			||||||
 | 
					          </ElButton>
 | 
				
			||||||
 | 
					        </ElFormItem>
 | 
				
			||||||
 | 
					      </ElForm>
 | 
				
			||||||
 | 
					    </ContentWrap>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 列表 -->
 | 
				
			||||||
 | 
					    <ContentWrap title="示例分类">
 | 
				
			||||||
 | 
					      <template #extra>
 | 
				
			||||||
 | 
					        <TableToolbar
 | 
				
			||||||
 | 
					          ref="tableToolbarRef"
 | 
				
			||||||
 | 
					          v-model:hidden-search="hiddenSearchBar"
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
 | 
					          <ElButton @click="toggleExpand" class="mr-2">
 | 
				
			||||||
 | 
					            {{ isExpanded ? '收缩' : '展开' }}
 | 
				
			||||||
 | 
					          </ElButton>
 | 
				
			||||||
 | 
					          <ElButton
 | 
				
			||||||
 | 
					            class="ml-2"
 | 
				
			||||||
 | 
					            :icon="h(Plus)"
 | 
				
			||||||
 | 
					            type="primary"
 | 
				
			||||||
 | 
					            @click="handleCreate"
 | 
				
			||||||
 | 
					            v-access:code="['infra:demo02-category:create']"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            {{ $t('ui.actionTitle.create', ['示例分类']) }}
 | 
				
			||||||
 | 
					          </ElButton>
 | 
				
			||||||
 | 
					          <ElButton
 | 
				
			||||||
 | 
					            :icon="h(Download)"
 | 
				
			||||||
 | 
					            type="primary"
 | 
				
			||||||
 | 
					            class="ml-2"
 | 
				
			||||||
 | 
					            :loading="exportLoading"
 | 
				
			||||||
 | 
					            @click="onExport"
 | 
				
			||||||
 | 
					            v-access:code="['infra:demo02-category:export']"
 | 
				
			||||||
 | 
					          >
 | 
				
			||||||
 | 
					            {{ $t('ui.actionTitle.export') }}
 | 
				
			||||||
 | 
					          </ElButton>
 | 
				
			||||||
 | 
					        </TableToolbar>
 | 
				
			||||||
 | 
					      </template>
 | 
				
			||||||
 | 
					      <VxeTable
 | 
				
			||||||
 | 
					        ref="tableRef"
 | 
				
			||||||
 | 
					        :data="list"
 | 
				
			||||||
 | 
					        :tree-config="{
 | 
				
			||||||
 | 
					          parentField: 'parentId',
 | 
				
			||||||
 | 
					          rowField: 'id',
 | 
				
			||||||
 | 
					          transform: true,
 | 
				
			||||||
 | 
					          expandAll: true,
 | 
				
			||||||
 | 
					          reserve: true,
 | 
				
			||||||
 | 
					        }"
 | 
				
			||||||
 | 
					        show-overflow
 | 
				
			||||||
 | 
					        :loading="loading"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        <VxeColumn field="id" title="编号" align="center" />
 | 
				
			||||||
 | 
					        <VxeColumn field="name" title="名字" align="center" tree-node />
 | 
				
			||||||
 | 
					        <VxeColumn field="parentId" title="父级编号" align="center" />
 | 
				
			||||||
 | 
					        <VxeColumn field="createTime" title="创建时间" align="center">
 | 
				
			||||||
 | 
					          <template #default="{ row }">
 | 
				
			||||||
 | 
					            {{ formatDateTime(row.createTime) }}
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </VxeColumn>
 | 
				
			||||||
 | 
					        <VxeColumn field="operation" title="操作" align="center">
 | 
				
			||||||
 | 
					          <template #default="{ row }">
 | 
				
			||||||
 | 
					            <ElButton
 | 
				
			||||||
 | 
					              size="small"
 | 
				
			||||||
 | 
					              type="primary"
 | 
				
			||||||
 | 
					              link
 | 
				
			||||||
 | 
					              @click="handleAppend(row as any)"
 | 
				
			||||||
 | 
					              v-access:code="['infra:demo02-category:create']"
 | 
				
			||||||
 | 
					            >
 | 
				
			||||||
 | 
					              新增下级
 | 
				
			||||||
 | 
					            </ElButton>
 | 
				
			||||||
 | 
					            <ElButton
 | 
				
			||||||
 | 
					              size="small"
 | 
				
			||||||
 | 
					              type="primary"
 | 
				
			||||||
 | 
					              link
 | 
				
			||||||
 | 
					              @click="handleEdit(row as any)"
 | 
				
			||||||
 | 
					              v-access:code="['infra:demo02-category:update']"
 | 
				
			||||||
 | 
					            >
 | 
				
			||||||
 | 
					              {{ $t('ui.actionTitle.edit') }}
 | 
				
			||||||
 | 
					            </ElButton>
 | 
				
			||||||
 | 
					            <ElButton
 | 
				
			||||||
 | 
					              size="small"
 | 
				
			||||||
 | 
					              type="danger"
 | 
				
			||||||
 | 
					              link
 | 
				
			||||||
 | 
					              class="ml-2"
 | 
				
			||||||
 | 
					              :disabled="!isEmpty(row?.children)"
 | 
				
			||||||
 | 
					              @click="handleDelete(row as any)"
 | 
				
			||||||
 | 
					              v-access:code="['infra:demo02-category:delete']"
 | 
				
			||||||
 | 
					            >
 | 
				
			||||||
 | 
					              {{ $t('ui.actionTitle.delete') }}
 | 
				
			||||||
 | 
					            </ElButton>
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </VxeColumn>
 | 
				
			||||||
 | 
					      </VxeTable>
 | 
				
			||||||
 | 
					    </ContentWrap>
 | 
				
			||||||
 | 
					  </Page>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,138 @@
 | 
				
			||||||
 | 
					<script lang="ts" setup>
 | 
				
			||||||
 | 
					import type { FormRules } from 'element-plus';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import type { Demo02CategoryApi } from '#/api/infra/demo/demo02';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { computed, reactive, ref } from 'vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { useVbenModal } from '@vben/common-ui';
 | 
				
			||||||
 | 
					import { handleTree } from '@vben/utils';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  ElForm,
 | 
				
			||||||
 | 
					  ElFormItem,
 | 
				
			||||||
 | 
					  ElInput,
 | 
				
			||||||
 | 
					  ElMessage,
 | 
				
			||||||
 | 
					  ElTreeSelect,
 | 
				
			||||||
 | 
					} from 'element-plus';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					  createDemo02Category,
 | 
				
			||||||
 | 
					  getDemo02Category,
 | 
				
			||||||
 | 
					  getDemo02CategoryList,
 | 
				
			||||||
 | 
					  updateDemo02Category,
 | 
				
			||||||
 | 
					} from '#/api/infra/demo/demo02';
 | 
				
			||||||
 | 
					import { $t } from '#/locales';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const emit = defineEmits(['success']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const formRef = ref();
 | 
				
			||||||
 | 
					const formData = ref<Partial<Demo02CategoryApi.Demo02Category>>({
 | 
				
			||||||
 | 
					  id: undefined,
 | 
				
			||||||
 | 
					  name: undefined,
 | 
				
			||||||
 | 
					  parentId: undefined,
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					const rules = reactive<FormRules>({
 | 
				
			||||||
 | 
					  name: [{ required: true, message: '名字不能为空', trigger: 'blur' }],
 | 
				
			||||||
 | 
					  parentId: [{ required: true, message: '父级编号不能为空', trigger: 'blur' }],
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					const demo02CategoryTree = ref<any[]>([]); // 树形结构
 | 
				
			||||||
 | 
					const getTitle = computed(() => {
 | 
				
			||||||
 | 
					  return formData.value?.id
 | 
				
			||||||
 | 
					    ? $t('ui.actionTitle.edit', ['示例分类'])
 | 
				
			||||||
 | 
					    : $t('ui.actionTitle.create', ['示例分类']);
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 重置表单 */
 | 
				
			||||||
 | 
					const resetForm = () => {
 | 
				
			||||||
 | 
					  formData.value = {
 | 
				
			||||||
 | 
					    id: undefined,
 | 
				
			||||||
 | 
					    name: undefined,
 | 
				
			||||||
 | 
					    parentId: undefined,
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  formRef.value?.resetFields();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** 获得示例分类树 */
 | 
				
			||||||
 | 
					const getDemo02CategoryTree = async () => {
 | 
				
			||||||
 | 
					  demo02CategoryTree.value = [];
 | 
				
			||||||
 | 
					  const data = await getDemo02CategoryList({});
 | 
				
			||||||
 | 
					  data.unshift({
 | 
				
			||||||
 | 
					    id: 0,
 | 
				
			||||||
 | 
					    name: '顶级示例分类',
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					  demo02CategoryTree.value = handleTree(data);
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const [Modal, modalApi] = useVbenModal({
 | 
				
			||||||
 | 
					  async onConfirm() {
 | 
				
			||||||
 | 
					    await formRef.value?.validate();
 | 
				
			||||||
 | 
					    modalApi.lock();
 | 
				
			||||||
 | 
					    // 提交表单
 | 
				
			||||||
 | 
					    const data = formData.value as Demo02CategoryApi.Demo02Category;
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					      await (formData.value?.id
 | 
				
			||||||
 | 
					        ? updateDemo02Category(data)
 | 
				
			||||||
 | 
					        : createDemo02Category(data));
 | 
				
			||||||
 | 
					      // 关闭并提示
 | 
				
			||||||
 | 
					      await modalApi.close();
 | 
				
			||||||
 | 
					      emit('success');
 | 
				
			||||||
 | 
					      ElMessage.success($t('ui.actionMessage.operationSuccess'));
 | 
				
			||||||
 | 
					    } finally {
 | 
				
			||||||
 | 
					      modalApi.unlock();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  async onOpenChange(isOpen: boolean) {
 | 
				
			||||||
 | 
					    if (!isOpen) {
 | 
				
			||||||
 | 
					      resetForm();
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    // 加载数据
 | 
				
			||||||
 | 
					    let data = modalApi.getData<Demo02CategoryApi.Demo02Category>();
 | 
				
			||||||
 | 
					    if (!data) {
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    if (data.id) {
 | 
				
			||||||
 | 
					      modalApi.lock();
 | 
				
			||||||
 | 
					      try {
 | 
				
			||||||
 | 
					        data = await getDemo02Category(data.id);
 | 
				
			||||||
 | 
					      } finally {
 | 
				
			||||||
 | 
					        modalApi.unlock();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    formData.value = data;
 | 
				
			||||||
 | 
					    // 加载树数据
 | 
				
			||||||
 | 
					    await getDemo02CategoryTree();
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <Modal :title="getTitle">
 | 
				
			||||||
 | 
					    <ElForm
 | 
				
			||||||
 | 
					      ref="formRef"
 | 
				
			||||||
 | 
					      :model="formData"
 | 
				
			||||||
 | 
					      :rules="rules"
 | 
				
			||||||
 | 
					      label-width="120px"
 | 
				
			||||||
 | 
					      label-position="right"
 | 
				
			||||||
 | 
					    >
 | 
				
			||||||
 | 
					      <ElFormItem label="名字" prop="name">
 | 
				
			||||||
 | 
					        <ElInput v-model="formData.name" placeholder="请输入名字" />
 | 
				
			||||||
 | 
					      </ElFormItem>
 | 
				
			||||||
 | 
					      <ElFormItem label="父级编号" prop="parentId">
 | 
				
			||||||
 | 
					        <ElTreeSelect
 | 
				
			||||||
 | 
					          v-model="formData.parentId"
 | 
				
			||||||
 | 
					          :data="demo02CategoryTree"
 | 
				
			||||||
 | 
					          :props="{
 | 
				
			||||||
 | 
					            label: 'name',
 | 
				
			||||||
 | 
					            value: 'id',
 | 
				
			||||||
 | 
					            children: 'children',
 | 
				
			||||||
 | 
					          }"
 | 
				
			||||||
 | 
					          check-strictly
 | 
				
			||||||
 | 
					          default-expand-all
 | 
				
			||||||
 | 
					          placeholder="请选择父级编号"
 | 
				
			||||||
 | 
					        />
 | 
				
			||||||
 | 
					      </ElFormItem>
 | 
				
			||||||
 | 
					    </ElForm>
 | 
				
			||||||
 | 
					  </Modal>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
		Loading…
	
		Reference in New Issue