zhou zhou
14 小时以前 50e95b985a72fcec4a93a2470e9efdfb2620148a
rsf-design/src/views/manager/menu-pda/index.vue
@@ -16,9 +16,9 @@
        @refresh="handleRefresh"
      >
        <template #left>
          <ElButton v-auth="'add'" @click="handleAddMenu" v-ripple>添加PDA菜单</ElButton>
          <ElButton v-auth="'add'" @click="handleAddMenu" v-ripple>{{ t('pages.manager.menuPda.actions.add') }}</ElButton>
          <ElButton @click="toggleExpand" v-ripple>
            {{ isExpanded ? '收起' : '展开' }}
            {{ isExpanded ? t('common.actions.collapse') : t('common.actions.expand') }}
          </ElButton>
        </template>
      </ArtTableHeader>
@@ -46,6 +46,7 @@
</template>
<script setup>
  import { useI18n } from 'vue-i18n'
  import { guardRequestWithMessage } from '@/utils/sys/requestGuard'
  import { useTableColumns } from '@/hooks/core/useTableColumns'
  import {
@@ -66,6 +67,7 @@
  } from './menuPdaPage.helpers'
  defineOptions({ name: 'MenuPda' })
  const { t } = useI18n()
  const loading = ref(false)
  const isExpanded = ref(false)
@@ -82,16 +84,16 @@
  const formItems = computed(() => [
    {
      label: '菜单名称',
      label: t('pages.manager.menuPda.search.name'),
      key: 'name',
      type: 'input',
      props: { clearable: true }
      props: { clearable: true, placeholder: t('pages.manager.menuPda.search.namePlaceholder') }
    },
    {
      label: '路由地址',
      label: t('pages.manager.menuPda.search.route'),
      key: 'route',
      type: 'input',
      props: { clearable: true }
      props: { clearable: true, placeholder: t('pages.manager.menuPda.search.routePlaceholder') }
    }
  ])
@@ -99,7 +101,7 @@
    loading.value = true
    try {
      const list = await guardRequestWithMessage(fetchGetMenuPdaTree({ condition: appliedFilters.name || '' }), null, {
        timeoutMessage: 'PDA菜单加载超时,已停止等待'
        timeoutMessage: t('pages.manager.menuPda.messages.listTimeout')
      })
      if (list === null) {
        tableData.value = []
@@ -109,7 +111,7 @@
      tableData.value = Array.isArray(list) ? list : []
      menuTreeOptions.value = buildMenuPdaTreeOptions(tableData.value)
    } catch (error) {
      ElMessage.error(error?.message || '获取PDA菜单失败')
      ElMessage.error(error?.message || t('pages.manager.menuPda.messages.loadFailed'))
    } finally {
      loading.value = false
    }
@@ -148,42 +150,42 @@
  async function handleSubmit(formData) {
    const payload = buildMenuPdaSubmitPayload(formData)
    if (payload.id && payload.id === payload.parentId) {
      ElMessage.error('上级菜单不能选择当前菜单')
      ElMessage.error(t('pages.manager.menuPda.messages.parentSelf'))
      return
    }
    try {
      if (payload.id) {
        await fetchUpdateMenuPda(payload)
        ElMessage.success('修改成功')
        ElMessage.success(t('crud.messages.updateSuccess'))
      } else {
        await fetchSaveMenuPda(payload)
        ElMessage.success('新增成功')
        ElMessage.success(t('crud.messages.createSuccess'))
      }
      closeDialog()
      await loadMenuPdaResources()
    } catch (error) {
      ElMessage.error(error?.message || '提交失败')
      ElMessage.error(error?.message || t('crud.messages.submitFailed'))
    }
  }
  async function handleDeleteMenu(row) {
    try {
      await ElMessageBox.confirm(
        `确定要删除PDA菜单「${getMenuPdaDisplayTitle(row)}」吗?删除后无法恢复`,
        '删除确认',
        t('pages.manager.menuPda.messages.deleteConfirm', { title: getMenuPdaDisplayTitle(row) }),
        t('crud.confirm.deleteTitle'),
        {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          confirmButtonText: t('common.confirm'),
          cancelButtonText: t('common.cancel'),
          type: 'warning'
        }
      )
      await fetchDeleteMenuPda(row.id)
      ElMessage.success('删除成功')
      ElMessage.success(t('crud.messages.deleteSuccess'))
      await loadMenuPdaResources()
    } catch (error) {
      if (error !== 'cancel') {
        ElMessage.error(error?.message || '删除失败')
        ElMessage.error(error?.message || t('crud.messages.deleteFailed'))
      }
    }
  }