import './utils/patch-el-select-filterable' import App from './App.vue' import { createApp } from 'vue' import { ElTable } from 'element-plus' ElTable.props.border = { type: Boolean, default: true } import { initStore } from './store' // Store import { initRouter } from './router' // Router import language from './locales' // 国际化 import '@styles/core/tailwind.css' // tailwind import '@styles/index.scss' // 样式 import '@utils/sys/console.ts' // 控制台输出内容 import { setupGlobDirectives } from './directives' import { setupErrorHandle } from './utils/sys/error-handle' import FcDesigner from '@form-create/designer' import formCreateAutoImport from '@form-create/element-ui/auto-import' import { setupFormCreateUpload } from '@/utils/oa-form-create-upload' import { setupOaRelatedApproval } from '@/utils/oa-form-create-related-approval' import { setupOaDeptSelect } from '@/utils/oa-form-create-dept' import { setupOaMoneyField } from '@/utils/oa-form-create-money' import { setupOaPersonSelect } from '@/utils/oa-form-create-person' import { setupOaOwnerPersonSelect } from '@/utils/oa-form-create-owner-person' import { setupOaOwnerDeptSelect } from '@/utils/oa-form-create-owner-dept' import { setupOaPostSelect } from '@/utils/oa-form-create-post' import { setupOaReceiveAccountSelect } from '@/utils/oa-form-create-receive-account' import { setupOaLeaveKit } from '@/utils/oa-form-create-leave-kit' import { setupOaConfirmationKit } from '@/utils/oa-form-create-confirmation-kit' import { setupOaOvertimeKit } from '@/utils/oa-form-create-overtime-kit' import { setupOaResignationKit } from '@/utils/oa-form-create-resignation-kit' import { setupOaTripItinerary } from '@/utils/oa-form-create-trip-itinerary' import { setupOaTripKit } from '@/utils/oa-form-create-trip-kit' // FormCreate 按字符串解析 el-input / fc-radio 等,主应用是按需自动导入,不会全局注册; // 必须挂上官方 auto-import,否则发起审批/详情里动态表单控件会残缺(如单选项只剩文字)。 FcDesigner.formCreate.use(formCreateAutoImport) // 内置「上传」默认 action=/,改为走附件上传 API,避免 POST 前端原点 404 setupFormCreateUpload(FcDesigner.formCreate) setupOaRelatedApproval(FcDesigner.formCreate) setupOaDeptSelect(FcDesigner.formCreate) setupOaMoneyField(FcDesigner.formCreate) setupOaPersonSelect(FcDesigner.formCreate) setupOaOwnerPersonSelect(FcDesigner.formCreate) setupOaOwnerDeptSelect(FcDesigner.formCreate) setupOaPostSelect(FcDesigner.formCreate) setupOaReceiveAccountSelect(FcDesigner.formCreate) setupOaTripItinerary(FcDesigner.formCreate) setupOaTripKit(FcDesigner.formCreate) setupOaLeaveKit(FcDesigner.formCreate) setupOaConfirmationKit(FcDesigner.formCreate) setupOaOvertimeKit(FcDesigner.formCreate) setupOaResignationKit(FcDesigner.formCreate) function maskSecret(value?: string) { if (!value) return '(empty)' if (value.length <= 6) return '*'.repeat(value.length) return `${value.slice(0, 3)}***${value.slice(-3)}` } function logApiCryptoBootInfo() { const { VITE_API_ENCRYPT_ENABLED, VITE_API_ENCRYPT_FAIL_OPEN, VITE_API_ENCRYPT_FIXED_SECRET, VITE_API_ENCRYPT_EXCLUDE_PATHS } = import.meta.env const excludeCount = String(VITE_API_ENCRYPT_EXCLUDE_PATHS || '') .split(',') .map((item) => item.trim()) .filter(Boolean).length console.info( '[API_CRYPTO_BOOT] enabled=%s failOpen=%s fixedSecret=%s excludeCount=%s mode=%s', String(VITE_API_ENCRYPT_ENABLED || 'false'), String(VITE_API_ENCRYPT_FAIL_OPEN || 'true'), maskSecret(String(VITE_API_ENCRYPT_FIXED_SECRET || '')), excludeCount, import.meta.env.MODE ) } document.addEventListener( 'touchstart', function () {}, { passive: false } ) logApiCryptoBootInfo() const app = createApp(App) initStore(app) initRouter(app) setupGlobDirectives(app) setupErrorHandle(app) app.use(language) app.use(FcDesigner) app.use(FcDesigner.formCreate) app.mount('#app')