Files
zkxw/web-admin/src/main.ts
T
zlwuandCursor cf069c74ec feat(oa): add person select control with contains conditions and print
Register FormCreate person field (dept-aligned UI), enable contains-only
workflow conditions, and format person values in print/related summary.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 12:18:19 +08:00

78 lines
2.8 KiB
TypeScript

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'
// 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)
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')