zjk
2026-06-09 3c770a6deeada7ddfea03120285c8a9ba2ed8720
src/views/system/appVersion/appVersionManage/index.vue
@@ -1,6 +1,5 @@
<script setup lang="tsx">
import { computed, onMounted, reactive, ref } from 'vue'
import { useRouter } from 'vue-router'
import { computed, onActivated, onMounted, reactive, ref } from 'vue'
import type { DataTableColumns, FormInst, FormRules, UploadFileInfo } from 'naive-ui'
import { NButton } from 'naive-ui'
import dayjs from 'dayjs'
@@ -8,8 +7,8 @@
import { fetchAppVersionPage, releaseAppVersion } from '@/service/api/appVersion'
import type { AppVersionItem } from '@/service/api/appVersion'
import Pagination from '@/components/common/Pagination.vue'
import OperationLogModal from '@/components/custom/OperationLogModal.vue'
const router = useRouter()
const listData = ref<AppVersionItem[]>([])
const loading = ref(false)
const showForm = ref(false)
@@ -114,6 +113,12 @@
  },
])
const showOperationLogModal = ref(false)
function handleOpenOperationLog() {
  showOperationLogModal.value = true
}
async function getData() {
  loading.value = true
  try {
@@ -181,7 +186,6 @@
      window.$message?.error('请完善必填信息')
      return
    }
    console.log('androidUploading.value || iosUploading.value', androidUploading.value, iosUploading.value)
    if (androidUploading.value || iosUploading.value) {
      window.$message?.error('请等待文件上传完成')
@@ -195,8 +199,6 @@
      updateDescription: formModel.value.updateNote,
      forceUpdateFlag: formModel.value.isForceUpdate ? 1 : 0,
    }
    console.log('formModel formModel.value', formModel.value)
    if (!params.androidFile || !params.iosFile) {
      window.$message?.error('请等待文件上传完成')
      return
@@ -233,7 +235,7 @@
    originalOnError?.()
  }
  try {
    let res = await customUploadRequest(options)
    const res = await customUploadRequest(options)
    if (!res) {
      formModel.value.androidFiles = []
    }
@@ -259,7 +261,7 @@
    originalOnError?.()
  }
  try {
    let res = await customUploadRequest(options)
    const res = await customUploadRequest(options)
    if (!res) {
      formModel.value.iosFiles = []
    }
@@ -280,6 +282,13 @@
onMounted(() => {
  getData()
})
onActivated(() => {
  if (window.sessionStorage.getItem('appVersionManageNeedRefresh') === '1') {
    window.sessionStorage.removeItem('appVersionManageNeedRefresh')
    getData()
  }
})
</script>
<template>
@@ -287,12 +296,13 @@
    <n-card class="flex-1 robotaxi-table-card">
      <template #header>
        <div class="flex items-center justify-between">
          <div class="flex items-center relative pl-3">
            <!-- <div class="absolute left-0 top-1/2 -translate-y-1/2 w-1 h-4 bg-[#0068FF] rounded-sm" />
            <span class="text-base font-bold text-[#1D2129] ml-2">APP版本管理</span> -->
          <div class="flex items-center">
            <NButton v-permission="20212" @click="handleOpenOperationLog">
              操作日志
            </NButton>
          </div>
          <div v-permission="20221">
            <NButton style="height: 32px; background-color: #E6F4FF; color: #0068FF; border: 1px solid #7ABDFF" @click="handleAdd">
            <NButton secondary type="primary" @click="handleAdd">
              新增版本号
            </NButton>
          </div>
@@ -308,7 +318,13 @@
          flex-height
          :header-height="18"
          :row-height="18"
        />
        >
          <template #empty>
            <div class="flex-center">
              <img src="/src/assets/element-img/no-data.png" style="width:123px;height:125px" @error="(e: any) => { e.target.src = 'https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/9bed493b-a6aa-4ef6-ac10-7f67f5c6adc5.png' }">
            </div>
          </template>
        </n-data-table>
        <Pagination
          :count="pagination.itemCount"
          :page="pagination.page"
@@ -338,21 +354,19 @@
          :model="formModel"
          :rules="rules"
          label-placement="left"
          label-width="auto"
          :label-width="88"
          label-align="left"
          :content-style="{
            padding: '16px 24px 24px 24px',
          }"
          require-mark-placement="left"
          :disabled="formMode === 'view'"
          inline
        >
          <n-grid :cols="2" :x-gap="16" :y-gap="8">
            <n-gi :span="2">
              <n-form-item label="版本号" path="version">
                <n-input v-model:value="formModel.version" placeholder="请输入版本号" />
              </n-form-item>
            </n-gi>
            <n-gi>
          <div class="flex flex-col gap-8px">
            <n-form-item label="版本号" path="version">
              <n-input v-model:value="formModel.version" placeholder="请输入版本号" />
            </n-form-item>
            <div class="flex ">
              <n-form-item label="安卓文件" path="androidFiles" required>
                <div class="flex flex-col gap-2">
                  <n-upload
@@ -377,8 +391,6 @@
                  </div>
                </div>
              </n-form-item>
            </n-gi>
            <n-gi>
              <n-form-item label="iOS 文件" path="iosFiles" required>
                <div class="flex flex-col gap-2">
                  <n-upload
@@ -403,14 +415,14 @@
                  </div>
                </div>
              </n-form-item>
            </n-gi>
            <n-gi :span="2">
            </div>
            <div>
              <n-form-item label="强制更新" path="isForceUpdate">
                <n-switch v-model:value="formModel.isForceUpdate" />
              </n-form-item>
            </n-gi>
            <n-gi :span="2">
              <n-form-item label="更新说明" path="updateNote" required label-placement="top">
            </div>
            <div>
              <n-form-item label="更新说明" path="updateNote" required>
                <n-input
                  v-model:value="formModel.updateNote"
                  type="textarea"
@@ -418,20 +430,22 @@
                  :autosize="{ minRows: 4, maxRows: 8 }"
                />
              </n-form-item>
            </n-gi>
          </n-grid>
            </div>
          </div>
        </n-form>
        <template v-if="formMode !== 'view'" #action>
          <div class="flex justify-end gap-3">
            <NButton @click="handleCancel">
              取消
            </NButton>
            <NButton v-if="formMode !== 'view'" type="primary" @click="handleConfirm">
            <NButton type="primary" @click="handleConfirm">
              保存
            </NButton>
          </div>
        </template>
      </n-modal>
    </n-card>
    <OperationLogModal v-model:show="showOperationLogModal" />
  </div>
</template>