| | |
| | | * @Date: 2022-04-25 08:04:47 |
| | | * @LastEditors: your Name |
| | | * @LastEditTime: 2022-04-25 16:33:00 |
| | | * @Description: |
| | | * @Description: |
| | | */ |
| | | import Vue from 'vue' |
| | | import yearPicker from 'vue-year-picker' |
| | | import Cookies from 'js-cookie' |
| | | |
| | | import Element from 'element-ui' |
| | | import '@/assets/styles/tokens.css' // 设计令牌(CSS 变量,供运行时换肤) |
| | | import './assets/styles/element-variables.scss' |
| | | |
| | | import '@/assets/styles/index.scss' // global css |
| | | import '@/assets/styles/ruoyi.scss' // ruoyi css |
| | | // 运行时主题层 + 组件默认外观:必须晚于 element-ui 与 ruoyi.scss,否则覆盖不生效 |
| | | import '@/assets/styles/theme-runtime.scss' |
| | | import '@/assets/styles/element-override.scss' |
| | | import '@/assets/styles/pdf-resize-dialog.scss' |
| | | import App from './App' |
| | | import FilePreview from '@/components/FilePreview/index.vue' |
| | | import store from './store' |
| | | import router from './router' |
| | | import directive from './directive' //directive |
| | | import plugins from './plugins' // plugins |
| | | |
| | | |
| | | import './assets/icons' // icon |
| | | import './permission' // permission control |
| | |
| | | import { getConfigKey } from "@/api/system/config"; |
| | | import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi"; |
| | | import dataV from '@jiaminghi/data-view';//dataV |
| | | // 主题色运行时(CSS 变量注入) |
| | | import { applyTheme, getStoredTheme, DEFAULT_PRIMARY } from '@/utils/theme' |
| | | // 分页组件 |
| | | import Pagination from "@/components/Pagination"; |
| | | // 自定义表格工具组件 |
| | |
| | | import FileUpload from "@/components/FileUpload" |
| | | // 图片上传组件 |
| | | import ImageUpload from "@/components/ImageUpload" |
| | | import AttachmentPreviewPane from "@/components/AttachmentPreviewPane/index.vue" |
| | | // 字典标签组件 |
| | | import DictTag from '@/components/DictTag' |
| | | // 头部标签组件 |
| | |
| | | //省市区选择组件 |
| | | // import li_area_select from '@components/Address' |
| | | import moment from "moment" |
| | | import '@/utils/drag.js'; |
| | | import DingTalkPC from 'dingtalk-jsapi'; |
| | | |
| | | Vue.prototype.$dingtalk = DingTalkPC; |
| | | DingTalkPC.config({ |
| | | agentId: 'your_agentId', |
| | | corpId: 'your_corpId', |
| | | timeStamp: new Date().getTime(), |
| | | nonceStr: 'your_nonceStr', |
| | | signature: 'your_signature', |
| | | jsApiList: ['runtime.permission.requestAuthCode'] |
| | | }); |
| | | |
| | | Vue.prototype.$moment = moment; |
| | | |
| | | // 全局方法挂载 |
| | |
| | | import echarts from 'echarts' |
| | | Vue.prototype.$echarts = echarts |
| | | |
| | | |
| | | // 全局组件挂载 |
| | | // Vue.component('li_area_select',li_area_select) |
| | | Vue.component('DictTag', DictTag) |
| | |
| | | Vue.component('Editor', Editor) |
| | | Vue.component('FileUpload', FileUpload) |
| | | Vue.component('ImageUpload', ImageUpload) |
| | | Vue.component('AttachmentPreviewPane', AttachmentPreviewPane) |
| | | |
| | | // 附件内嵌预览:所有报销页共用 |
| | | Vue.mixin({ |
| | | data() { |
| | | return { |
| | | embeddedFile: null, |
| | | pdfFullscreen: false |
| | | } |
| | | }, |
| | | methods: { |
| | | openEmbeddedPreview(item) { |
| | | if (!item) return |
| | | const ext = String(item.name || '').toLowerCase().split('.').pop() |
| | | const type = ext === 'pdf' |
| | | ? 'pdf' |
| | | : ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'].includes(ext) |
| | | ? 'image' |
| | | : 'other' |
| | | this.embeddedFile = { name: item.name, url: item.url, type } |
| | | this.pdfVisible = true |
| | | } |
| | | } |
| | | }) |
| | | |
| | | Vue.use(directive) |
| | | Vue.use(plugins) |
| | |
| | | */ |
| | | |
| | | Vue.use(Element, { |
| | | size: Cookies.get('size') || 'medium' // set element-ui default size |
| | | size: Cookies.get('size') || 'small' // set element-ui default size(原 medium,改为 small 提升信息密度) |
| | | }) |
| | | |
| | | // 启动即应用已保存的主题色(登录页等不使用 Layout 的页面也能生效) |
| | | applyTheme(getStoredTheme() || DEFAULT_PRIMARY) |
| | | |
| | | Vue.config.productionTip = false |
| | | |
| | | new Vue({ |
| | | // 前端构建标识:用于确认浏览器实际加载的是哪一版代码 |
| | | window.__APP_BUILD__ = '2026-11-03-PDF-PREVIEW-17' |
| | | |
| | | const app = new Vue({ |
| | | el: '#app', |
| | | router, |
| | | store, |
| | | render: h => h(App) |
| | | }) |
| | | |
| | | // 文件预览:App 内挂载的全局组件,避免在应用外手工 $mount |
| | | let fallbackPreview = null |
| | | Vue.prototype.$previewFile = (files, index = 0) => { |
| | | if (app.$refs.filePreview) { |
| | | app.$refs.filePreview.open(files, index) |
| | | return |
| | | } |
| | | // 兜底:App 内组件尚未挂载时,仍保证有预览入口 |
| | | if (!fallbackPreview) { |
| | | const FilePreviewCtor = Vue.extend(FilePreview) |
| | | fallbackPreview = new FilePreviewCtor().$mount() |
| | | document.body.appendChild(fallbackPreview.$el) |
| | | } |
| | | fallbackPreview.open(files, index) |
| | | } |