fix: 註記依部屬需求切換本地開發或 Docker 兩種 URL 設定

This commit is contained in:
MJM_2025_05\polly 2025-10-09 17:06:40 +08:00
parent 9e9d67dfcd
commit 2f1f5059d6
29 changed files with 127 additions and 48 deletions

View File

@ -1 +1 @@
1.0.1-2510091042 1.0.2-2510091649

View File

@ -1,5 +1,8 @@
// graph // 本地開發 BASEURL
const BASEURL = import.meta.env.VITE_API_BASEURL; // const BASEURL = import.meta.env.VITE_API_BASEURL;
// docker 部屬 BASEURL (兩者視部屬方式擇一保留)
const BASEURL = window.env?.VITE_API_BASEURL;
export const GET_GRAPH_SIDEBAR_API = `/GraphManage/GraphManageTreeList`; export const GET_GRAPH_SIDEBAR_API = `/GraphManage/GraphManageTreeList`;
export const UPDATE_GRAPH_SIDEBAR_API = `/GraphManage/EditGraphManageTree`; export const UPDATE_GRAPH_SIDEBAR_API = `/GraphManage/EditGraphManageTree`;

View File

@ -1,5 +1,9 @@
// history // history
const BASEURL = import.meta.env.VITE_API_BASEURL; // 本地開發 BASEURL
// const BASEURL = import.meta.env.VITE_API_BASEURL;
// docker 部屬 BASEURL (兩者視部屬方式擇一保留)
const BASEURL = window.env?.VITE_API_BASEURL;
export const GET_HISTORY_SIDEBAR_API = `/api/History/GetDeviceInfo`; export const GET_HISTORY_SIDEBAR_API = `/api/History/GetDeviceInfo`;
export const GET_HISTORY_POINT_API = `/api/History/GetAllDevPoi`; export const GET_HISTORY_POINT_API = `/api/History/GetAllDevPoi`;
export const GET_HISTORY_DATA_API = `/api/History/GetHistoryData`; export const GET_HISTORY_DATA_API = `/api/History/GetHistoryData`;

View File

@ -1,7 +1,10 @@
<script setup> <script setup>
import { ref, onMounted, onUnmounted } from "vue"; import { ref, onMounted, onUnmounted } from "vue";
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const forgeDom = ref(null); const forgeDom = ref(null);
let viewer = null; let viewer = null;

View File

@ -164,7 +164,10 @@ const initForge = async () => {
// }); // });
// }); // });
// }); // });
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const viewer = await initViewer(forgeDom.value) const viewer = await initViewer(forgeDom.value)
const filePath = `${FILE_BASEURL}/upload/forge/0.svf`; const filePath = `${FILE_BASEURL}/upload/forge/0.svf`;
await loadModel(viewer, filePath) await loadModel(viewer, filePath)

View File

@ -1,4 +1,8 @@
const BASEURL = import.meta.env.VITE_API_BASEURL; // 本地開發 BASEURL
// const BASEURL = import.meta.env.VITE_API_BASEURL;
// docker 部屬 BASEURL (兩者視部屬方式擇一保留)
const BASEURL = window.env?.VITE_API_BASEURL;;
export const POST_LOGIN = `${BASEURL}/api/Login/`; export const POST_LOGIN = `${BASEURL}/api/Login/`;
export const GET_AUTHPAGE_API = `${BASEURL}/api/GetUsrFroList`; export const GET_AUTHPAGE_API = `${BASEURL}/api/GetUsrFroList`;
export const GET_SUBAUTHPAGE_API = `${BASEURL}/api/Device/GetMainSub`; export const GET_SUBAUTHPAGE_API = `${BASEURL}/api/Device/GetMainSub`;

View File

@ -1,4 +1,8 @@
const BASEURL = import.meta.env.VITE_API_BASEURL; // 本地開發 BASEURL
// const BASEURL = import.meta.env.VITE_API_BASEURL;
// docker 部屬 BASEURL (兩者視部屬方式擇一保留)
const BASEURL = window.env?.VITE_API_BASEURL;;
export const GET_FORGETOKEN_API = `${BASEURL}/api/forge/oauth/token`; export const GET_FORGETOKEN_API = `${BASEURL}/api/forge/oauth/token`;
export const GET_FORGEURN_API = `${BASEURL}/api/Device/GetBuild`; export const GET_FORGEURN_API = `${BASEURL}/api/Device/GetBuild`;

Binary file not shown.

View File

@ -5,7 +5,10 @@ import System from "@/views/system/System.vue";
import SystemFloor from "@/views/system/SystemFloor.vue"; import SystemFloor from "@/views/system/SystemFloor.vue";
const router = createRouter({ const router = createRouter({
history: createWebHashHistory(import.meta.env.BASE_URL), // 本地開發 BASE_URL
// history: createWebHashHistory(import.meta.env.BASE_URL),
// docker 部屬 BASE_URL (兩者視部屬方式擇一保留)
history: createWebHashHistory(window.env?.BASE_URL),
routes: [ routes: [
{ {
path: "/login", path: "/login",

View File

@ -11,9 +11,10 @@ const useHeatmapBarStore = defineStore("heatmap", () => {
const getConfig = async () => { const getConfig = async () => {
const api = const api =
import.meta.env.MODE === "production" // 本地開發 MODE
? "/dist/config.json" // import.meta.env.MODE === "production"
: "/config.json"; // docker 部屬 MODE (兩者視部屬方式擇一保留)
window.env?.MODE === "production" ? "/dist/config.json" : "/config.json";
const res = await axios.get(api); const res = await axios.get(api);
console.log(res); console.log(res);
allHeatMaps.value = res.data.heatmap; allHeatMaps.value = res.data.heatmap;

View File

@ -1,4 +1,7 @@
const BASEURL = import.meta.env.VITE_API_BASEURL; // 本地開發 BASEURL
// const BASEURL = import.meta.env.VITE_API_BASEURL;
// docker 部屬 BASEURL (兩者視部屬方式擇一保留)
const BASEURL = window.env?.VITE_API_BASEURL;;
export default function downloadExcel(res) { export default function downloadExcel(res) {
let disposition = res.headers.get("Content-Disposition"); let disposition = res.headers.get("Content-Disposition");

View File

@ -1,6 +1,9 @@
import useGetCookie from "@/hooks/useGetCookie"; import useGetCookie from "@/hooks/useGetCookie";
import axios from "axios"; import axios from "axios";
const BASEURL = import.meta.env.VITE_API_BASEURL; // 本地開發 BASEURL
// const BASEURL = import.meta.env.VITE_API_BASEURL;
// docker 部屬 BASEURL (兩者視部屬方式擇一保留)
const BASEURL = window.env?.VITE_API_BASEURL;;
const instance = axios.create({ const instance = axios.create({
baseURL: BASEURL, baseURL: BASEURL,

View File

@ -10,7 +10,10 @@ import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const { openToast, cancelToastOpen } = inject("app_toast"); const { openToast, cancelToastOpen } = inject("app_toast");
const { companyOptions, departmentList, floors } = inject("asset_modal_options"); const { companyOptions, departmentList, floors } = inject("asset_modal_options");
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const { searchParams, changeParams } = useSearchParam(); const { searchParams, changeParams } = useSearchParam();
const totalCoordinates = ref({}); const totalCoordinates = ref({});

View File

@ -10,7 +10,10 @@ import useUserInfoStore from "@/stores/useUserInfoStore";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const { searchParams, changeParams } = useSearchParam(); const { searchParams, changeParams } = useSearchParam();
const { updateLeftFields, formErrorMsg, formState } = inject( const { updateLeftFields, formErrorMsg, formState } = inject(
"asset_table_modal_form" "asset_table_modal_form"

View File

@ -4,7 +4,10 @@ import { ref, computed, inject, watch, onMounted } from "vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import Menu from "@/components/customUI/Menu.vue"; import Menu from "@/components/customUI/Menu.vue";
const { t } = useI18n(); const { t } = useI18n();
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const { formState } = inject("asset_table_modal_form"); const { formState } = inject("asset_table_modal_form");
const columns = computed(() => [ const columns = computed(() => [
{ {

View File

@ -7,7 +7,10 @@ import { twMerge } from "tailwind-merge";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const { totalCoordinates } = inject("asset_table_data"); const { totalCoordinates } = inject("asset_table_data");
const { floors } = inject("asset_modal_options"); const { floors } = inject("asset_modal_options");
const { updateRightFields, formErrorMsg, formState } = inject( const { updateRightFields, formErrorMsg, formState } = inject(

View File

@ -7,7 +7,10 @@ import "yup-phone-lite";
import useFormErrorMessage from "@/hooks/useFormErrorMessage"; import useFormErrorMessage from "@/hooks/useFormErrorMessage";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const props = defineProps({ const props = defineProps({
editRecord: Object, editRecord: Object,

View File

@ -13,10 +13,13 @@ import DashboardRefrig from "./components/DashboardRefrig.vue";
import { computed, inject, ref, watch, onMounted, onUnmounted } from "vue"; import { computed, inject, ref, watch, onMounted, onUnmounted } from "vue";
import useBuildingStore from "@/stores/useBuildingStore"; import useBuildingStore from "@/stores/useBuildingStore";
import { getSystemDevices, getSystemRealTime } from "@/apis/system"; import { getSystemDevices, getSystemRealTime } from "@/apis/system";
// getSystemConfig // getSystemConfig
import { getSystemConfig } from "@/apis/system"; import { getSystemConfig } from "@/apis/system";
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const buildingStore = useBuildingStore(); const buildingStore = useBuildingStore();
const subscribeData = ref([]); const subscribeData = ref([]);
@ -26,10 +29,10 @@ let intervalId = null;
const productVisible = ref(false); const productVisible = ref(false);
const productCompleteVisible = ref(false); const productCompleteVisible = ref(false);
// 調 false // 調 false
const showRefrigeration = ref(false); const showRefrigeration = ref(false);
// //
const loadSystemConfig = async () => { const loadSystemConfig = async () => {
const building_guid = buildingStore.selectedBuilding?.building_guid; const building_guid = buildingStore.selectedBuilding?.building_guid;
if (!building_guid) { if (!building_guid) {
@ -38,17 +41,15 @@ const loadSystemConfig = async () => {
} }
try { try {
const res = await getSystemConfig(building_guid); const res = await getSystemConfig(building_guid);
// apiHandler { data, code, msg } data
const data = res?.data ?? res; const data = res?.data ?? res;
showRefrigeration.value = !!data?.show_refrigeration; showRefrigeration.value = !!data?.show_refrigeration;
// show_roomshow_production_indicator
} catch (err) { } catch (err) {
console.error("[Dashboard] getSystemConfig error:", err); console.error("[Dashboard] getSystemConfig error:", err);
showRefrigeration.value = false; // showRefrigeration.value = false; //
} }
}; };
// //
const getData = async () => { const getData = async () => {
const res = await getSystemDevices({ const res = await getSystemDevices({
building_guid: buildingStore.selectedBuilding?.building_guid, building_guid: buildingStore.selectedBuilding?.building_guid,
@ -120,7 +121,7 @@ const getData = async () => {
systemData.value = transformedData; systemData.value = transformedData;
}; };
// 5 // 5
const startInterval = () => { const startInterval = () => {
if (intervalId) clearInterval(intervalId); if (intervalId) clearInterval(intervalId);
intervalId = setInterval(() => { intervalId = setInterval(() => {
@ -133,7 +134,7 @@ watch(
() => buildingStore.selectedBuilding, () => buildingStore.selectedBuilding,
async (newBuilding) => { async (newBuilding) => {
if (newBuilding) { if (newBuilding) {
await loadSystemConfig(); // await loadSystemConfig(); //
getData(); getData();
startInterval(); startInterval();
} else { } else {
@ -158,7 +159,7 @@ onUnmounted(() => {
<DashboardIndoor /> <DashboardIndoor />
</div> </div>
<!-- show_refrigeration 決定是否渲染 --> <!-- show_refrigeration 決定是否渲染 -->
<div class="flex flex-col gap-5" v-if="showRefrigeration"> <div class="flex flex-col gap-5" v-if="showRefrigeration">
<DashboardRefrig /> <DashboardRefrig />
</div> </div>

View File

@ -10,7 +10,10 @@ import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const route = useRoute(); const route = useRoute();
const { searchParams, changeParams } = useSearchParam(); const { searchParams, changeParams } = useSearchParam();
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const props = defineProps({ const props = defineProps({
data: { data: {

View File

@ -2,7 +2,10 @@
import { ref, computed } from "vue"; import { ref, computed } from "vue";
import useSearchParam from "@/hooks/useSearchParam"; import useSearchParam from "@/hooks/useSearchParam";
const { searchParams, changeParams } = useSearchParam(); const { searchParams, changeParams } = useSearchParam();
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const props = defineProps({ const props = defineProps({
data: { data: {
type: Object, type: Object,

View File

@ -8,7 +8,10 @@ import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const { openToast, cancelToastOpen } = inject("app_toast"); const { openToast, cancelToastOpen } = inject("app_toast");
const { sidebar_data } = inject("current_dir"); const { sidebar_data } = inject("current_dir");
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const columns = computed(() => [ const columns = computed(() => [
{ {

View File

@ -8,7 +8,10 @@ import useSearchParam from "@/hooks/useSearchParam";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const { openToast, cancelToastOpen } = inject("app_toast"); const { openToast, cancelToastOpen } = inject("app_toast");
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const { searchParams } = useSearchParam(); const { searchParams } = useSearchParam();
const { dataSource, openModal, updateEditRecord, search, tableLoading } = const { dataSource, openModal, updateEditRecord, search, tableLoading } =

View File

@ -12,7 +12,10 @@ import Select from "@/components/customUI/Select.vue";
import SearchSelect from "@/components/customUI/SearchSelect.vue"; import SearchSelect from "@/components/customUI/SearchSelect.vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const props = defineProps({ const props = defineProps({
editRecord: Object, editRecord: Object,

View File

@ -70,7 +70,10 @@ import { getSystemDevices } from "@/apis/system";
import { setRtspEnable } from "@/apis/rtsp"; // setSambaDirectory import { setRtspEnable } from "@/apis/rtsp"; // setSambaDirectory
import useActiveBtn from "@/hooks/useActiveBtn"; import useActiveBtn from "@/hooks/useActiveBtn";
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const DEFAULT_MONITOR_URL = const DEFAULT_MONITOR_URL =
"http://192.168.0.219:8026/?url=rtsp://admin02:mjmAdmin_99@192.168.0.200:554/stream1?tcp"; "http://192.168.0.219:8026/?url=rtsp://admin02:mjmAdmin_99@192.168.0.200:554/stream1?tcp";

View File

@ -7,7 +7,10 @@ import { useI18n } from "vue-i18n";
import useBuildingStore from "@/stores/useBuildingStore"; import useBuildingStore from "@/stores/useBuildingStore";
const storeBuild = useBuildingStore(); const storeBuild = useBuildingStore();
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const { t } = useI18n(); const { t } = useI18n();
const { openToast, cancelToastOpen } = inject("app_toast"); const { openToast, cancelToastOpen } = inject("app_toast");

View File

@ -11,7 +11,10 @@ const { currentFloor, subscribeData } = inject("system_deviceList");
const { getCurrentInfoModalData, selected_dbid } = inject( const { getCurrentInfoModalData, selected_dbid } = inject(
"system_selectedDevice" "system_selectedDevice"
); );
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const asset_floor_chart = ref(null); const asset_floor_chart = ref(null);
const sameOption = { const sameOption = {

View File

@ -8,7 +8,10 @@ const { getCurrentInfoModalData, selected_dbid } = inject(
const { subscribeData } = inject("system_deviceList"); const { subscribeData } = inject("system_deviceList");
const { showData } = useSystemShowData(); const { showData } = useSystemShowData();
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const fitToView = (forge_dbid, spriteDbId) => { const fitToView = (forge_dbid, spriteDbId) => {
selected_dbid.value = [forge_dbid, spriteDbId]; selected_dbid.value = [forge_dbid, spriteDbId];

View File

@ -2,7 +2,10 @@
import { computed, inject, watch, ref } from "vue"; import { computed, inject, watch, ref } from "vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
const { t } = useI18n(); const { t } = useI18n();
const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL; // FILE_BASEURL
// const FILE_BASEURL = import.meta.env.VITE_FILE_API_BASEURL;
// docker FILE_BASEURL ()
const FILE_BASEURL = window.env?.VITE_FILE_API_BASEURL;
const { selectedDeviceCog } = inject("system_selectedDevice"); const { selectedDeviceCog } = inject("system_selectedDevice");
const imgData = ref([]); const imgData = ref([]);

View File

@ -13,15 +13,17 @@ export default defineConfig({
outDir: "./dist", outDir: "./dist",
emptyOutDir: true, emptyOutDir: true,
}, },
server: { // 本地開發:有 server
proxy: { // docker 部屬:註解整個 server
"/upload": { // server: {
target: "https://ibms-Empower.production.mjmtech.com.tw", // proxy: {
changeOrigin: true, // "/upload": {
secure: false, // target: "https://ibms-Empower.production.mjmtech.com.tw",
}, // changeOrigin: true,
}, // secure: false,
}, // },
// },
// },
plugins: [ plugins: [
vue(), vue(),
Components({ Components({