zjk
2026-06-09 79ddd580671a0d0f5f2c46a393fc5afbebda5f60
refactor(登录协议): 简化版本管理逻辑并清理冗余代码

- 更新登录协议保存API的参数定义,新增nameId字段并将部分必填字段设为可选
- 移除冗余的停用确认文本函数、批量版本保存删除逻辑与未使用的分页组件导入
- 修复协议列表版本显示,使用latestVersion替代原version字段
- 简化协议保存流程,调整操作按钮样式与间距
3个文件已修改
93 ■■■■■ 已修改文件
src/service/api/operations.ts 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userContent/contentCenter/agreementVersion.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/userContent/contentCenter/components/AgreementListForm.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/service/api/operations.ts
@@ -4,11 +4,12 @@
export function saveLoginAgreement(data: {
  id?: number | string
  nameId?: number | string
  name: string
  content: string
  type: number
  version: string
  status: number
  content?: string
  type?: number
  version?: string
  status?: number
  sort?: number
}) {
  return request.Post<Service.ResponseResult<any>>('/operation/api/v1/agreement/saveLoginAgreement', data)
src/views/userContent/contentCenter/agreementVersion.vue
@@ -2,14 +2,11 @@
import { computed, onMounted, ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import type { DataTableColumns } from 'naive-ui'
import { NButton, NInput, NTag, NTooltip, useDialog, useMessage } from 'naive-ui'
import Pagination from '@/components/common/Pagination.vue'
import { NButton, NInput, NTag, useDialog, useMessage } from 'naive-ui'
import AgreementVersionModal from './components/AgreementVersionModal.vue'
import type { AgreementVersionFormValue } from './components/AgreementVersionModal.vue'
import {
  copyLoginAgreement,
  deleteLoginAgreementVersion,
  disableLoginAgreement,
  enableLoginAgreement,
  getLoginAgreementDetail,
  getLoginAgreementLatestVersion,
@@ -137,13 +134,6 @@
  return actionLoadingKey.value === `${action}_${row.id || row.version}`
}
function getDisableConfirmText(row: AgreementVersionRow) {
  const hasOtherPendingVersion = versionList.value.some(item => Number(item.status) === 0 && item.id !== row.id)
  if (!hasOtherPendingVersion)
    return '停用后乘客端将无协议展示,影响用户登录流程,是否确认停用?'
  return '停用后该版本将失效,是否确认停用?'
}
async function fetchVersionDetail(row: AgreementVersionRow) {
  if (!row.id) {
    return {
@@ -206,7 +196,7 @@
    key: 'actions',
    width: 120,
    render: (row, index) => (
      <div class="flex items-center">
      <div class="flex items-center gap-12px">
        {isPendingStatus(row, index)
          ? (
              <NButton text type="primary" loading={getActionLoadingValue(row, 'enable')} onClick={() => confirmEnableVersion(row)}>
@@ -216,12 +206,12 @@
          : null}
        {isPendingStatus(row, index)
          ? (
              <NButton text type="primary" class="ml-12px" onClick={() => handleEditVersion(row, index)}>
              <NButton text type="primary" onClick={() => handleEditVersion(row, index)}>
                编辑
              </NButton>
            )
          : null}
        <NButton text type="primary" class="ml-12px" onClick={() => handleViewVersion(row)}>
        <NButton text type="primary" onClick={() => handleViewVersion(row)}>
          详情
        </NButton>
        {(isEnabledStatus(row, index) || isInvalidStatus(row, index))
@@ -229,7 +219,6 @@
              <NButton
                text
                type="primary"
                class="ml-12px"
                loading={getActionLoadingValue(row, 'copy')}
                onClick={() => handleCopyVersion(row)}
              >
@@ -242,7 +231,7 @@
              <NButton
                text
                type="primary"
                class="ml-12px"
                loading={getActionLoadingValue(row, 'disable')}
                onClick={() => confirmDisableVersion(row)}
              >
@@ -469,7 +458,7 @@
function confirmDisableVersion(row: AgreementVersionRow) {
  dialog.warning({
    title: '提示',
    content: getDisableConfirmText(row),
    content: '停用后乘客端将无协议展示,影响用户登录流程,是否确认停用?',
    positiveText: '确认',
    negativeText: '取消',
    onPositiveClick: () => handleDisableVersion(row),
@@ -496,10 +485,12 @@
    return
  }
  const nameId = getAgreementNameId()
  versionModalSaving.value = true
  try {
    const res = await saveLoginAgreement({
      id: payload.id,
      nameId: payload.id ? undefined : (nameId || undefined),
      name: agreementName.value.trim(),
      content: payload.content,
      type: agreementType.value,
@@ -507,14 +498,13 @@
      status: 0,
    })
    if (res?.code !== 200) {
      message.error(res?.msg || '保存失败')
      return
    }
    const nameId = extractAgreementNameId(res.data)
    const nextNameId = extractAgreementNameId(res.data) || nameId
    message.success('保存成功')
    showVersionModal.value = false
    await syncPageModeAfterVersionSaved(nameId)
    await syncPageModeAfterVersionSaved(nextNameId)
    await loadVersionList()
  }
  finally {
@@ -535,56 +525,28 @@
  router.back()
}
function getSaveRows() {
  return [...versionList.value]
    .sort((a, b) => compareVersion(a.version, b.version))
    .map((item, index, list) => {
      const rowIndex = list.length - index - 1
      return {
        ...item,
        sort: index + 1,
        status: getStatusValue(item, rowIndex),
      }
    })
}
async function handleSave() {
  if (!agreementName.value.trim()) {
    message.warning('请输入协议名称')
    return
  }
  if (versionList.value.length === 0) {
    message.warning('请先新增版本')
  const nameId = getAgreementNameId()
  if (!nameId) {
    message.warning('当前协议缺少nameId,无法保存')
    return
  }
  saving.value = true
  try {
    for (const id of deletedIds.value) {
      const deleteRes = await deleteLoginAgreementVersion(id)
      if (deleteRes?.code !== 200) {
        message.error(deleteRes?.msg || '删除版本失败')
        return
      }
    const saveRes = await saveLoginAgreement({
      id: nameId,
      name: agreementName.value.trim(),
      type: agreementType.value,
    })
    if (saveRes?.code !== 200) {
      return
    }
    const saveRows = getSaveRows()
    for (const row of saveRows) {
      const saveRes = await saveLoginAgreement({
        id: row.id,
        name: agreementName.value.trim(),
        content: row.content,
        type: agreementType.value,
        version: row.version,
        status: row.status || 0,
        sort: row.sort,
      })
      if (saveRes?.code !== 200) {
        message.error(saveRes?.msg || '保存失败')
        return
      }
    }
    message.success('保存成功')
    router.back()
  }
@@ -621,7 +583,7 @@
          <div class="table-toolbar-right">
            <div class="flex items-center justify-end">
              <NButton type="primary" secondary @click="handleAddVersion">
                新增版本号
                新增
              </NButton>
            </div>
          </div>
src/views/userContent/contentCenter/components/AgreementListForm.vue
@@ -93,7 +93,7 @@
      creator: item.updateBy || item.createBy || '',
      updateTime: item.updateTime || item.createTime || '',
      sort: Number(item.sort || 0),
      version: item.version || '',
      version: item.latestVersion || '-',
    }))
}