From 6d53b06592607de0686e5822cd5a4ad6c6a7a720 Mon Sep 17 00:00:00 2001 From: aipper Date: Sat, 8 Nov 2025 17:08:39 +0800 Subject: [PATCH] todo --- build.sh | 307 ++++++++++++++++++ docker-compose.yml | 32 +- .../preArchiveManagement/preFileApp.js | 9 + .../components/rightTableBox.vue | 26 ++ 4 files changed, 362 insertions(+), 12 deletions(-) create mode 100644 build.sh diff --git a/build.sh b/build.sh new file mode 100644 index 0000000..17b1fef --- /dev/null +++ b/build.sh @@ -0,0 +1,307 @@ +#!/bin/bash + +# 数字档案管理系统前端 - 多阶段构建脚本 +# 支持开发环境构建和生成Docker镜像 + +set -e + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# 配置变量 +PROJECT_NAME="digital-archive-frontend" +IMAGE_NAME="${PROJECT_NAME}" +IMAGE_TAG="latest" +BUILD_TYPE="${1:-prod}" # 构建类型:dev, prod, stage +DOCKER_REGISTRY="" # Docker镜像仓库地址 +PUSH_IMAGE="${2:-false}" # 是否推送镜像 + +# 日志函数 +log_info() { + echo -e "${GREEN}[INFO]${NC} $1" +} + +log_warn() { + echo -e "${YELLOW}[WARN]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +log_step() { + echo -e "${BLUE}[STEP]${NC} $1" +} + +# 显示帮助信息 +show_help() { + echo "用法: $0 [构建类型] [是否推送镜像]" + echo "" + echo "构建类型:" + echo " dev 开发环境构建" + echo " prod 生产环境构建(默认)" + echo " stage 测试环境构建" + echo "" + echo "是否推送镜像:" + echo " true 构建完成后推送镜像到仓库" + echo " false 仅构建镜像,不推送(默认)" + echo "" + echo "环境变量:" + echo " DOCKER_REGISTRY 设置Docker镜像仓库地址" + echo "" + echo "示例:" + echo " $0 # 生产环境构建,不推送镜像" + echo " $0 dev # 开发环境构建" + echo " $0 prod true # 生产环境构建并推送镜像" + echo " DOCKER_REGISTRY=registry.example.com $0 prod true # 推送到指定仓库" +} + +# 检查依赖 +check_dependencies() { + log_step "检查构建依赖..." + + # 检查Node.js + if ! command -v node &> /dev/null; then + log_error "Node.js 未安装" + exit 1 + fi + + # 检查npm + if ! command -v npm &> /dev/null; then + log_error "npm 未安装" + exit 1 + fi + + # 检查Docker + if ! command -v docker &> /dev/null; then + log_error "Docker 未安装" + exit 1 + fi + + log_info "Node.js版本: $(node --version)" + log_info "npm版本: $(npm --version)" + log_info "Docker版本: $(docker --version)" +} + +# 清理构建缓存 +clean_build_cache() { + log_step "清理构建缓存..." + + # 清理npm缓存 + npm cache clean --force + + # 清理Docker构建缓存 + docker builder prune -f + + # 删除悬空镜像 + docker image prune -f + + log_info "构建缓存清理完成" +} + +# 安装依赖 +install_dependencies() { + log_step "安装项目依赖..." + + # 设置npm镜像源 + npm config set registry https://registry.npmmirror.com + + # 安装依赖 + if [[ "$BUILD_TYPE" == "dev" ]]; then + npm ci --production=false + else + npm ci + fi + + log_info "依赖安装完成" +} + +# 执行代码检查 +run_code_checks() { + log_step "执行代码质量检查..." + + # ESLint检查 + log_info "运行ESLint检查..." + if ! npm run lint; then + log_warn "ESLint检查发现一些问题,请检查代码质量" + fi + + log_info "代码检查完成" +} + +# 构建前端应用 +build_frontend() { + log_step "构建前端应用..." + + case "$BUILD_TYPE" in + "dev") + log_info "开发环境构建..." + npm run build:stage + ;; + "prod") + log_info "生产环境构建..." + npm run build:prod + ;; + "stage") + log_info "测试环境构建..." + npm run build:stage + ;; + *) + log_error "未知的构建类型: $BUILD_TYPE" + show_help + exit 1 + ;; + esac + + # 检查构建结果 + if [ ! -d "dist" ]; then + log_error "构建失败,dist目录未生成" + exit 1 + fi + + log_info "前端应用构建完成" +} + +# 构建Docker镜像 +build_docker_image() { + log_step "构建Docker镜像..." + + local full_image_name="${IMAGE_NAME}:${IMAGE_TAG}" + + # 如果有镜像仓库地址,添加前缀 + if [ -n "$DOCKER_REGISTRY" ]; then + full_image_name="${DOCKER_REGISTRY}/${full_image_name}" + fi + + log_info "构建镜像: $full_image_name" + + # 构建Docker镜像 + docker build \ + --tag "$full_image_name" \ + --build-arg BUILD_TYPE="$BUILD_TYPE" \ + --no-cache \ + . + + # 验证镜像构建 + if ! docker image inspect "$full_image_name" > /dev/null 2>&1; then + log_error "Docker镜像构建失败" + exit 1 + fi + + log_info "Docker镜像构建完成: $full_image_name" + + # 显示镜像信息 + docker images | grep "$IMAGE_NAME" +} + +# 推送Docker镜像 +push_docker_image() { + if [[ "$PUSH_IMAGE" != "true" ]]; then + return + fi + + log_step "推送Docker镜像..." + + local full_image_name="${IMAGE_NAME}:${IMAGE_TAG}" + + # 如果有镜像仓库地址,添加前缀 + if [ -n "$DOCKER_REGISTRY" ]; then + full_image_name="${DOCKER_REGISTRY}/${full_image_name}" + else + log_error "未设置DOCKER_REGISTRY环境变量,无法推送镜像" + return + fi + + # 登录Docker仓库(如果需要) + if [[ "$DOCKER_REGISTRY" != "" ]]; then + log_info "登录Docker仓库: $DOCKER_REGISTRY" + # 这里可以根据需要添加登录逻辑 + # docker login $DOCKER_REGISTRY + fi + + # 推送镜像 + log_info "推送镜像: $full_image_name" + docker push "$full_image_name" + + log_info "镜像推送完成" +} + +# 生成部署信息文件 +generate_deploy_info() { + log_step "生成部署信息..." + + local deploy_info="deploy-info.json" + + cat > "$deploy_info" << EOF +{ + "project": "$PROJECT_NAME", + "build_type": "$BUILD_TYPE", + "image_name": "$IMAGE_NAME", + "image_tag": "$IMAGE_TAG", + "docker_registry": "$DOCKER_REGISTRY", + "build_time": "$(date -Iseconds)", + "git_commit": "$(git rev-parse HEAD 2>/dev/null || echo 'unknown')", + "git_branch": "$(git branch --show-current 2>/dev/null || echo 'unknown')", + "node_version": "$(node --version)", + "npm_version": "$(npm --version)" +} +EOF + + log_info "部署信息已生成: $deploy_info" +} + +# 显示构建摘要 +show_summary() { + log_step "构建摘要" + echo "" + echo "项目名称: $PROJECT_NAME" + echo "构建类型: $BUILD_TYPE" + echo "镜像名称: $IMAGE_NAME:$IMAGE_TAG" + + if [ -n "$DOCKER_REGISTRY" ]; then + echo "镜像仓库: $DOCKER_REGISTRY" + fi + + echo "构建时间: $(date)" + echo "" + + if [[ "$PUSH_IMAGE" == "true" && -n "$DOCKER_REGISTRY" ]]; then + echo "镜像已推送到: $DOCKER_REGISTRY/$IMAGE_NAME:$IMAGE_TAG" + else + echo "镜像已构建完成,可使用以下命令运行:" + echo " docker run -d -p 80:80 $IMAGE_NAME:$IMAGE_TAG" + fi + + echo "" +} + +# 主构建流程 +main() { + # 检查帮助参数 + if [[ "$1" == "-h" || "$1" == "--help" ]]; then + show_help + exit 0 + fi + + log_info "开始构建数字档案管理系统前端..." + log_info "构建类型: $BUILD_TYPE" + + check_dependencies + clean_build_cache + install_dependencies + run_code_checks + build_frontend + build_docker_image + push_docker_image + generate_deploy_info + show_summary + + log_info "构建完成!" +} + +# 执行主函数 +main "$@" \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 09dc33a..fd65085 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,30 +1,38 @@ version: '3.8' services: - # 前端服务 + # 数字档案管理系统前端服务 digital-archive-frontend: - build: - context: . - dockerfile: Dockerfile - container_name: digital-archive-frontend + image: ${IMAGE_NAME:-digital-archive-frontend}:${IMAGE_TAG:-latest} + container_name: ${CONTAINER_NAME:-digital-archive-frontend} ports: - - "80:80" + - "${HOST_PORT:-80}:80" networks: - - proxy - restart: unless-stopped + - ${NETWORK_NAME:-proxy} + restart: ${RESTART_POLICY:-unless-stopped} environment: - - NGINX_HOST=localhost + - NGINX_HOST=${NGINX_HOST:-localhost} - NGINX_PORT=80 volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - - ./ssl:/etc/nginx/ssl:ro + # - ./ssl:/etc/nginx/ssl:ro # 如果需要SSL证书,取消注释并配置证书文件 healthcheck: - test: ["CMD", "curl", "-f", "http://localhost/health"] + test: ["CMD", "curl", "-f", "http://localhost/"] interval: 30s timeout: 10s retries: 3 start_period: 40s + labels: + - "traefik.enable=true" + - "traefik.http.routers.${CONTAINER_NAME:-digital-archive-frontend}.rule=Host(`${DOMAIN_NAME:-localhost}`)" + - "traefik.http.routers.${CONTAINER_NAME:-digital-archive-frontend}.entrypoints=web" + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" networks: proxy: - external: true \ No newline at end of file + external: ${EXTERNAL_NETWORK:-true} + name: ${NETWORK_NAME:-proxy} \ No newline at end of file diff --git a/src/api/preFiling/preArchiveManagement/preFileApp.js b/src/api/preFiling/preArchiveManagement/preFileApp.js index 7a7822d..ae2d6c3 100644 --- a/src/api/preFiling/preArchiveManagement/preFileApp.js +++ b/src/api/preFiling/preArchiveManagement/preFileApp.js @@ -27,4 +27,13 @@ export const documentDocking = (data) => { }); }; +// 营销系统对接 +export const productSalesDocking = (data) => { + return request({ + url: "/point-strategy/v/archives/productSalesDocking", + method: "post", + data:data, + }); +}; + diff --git a/src/views/preFiling/preArchiveManagement/preFileDataDanagement/components/rightTableBox.vue b/src/views/preFiling/preArchiveManagement/preFileDataDanagement/components/rightTableBox.vue index 9c7e5bf..1f3078f 100644 --- a/src/views/preFiling/preArchiveManagement/preFileDataDanagement/components/rightTableBox.vue +++ b/src/views/preFiling/preArchiveManagement/preFileDataDanagement/components/rightTableBox.vue @@ -174,6 +174,17 @@ " >公文系统对接 + 营销系统对接 { + if (res.code == 100) { + this.$message({type:'success',message:`【营销系统对接】${res.msg}`,showClose:true,duration:0}); + this.clickSearch(key, 1, 0); + } else { + message("warning", res.msg, 2000); + } + }) + .catch((error) => { + message("error", error, 2000); + }); + break; } }, // 获取批量修改单个档案详情