| | |
| | | import '@/assets/styles/theme-runtime.scss' |
| | | import '@/assets/styles/element-override.scss' |
| | | import '@/assets/styles/pdf-resize-dialog.scss' |
| | | import '@/assets/styles/money.scss' |
| | | import App from './App' |
| | | import FilePreview from '@/components/FilePreview/index.vue' |
| | | import store from './store' |
| | |
| | | // 图片上传组件 |
| | | import ImageUpload from "@/components/ImageUpload" |
| | | import AttachmentPreviewPane from "@/components/AttachmentPreviewPane/index.vue" |
| | | import { formatMoneyValue, moneyColumnFormatter } from '@/utils/money' |
| | | // 字典标签组件 |
| | | import DictTag from '@/components/DictTag' |
| | | // 头部标签组件 |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | formatMoneyValue, |
| | | formatMoney: moneyColumnFormatter, |
| | | normalizeMoney(row, key) { |
| | | if (row && key) { |
| | | row[key] = formatMoneyValue(row[key]) |
| | | } |
| | | }, |
| | | openEmbeddedPreview(item) { |
| | | if (!item) return |
| | | const ext = String(item.name || '').toLowerCase().split('.').pop() |
| | |
| | | Vue.config.productionTip = false |
| | | |
| | | // 前端构建标识:用于确认浏览器实际加载的是哪一版代码 |
| | | window.__APP_BUILD__ = '2026-11-03-PDF-PREVIEW-18' |
| | | window.__APP_BUILD__ = '2026-11-12-MONEY-1' |
| | | |
| | | const app = new Vue({ |
| | | el: '#app', |
| | |
| | | } |
| | | fallbackPreview.open(files, index) |
| | | } |
| | | |
| | | // 金额列内可编辑输入框失焦后统一两位小数 |
| | | document.addEventListener('focusout', e => { |
| | | const target = e.target |
| | | if (!target || target.tagName !== 'INPUT') return |
| | | if (!target.closest('.money-column')) return |
| | | const raw = String(target.value || '').trim() |
| | | if (raw === '') return |
| | | const num = Number(raw) |
| | | if (!Number.isFinite(num)) return |
| | | const text = num.toFixed(2) |
| | | if (target.value === text) return |
| | | const setter = Object.getOwnPropertyDescriptor( |
| | | window.HTMLInputElement.prototype, |
| | | 'value' |
| | | ).set |
| | | setter.call(target, text) |
| | | target.dispatchEvent(new Event('input', { bubbles: true })) |
| | | }) |