yumeng 2 дней назад
Родитель
Сommit
0bcedc5d7a
3 измененных файлов с 87 добавлено и 11 удалено
  1. 65 0
      scripts/deploy.sh
  2. 1 4
      src/views/TaskFormView.vue
  3. 21 7
      src/views/modules/CrudTaskView.vue

+ 65 - 0
scripts/deploy.sh

@@ -0,0 +1,65 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
+
+REMOTE_HOST="${DEPLOY_HOST:-129.28.197.250}"
+REMOTE_USER="${DEPLOY_USER:-root}"
+REMOTE_PASSWORD="${DEPLOY_PASSWORD:-HUIchuang@2020#\$123..Server6}"
+REMOTE_TARGET_DIR="${DEPLOY_TARGET_DIR:-/usr/local/nginx/video-script-admin}"
+BUILD_COMMAND="${BUILD_COMMAND:-npm run build}"
+
+require_command() {
+  if ! command -v "$1" >/dev/null 2>&1; then
+    echo "Missing required command: $1" >&2
+    exit 1
+  fi
+}
+
+require_command npm
+require_command tar
+require_command sshpass
+require_command ssh
+require_command scp
+
+cd "${PROJECT_ROOT}"
+
+echo "==> Building project"
+${BUILD_COMMAND}
+
+if [ ! -d "dist" ]; then
+  echo "Build output dist/ not found" >&2
+  exit 1
+fi
+
+TIMESTAMP="$(date +"%Y%m%d%H%M%S")"
+ARCHIVE_NAME="video-script-admin-${TIMESTAMP}.tar.gz"
+LOCAL_ARCHIVE="/tmp/${ARCHIVE_NAME}"
+REMOTE_ARCHIVE="/tmp/${ARCHIVE_NAME}"
+
+cleanup() {
+  rm -f "${LOCAL_ARCHIVE}"
+}
+
+trap cleanup EXIT
+
+echo "==> Packing dist/"
+tar -C "dist" -czf "${LOCAL_ARCHIVE}" .
+
+echo "==> Uploading package to ${REMOTE_USER}@${REMOTE_HOST}"
+sshpass -p "${REMOTE_PASSWORD}" scp -o StrictHostKeyChecking=no "${LOCAL_ARCHIVE}" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_ARCHIVE}"
+
+echo "==> Deploying to ${REMOTE_TARGET_DIR}"
+sshpass -p "${REMOTE_PASSWORD}" ssh -o StrictHostKeyChecking=no "${REMOTE_USER}@${REMOTE_HOST}" \
+  "REMOTE_ARCHIVE='${REMOTE_ARCHIVE}' REMOTE_TARGET_DIR='${REMOTE_TARGET_DIR}' bash -s" <<'EOF'
+set -euo pipefail
+
+mkdir -p "${REMOTE_TARGET_DIR}"
+find "${REMOTE_TARGET_DIR}" -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +
+tar -xzf "${REMOTE_ARCHIVE}" -C "${REMOTE_TARGET_DIR}"
+rm -f "${REMOTE_ARCHIVE}"
+EOF
+
+echo "==> Deployment complete"

+ 1 - 4
src/views/TaskFormView.vue

@@ -42,11 +42,8 @@
                 inactive-text="关闭"
             />
             <div class="omni-switch-copy">
-              <div class="omni-switch-copy__title">
-                {{ form.useOmniAnalysis ? "ASR -> Omni -> qwen3.7-plus" : "ASR -> qwen3.7-plus" }}
-              </div>
               <div class="omni-switch-copy__desc">
-                开启后会先用 Omni 做视频多模态分析,再把分析结果和 ASR 转写一起交给 qwen3.7-plus 生成脚本
+                开启此功能后,分析效果增强,算力成本增加。
               </div>
             </div>
           </div>

+ 21 - 7
src/views/modules/CrudTaskView.vue

@@ -122,14 +122,16 @@
       </el-table>
 
       <div class="workspace-footer">
-        <span class="workspace-footer__meta">共 {{ tableData.length }} 条任务</span>
+        <span class="workspace-footer__meta">共 {{ totalCount }} 条任务</span>
         <el-pagination
           background
           layout="total, sizes, prev, pager, next, jumper"
-          :total="tableData.length"
+          :total="totalCount"
           :page-sizes="[10, 20, 50]"
           v-model:current-page="currentPage"
           v-model:page-size="pageSize"
+          @current-change="handlePageChange"
+          @size-change="handlePageSizeChange"
         />
       </div>
     </section>
@@ -148,12 +150,10 @@ const statusFilter = ref("");
 const tableData = ref([]);
 const currentPage = ref(1);
 const pageSize = ref(10);
-
-const totalCount = computed(() => tableData.value.length);
+const totalCount = ref(0);
 
 const pagedData = computed(() => {
-  const start = (currentPage.value - 1) * pageSize.value;
-  return tableData.value.slice(start, start + pageSize.value);
+  return tableData.value;
 });
 
 const loadData = async () => {
@@ -161,8 +161,11 @@ const loadData = async () => {
     const result = await listTasksApi({
       keyword: keyword.value?.trim() || undefined,
       status: statusFilter.value || undefined,
+      pageNum: currentPage.value,
+      pageSize: pageSize.value,
     });
-    tableData.value = Array.isArray(result) ? result : [];
+    tableData.value = Array.isArray(result?.list) ? result.list : [];
+    totalCount.value = Number(result?.total || 0);
   } catch (error) {
     ElMessage.error(error.message || "加载任务列表失败");
   }
@@ -180,6 +183,17 @@ const handleReset = async () => {
   await loadData();
 };
 
+const handlePageChange = async (page) => {
+  currentPage.value = page;
+  await loadData();
+};
+
+const handlePageSizeChange = async (size) => {
+  pageSize.value = size;
+  currentPage.value = 1;
+  await loadData();
+};
+
 const openCreatePage = () => {
   router.push("/tasks/create");
 };