gaoluyang
2026-08-03 d4ff618628bc546279db786bd3aa5b7c971f2613
银川
1.部署不同公司切换logo逻辑修改
已修改6个文件
已添加3个文件
80 ■■■■ 文件已修改
company.config.ts 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
deploy.bat 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/logos/.gitkeep 补丁 | 查看 | 原始文档 | blame | 历史
public/logos/TEST.png 补丁 | 查看 | 原始文档 | blame | 历史
src/packages/effects/layouts/src/widgets/preferences/preferences-drawer.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/preferences.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mes/md/unitmeasure/components/select.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wls/transaction/data.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vite.config.ts 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company.config.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
export interface CompanyConfig {
  /** å…¬å¸åç§° */
  name: string;
  /** logo å›¾ç‰‡è·¯å¾„,相对于 public ç›®å½• */
  logo: string;
}
/**
 * æ‰€æœ‰å…¬å¸é…ç½®
 * æ–°å¢žå…¬å¸åªéœ€åœ¨ä¸‹é¢åŠ ä¸€è¡Œå³å¯
 *
 * æ‰“包:记得在在deploy.bat文件中将set "COMPANY=TEST"改名字
 * ç¤ºä¾‹ï¼šset "COMPANY=TEST"
 */
export const companies: Record<string, CompanyConfig> = {
  TEST: { name: '测试公司', logo: '/logos/TEST.png' },
};
deploy.bat
@@ -3,6 +3,7 @@
setlocal enabledelayedexpansion
:: ================= Config =================
set "COMPANY=TEST"
set "USER=root"
set "PASS=Xdrjkj@10086#"
set "IP=36.213.180.217"
@@ -91,10 +92,10 @@
)
:: Build the project
echo [STEP 1/3] Building project...
echo [STEP 1/3] Building project for %COMPANY%...
echo [INFO] Running: pnpm run build
echo.
call pnpm run build
set COMPANY=%COMPANY% && call pnpm run build
if !errorlevel! neq 0 (
    echo [ERROR] Build failed! Check your project configuration.
    goto :error_exit
public/logos/.gitkeep
public/logos/TEST.png
src/packages/effects/layouts/src/widgets/preferences/preferences-drawer.vue
@@ -511,7 +511,6 @@
                v-model:copyright-enable="copyrightEnable"
                v-model:copyright-icp="copyrightIcp"
                v-model:copyright-icp-link="copyrightIcpLink"
                :disabled="!footerEnable"
              />
            </Block>
          </template>
src/preferences.ts
@@ -32,6 +32,9 @@
    companyName: import.meta.env.VITE_APP_TITLE,
    companySiteLink: 'https://gitee.com/yudaocode/yudao-ui-admin-vben',
  },
  logo: {
    source: import.meta.env.VITE_APP_LOGO || undefined,
  },
  tabbar: {
    /** åˆ·æ–°æµè§ˆå™¨åŽåªä¿ç•™å½“前页面,不持久化所有标签页 */
    persist: false,
src/views/mes/md/unitmeasure/components/select.vue
@@ -1,11 +1,11 @@
<script lang="ts" setup>
import type { MesMdUnitMeasureApi } from '#/api/mes/md/unitmeasure';
import type { MdmUnitApi } from '#/api/mdm/unit';
import { computed, onMounted, ref, watch } from 'vue';
import { Select, Tag, Tooltip } from 'ant-design-vue';
import { Select, Tooltip } from 'ant-design-vue';
import { getUnitMeasureSimpleList } from '#/api/mes/md/unitmeasure';
import { getUnitPage } from '#/api/mdm/unit';
defineOptions({ name: 'MdUnitMeasureSelect', inheritAttrs: false });
@@ -25,29 +25,32 @@
);
const emit = defineEmits<{
  change: [item: MesMdUnitMeasureApi.UnitMeasure | undefined];
  change: [item: MdmUnitApi.Unit | undefined];
  'update:modelValue': [value: number | undefined];
}>();
const allList = ref<MesMdUnitMeasureApi.UnitMeasure[]>([]); // è®¡é‡å•位列表
const filteredList = ref<MesMdUnitMeasureApi.UnitMeasure[]>([]); // è¿‡æ»¤åŽçš„计量单位列表
const selectedItem = ref<MesMdUnitMeasureApi.UnitMeasure>(); // å½“前选中计量单位
const allList = ref<MdmUnitApi.Unit[]>([]); // è®¡é‡å•位列表
const filteredList = ref<MdmUnitApi.Unit[]>([]); // è¿‡æ»¤åŽçš„计量单位列表
const selectedItem = ref<MdmUnitApi.Unit>(); // å½“前选中计量单位
const selectValue = computed({
  // é€‰æ‹©å™¨ç»‘定值
  get: () => props.modelValue,
  set: (value: number | undefined) => {
    emit('update:modelValue', value);
  set: (val: number | undefined) => {
    emit('update:modelValue', val);
  },
});
/** å‰ç«¯æŒ‰åç§°å’Œç¼–码过滤计量单位 */
function handleFilter(input: string, option: any) {
  const keyword = input.toLowerCase();
  const item = option?.item as MesMdUnitMeasureApi.UnitMeasure | undefined;
  // Ant Design Vue 4 ä¸­ Select.Option çš„自定义属性不会传入 option å¯¹è±¡
  // æ”¹ä¸ºé€šè¿‡ option.value ä»Ž allList ä¸­æŸ¥æ‰¾å¯¹åº”的数据项
  const item = allList.value.find((i) => i.id === option?.value);
  if (!item) return false;
  return Boolean(
    item?.name?.toLowerCase().includes(keyword) ||
    item?.code?.toLowerCase().includes(keyword),
    item.name?.toLowerCase().includes(keyword) ||
    item.code?.toLowerCase().includes(keyword),
  );
}
@@ -68,13 +71,18 @@
watch(
  () => props.modelValue,
  (value) => {
    syncSelectedItem(value);
  (val) => {
    syncSelectedItem(val);
  },
);
onMounted(async () => {
  allList.value = await getUnitMeasureSimpleList();
  try {
    const result = await getUnitPage({ pageNo: 1, pageSize: 100 });
    allList.value = result.list ?? [];
  } catch {
    allList.value = [];
  }
  filteredList.value = allList.value;
  syncSelectedItem(props.modelValue);
});
@@ -109,13 +117,9 @@
      <Select.Option
        v-for="item in filteredList"
        :key="item.id"
        :item="item"
        :value="item.id"
      >
        <div class="flex items-center gap-2">
          <span>{{ item.name }}</span>
          <Tag v-if="item.code" color="default">编号: {{ item.code }}</Tag>
        </div>
        {{ item.name }}
      </Select.Option>
    </Select>
  </Tooltip>
src/views/wls/transaction/data.ts
@@ -103,6 +103,10 @@
        options: [
          { label: '入库', value: 1 },
          { label: '出库', value: 2 },
          { label: '调拨移出', value: 3 },
          { label: '调拨移入', value: 4 },
          { label: '盘盈', value: 5 },
          { label: '盘亏', value: 6 },
        ],
        placeholder: '请选择事务类型',
      },
vite.config.ts
@@ -1,10 +1,16 @@
import { resolve } from "node:path";
import { defineConfig } from "./internal/vite-config/src";
import { companies } from "./company.config";
const appLogo = process.env.COMPANY ? companies[process.env.COMPANY]?.logo : undefined;
export default defineConfig(async () => {
  return {
    application: {},
    vite: {
      define: {
        'import.meta.env.VITE_APP_LOGO': JSON.stringify(appLogo ?? ''),
      },
      resolve: {
        alias: {
          '@vue-office/pdf': resolve(__dirname, 'node_modules/@vue-office/pdf/lib/v3/vue-office-pdf.mjs'),