gaoluyang
3 天以前 d99f018d899cdf79d900a6ed3429186548febfec
君歌
1.部署配置
已修改3个文件
已删除77个文件
416 ■■■■ 文件已修改
multiple/assets/favicon/BTYXfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/BWSMfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/CKGMfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/DCHXfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/DYKJfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/DZZBfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/HQJCfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/HTHBfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/HYJCfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/HYLQfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/HYZCfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/JHHGfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/JHYfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/JXJHfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/JXSMico.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/KHYYfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/KSfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/KYHGfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/LFJZfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/LSYfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/NYfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/QFSWfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/QXYfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/RFSYLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/RFSYfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/SDJCfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/SDTXfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/WTXCfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/XCDQfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/XHKSfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/XLGSfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/XLZBico.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/XSWHfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/YSJXico.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/YSSfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/YTJZfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/ZDJCfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/ZQSYfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/ZXZNfavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/BTYXLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/BWSMLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/CKGMLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/DCHXLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/DYKJLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/DZZBLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/HQJCLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/HTHBLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/HYJCLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/HYLQLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/HYZCLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/JHHGLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/JHYLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/JXJHLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/JXSMLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/KHYYLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/KSLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/KYHGLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/LFJZLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/LSYLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/Logo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/NYLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/QFSWLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/QXYLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/RFSYLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/SDJCLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/SDTXLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/WTXCLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/XCDQLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/XHKSLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/XLGSLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/XLZBLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/XSWHLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/YSJXLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/YSSLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/YTJZLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/ZDJCLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/ZQSYLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/ZXZNLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/config.json 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multiple/multiple-build.js 140 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/BTYXfavicon.ico
Binary files differ
multiple/assets/favicon/BWSMfavicon.ico
Binary files differ
multiple/assets/favicon/CKGMfavicon.ico
Binary files differ
multiple/assets/favicon/DCHXfavicon.ico
Binary files differ
multiple/assets/favicon/DYKJfavicon.ico
Binary files differ
multiple/assets/favicon/DZZBfavicon.ico
Binary files differ
multiple/assets/favicon/HQJCfavicon.ico
Binary files differ
multiple/assets/favicon/HTHBfavicon.ico
Binary files differ
multiple/assets/favicon/HYJCfavicon.ico
Binary files differ
multiple/assets/favicon/HYLQfavicon.ico
Binary files differ
multiple/assets/favicon/HYZCfavicon.ico
Binary files differ
multiple/assets/favicon/JHHGfavicon.ico
Binary files differ
multiple/assets/favicon/JHYfavicon.ico
Binary files differ
multiple/assets/favicon/JXJHfavicon.ico
Binary files differ
multiple/assets/favicon/JXSMico.ico
Binary files differ
multiple/assets/favicon/KHYYfavicon.ico
Binary files differ
multiple/assets/favicon/KSfavicon.ico
Binary files differ
multiple/assets/favicon/KYHGfavicon.ico
Binary files differ
multiple/assets/favicon/LFJZfavicon.ico
Binary files differ
multiple/assets/favicon/LSYfavicon.ico
Binary files differ
multiple/assets/favicon/NYfavicon.ico
Binary files differ
multiple/assets/favicon/QFSWfavicon.ico
Binary files differ
multiple/assets/favicon/QXYfavicon.ico
Binary files differ
multiple/assets/favicon/RFSYLogo.png
Binary files differ
multiple/assets/favicon/RFSYfavicon.ico
Binary files differ
multiple/assets/favicon/SDJCfavicon.ico
Binary files differ
multiple/assets/favicon/SDTXfavicon.ico
Binary files differ
multiple/assets/favicon/WTXCfavicon.ico
Binary files differ
multiple/assets/favicon/XCDQfavicon.ico
Binary files differ
multiple/assets/favicon/XHKSfavicon.ico
Binary files differ
multiple/assets/favicon/XLGSfavicon.ico
Binary files differ
multiple/assets/favicon/XLZBico.ico
Binary files differ
multiple/assets/favicon/XSWHfavicon.ico
Binary files differ
multiple/assets/favicon/YSJXico.ico
Binary files differ
multiple/assets/favicon/YSSfavicon.ico
Binary files differ
multiple/assets/favicon/YTJZfavicon.ico
Binary files differ
multiple/assets/favicon/ZDJCfavicon.ico
Binary files differ
multiple/assets/favicon/ZQSYfavicon.ico
Binary files differ
multiple/assets/favicon/ZXZNfavicon.ico
Binary files differ
multiple/assets/logo/BTYXLogo.png
Binary files differ
multiple/assets/logo/BWSMLogo.png
Binary files differ
multiple/assets/logo/CKGMLogo.png
Binary files differ
multiple/assets/logo/DCHXLogo.png
Binary files differ
multiple/assets/logo/DYKJLogo.png
Binary files differ
multiple/assets/logo/DZZBLogo.png
Binary files differ
multiple/assets/logo/HQJCLogo.png
Binary files differ
multiple/assets/logo/HTHBLogo.png
Binary files differ
multiple/assets/logo/HYJCLogo.png
Binary files differ
multiple/assets/logo/HYLQLogo.png
Binary files differ
multiple/assets/logo/HYZCLogo.png
Binary files differ
multiple/assets/logo/JHHGLogo.png
Binary files differ
multiple/assets/logo/JHYLogo.png
Binary files differ
multiple/assets/logo/JXJHLogo.png
Binary files differ
multiple/assets/logo/JXSMLogo.png
Binary files differ
multiple/assets/logo/KHYYLogo.png
Binary files differ
multiple/assets/logo/KSLogo.png
Binary files differ
multiple/assets/logo/KYHGLogo.png
Binary files differ
multiple/assets/logo/LFJZLogo.png
Binary files differ
multiple/assets/logo/LSYLogo.png
Binary files differ
multiple/assets/logo/Logo.png

multiple/assets/logo/NYLogo.png
Binary files differ
multiple/assets/logo/QFSWLogo.png
Binary files differ
multiple/assets/logo/QXYLogo.png
Binary files differ
multiple/assets/logo/RFSYLogo.png
Binary files differ
multiple/assets/logo/SDJCLogo.png
Binary files differ
multiple/assets/logo/SDTXLogo.png
Binary files differ
multiple/assets/logo/WTXCLogo.png
Binary files differ
multiple/assets/logo/XCDQLogo.png
Binary files differ
multiple/assets/logo/XHKSLogo.png
Binary files differ
multiple/assets/logo/XLGSLogo.png
Binary files differ
multiple/assets/logo/XLZBLogo.png
Binary files differ
multiple/assets/logo/XSWHLogo.png
Binary files differ
multiple/assets/logo/YSJXLogo.png
Binary files differ
multiple/assets/logo/YSSLogo.png
Binary files differ
multiple/assets/logo/YTJZLogo.png
Binary files differ
multiple/assets/logo/ZDJCLogo.png
Binary files differ
multiple/assets/logo/ZQSYLogo.png
Binary files differ
multiple/assets/logo/ZXZNLogo.png
Binary files differ
multiple/config.json
@@ -3,281 +3,21 @@
    "env": {
      "VITE_APP_TITLE": "芯导云(管理信息系统)"
    },
    "screen": "screen/PCDZView.png",
    "logo": "logo/Logo.png",
    "favicon": "favicon/favicon.ico"
  },
  "TEST": {
  "JGHG": {
    "env": {
      "VITE_APP_TITLE": "工厂数字化MOM系统",
      "VITE_BASE_API": "http://1.15.17.182:9048",
      "VITE_JAVA_API": "http://1.15.17.182:9049"
      "VITE_APP_TITLE": "天津君歌化工设备集团有限公司信息管理",
      "VITE_BASE_API": "http://1.15.17.182:9053",
      "VITE_JAVA_API": "http://1.15.17.182:9052"
    },
    "logo": "logo/XDRJ.png",
    "screen": "screen/login-background.png",
    "logo": "logo/Logo.png",
    "favicon": "favicon/favicon.ico"
  },
  "BTYX": {
    "env": {
      "VITE_APP_TITLE": "河南帮太优选食品有限公司",
      "VITE_BASE_API": "http://1.15.17.182:9056",
      "VITE_JAVA_API": "http://1.15.17.182:9057"
    },
    "logo": "logo/BTYXLogo.png",
    "favicon": "favicon/BTYXfavicon.ico"
  },
  "ZXZN": {
    "env": {
      "VITE_APP_TITLE": "河南智芯智能机器人有限公司",
      "VITE_BASE_API": "http://127.0.0.1:9001",
      "VITE_JAVA_API": "http://127.0.0.1:9000"
    },
    "logo": "logo/ZXZNLogo.png",
    "favicon": "favicon/ZXZNfavicon.ico"
  },
  "SDTX": {
    "env": {
      "VITE_APP_TITLE": "河南善鼎通信科技有限公司",
      "VITE_BASE_API": "http://36.213.156.184:9001",
      "VITE_JAVA_API": "http://36.213.156.184:9000"
    },
    "logo": "logo/SDTXLogo.png",
    "favicon": "favicon/SDTXfavicon.ico"
  },
  "QXY": {
    "env": {
      "VITE_APP_TITLE": "强信宇电器管理系统",
      "VITE_BASE_API": "http://36.134.154.10:9001",
      "VITE_JAVA_API": "http://36.134.154.10:9000"
    },
    "logo": "logo/QXYLogo.png",
    "favicon": "favicon/QXYfavicon.ico"
  },
  "HQJC": {
    "env": {
      "VITE_APP_TITLE": "华强建材管理系统",
      "VITE_BASE_API": "http://36.134.77.64:9001",
      "VITE_JAVA_API": "http://36.134.77.64:9000"
    },
    "logo": "logo/HQJCLogo.png",
    "favicon": "favicon/HQJCfavicon.ico"
  },
  "XCDQ": {
    "env": {
      "VITE_APP_TITLE": "旭晨电器管理系统",
      "VITE_BASE_API": "http://36.133.45.183:9001",
      "VITE_JAVA_API": "http://36.133.45.183:9002"
    },
    "logo": "logo/XCDQLogo.png",
    "favicon": "favicon/XCDQfavicon.ico"
  },
  "BWSM": {
    "env": {
      "VITE_APP_TITLE": "八维商贸管理系统",
      "VITE_BASE_API": "http://1.15.17.182:9070",
      "VITE_JAVA_API": "http://1.15.17.182:9069"
    },
    "logo": "logo/BWSMLogo.png",
    "favicon": "favicon/BWSMfavicon.ico"
  },
  "CKGM": {
    "env": {
      "VITE_APP_TITLE": "宸康工贸管理系统",
      "VITE_BASE_API": "http://1.15.17.182:9072",
      "VITE_JAVA_API": "http://1.15.17.182:9071"
    },
    "logo": "logo/CKGMLogo.png",
    "favicon": "favicon/CKGMfavicon.ico"
  },
  "RFSY": {
    "env": {
      "VITE_APP_TITLE": "瑞丰盛业管理系统",
      "VITE_BASE_API": "http://1.15.17.182:9076",
      "VITE_JAVA_API": "http://1.15.17.182:9075"
    },
    "logo": "logo/RFSYLogo.png",
    "favicon": "favicon/RFSYfavicon.ico"
  },
  "ZQSY": {
    "env": {
      "VITE_APP_TITLE": "泽淇实业",
      "VITE_BASE_API": "http://36.213.128.159:9000",
      "VITE_JAVA_API": "http://36.213.128.159:9001"
    },
    "logo": "logo/ZQSYLogo.png",
    "favicon": "favicon/ZQSYfavicon.ico"
  },
  "JXJH": {
    "env": {
      "VITE_APP_TITLE": "浚县江海水泥制品有限公司",
      "VITE_BASE_API": "http://36.139.201.20:9000",
      "VITE_JAVA_API": "http://36.139.201.20:9001"
    },
    "logo": "logo/JXJHLogo.png",
    "favicon": "favicon/JXJHfavicon.ico"
  },
  "YTJZ": {
    "env": {
      "VITE_APP_TITLE": "豫泰建筑材料有限公司",
      "VITE_BASE_API": "http://36.139.201.181:9000",
      "VITE_JAVA_API": "http://36.139.201.181:9001"
    },
    "logo": "logo/YTJZLogo.png",
    "favicon": "favicon/YTJZfavicon.ico"
  },
  "HYLQ": {
    "env": {
      "VITE_APP_TITLE": "航逸路桥工程有限公司",
      "VITE_BASE_API": "http://36.139.202.111:9000",
      "VITE_JAVA_API": "http://36.139.202.111:9001"
    },
    "logo": "logo/HYLQLogo.png",
    "favicon": "favicon/HYLQfavicon.ico"
  },
  "QXY": {
    "env": {
      "VITE_APP_TITLE": "强信宇电器云主机",
      "VITE_BASE_API": "http://36.134.154.10:9000",
      "VITE_JAVA_API": "http://36.134.154.10:9001"
    },
    "logo": "logo/QXYLogo.png",
    "favicon": "favicon/QXYfavicon.ico"
  },
  "HYJC": {
    "env": {
      "VITE_APP_TITLE": "恒洋建材",
      "VITE_BASE_API": "http://36.138.94.178:9000",
      "VITE_JAVA_API": "http://36.138.94.178:9001"
    },
    "logo": "logo/HYJCLogo.png",
    "favicon": "favicon/HYJCfavicon.ico"
  },
  "JHY": {
    "env": {
      "VITE_APP_TITLE": "山西省榆社县晋和园食品有限公司",
      "VITE_BASE_API": "http://223.15.233.27:9001",
      "VITE_JAVA_API": "http://223.15.233.27:9002"
    },
    "logo": "logo/JHYLogo.png",
    "favicon": "favicon/JHYfavicon.ico"
  },
  "XCDQ": {
    "env": {
      "VITE_APP_TITLE": "旭晨电器管理系统",
      "VITE_BASE_API": "http://36.133.45.183:9001",
      "VITE_JAVA_API": "http://36.133.45.183:9002"
    },
    "logo": "logo/XCDQLogo.png",
    "favicon": "favicon/XCDQfavicon.ico"
  },
  "XHKS": {
    "env": {
      "VITE_APP_TITLE": "鑫铧矿山管理系统",
      "VITE_BASE_API": "http://36.133.45.183:9078",
      "VITE_JAVA_API": "http://36.133.45.183:9077"
    },
    "logo": "logo/XHKSLogo.png",
    "favicon": "favicon/XHKSfavicon.ico"
  },
  "QFSW": {
    "env": {
      "VITE_APP_TITLE": "乾丰生物管理系统",
      "VITE_BASE_API": "http://36.133.45.183:9080",
      "VITE_JAVA_API": "http://36.133.45.183:9079"
    },
    "logo": "logo/QFSWLogo.png",
    "favicon": "favicon/QFSWfavicon.ico"
  },
  "ZDJC": {
    "env": {
      "VITE_APP_TITLE": "正德新型建材管理系统",
      "VITE_BASE_API": "http://36.133.45.183:9082",
      "VITE_JAVA_API": "http://36.133.45.183:9081"
    },
    "logo": "logo/ZDJCLogo.png",
    "favicon": "favicon/ZDJCfavicon.ico"
  },
  "LSY": {
    "env": {
      "VITE_APP_TITLE": "山西林昇焱工贸有限公司",
      "VITE_BASE_API": "http://36.133.45.183:9084",
      "VITE_JAVA_API": "http://36.133.45.183:9083"
    },
    "logo": "logo/LSYLogo.png",
    "favicon": "favicon/LSYfavicon.ico"
  },
  "HTHB": {
    "env": {
      "VITE_APP_TITLE": "山西宏腾新型环保科技有限责任公司",
      "VITE_BASE_API": "http://36.133.45.183:9090",
      "VITE_JAVA_API": "http://36.133.45.183:9089"
    },
    "logo": "logo/HTHBLogo.png",
    "favicon": "favicon/HTHBfavicon.ico"
  },
  "YSS": {
    "env": {
      "VITE_APP_TITLE": "山西羿神晟农生物科技发展有限公司",
      "VITE_BASE_API": "http://36.133.45.183:9086",
      "VITE_JAVA_API": "http://36.133.45.183:9085"
    },
    "logo": "logo/YSSLogo.png",
    "favicon": "favicon/YSSfavicon.ico"
  },
  "KYHG": {
    "env": {
      "VITE_APP_TITLE": "山西坤源化工有限公司",
      "VITE_BASE_API": "http://36.137.13.29:9001",
      "VITE_JAVA_API": "http://36.137.13.29:9002"
    },
    "logo": "logo/KYHGLogo.png",
    "favicon": "favicon/KYHGfavicon.ico"
  },
  "JXSM": {
    "env": {
      "VITE_APP_TITLE": "襄垣县洁鑫商贸有限公司",
      "VITE_BASE_API": "http://36.134.76.148:9001",
      "VITE_JAVA_API": "http://36.134.76.148:9002"
    },
    "logo": "logo/JXSMLogo.png",
    "favicon": "favicon/JXSMico.ico"
  },
  "DCHX": {
    "env": {
      "VITE_APP_TITLE": "山西大成化纤股份有限公司",
      "VITE_BASE_API": "http://36.134.76.148:9088",
      "VITE_JAVA_API": "http://36.134.76.148:9087"
    },
    "logo": "logo/DCHXLogo.png",
    "favicon": "favicon/DCHXfavicon.ico"
  },
  "KHYY": {
    "env": {
      "VITE_APP_TITLE": "长治市坤皓液压制造有限公司",
      "VITE_BASE_API": "http://36.134.76.148:9094",
      "VITE_JAVA_API": "http://36.134.76.148:9093"
    },
    "logo": "logo/KHYYLogo.png",
    "favicon": "favicon/KHYYfavicon.ico"
  },
  "XLGS": {
    "env": {
      "VITE_APP_TITLE": "长治市鑫浪供水设备有限公司",
      "VITE_BASE_API": "http://36.134.76.148:9092",
      "VITE_JAVA_API": "http://36.134.76.148:9091"
    },
    "logo": "logo/XLGSLogo.png",
    "favicon": "favicon/XLGSfavicon.ico"
  },
  "NY": {
    "env": {
      "VITE_APP_TITLE": "山西省诺颢新材料有限公司",
      "VITE_BASE_API": "http://36.134.76.148:9092",
      "VITE_JAVA_API": "http://36.134.76.148:9091"
    },
    "logo": "logo/NYLogo.png",
    "favicon": "favicon/NYfavicon.ico"
  },
  "screen": "/src/assets/images/login-background.png",
  "logo": "/src/assets/logo/logo.png",
  "favicon": "/public/favicon.ico"
}
multiple/multiple-build.js
@@ -1,152 +1,86 @@
import fs from "fs/promises";
import fsSync from "fs";
import path from "path";
import { fileURLToPath } from "url";
import fs from 'fs/promises';
import fsSync from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
import { execSync } from "child_process";
// 获取 __dirname
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const data = await fs.readFile(path.join(__dirname, "config.json"), "utf-8");
// 读取 JSON 配置
const data = await fs.readFile(path.join(__dirname, 'config.json'), 'utf-8');
const config = JSON.parse(data);
const rootPath = path.resolve(__dirname, "..");
const resourcePath = path.join(rootPath, "multiple", "assets");
const replacePath = path.join(rootPath, "replace");
const envFilePath = path.join(rootPath, ".env.production.local");
// 项目路径
const rootPath = path.resolve(__dirname, '..');
const resourcePath = path.join(rootPath, 'multiple', 'assets');
const replacePath = path.join(rootPath, 'replace');
// 获取命令行参数
const params = parseArgs(process.argv);
const company = resolveCompany(params);
const company = params["company"] ?? "default";
const companyMap = config[company];
if (!companyMap) {
  const availableCompanies = Object.entries(config)
    .filter(([, value]) => value && typeof value === "object" && value.env)
    .map(([key]) => key)
    .sort();
  throw new Error(
    `未知 company: "${company}"。可选值: ${availableCompanies.join(", ")}`
  );
}
console.log(`当前 company: ${company}`);
async function copyFileWithOverwrite(src, dest) {
  await fs.mkdir(path.dirname(dest), { recursive: true });
  if (fsSync.existsSync(dest)) {
    try {
      await fs.chmod(dest, 0o666);
    } catch {
      // Ignore chmod failure and continue.
    }
    await fs.rm(dest, { force: true });
  }
  await fs.copyFile(src, dest);
}
const envFilePath = path.join(process.cwd(), '.env.production.local');
try {
    // 1️⃣ 生成 .env
  console.log("=======生成.env=======");
  const envContent =
    Object.entries(companyMap.env)
    const envContent = Object.entries(companyMap.env)
      .map(([key, value]) => `${key}='${value}'`)
      .join("\n") + "\n";
  await fs.writeFile(envFilePath, envContent, "utf-8");
        .join('\n') + '\n';
    await fs.writeFile(envFilePath, envContent, 'utf-8');
    // 2️⃣ 备份原始资源并替换
  console.log("=======修改资源=======");
  for (const [key] of Object.entries(companyMap)) {
    if (key === "env") continue;
    for (const [key, value] of Object.entries(companyMap)) {
        if (key === 'env') continue;
    const originFile = path.join(rootPath, config[key]);
    const backupFile = path.join(replacePath, config[key]);
    const replaceFile = path.join(resourcePath, companyMap[key]);
    await copyFileWithOverwrite(originFile, backupFile);
    await copyFileWithOverwrite(replaceFile, originFile);
        await fs.mkdir(path.dirname(backupFile), { recursive: true });
        await fs.copyFile(originFile, backupFile);
        await fs.copyFile(replaceFile, originFile);
  }
  console.log("=====开始打包=====");
  const buildEnv = createBuildEnv(companyMap.env);
  execSync("vite build", { stdio: "inherit", cwd: rootPath, env: buildEnv });
    console.log("=====开始打包======");
    execSync("vite build", { stdio: "inherit" });
  console.log("=====打包完成======");
} finally {
  console.log("=====恢复资源======");
    // 删除临时 .env 文件
  if (fsSync.existsSync(envFilePath)) {
    await fs.unlink(envFilePath);
    console.log(`🗑️ 已删除 ${envFilePath}`);
  }
    // 恢复资源文件
  if (fsSync.existsSync(replacePath)) {
    for (const [key] of Object.entries(companyMap)) {
      if (key === "env") continue;
        for (const [key, value] of Object.entries(companyMap)) {
            if (key === 'env') continue;
      const originFile = path.join(rootPath, config[key]);
      const backupFile = path.join(replacePath, config[key]);
      await copyFileWithOverwrite(backupFile, originFile);
            await fs.copyFile(backupFile, originFile);
    }
    await fs.rm(replacePath, { recursive: true, force: true });
    console.log(`🗑️ 已删除 ${replacePath}`);
  }
}
// 简单命令行参数解析
function parseArgs(argv) {
  const params = {};
  for (let index = 2; index < argv.length; index++) {
    const arg = argv[index];
    if (!arg.startsWith("--")) continue;
    const normalized = arg.slice(2);
    const equalIndex = normalized.indexOf("=");
    if (equalIndex >= 0) {
      const key = normalized.slice(0, equalIndex);
      const value = normalized.slice(equalIndex + 1);
      params[key] = value || true;
      continue;
    for (const arg of argv.slice(2)) {
        if (arg.startsWith('--')) {
            const [key, value] = arg.slice(2).split('=');
            params[key] = value ?? true;
    }
    const nextArg = argv[index + 1];
    if (nextArg && !nextArg.startsWith("--")) {
      params[normalized] = nextArg;
      index += 1;
      continue;
    }
    params[normalized] = true;
  }
  return params;
}
function resolveCompany(parsedParams) {
  const fromArg = parseValue(parsedParams.company);
  if (fromArg) return fromArg;
  const fromNpmConfig = parseValue(process.env.npm_config_company);
  if (fromNpmConfig) return fromNpmConfig;
  const fromEnv = parseValue(process.env.COMPANY ?? process.env.company);
  if (fromEnv) return fromEnv;
  return "default";
}
function parseValue(value) {
  if (value == null || value === true) return undefined;
  if (typeof value !== "string") return undefined;
  const trimmed = value.trim();
  if (!trimmed) return undefined;
  return trimmed.replace(/^["']|["']$/g, "");
}
function createBuildEnv(companyEnv) {
  const env = { ...process.env };
  for (const key of Object.keys(env)) {
    if (key.startsWith("VITE_")) {
      delete env[key];
    }
  }
  return {
    ...env,
    ...companyEnv,
    VITE_APP_ENV: "production",
  };
}