gaoluyang
15 小时以前 373244688c435c149f34b29fed625926369567ea
Merge remote-tracking branch 'origin/dev_script' into dev

# Conflicts:
# multiple/assets/favicon/BHMY.ico
# multiple/assets/logo/BHMYLogo.png
已重命名29个文件
已复制1个文件
已修改7个文件
已添加11个文件
147 ■■■■■ 文件已修改
README.md 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
index.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/BHMY.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/DHDCico.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/HHKJIco.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/HYSNico.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/JZYJico.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/MXSCIco.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/RZNY.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/TJXM.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/WDSYico.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/XYHBico.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/ZQHXico.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/favicon/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/BHMYLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/DHDCLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/HHKJLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/HYSNLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/JZYJLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/LCLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/MXSCLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/RZNYLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/TJXMLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/WDSYLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/XYHBLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/ZQHXLogo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/南通云从工业互联网有限公司.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/新缆(江苏)数字科技有限公司.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/logo/芯导软件(江苏)有限公司.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/screen/DHDCView.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/screen/HHKJView.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/screen/HYSNView.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/screen/JZYJView.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/screen/MXSCBack.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/screen/RZNYView.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/screen/TJXMView.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/screen/WDSYView.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/screen/XYHBView.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/assets/screen/ZQHXView.png 补丁 | 查看 | 原始文档 | blame | 历史
multiple/config.json 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
multiple/multiple-build.js 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/indexViews/login-background.png 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Sidebar/Logo.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
vite.config.js 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md
@@ -33,6 +33,7 @@
# æž„建测试环境 yarn build:stage
# æž„建生产环境 yarn build:prod
# æž„建生产环境 yarn build:prod -- --company="AAA"
# å‰ç«¯è®¿é—®åœ°å€ http://localhost:80
```
index.html
@@ -8,8 +8,8 @@
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
    />
    <link rel="icon" href="/ZQHXico.ico" />
    <title>测试进销存管理系统</title>
    <link rel="icon" href="/favicon.ico" />
    <title>%VITE_APP_TITLE%</title>
    <!--[if lt IE 11
      ]><script>
        window.location.href = "/html/ie.html";
multiple/assets/favicon/BHMY.ico
multiple/assets/favicon/DHDCico.ico

multiple/assets/favicon/HHKJIco.ico

multiple/assets/favicon/HYSNico.ico

multiple/assets/favicon/JZYJico.ico

multiple/assets/favicon/MXSCIco.ico

multiple/assets/favicon/RZNY.ico

multiple/assets/favicon/TJXM.ico

multiple/assets/favicon/WDSYico.ico

multiple/assets/favicon/XYHBico.ico

multiple/assets/favicon/ZQHXico.ico

multiple/assets/favicon/favicon.ico
multiple/assets/logo/BHMYLogo.png
multiple/assets/logo/DHDCLogo.png

multiple/assets/logo/HHKJLogo.png

multiple/assets/logo/HYSNLogo.png

multiple/assets/logo/JZYJLogo.png

multiple/assets/logo/LCLogo.png
multiple/assets/logo/MXSCLogo.png

multiple/assets/logo/RZNYLogo.png

multiple/assets/logo/TJXMLogo.png

multiple/assets/logo/WDSYLogo.png

multiple/assets/logo/XYHBLogo.png

multiple/assets/logo/ZQHXLogo.png

multiple/assets/logo/logo.png
multiple/assets/logo/ÄÏÍ¨ÔÆ´Ó¹¤Òµ»¥ÁªÍøÓÐÏÞ¹«Ë¾.png
multiple/assets/logo/ÐÂÀ£¨½­ËÕ£©Êý×ֿƼ¼ÓÐÏÞ¹«Ë¾.png
multiple/assets/logo/оµ¼Èí¼þ£¨½­ËÕ£©ÓÐÏÞ¹«Ë¾.png
multiple/assets/screen/DHDCView.png

multiple/assets/screen/HHKJView.png

multiple/assets/screen/HYSNView.png

multiple/assets/screen/JZYJView.png

multiple/assets/screen/MXSCBack.png

multiple/assets/screen/RZNYView.png

multiple/assets/screen/TJXMView.png

multiple/assets/screen/WDSYView.png

multiple/assets/screen/XYHBView.png

multiple/assets/screen/ZQHXView.png

multiple/config.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
{
  "default": {
    "env": {
      "VITE_APP_TITLE": "芯导云(管理信息系统)"
    },
    "screen": "screen/JZYJView.png",
    "logo": "logo/HYSNLogo.png",
    "favicon": "favicon/HYSNico.ico"
  },
  "TEST": {
    "env": {
      "VITE_APP_TITLE": "中小企业数字化转型二级套餐包",
      "VITE_BASE_API": "http://114.132.189.42:9036",
      "VITE_JAVA_API": "http://114.132.189.42:9037"
    },
    "screen": "screen/HYSNView.png",
    "logo": "logo/LCLogo.png",
    "favicon": "favicon/BHMY.ico"
  },
  "BBB": {
    "env": {
      "VITE_APP_TITLE": "靖边县中强恒兴环保科技有限公司",
      "VITE_BASE_API": "http://127.0.0.1:9036"
    },
    "screen": "screen/ZQHXView.png",
    "logo": "logo/新缆(江苏)数字科技有限公司.png",
    "favicon": "favicon/HYSNico.ico"
  },
  "screen": "/src/assets/images/login-background.png",
  "logo": "/src/assets/logo/logo.png",
  "favicon": "/public/favicon.ico"
}
multiple/multiple-build.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
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);
// è¯»å– 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 params = parseArgs(process.argv);
const company = params["company"] ?? "default";
const companyMap = config[company];
const envFilePath = path.join(process.cwd(), '.env.production.local');
try {
    // 1️⃣ ç”Ÿæˆ .env
    console.log("=======生成.env=======");
    const envContent = Object.entries(companyMap.env)
        .map(([key, value]) => `${key}='${value}'`)
        .join('\n') + '\n';
    await fs.writeFile(envFilePath, envContent, 'utf-8');
    // 2️⃣ å¤‡ä»½åŽŸå§‹èµ„æºå¹¶æ›¿æ¢
    console.log("=======修改资源=======");
    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 fs.mkdir(path.dirname(backupFile), { recursive: true });
        await fs.copyFile(originFile, backupFile);
        await fs.copyFile(replaceFile, originFile);
    }
    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, value] of Object.entries(companyMap)) {
            if (key === 'env') continue;
            const originFile = path.join(rootPath, config[key]);
            const backupFile = path.join(replacePath, config[key]);
            await fs.copyFile(backupFile, originFile);
        }
        await fs.rm(replacePath, { recursive: true, force: true });
        console.log(`🗑️ å·²åˆ é™¤ ${replacePath}`);
    }
}
// ç®€å•命令行参数解析
function parseArgs(argv) {
    const params = {};
    for (const arg of argv.slice(2)) {
        if (arg.startsWith('--')) {
            const [key, value] = arg.slice(2).split('=');
            params[key] = value ?? true;
        }
    }
    return params;
}
package.json
@@ -1,13 +1,13 @@
{
  "name": "ruoyi",
  "version": "3.8.9",
  "description": "测试进销存管理系统",
  "description": "中小企业数字化转型二级套餐包",
  "author": "若依",
  "license": "MIT",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build:prod": "vite build",
    "build:prod": "node multiple/multiple-build.js",
    "build:stage": "vite build --mode staging",
    "preview": "vite preview"
  },
src/assets/indexViews/login-background.png
src/layout/components/Sidebar/Logo.vue
@@ -16,7 +16,7 @@
<script setup>
import { ref, computed, onMounted, watch } from 'vue'
import useUserStore from '@/store/modules/user'
import defaultLogo from '@/assets/indexViews/ZQHXLogo.png' // å¯¼å…¥é»˜è®¤logo
import defaultLogo from '@/assets/indexViews/LCLogo.png' // å¯¼å…¥é»˜è®¤logo
defineProps({
  collapse: {
src/main.js
@@ -76,7 +76,7 @@
app.config.globalProperties.addDateRange = addDateRange;
app.config.globalProperties.selectDictLabel = selectDictLabel;
app.config.globalProperties.selectDictLabels = selectDictLabels;
app.config.globalProperties.javaApi = "http://114.132.189.42:9037";
app.config.globalProperties.javaApi = __BASE_API__;
app.config.globalProperties.HaveJson = (val) => {
  return JSON.parse(JSON.stringify(val));
};
src/views/login.vue
@@ -181,7 +181,7 @@
<style lang='scss' scoped>
.login {
  height: 100%;
  background-image: url("../assets/indexViews/JZYJView.png");
  background-image: url("../assets/images/login-background.png");
  background-size: cover;
  position: relative;
}
vite.config.js
@@ -7,11 +7,17 @@
  const env = loadEnv(mode, process.cwd());
  const { VITE_APP_ENV } = env;
  const baseUrl =
    VITE_APP_ENV == "development"
      ? "http://114.132.189.42:9036" // å¼€å‘环境后端接口
      : "http://114.132.189.42:9036"; // ç”Ÿäº§çŽ¯å¢ƒåŽç«¯æŽ¥å£
      env.VITE_APP_ENV === "development"
          ? "http://114.132.189.42:9036"
          : env.VITE_BASE_API;
  const javaUrl =
      env.VITE_APP_ENV === "development"
          ? "http://114.132.189.42:9037"
          : env.VITE_JAVA_API;
  return {
    define:{
      __BASE_API__: JSON.stringify(javaUrl)
    },
    // éƒ¨ç½²ç”Ÿäº§çŽ¯å¢ƒå’Œå¼€å‘çŽ¯å¢ƒä¸‹çš„URL。
    // é»˜è®¤æƒ…况下,vite ä¼šå‡è®¾ä½ çš„应用是被部署在一个域名的根路径上
    // ä¾‹å¦‚ https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl ä¸º /admin/。