@xjw_/vue3-npm-system 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +118 -27
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +118 -27
- package/dist/index.umd.js.map +1 -1
- package/dist/types/components/XSwitch.vue.d.ts +137 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/vue3-npm-system.css +5 -0
- package/package.json +1 -1
- package/README.md +0 -275
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/utils/index.ts","../src/directives/index.ts","../src/components/SvgIcon.vue","../src/components/XDatePicker.vue","../src/components/XElForm.vue","../src/components/XElFormItem.vue","../src/components/XElOption.vue","../src/components/XElSelect.vue","../src/components/XPagination.vue","../src/components/XVxeTable.vue","../src/components/XReportTable.vue","../src/components/XSearchBar.vue","../src/components/XSplitLayout.vue","../src/components/XVxeColumn.vue","../src/index.ts"],"sourcesContent":["// 防抖函数\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout> | null = null\n return function (this: any, ...args: Parameters<T>) {\n if (timeout) clearTimeout(timeout)\n timeout = setTimeout(() => {\n func.apply(this, args)\n }, wait)\n }\n}\n\n// 节流函数\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout> | null = null\n let previous = 0\n return function (this: any, ...args: Parameters<T>) {\n const now = Date.now()\n const remaining = wait - (now - previous)\n if (remaining <= 0) {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n previous = now\n func.apply(this, args)\n } else if (!timeout) {\n timeout = setTimeout(() => {\n previous = Date.now()\n timeout = null\n func.apply(this, args)\n }, remaining)\n }\n }\n}\n\n// 深拷贝\nexport function deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== 'object') return obj\n if (obj instanceof Date) return new Date(obj.getTime()) as any\n if (obj instanceof Array) return obj.map(item => deepClone(item)) as any\n if (obj instanceof Object) {\n const clonedObj = {} as T\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n clonedObj[key] = deepClone(obj[key])\n }\n }\n return clonedObj\n }\n return obj\n}\n\n// 格式化日期\nexport function formatDate(\n date: Date | string | number,\n format = 'YYYY-MM-DD HH:mm:ss'\n): string {\n const d = new Date(date)\n const year = d.getFullYear()\n const month = String(d.getMonth() + 1).padStart(2, '0')\n const day = String(d.getDate()).padStart(2, '0')\n const hours = String(d.getHours()).padStart(2, '0')\n const minutes = String(d.getMinutes()).padStart(2, '0')\n const seconds = String(d.getSeconds()).padStart(2, '0')\n\n return format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds)\n}\n\n// 本地存储封装\nexport const storage = {\n set(key: string, value: any): void {\n localStorage.setItem(key, JSON.stringify(value))\n },\n get(key: string): any {\n const item = localStorage.getItem(key)\n return item ? JSON.parse(item) : null\n },\n remove(key: string): void {\n localStorage.removeItem(key)\n },\n clear(): void {\n localStorage.clear()\n },\n}\n\n// Cookie封装\nimport Cookies from 'js-cookie'\n\nexport const cookie = {\n set(key: string, value: any, options?: Cookies.CookieAttributes): void {\n Cookies.set(key, JSON.stringify(value), options)\n },\n get(key: string): any {\n const item = Cookies.get(key)\n return item ? JSON.parse(item) : null\n },\n remove(key: string): void {\n Cookies.remove(key)\n },\n}\n\n// 请求封装\nimport axios from 'axios'\nimport type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\n\nexport function createRequest(config: AxiosRequestConfig & { tokenCookieName?: string } = {}): AxiosInstance {\n const { tokenCookieName = 'token', ...axiosConfig } = config\n const instance = axios.create({\n baseURL: '/api',\n timeout: 10000,\n ...axiosConfig,\n })\n\n instance.interceptors.request.use(\n (config) => {\n const token = cookie.get(tokenCookieName)\n if (token) {\n config.headers.Authorization = `Bearer ${token}`\n }\n return config\n },\n (error) => Promise.reject(error)\n )\n\n instance.interceptors.response.use(\n (response) => response.data,\n (error) => {\n console.error('请求错误:', error)\n return Promise.reject(error)\n }\n )\n\n return instance\n}\n\n// 判断是否为外部链接\nexport function isExternal(path: string): boolean {\n return /^(https?:|mailto:|tel:|www\\.)/.test(path)\n}\n\n// 日期格式化(兼容 Vue2 parseTime)\nexport function parseTime(\n time: string | number | Date | null | undefined,\n pattern?: string\n): string | null {\n if (arguments.length === 0 || !time) {\n return null\n }\n const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'\n let date: Date\n if (typeof time === 'object') {\n date = time as Date\n } else {\n if (typeof time === 'string' && /^[0-9]+$/.test(time)) {\n time = parseInt(time)\n } else if (typeof time === 'string') {\n time = time.replace(/-/gm, '/')\n }\n if (typeof time === 'number' && time.toString().length === 10) {\n time = time * 1000\n }\n date = new Date(time)\n }\n const formatObj: Record<string, number> = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay(),\n }\n const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (_result, key) => {\n let value = formatObj[key]\n if (key === 'a') {\n return ['日', '一', '二', '三', '四', '五', '六'][value]\n }\n if (value < 10) {\n value = Number('0' + value)\n }\n return String(value || 0)\n })\n return time_str\n}\n\n// 验证函数\nexport const validator = {\n isEmail(value: string): boolean {\n return /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$/.test(value)\n },\n isPhone(value: string): boolean {\n return /^1[3-9]\\d{9}$/.test(value)\n },\n isUrl(value: string): boolean {\n return /^https?:\\/\\/.+/.test(value)\n },\n isEmpty(value: any): boolean {\n return value === null || value === undefined || value === ''\n },\n}\n","import type { App, Directive } from 'vue'\nimport { ElMessage } from 'element-plus'\n\n// 权限指令\nexport const permission: Directive = {\n mounted(el, binding) {\n const { value } = binding\n const permissions = ['admin', 'user'] // 从 store 或 cookie 获取\n \n if (value && !permissions.includes(value)) {\n el.parentNode?.removeChild(el)\n }\n },\n}\n\n// 防抖指令\nexport const debounce: Directive = {\n mounted(el, binding) {\n const { value, arg = 'click' } = binding\n \n el[arg] = (handler: Function) => {\n let timer: any = null\n return function (this: any, ...args: any[]) {\n if (timer) clearTimeout(timer)\n timer = setTimeout(() => {\n handler.apply(this, args)\n }, value || 300)\n }\n }\n },\n}\n\n// 节流指令\nexport const throttle: Directive = {\n mounted(el, binding) {\n const { value, arg = 'click' } = binding\n let timer: any = null\n let previous = 0\n \n el[arg] = (handler: Function) => {\n return function (this: any, ...args: any[]) {\n const now = Date.now()\n const remaining = (value || 300) - (now - previous)\n if (remaining <= 0) {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n previous = now\n handler.apply(this, args)\n } else if (!timer) {\n timer = setTimeout(() => {\n previous = Date.now()\n timer = null\n handler.apply(this, args)\n }, remaining)\n }\n }\n }\n },\n}\n\n// 复制指令\nexport const copy: Directive = {\n mounted(el, binding) {\n el.addEventListener('click', () => {\n const text = binding.value\n navigator.clipboard.writeText(text).then(() => {\n ElMessage.success('复制成功')\n }).catch(() => {\n ElMessage.error('复制失败')\n })\n })\n },\n}\n\n// Lazy load 指令\nexport const lazyload: Directive = {\n mounted(el, binding) {\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n el.src = binding.value\n observer.unobserve(el)\n }\n })\n })\n observer.observe(el)\n },\n}\n\n// 注册所有指令\nexport function registerDirectives(app: App) {\n app.directive('permission', permission)\n app.directive('debounce', debounce)\n app.directive('throttle', throttle)\n app.directive('copy', copy)\n app.directive('lazyload', lazyload)\n}\n\nexport default {\n permission,\n debounce,\n throttle,\n copy,\n lazyload,\n registerDirectives,\n}\n","<template>\n <div v-if=\"isExternalIcon\" :style=\"styleExternalIcon\" class=\"svg-external-icon svg-icon\" v-bind=\"$attrs\" />\n <svg v-else :class=\"svgClass\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" v-bind=\"$attrs\">\n <use :href=\"iconName\" :xlink:href=\"iconName\" />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { isExternal } from '../utils'\n\nconst props = defineProps({\n iconClass: {\n type: String,\n required: true,\n },\n className: {\n type: String,\n default: '',\n },\n})\n\nconst isExternalIcon = computed(() => isExternal(props.iconClass))\n\nconst iconName = computed(() => `#icon-${props.iconClass}`)\n\nconst svgClass = computed(() => {\n if (props.className) {\n return 'svg-icon ' + props.className\n }\n return 'svg-icon svg-icon-default'\n})\n\nconst styleExternalIcon = computed(() => ({\n mask: `url(${props.iconClass}) no-repeat 50% 50%`,\n '-webkit-mask': `url(${props.iconClass}) no-repeat 50% 50%`,\n}))\n</script>\n\n<style scoped>\n.svg-icon-default {\n width: 20px;\n height: 20px;\n}\n.svg-icon {\n padding: 4px;\n vertical-align: -0.15em;\n fill: currentColor;\n overflow: hidden;\n}\n\n.svg-external-icon {\n background-color: currentColor;\n mask-size: cover!important;\n display: inline-block;\n}\n</style>\n","<template>\n <el-date-picker\n :model-value=\"internalValue\"\n :type=\"type\"\n :placeholder=\"currentPlaceholder\"\n :start-placeholder=\"currentStartPlaceholder\"\n :end-placeholder=\"currentEndPlaceholder\"\n :range-separator=\"rangeSeparator\"\n :value-format=\"currentValueFormat\"\n :default-time=\"currentDefaultTime\"\n :size=\"size\"\n v-bind=\"$attrs\"\n @update:model-value=\"handleUpdate\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch } from 'vue'\n\nconst props = defineProps({\n type: {\n type: String,\n default: 'date',\n validator: (val: string) => [\n 'year', 'years',\n 'month', 'months',\n 'date', 'dates',\n 'datetime',\n 'week',\n 'datetimerange',\n 'daterange',\n 'monthrange',\n 'yearrange',\n ].includes(val),\n },\n valueFormat: {\n type: String,\n default: null as any,\n },\n placeholder: {\n type: String,\n default: null as any,\n },\n startPlaceholder: {\n type: String,\n default: null as any,\n },\n endPlaceholder: {\n type: String,\n default: null as any,\n },\n rangeSeparator: {\n type: String,\n default: '至',\n },\n defaultTime: {\n type: [String, Array] as any,\n default: null,\n },\n isEndTime: {\n type: Boolean,\n default: false,\n },\n modelValue: {\n type: [String, Number, Array, Date] as any,\n default: '',\n },\n size: {\n type: String,\n default: 'default',\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: any): void\n}>()\n\nconst internalValue = ref(props.modelValue)\n\n// Element Plus 使用 dayjs 格式,将 yyyy → YYYY\nfunction toDayjsFormat(format: string): string {\n return format\n .replace(/yyyy/g, 'YYYY')\n .replace(/dd/g, 'DD')\n}\n\nfunction getDefaultFormat(type: string): string {\n const formatMap: Record<string, string> = {\n 'year': 'YYYY',\n 'years': 'YYYY',\n 'month': 'YYYY-MM',\n 'months': 'YYYY-MM',\n 'date': 'YYYY-MM-DD',\n 'dates': 'YYYY-MM-DD',\n 'datetime': 'YYYY-MM-DD HH:mm:ss',\n 'week': 'YYYY-MM-DD',\n 'datetimerange': 'YYYY-MM-DD HH:mm:ss',\n 'daterange': 'YYYY-MM-DD',\n 'monthrange': 'YYYY-MM',\n 'yearrange': 'YYYY',\n }\n return formatMap[type] || 'YYYY-MM-DD'\n}\n\nfunction getDefaultPlaceholder(type: string) {\n const isRange = type.includes('range')\n const hasTime = type.includes('time')\n\n if (isRange) {\n return {\n start: hasTime ? '开始日期时间' : '开始日期',\n end: hasTime ? '结束日期时间' : '结束日期',\n }\n } else {\n if (type === 'year' || type === 'years') return '选择年'\n if (type === 'month' || type === 'months') return '选择月'\n if (type === 'week') return '选择周'\n if (hasTime) return '选择日期时间'\n return '选择日期'\n }\n}\n\nconst currentPlaceholder = computed(() => {\n if (props.placeholder !== null) return props.placeholder\n const isRange = props.type.includes('range')\n if (isRange) return undefined\n return getDefaultPlaceholder(props.type) as any\n})\n\nconst currentStartPlaceholder = computed(() => {\n if (props.startPlaceholder !== null) return props.startPlaceholder\n const isRange = props.type.includes('range')\n if (!isRange) return undefined\n const defaults = getDefaultPlaceholder(props.type) as { start: string; end: string }\n return defaults.start\n})\n\nconst currentEndPlaceholder = computed(() => {\n if (props.endPlaceholder !== null) return props.endPlaceholder\n const isRange = props.type.includes('range')\n if (!isRange) return undefined\n const defaults = getDefaultPlaceholder(props.type) as { start: string; end: string }\n return defaults.end\n})\n\nconst currentValueFormat = computed(() => {\n if (props.valueFormat !== null && props.valueFormat !== undefined) {\n return toDayjsFormat(props.valueFormat)\n }\n return getDefaultFormat(props.type)\n})\n\nconst currentDefaultTime = computed(() => {\n if (props.defaultTime !== null && props.defaultTime !== undefined) {\n return props.defaultTime\n }\n if (props.isEndTime && props.type === 'datetimerange') {\n return [new Date(2000, 0, 1, 0, 0, 0), new Date(2000, 0, 1, 23, 59, 59)]\n }\n if (props.isEndTime && props.type === 'datetime') {\n return new Date(2000, 0, 1, 23, 59, 59)\n }\n return undefined\n})\n\nfunction applyEndTime(value: any): any {\n const startTime = '00:00:00'\n const endTime = '23:59:59'\n\n if (props.type === 'datetimerange' && Array.isArray(value) && value.length === 2) {\n let startVal = value[0]\n let endVal = value[1]\n\n if (startVal instanceof Date) {\n const newStart = new Date(startVal)\n newStart.setHours(0, 0, 0, 0)\n startVal = newStart\n } else if (typeof startVal === 'string' && startVal) {\n const datePart = startVal.substring(0, 10)\n startVal = datePart + ' ' + startTime\n }\n\n if (endVal instanceof Date) {\n const newEnd = new Date(endVal)\n newEnd.setHours(23, 59, 59, 0)\n endVal = newEnd\n } else if (typeof endVal === 'string' && endVal) {\n const datePart = endVal.substring(0, 10)\n endVal = datePart + ' ' + endTime\n }\n\n return [startVal, endVal]\n }\n\n if (props.type === 'datetime' && value) {\n if (value instanceof Date) {\n if (value.getHours() === 0 && value.getMinutes() === 0 && value.getSeconds() === 0) {\n const newDate = new Date(value)\n newDate.setHours(23, 59, 59, 0)\n return newDate\n }\n return value\n }\n\n if (typeof value === 'string') {\n const timePart = value.length > 10 ? value.substring(11) : ''\n if (!timePart) {\n const datePart = value.substring(0, 10)\n return datePart + ' ' + endTime\n }\n }\n }\n\n return value\n}\n\nwatch(() => props.modelValue, (newVal) => {\n let result = newVal\n if (props.isEndTime && newVal) {\n result = applyEndTime(newVal)\n }\n internalValue.value = result\n})\n\nfunction handleUpdate(value: any) {\n internalValue.value = value\n emit('update:modelValue', value)\n}\n</script>\n\n<style scoped lang=\"scss\">\n:deep(.el-date-editor) {\n width: 100%;\n}\n\n:deep(.el-date-editor--datetimerange),\n:deep(.el-date-editor--daterange),\n:deep(.el-date-editor--monthrange),\n:deep(.el-date-editor--yearrange) {\n width: 100% !important;\n}\n\n:deep(.el-date-editor--datetimerange .el-range-input),\n:deep(.el-date-editor--daterange .el-range-input),\n:deep(.el-date-editor--monthrange .el-range-input),\n:deep(.el-date-editor--yearrange .el-range-input) {\n width: 39%;\n}\n</style>\n","<template>\n <el-form\n ref=\"formRef\"\n v-bind=\"$attrs\"\n :model=\"model\"\n :rules=\"rules\"\n :inline=\"inline\"\n :label-width=\"labelWidth\"\n :label-position=\"labelPosition\"\n :size=\"size\"\n :disabled=\"disabled\"\n :show-message=\"showMessage\"\n :inline-message=\"inlineMessage\"\n :status-icon=\"statusIcon\"\n :validate-on-rule-change=\"validateOnRuleChange\"\n :hide-required-asterisk=\"hideRequiredAsterisk\"\n :require-asterisk-position=\"requireAsteriskPosition\"\n style=\"width: 100%;\"\n >\n <el-row :gutter=\"gutter\" :style=\"rowStyle\">\n <slot></slot>\n </el-row>\n </el-form>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, provide } from 'vue'\n\nconst props = defineProps({\n model: {\n type: Object,\n default: () => ({}),\n },\n rules: {\n type: Object,\n default: () => ({}),\n },\n inline: {\n type: Boolean,\n default: false,\n },\n labelWidth: {\n type: String,\n default: '120px',\n },\n labelPosition: {\n type: String as () => 'left' | 'right' | 'top',\n default: 'right',\n validator: (val: string) => ['left', 'right', 'top'].includes(val),\n },\n size: {\n type: String,\n default: 'default',\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n showMessage: {\n type: Boolean,\n default: true,\n },\n inlineMessage: {\n type: Boolean,\n default: false,\n },\n statusIcon: {\n type: Boolean,\n default: false,\n },\n validateOnRuleChange: {\n type: Boolean,\n default: true,\n },\n hideRequiredAsterisk: {\n type: Boolean,\n default: false,\n },\n requireAsteriskPosition: {\n type: String as () => 'left' | 'right',\n default: 'left',\n validator: (val: string) => ['left', 'right'].includes(val),\n },\n span: {\n type: Number,\n default: 24,\n },\n gutter: {\n type: Number,\n default: 20,\n },\n})\n\nconst formRef = ref()\n\nconst rowStyle = computed(() => ({\n marginLeft: 0,\n marginRight: 0,\n}))\n\nprovide('formItemSpan', props.span)\nprovide('formGutter', props.gutter)\n\nfunction validate(callback?: Parameters<InstanceType<typeof import('element-plus')['ElForm']>['validate']>[0]) {\n return formRef.value?.validate(callback)\n}\n\nfunction validateField(props: string | string[], callback?: (valid: boolean) => void) {\n return formRef.value?.validateField(props, callback)\n}\n\nfunction resetFields() {\n return formRef.value?.resetFields()\n}\n\nfunction clearValidate(props?: string | string[]) {\n return formRef.value?.clearValidate(props)\n}\n\nfunction scrollToField(prop: string) {\n return formRef.value?.scrollToField(prop)\n}\n\ndefineExpose({\n validate,\n validateField,\n resetFields,\n clearValidate,\n scrollToField,\n formRef,\n})\n</script>\n\n<style scoped lang=\"scss\">\n:deep(.el-form) {\n width: 100%;\n}\n\n:deep(.el-row) {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n</style>\n","<template>\n <el-col :span=\"currentSpan\">\n <el-form-item\n v-bind=\"$attrs\"\n :label=\"label\"\n :prop=\"prop\"\n :label-width=\"labelWidth\"\n :required=\"required\"\n :rules=\"rules\"\n :error=\"error\"\n :validate-status=\"validateStatus\"\n :show-message=\"showMessage\"\n :inline-message=\"inlineMessage\"\n :size=\"size\"\n >\n <slot></slot>\n </el-form-item>\n </el-col>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\n\nconst props = defineProps({\n label: {\n type: String,\n default: undefined,\n },\n prop: {\n type: String,\n default: undefined,\n },\n labelWidth: {\n type: [String, Number] as any,\n default: undefined,\n },\n required: {\n type: Boolean,\n default: false,\n },\n rules: {\n type: [Object, Array] as any,\n default: undefined,\n },\n error: {\n type: String,\n default: undefined,\n },\n validateStatus: {\n type: String,\n default: undefined,\n },\n showMessage: {\n type: Boolean,\n default: true,\n },\n inlineMessage: {\n type: Boolean,\n default: false,\n },\n size: {\n type: String,\n default: 'default',\n },\n span: {\n type: Number,\n default: null as any,\n },\n})\n\nconst formItemSpan = inject('formItemSpan', 24)\nconst formGutter = inject('formGutter', 0)\n\nconst currentSpan = computed(() => {\n return props.span !== null ? props.span : formItemSpan\n})\n</script>\n\n<style scoped lang=\"scss\">\n:deep(.el-form-item) {\n margin-bottom: 16px;\n}\n\n:deep(.el-col) {\n padding: 0 8px;\n}\n:deep(.el-date-editor.el-input),\n:deep(.el-date-editor.el-input__inner) {\n width: 100% !important;\n}\n</style>\n","<template>\n <el-option\n v-bind=\"$attrs\"\n :label=\"computedLabel\"\n :value=\"computedValue\"\n >\n <slot></slot>\n </el-option>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, type Ref } from 'vue'\n\nconst props = defineProps({\n label: {\n type: [String, Number] as any,\n default: undefined,\n },\n value: {\n type: [String, Number] as any,\n default: undefined,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n})\n\nconst elSelectModelValue = inject<Ref<any> | null>('elSelectModelValue', null)\n\nconst computedValue = computed(() => {\n const propValue = props.value\n\n if (!elSelectModelValue || !elSelectModelValue.value) {\n return propValue\n }\n\n const modelVal = elSelectModelValue.value\n\n if (Array.isArray(modelVal) && modelVal.length > 0) {\n const firstValueType = typeof modelVal[0]\n if (firstValueType === 'number' && typeof propValue === 'string') {\n return Number(propValue)\n }\n if (firstValueType === 'string' && typeof propValue === 'number') {\n return String(propValue)\n }\n }\n\n if (!Array.isArray(modelVal)) {\n const parentType = typeof modelVal\n if (parentType === 'number' && typeof propValue === 'string') {\n return Number(propValue)\n }\n if (parentType === 'string' && typeof propValue === 'number') {\n return String(propValue)\n }\n }\n\n return propValue\n})\n\nconst computedLabel = computed(() => props.label)\n</script>\n\n<style scoped lang=\"scss\">\n</style>\n","<template>\n <el-select\n ref=\"selectRef\"\n :multiple=\"multiple\"\n :model-value=\"computedLocalValue\"\n @update:model-value=\"handleLocalUpdate\"\n @change=\"handleChange\"\n v-bind=\"$attrs\"\n :clearable=\"clearable\"\n :filterable=\"filterable\"\n :placeholder=\"placeholder\"\n :size=\"size\"\n :style=\"{\n width: width\n }\"\n >\n <slot></slot>\n </el-select>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, provide, type Ref } from 'vue'\n\nconst props = defineProps({\n modelValue: {\n type: [String, Number, Array] as any,\n default: undefined,\n },\n width: {\n type: [String, Number] as any,\n default: '100%',\n },\n multiple: {\n type: Boolean,\n default: false,\n },\n typeConvert: {\n type: Boolean,\n default: true,\n },\n separator: {\n type: String,\n default: '',\n },\n targetType: {\n type: String as () => 'string' | 'number' | 'auto',\n default: 'auto',\n validator: (value: string) => ['string', 'number', 'auto'].includes(value),\n },\n clearable: {\n type: Boolean,\n default: true,\n },\n filterable: {\n type: Boolean,\n default: true,\n },\n placeholder: {\n type: String,\n default: undefined,\n },\n size: {\n type: String,\n default: 'default',\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: any): void\n (e: 'change', value: any): void\n}>()\n\nconst selectRef = ref()\nconst localValue = ref(props.modelValue)\nconst modelValueRef: Ref<any> = ref(null)\n\nprovide('elSelectModelValue', modelValueRef)\n\nconst computedLocalValue = computed(() => {\n const val = localValue.value\n\n if (!props.typeConvert || val === null || val === undefined) {\n return val\n }\n\n if (props.multiple && props.separator) {\n if (typeof val === 'string' && val.includes(props.separator)) {\n const values = val.split(props.separator)\n if (props.targetType === 'number') {\n return values.map((v: string) => Number(v))\n }\n return values\n }\n if (Array.isArray(val)) {\n return val\n }\n if (val === '' || val === null || val === undefined) {\n return []\n }\n return [val]\n }\n\n return val\n})\n\nwatch(() => props.modelValue, (newVal) => {\n localValue.value = newVal\n})\n\nwatch(computedLocalValue, (newVal) => {\n modelValueRef.value = newVal\n}, { immediate: true })\n\nfunction handleLocalUpdate(val: any) {\n localValue.value = val\n\n if (props.multiple && props.separator) {\n const arr = Array.isArray(val) ? val : [val]\n emit('update:modelValue', arr.join(props.separator))\n } else {\n emit('update:modelValue', val)\n }\n}\n\nfunction handleChange(val: any) {\n emit('change', val)\n}\n\ndefineExpose({\n selectRef,\n})\n</script>\n\n<style scoped lang=\"scss\">\n</style>\n","<template>\n <div class=\"x-pagination\">\n <el-pagination\n :current-page=\"internalCurrentPage\"\n :page-size=\"internalPageSize\"\n :total=\"total\"\n :page-sizes=\"pageSizes\"\n :layout=\"pagerLayout\"\n @current-change=\"handleCurrentChange\"\n @size-change=\"handleSizeChange\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch } from 'vue'\n\nconst props = defineProps({\n currentPage: {\n type: Number,\n default: 1,\n },\n pageSize: {\n type: Number,\n default: 20,\n },\n total: {\n type: Number,\n default: 0,\n },\n pageSizes: {\n type: Array as () => number[],\n default: () => [20, 50, 100, 200, 500, 1000],\n },\n layouts: {\n type: Array as () => string[],\n default: () => ['total', 'sizes', 'prev', 'pager', 'next', 'jumper'],\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update-page', page: number, size: number): void\n}>()\n\nconst internalCurrentPage = ref(props.currentPage)\nconst internalPageSize = ref(props.pageSize)\n\nconst pagerLayout = computed(() => {\n if (!props.layouts || !Array.isArray(props.layouts)) {\n return 'total, sizes, prev, pager, next, jumper'\n }\n return props.layouts.map(item => {\n if (typeof item === 'string') {\n return item.toLowerCase()\n }\n return item\n }).join(', ')\n})\n\nwatch(() => props.currentPage, (val) => {\n internalCurrentPage.value = val\n})\n\nwatch(() => props.pageSize, (val) => {\n internalPageSize.value = val\n})\n\nfunction handleCurrentChange(page: number) {\n internalCurrentPage.value = page\n emit('update-page', internalCurrentPage.value, internalPageSize.value)\n}\n\nfunction handleSizeChange(size: number) {\n internalPageSize.value = size\n internalCurrentPage.value = 1\n emit('update-page', internalCurrentPage.value, internalPageSize.value)\n}\n</script>\n\n<style lang=\"scss\" scoped>\n:deep(.el-pagination) {\n display: flex;\n align-items: center;\n height: 44px;\n border: 1px solid #EAEFFE;\n justify-content: flex-end;\n padding: 0 16px 0 0;\n}\n</style>\n","<template>\n <div :class=\"{'x-vxe-table-bg':isShowBg}\" class=\"x-vxe-table\" :style=\"{ height: `calc(100vh - ${subHeight})` }\">\n <vxe-toolbar\n v-if=\"showToolbar\"\n ref=\"xToolbarRef\"\n class=\"x-vxe-toolbar\"\n :refresh=\"{ query: getList }\"\n perfect\n export\n print\n custom\n >\n <template #buttons>\n <slot name=\"buttons\"></slot>\n </template>\n </vxe-toolbar>\n <div :style=\"{height: calcHeight}\">\n <vxe-table\n ref=\"vxeTableRef\"\n :print-config=\"{}\"\n :export-config=\"{\n type: 'xlsx',\n types: ['xlsx', 'csv', 'html', 'xml', 'txt'],\n }\"\n :data=\"showFooter && footerData.length < 1 ? tableData.slice(0, -1) : tableData\"\n border\n :size=\"size\"\n :stripe=\"stripe\"\n height=\"100%\"\n align=\"center\"\n resizable\n :max-height=\"maxHeight\"\n :show-header=\"showHeader\"\n :show-overflow=\"showOverflow === true ? 'title' : showOverflow\"\n :custom-config=\"{}\"\n :header-cell-class-name=\"headerCellClassName\"\n :cell-class-name=\"cellClassName\"\n :row-class-name=\"rowClassName\"\n :show-footer=\"showFooter\"\n :footer-cell-class-name=\"footerCellClassName\"\n :sort-config=\"sortConfig\"\n :filter-config=\"filterConfig\"\n :checkbox-config=\"checkboxConfig\"\n :radio-config=\"radioConfig\"\n :proxy-config=\"proxyConfig\"\n :loading=\"loading\"\n :empty-text=\"emptyText\"\n :footer-method=\"internalFooterMethod\"\n @checkbox-change=\"handleCheckboxChange\"\n @checkbox-all=\"handleCheckboxChange\"\n @radio-change=\"handleRadioChange\"\n @sort-change=\"handleSortChange\"\n @current-change=\"handleCurrentChange\"\n @edit-closed=\"handleEditClosed\"\n @edit-actived=\"handleEditActived\"\n >\n <vxe-column\n v-if=\"isCheckbox\"\n type=\"checkbox\"\n width=\"55\"\n fixed=\"left\"\n >\n </vxe-column>\n <!-- 序号列 -->\n <vxe-column v-if=\"showIndex\" type=\"seq\" fixed=\"left\" title=\"序号\" width=\"60\"></vxe-column>\n <!-- 动态列配置 -->\n <vxe-column\n v-for=\"(col, index) in columns\"\n :key=\"col.field || index\"\n v-bind=\"col\"\n >\n <template v-if=\"col.slots && col.slots.default\" #default=\"slotData\">\n <slot :name=\"col.slots.default\" v-bind=\"slotData\"></slot>\n </template>\n <template v-if=\"col.slots && col.slots.header\" #header=\"slotData\">\n <slot :name=\"col.slots.header\" v-bind=\"slotData\"></slot>\n </template>\n </vxe-column>\n <!-- 支持自定义插槽 -->\n <slot></slot>\n </vxe-table>\n <!-- 分页组件 -->\n <x-pagination\n v-if=\"showPagination\"\n class=\"x-pagination\"\n @update-page=\"handlePageChange\"\n :page-size=\"pageSize\"\n :current-page=\"internalCurrentPage\"\n :total=\"total\"/>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch } from 'vue'\nimport XPagination from './XPagination.vue'\n\nconst props = defineProps({\n tableData: { type: Array as () => any[], default: () => [] },\n isShowBg: { type: Boolean, default: true },\n size: { type: String, default: 'medium' },\n stripe: { type: Boolean, default: false },\n subHeight: { type: String, default: '200px' },\n maxHeight: { type: [Number, String] as any, default: null },\n showHeader: { type: Boolean, default: true },\n showOverflow: { type: Boolean, default: true },\n headerCellClassName: { type: [String, Function] as any, default: '' },\n cellClassName: { type: [String, Function] as any, default: '' },\n rowClassName: { type: [String, Function] as any, default: '' },\n isCheckbox: { type: Boolean, default: false },\n showFooter: { type: Boolean, default: false },\n showFooterText: { type: String, default: '' },\n footerMethod: { type: Function, default: null },\n footerCellClassName: { type: [String, Function] as any, default: '' },\n sortConfig: { type: Object, default: () => ({}) },\n filterConfig: { type: Object, default: () => ({}) },\n checkboxConfig: { type: Object, default: () => ({}) },\n radioConfig: { type: Object, default: () => ({}) },\n proxyConfig: { type: Object, default: null as any },\n loading: { type: Boolean, default: false },\n emptyText: { type: String, default: '暂无数据' },\n showIndex: { type: Boolean, default: true },\n showPagination: { type: Boolean, default: true },\n pageSize: { type: Number, default: 20 },\n currentPage: { type: Number, default: 1 },\n total: { type: Number, default: 0 },\n footerData: { type: Array as () => any[], default: () => [] },\n showToolbar: { type: Boolean, default: true },\n subToolbarHeight: { type: Number, default: 46 },\n subPaginationHeight: { type: Number, default: 46 },\n columns: { type: Array as () => any[], default: () => [] },\n})\n\nconst emit = defineEmits<{\n (e: 'checkbox-change', records: any[]): void\n (e: 'radio-change', params: any): void\n (e: 'sort-change', params: any): void\n (e: 'current-change', params: any): void\n (e: 'edit-closed', params: any): void\n (e: 'edit-actived', params: any): void\n (e: 'change-page', page: number, size: number): void\n}>()\n\nconst vxeTableRef = ref()\nconst xToolbarRef = ref()\nconst internalCurrentPage = ref(props.currentPage)\nconst internalPageSize = ref(props.pageSize)\n\nconst calcHeight = computed(() => {\n const baseHeight = props.isShowBg ? 19 : 0\n const toolbarHeight = props.showToolbar ? props.subToolbarHeight : 0\n const paginationHeight = props.showPagination ? props.subPaginationHeight : 0\n const totalHeight = baseHeight + toolbarHeight + paginationHeight\n return `calc(100% - ${totalHeight}px)`\n})\n\nwatch(() => props.currentPage, (val) => {\n internalCurrentPage.value = val\n})\n\nwatch(() => props.pageSize, (val) => {\n internalPageSize.value = val\n})\n\nfunction getTableInstance() {\n return vxeTableRef.value\n}\n\nfunction getList() {\n handlePageChange(1, props.pageSize)\n}\n\nfunction handleCheckboxChange({ records }: { records: any[] }) {\n emit('checkbox-change', records)\n}\n\nfunction getCheckboxRecords() {\n return vxeTableRef.value?.getCheckboxRecords()\n}\n\nfunction setCheckboxRow(row: any, checked: boolean) {\n vxeTableRef.value?.setCheckboxRow(row, checked)\n}\n\nfunction toggleCheckboxRow(row: any) {\n vxeTableRef.value?.toggleCheckboxRow(row)\n}\n\nfunction clearCheckbox() {\n vxeTableRef.value?.clearCheckbox()\n}\n\nfunction handleRadioChange(params: any) {\n emit('radio-change', params)\n}\n\nfunction handleSortChange(params: any) {\n emit('sort-change', params)\n}\n\nfunction handleCurrentChange(params: any) {\n emit('current-change', params)\n}\n\nfunction handleEditClosed(params: any) {\n emit('edit-closed', params)\n}\n\nfunction handleEditActived(params: any) {\n emit('edit-actived', params)\n}\n\nfunction handlePageChange(page: number, size: number) {\n internalCurrentPage.value = page\n internalPageSize.value = size\n emit('change-page', internalCurrentPage.value, internalPageSize.value)\n}\n\nfunction clearSort() {\n vxeTableRef.value?.clearSort()\n}\n\nfunction scrollTo(row: any) {\n vxeTableRef.value?.scrollTo(row)\n}\n\nfunction setCurrentRow(row: any) {\n vxeTableRef.value?.setCurrentRow(row)\n}\n\nfunction internalFooterMethod({ columns }: { columns: any[] }) {\n if (props.footerData.length > 0) {\n return props.footerData\n }\n const data = props.tableData\n if (data && data.length > 0) {\n const lastRow = data[data.length - 1]\n const footerRow = columns.map((column: any, index: number) => {\n if (index === 0) {\n return props.showFooterText ? props.showFooterText : '合计'\n }\n if (column.property) {\n return lastRow[column.property] || ''\n }\n return ''\n })\n return [footerRow]\n }\n return []\n}\n\ndefineExpose({\n getTableInstance,\n getCheckboxRecords,\n setCheckboxRow,\n toggleCheckboxRow,\n clearCheckbox,\n clearSort,\n scrollTo,\n setCurrentRow,\n vxeTableRef,\n})\n</script>\n\n<style lang=\"scss\" scoped>\n:deep(.vxe-toolbar.is--perfect) {\n background-color: #FFFFFF !important;\n border: none !important;\n}\n.x-vxe-toolbar {\n padding-left: 12px;\n padding-right: 12px;\n}\n.x-vxe-table {\n position: relative;\n}\n.x-vxe-table-bg {\n background: #FFFFFF;\n border-radius: 4px;\n padding: 0 20px;\n}\n:deep(.vxe-table--footer-wrapper) {\n background: #FFF0E6 !important;\n}\n</style>\n","<template>\n <div class=\"x-report-table\">\n <!-- 报表标题和操作按钮 -->\n <div class=\"report-header\">\n <h2 class=\"report-title\">{{ displayTitle }}</h2>\n <div class=\"report-actions\">\n <!-- 自定义按钮列表 -->\n <div\n v-for=\"(btn, index) in customButtons\"\n :key=\"index\"\n class=\"action-item report-cursor-pointer\"\n @click=\"handleCustomBtn(index, btn)\"\n >\n <span class=\"report-text-primary\">{{ btn }}</span>\n </div>\n <!-- 打印按钮 -->\n <div v-if=\"showPrint\" class=\"action-item report-cursor-pointer\" @click=\"printReport(1)\">\n <span class=\"report-text-primary\">{{printText}}</span>\n </div>\n <!-- 打印按钮2 -->\n <div v-if=\"printText1\" class=\"action-item report-cursor-pointer\" @click=\"printReport(2)\">\n <span class=\"report-text-primary\">{{printText1}}</span>\n </div>\n <!-- 导出按钮 -->\n <div v-if=\"showExport\" class=\"action-item report-cursor-pointer\" @click=\"handleExport\">\n <span class=\"report-text-primary\">导出</span>\n </div>\n </div>\n </div>\n\n <!-- 页头信息 -->\n <div class=\"report-info report-pb-12\" ref=\"reportHeaderRef\">\n <div class=\"report-flex report-justify-between\">\n <div>\n <span class=\"\">制表单位:</span>\n <span class=\"\">{{ organizationNameDisplay }}</span>\n </div>\n <div>\n <span class=\"\">日期范围:</span>\n <span class=\"\">{{ dateRangeDisplay }}</span>\n </div>\n <div v-if=\"customHeader1Label\">\n <span class=\"\">{{ customHeader1Label }}:</span>\n <span class=\"\">{{ customHeader1 || ''}}</span>\n </div>\n <div v-if=\"customHeader2Label\">\n <span class=\"\">{{ customHeader2Label }}:</span>\n <span class=\"\">{{ customHeader2 || '' }}</span>\n </div>\n <div>\n <span class=\"\">{{ customHeader3Label }}{{customHeader3Label ? ':':''}}</span>\n <span class=\"\">{{ customHeader3 || '' }}</span>\n </div>\n </div>\n </div>\n\n <!-- 表格主体 -->\n <div class=\"report-body\">\n <x-vxe-table\n ref=\"repVxeTableRef\"\n :table-data=\"tableData\"\n :sub-height=\"subHeight\"\n :show-toolbar=\"showToolbar\"\n :show-pagination=\"showPagination\"\n :loading=\"loading\"\n :is-show-bg=\"false\"\n :page-size=\"pageSize\"\n :current-page=\"currentPage\"\n :total=\"total\"\n :show-footer=\"showFooter\"\n :footer-data=\"footerData\"\n :columns=\"columns\"\n @change-page=\"handlePageChange\"\n >\n <template #buttons>\n <slot name=\"buttons\"></slot>\n </template>\n <slot></slot>\n </x-vxe-table>\n </div>\n\n <!-- 页尾信息 -->\n <div class=\"report-info report-pt-12\" ref=\"reportFooterRef\">\n <div class=\"report-flex report-justify-between\">\n <div>\n <span class=\"\">审核人员:</span>\n <span class=\"\">{{ auditorName || '' }}</span>\n </div>\n <div>\n <span class=\"\">制表人员:</span>\n <span class=\"\">{{ creatorNameDisplay }}</span>\n </div>\n <div v-if=\"customFooterFieldLabel\">\n <span class=\"\">{{ customFooterFieldLabel }}:</span>\n <span class=\"\">{{ customFooterField || '' }}</span>\n </div>\n <div>\n <span class=\"\">打印日期:</span>\n <span class=\"\">{{ formattedPrintDate }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, getCurrentInstance } from 'vue'\nimport XVxeTable from './XVxeTable.vue'\nimport { ElMessage } from 'element-plus'\n\nconst props = defineProps({\n tableData: { type: Array as () => any[], default: () => [] },\n columns: { type: Array as () => any[], default: () => [] },\n showFooter: { type: Boolean, default: false },\n reportTitle: { type: String, default: '' },\n organizationName: { type: String, default: '' },\n dateRange: { type: [String, Array] as any, default: '' },\n customHeader1: { type: String, default: '' },\n customHeader1Label: { type: String, default: '' },\n customHeader2: { type: String, default: '' },\n customHeader2Label: { type: String, default: '' },\n customHeader3: { type: String, default: '' },\n customHeader3Label: { type: String, default: '' },\n auditorName: { type: String, default: '' },\n creatorName: { type: String, default: '' },\n customFooterField: { type: String, default: '' },\n customFooterFieldLabel: { type: String, default: '' },\n printDate: { type: String, default: '' },\n showPrint: { type: Boolean, default: true },\n showExport: { type: Boolean, default: true },\n subHeight: { type: String, default: '343px' },\n showToolbar: { type: Boolean, default: false },\n showPagination: { type: Boolean, default: true },\n pageSize: { type: Number, default: 20 },\n total: { type: Number, default: 0 },\n footerData: { type: Array as () => any[], default: () => [] },\n currentPage: { type: Number, default: 1 },\n loading: { type: Boolean, default: false },\n printCallback: { type: Boolean, default: false },\n exportCallback: { type: Boolean, default: false },\n printText: { type: String, default: '打印' },\n printText1: { type: String, default: '' },\n customButtons: { type: Array as () => string[], default: () => [] },\n})\n\nconst emit = defineEmits<{\n (e: 'change-page', page: number, size: number): void\n (e: 'customBtn', index: number, btn: string): void\n (e: 'printReport', type: number): void\n (e: 'export'): void\n}>()\n\nconst instance = getCurrentInstance()\nconst repVxeTableRef = ref()\nconst reportHeaderRef = ref()\nconst reportFooterRef = ref()\n\nconst organizationNameDisplay = computed(() => {\n if (props.organizationName) return props.organizationName\n const store = (instance?.appContext?.config?.globalProperties?.$store as any)\n if (store?.getters?.tenantInfo?.tenantName) {\n return store.getters.tenantInfo.tenantName\n }\n return ''\n})\n\nconst displayTitle = computed(() => {\n if (props.reportTitle) return props.reportTitle\n const route = (instance?.appContext?.config?.globalProperties?.$route as any)\n if (route?.meta?.title) return route.meta.title\n return ''\n})\n\nconst creatorNameDisplay = computed(() => {\n if (props.creatorName) return props.creatorName\n const store = (instance?.appContext?.config?.globalProperties?.$store as any)\n if (store?.getters?.name) return store.getters.name\n return ''\n})\n\nconst formattedPrintDate = computed(() => {\n if (props.printDate) return props.printDate\n const now = new Date()\n const year = now.getFullYear()\n const month = String(now.getMonth() + 1).padStart(2, '0')\n const day = String(now.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n})\n\nconst dateRangeDisplay = computed(() => {\n if (!props.dateRange) return ''\n if (Array.isArray(props.dateRange)) {\n return props.dateRange[0] + '至' + props.dateRange[1]\n }\n return props.dateRange\n})\n\nfunction handlePageChange(page: number, size: number) {\n emit('change-page', page, size)\n}\n\nfunction handleCustomBtn(index: number, btn: string) {\n emit('customBtn', index, btn)\n}\n\nfunction printReport(type: number) {\n if (type === 2) {\n emit('printReport', type)\n } else if (props.printCallback) {\n emit('printReport', type)\n } else {\n handlePrint()\n }\n}\n\nfunction getTableInstance() {\n if (repVxeTableRef.value) {\n return repVxeTableRef.value.vxeTableRef\n }\n return null\n}\n\nfunction handlePrint(printData?: any[]) {\n const tableEl = getTableInstance()\n if (!tableEl) {\n console.error('VXE Table instance not found')\n ElMessage.error('表格组件未加载完成,请稍后再试')\n return\n }\n\n const headerEl = reportHeaderRef.value\n const footerEl = reportFooterRef.value\n\n if (!headerEl || !footerEl) {\n console.error('Report header or footer element not found')\n ElMessage.error('报表元素未加载完成,请稍后再试')\n return\n }\n\n const headerHtml = headerEl.innerHTML\n const footerHtml = footerEl.innerHTML\n\n if (typeof tableEl.print === 'function') {\n tableEl.print({\n sheetName: props.reportTitle || '报表',\n data: printData || props.tableData,\n style: `\n table td, table th {\n border: 1px solid #000!important;\n }\n .table-head{\n text-align: center;\n font-size: 20px;\n line-height: 40px;\n font-weight: bold;\n }\n .table-head-2{\n width: 33%;\n }\n .table-head-1{\n display: flex;\n line-height: 25px;\n }\n .btn-print{\n text-align: center;\n margin-top: 10px;\n }\n .report-info {\n font-weight: 400;\n font-size: 14px;\n color: #333333;\n line-height: 22px;\n }\n .report-flex {\n display: flex;\n }\n .report-justify-between {\n justify-content: space-between;\n }\n .report-pb-12 {\n padding-bottom: 12px;\n }\n .report-pt-12 {\n padding-top: 12px;\n }`,\n beforePrintMethod: ({ content }: { content: string }) => {\n if (displayTitle.value) {\n return `<div class=\"table-head\">${displayTitle.value}</div>` + headerHtml + content + footerHtml\n }\n return headerHtml + content + footerHtml\n },\n })\n } else {\n console.error('VXE Table print method not found')\n ElMessage.error('打印功能暂不可用')\n }\n}\n\nfunction handleExport() {\n if (props.exportCallback) {\n emit('export')\n } else {\n const tableInstance = getTableInstance()\n if (tableInstance) {\n tableInstance.exportData({\n filename: `${displayTitle.value}`,\n sheetName: 'Sheet1',\n type: 'xlsx',\n })\n }\n }\n}\n\nfunction clearCheckbox() {\n repVxeTableRef.value?.clearCheckbox()\n}\n\nfunction clearSort() {\n repVxeTableRef.value?.clearSort()\n}\n\ndefineExpose({\n clearCheckbox,\n clearSort,\n handlePrint,\n getTableInstance,\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.x-report-table {\n background: #FFFFFF;\n box-shadow: 0px 0px 6px 0px rgba(0,0,0,0.1);\n border-radius: 4px;\n backdrop-filter: blur(2px);\n padding: 20px;\n\n .report-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 12px;\n\n .report-title {\n margin: 0;\n font-size: 20px;\n font-weight: bold;\n color: #303133;\n text-align: center;\n flex: 1;\n }\n\n .report-actions {\n display: flex;\n gap: 20px;\n font-weight: 400;\n font-size: 14px;\n color: #333333;\n line-height: 22px;\n\n .action-item {\n display: flex;\n align-items: center;\n }\n }\n }\n}\n.report-info {\n font-weight: 400;\n font-size: 14px;\n color: #333333;\n line-height: 22px;\n}\n.report-pb-12 {\n padding-bottom: 12px;\n}\n.report-pt-12 {\n padding-top: 12px;\n}\n.report-flex {\n display: flex;\n}\n.report-justify-between {\n justify-content: space-between;\n}\n.report-cursor-pointer {\n cursor: pointer;\n}\n.report-text-primary {\n color: #409EFF;\n}\n.table-head {\n text-align: center;\n font-size: 20px;\n line-height: 40px;\n font-weight: bold;\n}\n</style>\n","<template>\n <div class=\"search\" :style=\"{ paddingBottom: paddingBottom }\">\n <div v-if=\"showSearch\" class=\"search-top\">\n <div class=\"search-top__inner\">\n <div class=\"search-top__row\">\n <span v-if=\"showInput\" class=\"search-top__label\">快捷搜索 </span>\n <div v-if=\"showInput\" class=\"search-top-input\">\n <el-input type=\"text\" @keyup.enter=\"searchParentList\" v-model=\"combinedQueries\"\n :placeholder=\"placeholder\"\n clearable\n >\n <template #prefix>\n <svg-icon icon-class=\"search\" class-name=\"svg-icon-22\"></svg-icon>\n </template>\n </el-input>\n </div>\n <div v-if=\"showMoreBottom\" class=\"search-top-filter\" @click=\"showMore = !showMore\">\n <svg-icon icon-class=\"filter\" class-name=\"svg-icon-22 filter-icon\"></svg-icon>\n <span class=\"btn_more\">更多</span>\n </div>\n <div :class=\"{'search-top-extra--ml': showInput}\" class=\"search-top-extra\">\n <slot></slot>\n <div v-if=\"slots.text1\" class=\"search-top-extra-item\">\n <span v-if=\"text1\" class=\"search-top-extra-label\">{{text1}}:</span>\n <div class=\"search-top-extra-content\">\n <slot name=\"text1\"></slot>\n </div>\n </div>\n <div v-if=\"slots.text2\" class=\"search-top-extra-item\">\n <span v-if=\"text2\" class=\"search-top-extra-label\">{{text2}}:</span>\n <div class=\"search-top-extra-content\">\n <slot name=\"text2\"></slot>\n </div>\n </div>\n <div v-if=\"slots.text3\" class=\"search-top-extra-item\">\n <span v-if=\"text3\" class=\"search-top-extra-label\">{{text3}}:</span>\n <div class=\"search-top-extra-content\">\n <slot name=\"text3\"></slot>\n </div>\n </div>\n </div>\n </div>\n <div class=\"search-top__actions\">\n <el-button plain @click=\"reset\">重 置</el-button>\n <el-button type=\"primary\" @click=\"searchParentList\">查 询</el-button>\n </div>\n </div>\n </div>\n <div :class=\"{'show_search': showSearch}\" class=\"search-form\" v-show=\"showMore || !showSearch\">\n <div class=\"search-form__inner\" :style=\"formContainerStyle\">\n <x-el-form\n v-if=\"hasFormSlot\"\n :rules=\"rules\"\n :model=\"queryForm\"\n ref=\"queryFormRef\"\n :span=\"vxeFormSpan\"\n :label-width=\"titleWidth\"\n >\n <slot name=\"form\"></slot>\n <x-el-form-item v-if=\"!showSearch\" label=\"\" :span=\"buttonItemSpan\">\n <div class=\"search-form__buttons\">\n <el-button plain @click=\"reset\">重 置</el-button>\n <el-button type=\"primary\" @click=\"searchParentList\">查 询</el-button>\n </div>\n </x-el-form-item>\n </x-el-form>\n\n <x-el-form\n v-if=\"hasDynamicFields\"\n :rules=\"dynamicRules\"\n :model=\"queryForm\"\n ref=\"dynamicFormRef\"\n :span=\"vxeFormSpan\"\n :label-width=\"titleWidth\"\n label-position=\"top\"\n >\n <x-el-form-item\n v-for=\"item in parsedSearchList\"\n :key=\"item.fieldJavaName\"\n :label=\"item.fieldName\"\n :prop=\"item.fieldJavaName\"\n >\n <component\n :is=\"resolveComponent(item.fieldType)\"\n v-model=\"queryForm[item.fieldJavaName]\"\n v-bind=\"item.attribute\"\n :options=\"shouldBindOptions(item) ? (selectOptions[item.fieldJavaName] || []) : undefined\"\n >\n <template v-if=\"item.fieldType === 'el-select'\">\n <el-option\n v-for=\"(option, idx) in (selectOptions[item.fieldJavaName] || [])\"\n :key=\"idx\"\n :label=\"option[item.dictKey?.label || 'label']\"\n :value=\"option[item.dictKey?.value || 'value']\"\n />\n </template>\n </component>\n </x-el-form-item>\n <x-el-form-item v-if=\"!showSearch\" label=\"\" :span=\"buttonItemSpan\">\n <div class=\"search-form__buttons\">\n <el-button plain @click=\"reset\">重 置</el-button>\n <el-button type=\"primary\" @click=\"searchParentList\">查 询</el-button>\n </div>\n </x-el-form-item>\n </x-el-form>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, useSlots, nextTick, onMounted, type Component } from 'vue'\nimport { ElInput, ElSelect, ElOption, ElDatePicker, ElCascader } from 'element-plus'\nimport SvgIcon from './SvgIcon.vue'\nimport XElForm from './XElForm.vue'\nimport XElFormItem from './XElFormItem.vue'\n\nexport interface SearchListDictKey {\n type?: string\n key?: string\n url?: string\n label?: string\n value?: string\n default?: string\n defaultValue?: any\n 'value-format'?: string\n}\n\nexport interface SearchListItem {\n fieldType: string\n fieldJavaName: string\n fieldName: string\n attribute?: Record<string, any>\n dictKey?: SearchListDictKey\n}\n\nconst props = defineProps({\n modelValue: {\n type: [String, Number] as any,\n default: undefined,\n },\n placeholder: {\n type: String,\n default: '请输入搜索关键词',\n },\n queryForm: {\n type: Object,\n required: true,\n default: () => ({}),\n },\n rules: {\n type: Object,\n default: () => ({}),\n },\n titleWidth: {\n type: String,\n default: '100px',\n },\n columns: {\n type: Number,\n default: 4,\n },\n paddingBottom: {\n type: String,\n default: '16px',\n },\n showInput: {\n type: Boolean,\n default: true,\n },\n showMoreBottom: {\n type: Boolean,\n default: true,\n },\n showSearch: {\n type: Boolean,\n default: true,\n },\n text1: {\n type: String,\n default: '',\n },\n text2: {\n type: String,\n default: '',\n },\n text3: {\n type: String,\n default: '',\n },\n searchList: {\n type: Array as () => any[],\n default: () => [],\n },\n selectOptions: {\n type: Object as () => Record<string, any[]>,\n default: () => ({}),\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: any): void\n (e: 'update:queryForm', value: any): void\n (e: 'list-update', type: number): void\n (e: 'data-reset'): void\n}>()\n\nconst slots = useSlots()\nconst showMore = ref(false)\nconst queryFormRef = ref()\nconst dynamicFormRef = ref()\n\nconst componentMap: Record<string, Component> = {\n 'el-input': ElInput,\n 'el-select': ElSelect,\n 'el-date-picker': ElDatePicker,\n 'el-cascader': ElCascader,\n}\n\nconst combinedQueries = computed({\n get() {\n if (props.modelValue !== undefined && props.modelValue !== null) {\n return props.modelValue\n }\n return props.queryForm.combinedQueries || ''\n },\n set(val: any) {\n if (props.modelValue !== undefined && props.modelValue !== null) {\n emit('update:modelValue', val)\n } else {\n props.queryForm.combinedQueries = val\n }\n },\n})\n\nconst hasFormSlot = computed(() => !!slots.form)\nconst hasDynamicFields = computed(() => parsedSearchList.value.length > 0)\n\nconst vxeFormSpan = computed(() => Math.floor(24 / props.columns))\n\nconst formContainerStyle = computed(() => ({\n '--form-columns': props.columns,\n}))\n\nconst buttonItemSpan = computed(() => {\n return 24\n})\n\nconst parsedSearchList = computed(() => {\n return (props.searchList || []).map(item => {\n let attribute: Record<string, any> = {}\n if (typeof (item as any).attribute === 'string') {\n try { attribute = JSON.parse((item as any).attribute) } catch { attribute = {} }\n } else if (item.attribute && typeof item.attribute === 'object') {\n attribute = item.attribute\n }\n let dictKey: SearchListDictKey = {}\n if (typeof (item as any).dictKey === 'string') {\n try { dictKey = JSON.parse((item as any).dictKey) } catch { dictKey = {} }\n } else if (item.dictKey && typeof item.dictKey === 'object') {\n dictKey = item.dictKey\n }\n return { ...item, attribute, dictKey } as SearchListItem\n })\n})\n\nconst dynamicRules = computed(() => {\n const result: Record<string, any> = {}\n parsedSearchList.value.forEach(item => {\n if (item.attribute?.required) {\n result[item.fieldJavaName] = [\n { required: true, message: `请输入${item.fieldName}`, trigger: 'blur' }\n ]\n }\n })\n return result\n})\n\nfunction resolveComponent(fieldType: string): Component {\n return componentMap[fieldType] || ElInput\n}\n\nfunction shouldBindOptions(item: SearchListItem): boolean {\n return item.fieldType === 'el-cascader'\n}\n\nfunction initDefaultValues() {\n if (!parsedSearchList.value.length) return\n parsedSearchList.value.forEach(item => {\n const dk = item.dictKey\n if (!dk || !dk.default) return\n if (dk.default === '1') {\n props.queryForm[item.fieldJavaName] = dk.defaultValue\n } else if (dk.default === '2') {\n const now = new Date()\n if (dk.defaultValue === 1) {\n const firstDay = new Date(now.getFullYear(), now.getMonth(), 1)\n props.queryForm[item.fieldJavaName] = formatDate(firstDay)\n } else {\n props.queryForm[item.fieldJavaName] = formatDate(now)\n }\n }\n })\n}\n\nfunction formatDate(date: Date): string {\n const y = date.getFullYear()\n const m = String(date.getMonth() + 1).padStart(2, '0')\n const d = String(date.getDate()).padStart(2, '0')\n return `${y}-${m}-${d}`\n}\n\nfunction reset() {\n combinedQueries.value = ''\n\n if (props.modelValue !== undefined && props.modelValue !== null) {\n emit('update:modelValue', '')\n }\n\n if (hasFormSlot.value && queryFormRef.value && typeof queryFormRef.value.resetFields === 'function') {\n nextTick(() => {\n queryFormRef.value.resetFields()\n })\n }\n\n if (hasDynamicFields.value && dynamicFormRef.value && typeof dynamicFormRef.value.resetFields === 'function') {\n nextTick(() => {\n dynamicFormRef.value.resetFields()\n })\n }\n\n if (props.queryForm && Object.keys(props.queryForm).length > 0) {\n const emptyForm: Record<string, any> = {}\n Object.keys(props.queryForm).forEach(key => {\n const value = props.queryForm[key]\n if (Array.isArray(value)) {\n emptyForm[key] = []\n } else if (value !== null && typeof value === 'object') {\n emptyForm[key] = {}\n } else {\n emptyForm[key] = ''\n }\n })\n emit('update:queryForm', emptyForm)\n }\n\n showMore.value = false\n emit('data-reset')\n}\n\nfunction searchParentList() {\n if (props.rules && Object.keys(props.rules).length > 0) {\n if (hasFormSlot.value && queryFormRef.value && typeof queryFormRef.value.validate === 'function') {\n return new Promise((resolve, reject) => {\n queryFormRef.value.validate((valid: boolean) => {\n if (valid) {\n showMore.value = false\n emit('list-update', 1)\n resolve(true)\n } else {\n showMore.value = true\n reject(false)\n }\n })\n })\n }\n\n if (hasDynamicFields.value && dynamicFormRef.value && typeof dynamicFormRef.value.validate === 'function') {\n return new Promise((resolve, reject) => {\n dynamicFormRef.value.validate((valid: boolean) => {\n if (valid) {\n showMore.value = false\n emit('list-update', 1)\n resolve(true)\n } else {\n showMore.value = true\n reject(false)\n }\n })\n })\n }\n } else {\n showMore.value = false\n emit('list-update', 1)\n return Promise.resolve(true)\n }\n}\n\nonMounted(() => {\n initDefaultValues()\n})\n\nwatch(() => props.searchList, () => {\n initDefaultValues()\n}, { deep: true })\n\ndefineExpose({\n queryFormRef,\n dynamicFormRef,\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.svg-icon-22 {\n width: 22px;\n height: 22px;\n display: block;\n}\n\n.filter-icon {\n color: #409EFF;\n}\n\n.search-top {\n padding: 12px 16px;\n background: #FFFFFF;\n border: 1px solid #eaf1fa;\n\n &__inner {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n &__row {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n }\n\n &__label {\n color: #000;\n font-size: 14px;\n line-height: 32px;\n font-weight: 400;\n padding-right: 16px;\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n &__actions {\n flex-shrink: 0;\n margin-left: 16px;\n }\n}\n\n.search-top-input {\n width: 246px;\n height: 32px;\n display: flex;\n align-items: center;\n box-shadow: 0px -1px 8px 0px rgba(0, 105, 255, 0.1);\n flex-shrink: 0;\n}\n\n.search-top-filter {\n display: flex;\n align-items: center;\n height: 32px;\n margin-left: 12px;\n padding: 0 8px;\n cursor: pointer;\n background: #FFFFFF;\n box-shadow: 0px -1px 8px 0px rgba(0, 105, 255, 0.1);\n border-radius: 2px;\n border: 1px solid #EEEEEE;\n flex-shrink: 0;\n}\n\n.search-top-extra {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n min-width: 0;\n\n &--ml {\n margin-left: 20px;\n }\n}\n\n.search-top-extra-item {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n margin-left: 20px;\n\n &:first-child {\n margin-left: 0;\n }\n}\n\n.search-top-extra-label {\n color: #000;\n font-size: 13px;\n line-height: 32px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.search-top-extra-content {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.btn_more {\n font-weight: 400;\n font-size: 14px;\n color: #666666;\n line-height: 20px;\n}\n\n.search-form {\n background: #FFFFFF;\n border-radius: 2px;\n border: 1px solid #E1EBFA;\n width: 100%;\n z-index: 1000;\n box-shadow: 0px -1px 8px 0px rgba(0, 105, 255, 0.1);\n\n &__inner {\n padding: 16px;\n }\n\n &__buttons {\n display: flex;\n justify-content: flex-end;\n width: 100%;\n }\n}\n\n.show_search {\n position: absolute;\n left: 0;\n top: 58px;\n}\n\n.search {\n position: relative;\n\n :deep(.el-date-editor--datetimerange),\n :deep(.el-date-editor--daterange),\n :deep(.el-date-editor--monthrange),\n :deep(.el-date-editor--yearrange) {\n width: 100% !important;\n }\n\n :deep(.el-input__prefix) {\n display: flex;\n align-items: center;\n }\n\n :deep(.search-top-extra-content > .el-input),\n :deep(.search-top-extra-content > .el-select),\n :deep(.search-top-extra-content > .el-date-editor) {\n display: inline-flex;\n align-items: center;\n }\n\n :deep(.el-button--small) {\n padding: 9px 18px;\n }\n\n :deep(.el-cascader) {\n width: 100%;\n }\n}\n</style>\n","<template>\n <div class=\"x-split-layout\" :style=\"{ height: height }\">\n <!-- 左侧目录 -->\n <div class=\"x-split-layout__sidebar\" :style=\"{ width: sidebarWidth }\">\n <!-- 顶部信息区 -->\n <div v-if=\"showSidebarHeader\" class=\"x-split-layout__sidebar-header\" :style=\"sidebarHeaderContainerStyle\">\n <slot name=\"sidebar-header\">\n <div v-for=\"(item, index) in sidebarHeader\" :key=\"index\" class=\"x-split-layout__header-item\" :style=\"{ marginBottom: index < sidebarHeader.length - 1 ? sidebarHeaderItemGap : '0' }\">\n <span class=\"x-split-layout__header-label\" :style=\"sidebarHeaderLabelStyle\">{{ item.label }}:</span>\n <span class=\"x-split-layout__header-value\" :style=\"sidebarHeaderValueStyle\">{{ item.value }}</span>\n </div>\n </slot>\n </div>\n\n <!-- 目录列表 -->\n <div class=\"x-split-layout__sidebar-menu\">\n <div\n v-for=\"(item, index) in menuItems\"\n :key=\"index\"\n class=\"x-split-layout__menu-item\"\n :class=\"{ 'is-active': activeIndex === index }\"\n @click=\"handleMenuClick(index, item)\"\n >\n <slot name=\"menu-item\" :item=\"item\" :index=\"index\" :active=\"activeIndex === index\">\n <span class=\"x-split-layout__menu-icon\">\n <span class=\"x-split-layout__menu-dot\" :class=\"{ 'is-active-dot': activeIndex === index }\"></span>\n </span>\n <span class=\"x-split-layout__menu-label\">{{ item[menuLabelKey] }}</span>\n </slot>\n <slot name=\"menu-item-right\" :item=\"item\" :index=\"index\" :active=\"activeIndex === index\"></slot>\n </div>\n </div>\n\n <!-- 侧边栏右侧自定义内容 -->\n <slot name=\"sidebar-right\"></slot>\n </div>\n\n <!-- 右侧内容区 -->\n <div class=\"x-split-layout__content\">\n <!-- 内容标题(固定顶部) -->\n <div v-if=\"showContentHeader\" class=\"x-split-layout__content-header\">\n <div class=\"x-split-layout__content-title\">\n <slot name=\"content-title\">\n <span>{{ currentContentTitle }}</span>\n </slot>\n </div>\n </div>\n\n <!-- 内容主体(可滚动) -->\n <div class=\"x-split-layout__content-scroll\" :class=\"contentAlignClass\">\n <div class=\"x-split-layout__content-body\" :style=\"contentMaxWidthStyle\">\n <slot :active-item=\"activeItem\" :active-index=\"activeIndex\"></slot>\n </div>\n </div>\n\n <!-- 底部操作按钮(固定底部) -->\n <div v-if=\"showActions\" class=\"x-split-layout__content-footer\">\n <slot name=\"actions\">\n <el-button @click=\"handleCancel\">取消</el-button>\n <el-button type=\"primary\" @click=\"handleSave\">保存</el-button>\n <el-button v-if=\"customBtnText\" :type=\"customBtnType\" @click=\"handleCustomBtn\">{{ customBtnText }}</el-button>\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, useSlots, onMounted } from 'vue'\n\nconst props = defineProps({\n height: { type: String, default: '100%' },\n sidebarWidth: { type: String, default: '240px' },\n menuItems: { type: Array as () => any[], default: () => [] },\n menuLabelKey: { type: String, default: 'label' },\n activeIndex: { type: Number, default: 0 },\n contentAlign: {\n type: String as () => 'center' | 'left' | 'right',\n default: 'center',\n validator: (val: string) => ['center', 'left', 'right'].includes(val),\n },\n contentMaxWidth: { type: String, default: '800px' },\n showContentHeader: { type: Boolean, default: true },\n showActions: { type: Boolean, default: true },\n sidebarHeader: { type: Array as () => any[], default: () => [] },\n showSidebarHeader: { type: Boolean, default: true },\n sidebarHeaderStyle: { type: Object, default: () => ({}) },\n sidebarHeaderLabelStyle: { type: Object, default: () => ({ color: '#409EFF', fontWeight: '500' }) },\n sidebarHeaderValueStyle: { type: Object, default: () => ({ color: '#303133' }) },\n sidebarHeaderItemGap: { type: String, default: '8px' },\n sidebarHeaderPadding: { type: String, default: '16px' },\n sidebarHeaderBorderBottom: { type: String, default: '1px solid #EAEFFE' },\n customBtnText: { type: String, default: '' },\n customBtnType: { type: String, default: 'success' },\n})\n\nconst emit = defineEmits<{\n (e: 'menu-click', index: number, item: any): void\n (e: 'update:activeIndex', index: number): void\n (e: 'cancel'): void\n (e: 'save', data: { index: number; item: any }): void\n (e: 'custom-btn', data: { index: number; item: any }): void\n}>()\n\nconst slots = useSlots()\n\nconst activeIndex = ref(props.activeIndex)\nconst activeItem = ref<any>(null)\n\nconst showSidebarHeader = computed(() => {\n return props.showSidebarHeader && (slots['sidebar-header'] || props.sidebarHeader.length > 0)\n})\n\nconst showContentHeader = computed(() => props.showContentHeader)\nconst showActions = computed(() => props.showActions)\n\nconst currentContentTitle = computed(() => {\n if (activeItem.value && activeItem.value.title) {\n return activeItem.value.title\n }\n return ''\n})\n\nconst contentAlignClass = computed(() => `x-split-layout__content--${props.contentAlign}`)\n\nconst sidebarHeaderContainerStyle = computed(() => ({\n ...props.sidebarHeaderStyle,\n padding: props.sidebarHeaderPadding,\n borderBottom: props.sidebarHeaderBorderBottom,\n}))\n\nconst contentMaxWidthStyle = computed(() => {\n if (props.contentAlign === 'center' || props.contentAlign === 'right') {\n return { maxWidth: props.contentMaxWidth }\n }\n return {}\n})\n\nwatch(() => props.activeIndex, (newVal) => {\n activeIndex.value = newVal\n})\n\nfunction updateActiveItem() {\n if (props.menuItems.length > 0 && activeIndex.value >= 0 && activeIndex.value < props.menuItems.length) {\n activeItem.value = props.menuItems[activeIndex.value]\n }\n}\n\nfunction handleMenuClick(index: number, item: any) {\n activeIndex.value = index\n activeItem.value = item\n emit('menu-click', index, item)\n emit('update:activeIndex', index)\n}\n\nfunction handleCancel() {\n emit('cancel')\n}\n\nfunction handleSave() {\n emit('save', { index: activeIndex.value, item: activeItem.value })\n}\n\nfunction handleCustomBtn() {\n emit('custom-btn', { index: activeIndex.value, item: activeItem.value })\n}\n\nonMounted(() => {\n updateActiveItem()\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.x-split-layout {\n display: flex;\n width: 100%;\n gap: 16px;\n\n &__sidebar {\n flex-shrink: 0;\n border-right: 1px solid #EAEFFE;\n display: flex;\n flex-direction: column;\n background: #FFFFFF;\n position: relative;\n }\n\n &__sidebar-header {\n padding: 16px;\n border-bottom: 1px solid #EAEFFE;\n }\n\n &__header-item {\n margin-bottom: 8px;\n font-size: 13px;\n line-height: 20px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n &__header-label {\n color: #909399;\n }\n\n &__header-value {\n color: #303133;\n }\n\n &__sidebar-menu {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n }\n\n &__menu-item {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n transition: all 0.3s;\n color: #606266;\n font-size: 14px;\n\n &:hover {\n background: #ECF5FF;\n color: #409EFF;\n }\n\n &.is-active {\n background: #ECF5FF;\n color: #409EFF;\n font-weight: 500;\n }\n }\n\n &__menu-icon {\n margin-right: 8px;\n display: flex;\n align-items: center;\n }\n\n &__menu-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: #C0C4CC;\n }\n\n .is-active &__menu-dot {\n background: #409EFF;\n }\n\n &__menu-label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &__content {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n background: #FFFFFF;\n }\n\n &__content-header {\n flex-shrink: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n border-bottom: 1px solid #EAEFFE;\n }\n\n &__content-title {\n font-size: 16px;\n font-weight: 500;\n color: #303133;\n }\n\n &__content-scroll {\n flex: 1;\n overflow-y: auto;\n padding: 20px 24px;\n }\n\n &__content--center {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n &__content--center &__content-body {\n width: 100%;\n }\n\n &__content--left &__content-body {\n width: 100%;\n }\n\n &__content--right &__content-body {\n width: 100%;\n margin-left: auto;\n }\n\n &__content-body {\n border-radius: 4px;\n padding: 20px;\n }\n\n &__content-footer {\n flex-shrink: 0;\n display: flex;\n justify-content: center;\n gap: 8px;\n padding: 12px 24px;\n border-top: 1px solid #EAEFFE;\n background: #FFFFFF;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue'\n\nconst props = defineProps({\n title: {\n type: String,\n default: undefined,\n },\n field: {\n type: String,\n default: undefined,\n },\n width: {\n type: [String, Number] as any,\n default: undefined,\n },\n minWidth: {\n type: [String, Number] as any,\n default: undefined,\n },\n fixed: {\n type: [Boolean, String] as any,\n default: undefined,\n },\n align: {\n type: String,\n default: undefined,\n },\n showOverflowTooltip: {\n type: Boolean,\n default: undefined,\n },\n sortable: {\n type: [Boolean, String] as any,\n default: undefined,\n },\n resizable: {\n type: Boolean,\n default: undefined,\n },\n type: {\n type: String,\n default: undefined,\n },\n cellType: {\n type: String,\n default: undefined,\n },\n formatter: {\n type: [Function, String] as any,\n default: undefined,\n },\n})\n\nconst slots = useSlots()\n\nconst columnAttrs = computed(() => {\n const attrs: Record<string, any> = {}\n\n if (props.title !== undefined) attrs.title = props.title\n if (props.field !== undefined) attrs.field = props.field\n if (props.width !== undefined) attrs.width = props.width\n attrs['min-width'] = props.minWidth || 120\n if (props.fixed !== undefined) attrs.fixed = props.fixed\n if (props.align !== undefined) attrs.align = props.align\n if (props.showOverflowTooltip !== undefined) attrs['show-overflow-tooltip'] = props.showOverflowTooltip\n if (props.sortable !== undefined) attrs.sortable = props.sortable\n if (props.resizable !== undefined) attrs.resizable = props.resizable\n if (props.type !== undefined) attrs.type = props.type\n if (props.cellType !== undefined) attrs['cell-type'] = props.cellType\n if (props.formatter !== undefined) attrs.formatter = props.formatter\n\n return attrs\n})\n</script>\n\n<template>\n <vxe-column v-bind=\"columnAttrs\">\n <template v-for=\"(_, name) in slots\" :key=\"name\" #[name]=\"slotData\">\n <slot :name=\"name\" v-bind=\"slotData || {}\"></slot>\n </template>\n </vxe-column>\n</template>\n\n<style scoped lang=\"scss\">\n</style>\n","// 导入工具函数\nimport * as utils from './utils'\nimport * as directives from './directives'\n\n// 导入样式\nimport './styles/index.scss'\n// x-ui.scss 不在此导入,宿主项目通常已有自己的工具类\n// 如需使用插件的工具类,请在宿主项目中单独引入:\n// import '@xjw_/vue3-npm-system/styles/x-ui.scss'\n\n// 导入组件\nimport SvgIcon from './components/SvgIcon.vue'\nimport XDatePicker from './components/XDatePicker.vue'\nimport XElForm from './components/XElForm.vue'\nimport XElFormItem from './components/XElFormItem.vue'\nimport XElOption from './components/XElOption.vue'\nimport XElSelect from './components/XElSelect.vue'\nimport XPagination from './components/XPagination.vue'\nimport XReportTable from './components/XReportTable.vue'\nimport XSearchBar from './components/XSearchBar.vue'\nimport XSplitLayout from './components/XSplitLayout.vue'\nimport XVxeColumn from './components/XVxeColumn.vue'\nimport XVxeTable from './components/XVxeTable.vue'\n\n// 自动注册的组件(不含 SvgIcon,避免与宿主项目冲突)\nconst components = {\n XDatePicker,\n XElForm,\n XElFormItem,\n XElOption,\n XElSelect,\n XPagination,\n XReportTable,\n XSearchBar,\n XSplitLayout,\n XVxeColumn,\n XVxeTable,\n}\n\n// 定义插件安装\nconst install = (app: any) => {\n // 注册组件\n Object.keys(components).forEach(key => {\n const component = (components as any)[key]\n app.component(component.name || key, component)\n })\n\n // 注册指令\n const directiveKeys = Object.keys(directives) as Array<keyof typeof directives>\n directiveKeys.forEach(key => {\n if (key !== 'registerDirectives' && key !== 'default') {\n app.directive(key, directives[key])\n }\n })\n}\n\nexport {\n utils,\n directives,\n SvgIcon,\n XDatePicker,\n XElForm,\n XElFormItem,\n XElOption,\n XElSelect,\n XPagination,\n XReportTable,\n XSearchBar,\n XSplitLayout,\n XVxeColumn,\n XVxeTable,\n}\n\nexport default {\n install,\n}\n"],"names":["debounce","throttle","config","_openBlock","_createElementBlock","_mergeProps","$attrs","_createElementVNode","_createBlock","props","_createVNode","_renderSlot","_hoisted_1","index","_normalizeClass","_Fragment","_renderList","_createSlots","_withCtx","_hoisted_2","_hoisted_3","_toDisplayString","_hoisted_4","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","resolveComponent","formatDate","_hoisted_5","_unref","_resolveDynamicComponent","_vShow","_normalizeProps","_guardReactiveProps","XElOption","XElSelect","XVxeColumn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/utils/index.ts","../src/directives/index.ts","../src/components/SvgIcon.vue","../src/components/XDatePicker.vue","../src/components/XElForm.vue","../src/components/XElFormItem.vue","../src/components/XElOption.vue","../src/components/XElSelect.vue","../src/components/XPagination.vue","../src/components/XVxeTable.vue","../src/components/XReportTable.vue","../src/components/XSearchBar.vue","../src/components/XSplitLayout.vue","../src/components/XSwitch.vue","../src/components/XVxeColumn.vue","../src/index.ts"],"sourcesContent":["// 防抖函数\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout> | null = null\n return function (this: any, ...args: Parameters<T>) {\n if (timeout) clearTimeout(timeout)\n timeout = setTimeout(() => {\n func.apply(this, args)\n }, wait)\n }\n}\n\n// 节流函数\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n wait: number\n): (...args: Parameters<T>) => void {\n let timeout: ReturnType<typeof setTimeout> | null = null\n let previous = 0\n return function (this: any, ...args: Parameters<T>) {\n const now = Date.now()\n const remaining = wait - (now - previous)\n if (remaining <= 0) {\n if (timeout) {\n clearTimeout(timeout)\n timeout = null\n }\n previous = now\n func.apply(this, args)\n } else if (!timeout) {\n timeout = setTimeout(() => {\n previous = Date.now()\n timeout = null\n func.apply(this, args)\n }, remaining)\n }\n }\n}\n\n// 深拷贝\nexport function deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== 'object') return obj\n if (obj instanceof Date) return new Date(obj.getTime()) as any\n if (obj instanceof Array) return obj.map(item => deepClone(item)) as any\n if (obj instanceof Object) {\n const clonedObj = {} as T\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n clonedObj[key] = deepClone(obj[key])\n }\n }\n return clonedObj\n }\n return obj\n}\n\n// 格式化日期\nexport function formatDate(\n date: Date | string | number,\n format = 'YYYY-MM-DD HH:mm:ss'\n): string {\n const d = new Date(date)\n const year = d.getFullYear()\n const month = String(d.getMonth() + 1).padStart(2, '0')\n const day = String(d.getDate()).padStart(2, '0')\n const hours = String(d.getHours()).padStart(2, '0')\n const minutes = String(d.getMinutes()).padStart(2, '0')\n const seconds = String(d.getSeconds()).padStart(2, '0')\n\n return format\n .replace('YYYY', String(year))\n .replace('MM', month)\n .replace('DD', day)\n .replace('HH', hours)\n .replace('mm', minutes)\n .replace('ss', seconds)\n}\n\n// 本地存储封装\nexport const storage = {\n set(key: string, value: any): void {\n localStorage.setItem(key, JSON.stringify(value))\n },\n get(key: string): any {\n const item = localStorage.getItem(key)\n return item ? JSON.parse(item) : null\n },\n remove(key: string): void {\n localStorage.removeItem(key)\n },\n clear(): void {\n localStorage.clear()\n },\n}\n\n// Cookie封装\nimport Cookies from 'js-cookie'\n\nexport const cookie = {\n set(key: string, value: any, options?: Cookies.CookieAttributes): void {\n Cookies.set(key, JSON.stringify(value), options)\n },\n get(key: string): any {\n const item = Cookies.get(key)\n return item ? JSON.parse(item) : null\n },\n remove(key: string): void {\n Cookies.remove(key)\n },\n}\n\n// 请求封装\nimport axios from 'axios'\nimport type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\n\nexport function createRequest(config: AxiosRequestConfig & { tokenCookieName?: string } = {}): AxiosInstance {\n const { tokenCookieName = 'token', ...axiosConfig } = config\n const instance = axios.create({\n baseURL: '/api',\n timeout: 10000,\n ...axiosConfig,\n })\n\n instance.interceptors.request.use(\n (config) => {\n const token = cookie.get(tokenCookieName)\n if (token) {\n config.headers.Authorization = `Bearer ${token}`\n }\n return config\n },\n (error) => Promise.reject(error)\n )\n\n instance.interceptors.response.use(\n (response) => response.data,\n (error) => {\n console.error('请求错误:', error)\n return Promise.reject(error)\n }\n )\n\n return instance\n}\n\n// 判断是否为外部链接\nexport function isExternal(path: string): boolean {\n return /^(https?:|mailto:|tel:|www\\.)/.test(path)\n}\n\n// 日期格式化(兼容 Vue2 parseTime)\nexport function parseTime(\n time: string | number | Date | null | undefined,\n pattern?: string\n): string | null {\n if (arguments.length === 0 || !time) {\n return null\n }\n const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'\n let date: Date\n if (typeof time === 'object') {\n date = time as Date\n } else {\n if (typeof time === 'string' && /^[0-9]+$/.test(time)) {\n time = parseInt(time)\n } else if (typeof time === 'string') {\n time = time.replace(/-/gm, '/')\n }\n if (typeof time === 'number' && time.toString().length === 10) {\n time = time * 1000\n }\n date = new Date(time)\n }\n const formatObj: Record<string, number> = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay(),\n }\n const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (_result, key) => {\n let value = formatObj[key]\n if (key === 'a') {\n return ['日', '一', '二', '三', '四', '五', '六'][value]\n }\n if (value < 10) {\n value = Number('0' + value)\n }\n return String(value || 0)\n })\n return time_str\n}\n\n// 验证函数\nexport const validator = {\n isEmail(value: string): boolean {\n return /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$/.test(value)\n },\n isPhone(value: string): boolean {\n return /^1[3-9]\\d{9}$/.test(value)\n },\n isUrl(value: string): boolean {\n return /^https?:\\/\\/.+/.test(value)\n },\n isEmpty(value: any): boolean {\n return value === null || value === undefined || value === ''\n },\n}\n","import type { App, Directive } from 'vue'\nimport { ElMessage } from 'element-plus'\n\n// 权限指令\nexport const permission: Directive = {\n mounted(el, binding) {\n const { value } = binding\n const permissions = ['admin', 'user'] // 从 store 或 cookie 获取\n \n if (value && !permissions.includes(value)) {\n el.parentNode?.removeChild(el)\n }\n },\n}\n\n// 防抖指令\nexport const debounce: Directive = {\n mounted(el, binding) {\n const { value, arg = 'click' } = binding\n \n el[arg] = (handler: Function) => {\n let timer: any = null\n return function (this: any, ...args: any[]) {\n if (timer) clearTimeout(timer)\n timer = setTimeout(() => {\n handler.apply(this, args)\n }, value || 300)\n }\n }\n },\n}\n\n// 节流指令\nexport const throttle: Directive = {\n mounted(el, binding) {\n const { value, arg = 'click' } = binding\n let timer: any = null\n let previous = 0\n \n el[arg] = (handler: Function) => {\n return function (this: any, ...args: any[]) {\n const now = Date.now()\n const remaining = (value || 300) - (now - previous)\n if (remaining <= 0) {\n if (timer) {\n clearTimeout(timer)\n timer = null\n }\n previous = now\n handler.apply(this, args)\n } else if (!timer) {\n timer = setTimeout(() => {\n previous = Date.now()\n timer = null\n handler.apply(this, args)\n }, remaining)\n }\n }\n }\n },\n}\n\n// 复制指令\nexport const copy: Directive = {\n mounted(el, binding) {\n el.addEventListener('click', () => {\n const text = binding.value\n navigator.clipboard.writeText(text).then(() => {\n ElMessage.success('复制成功')\n }).catch(() => {\n ElMessage.error('复制失败')\n })\n })\n },\n}\n\n// Lazy load 指令\nexport const lazyload: Directive = {\n mounted(el, binding) {\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n el.src = binding.value\n observer.unobserve(el)\n }\n })\n })\n observer.observe(el)\n },\n}\n\n// 注册所有指令\nexport function registerDirectives(app: App) {\n app.directive('permission', permission)\n app.directive('debounce', debounce)\n app.directive('throttle', throttle)\n app.directive('copy', copy)\n app.directive('lazyload', lazyload)\n}\n\nexport default {\n permission,\n debounce,\n throttle,\n copy,\n lazyload,\n registerDirectives,\n}\n","<template>\n <div v-if=\"isExternalIcon\" :style=\"styleExternalIcon\" class=\"svg-external-icon svg-icon\" v-bind=\"$attrs\" />\n <svg v-else :class=\"svgClass\" aria-hidden=\"true\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" v-bind=\"$attrs\">\n <use :href=\"iconName\" :xlink:href=\"iconName\" />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { isExternal } from '../utils'\n\nconst props = defineProps({\n iconClass: {\n type: String,\n required: true,\n },\n className: {\n type: String,\n default: '',\n },\n})\n\nconst isExternalIcon = computed(() => isExternal(props.iconClass))\n\nconst iconName = computed(() => `#icon-${props.iconClass}`)\n\nconst svgClass = computed(() => {\n if (props.className) {\n return 'svg-icon ' + props.className\n }\n return 'svg-icon svg-icon-default'\n})\n\nconst styleExternalIcon = computed(() => ({\n mask: `url(${props.iconClass}) no-repeat 50% 50%`,\n '-webkit-mask': `url(${props.iconClass}) no-repeat 50% 50%`,\n}))\n</script>\n\n<style scoped>\n.svg-icon-default {\n width: 20px;\n height: 20px;\n}\n.svg-icon {\n padding: 4px;\n vertical-align: -0.15em;\n fill: currentColor;\n overflow: hidden;\n}\n\n.svg-external-icon {\n background-color: currentColor;\n mask-size: cover!important;\n display: inline-block;\n}\n</style>\n","<template>\n <el-date-picker\n :model-value=\"internalValue\"\n :type=\"type\"\n :placeholder=\"currentPlaceholder\"\n :start-placeholder=\"currentStartPlaceholder\"\n :end-placeholder=\"currentEndPlaceholder\"\n :range-separator=\"rangeSeparator\"\n :value-format=\"currentValueFormat\"\n :default-time=\"currentDefaultTime\"\n :size=\"size\"\n v-bind=\"$attrs\"\n @update:model-value=\"handleUpdate\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch } from 'vue'\n\nconst props = defineProps({\n type: {\n type: String,\n default: 'date',\n validator: (val: string) => [\n 'year', 'years',\n 'month', 'months',\n 'date', 'dates',\n 'datetime',\n 'week',\n 'datetimerange',\n 'daterange',\n 'monthrange',\n 'yearrange',\n ].includes(val),\n },\n valueFormat: {\n type: String,\n default: null as any,\n },\n placeholder: {\n type: String,\n default: null as any,\n },\n startPlaceholder: {\n type: String,\n default: null as any,\n },\n endPlaceholder: {\n type: String,\n default: null as any,\n },\n rangeSeparator: {\n type: String,\n default: '至',\n },\n defaultTime: {\n type: [String, Array] as any,\n default: null,\n },\n isEndTime: {\n type: Boolean,\n default: false,\n },\n modelValue: {\n type: [String, Number, Array, Date] as any,\n default: '',\n },\n size: {\n type: String,\n default: 'default',\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: any): void\n}>()\n\nconst internalValue = ref(props.modelValue)\n\n// Element Plus 使用 dayjs 格式,将 yyyy → YYYY\nfunction toDayjsFormat(format: string): string {\n return format\n .replace(/yyyy/g, 'YYYY')\n .replace(/dd/g, 'DD')\n}\n\nfunction getDefaultFormat(type: string): string {\n const formatMap: Record<string, string> = {\n 'year': 'YYYY',\n 'years': 'YYYY',\n 'month': 'YYYY-MM',\n 'months': 'YYYY-MM',\n 'date': 'YYYY-MM-DD',\n 'dates': 'YYYY-MM-DD',\n 'datetime': 'YYYY-MM-DD HH:mm:ss',\n 'week': 'YYYY-MM-DD',\n 'datetimerange': 'YYYY-MM-DD HH:mm:ss',\n 'daterange': 'YYYY-MM-DD',\n 'monthrange': 'YYYY-MM',\n 'yearrange': 'YYYY',\n }\n return formatMap[type] || 'YYYY-MM-DD'\n}\n\nfunction getDefaultPlaceholder(type: string) {\n const isRange = type.includes('range')\n const hasTime = type.includes('time')\n\n if (isRange) {\n return {\n start: hasTime ? '开始日期时间' : '开始日期',\n end: hasTime ? '结束日期时间' : '结束日期',\n }\n } else {\n if (type === 'year' || type === 'years') return '选择年'\n if (type === 'month' || type === 'months') return '选择月'\n if (type === 'week') return '选择周'\n if (hasTime) return '选择日期时间'\n return '选择日期'\n }\n}\n\nconst currentPlaceholder = computed(() => {\n if (props.placeholder !== null) return props.placeholder\n const isRange = props.type.includes('range')\n if (isRange) return undefined\n return getDefaultPlaceholder(props.type) as any\n})\n\nconst currentStartPlaceholder = computed(() => {\n if (props.startPlaceholder !== null) return props.startPlaceholder\n const isRange = props.type.includes('range')\n if (!isRange) return undefined\n const defaults = getDefaultPlaceholder(props.type) as { start: string; end: string }\n return defaults.start\n})\n\nconst currentEndPlaceholder = computed(() => {\n if (props.endPlaceholder !== null) return props.endPlaceholder\n const isRange = props.type.includes('range')\n if (!isRange) return undefined\n const defaults = getDefaultPlaceholder(props.type) as { start: string; end: string }\n return defaults.end\n})\n\nconst currentValueFormat = computed(() => {\n if (props.valueFormat !== null && props.valueFormat !== undefined) {\n return toDayjsFormat(props.valueFormat)\n }\n return getDefaultFormat(props.type)\n})\n\nconst currentDefaultTime = computed(() => {\n if (props.defaultTime !== null && props.defaultTime !== undefined) {\n return props.defaultTime\n }\n if (props.isEndTime && props.type === 'datetimerange') {\n return [new Date(2000, 0, 1, 0, 0, 0), new Date(2000, 0, 1, 23, 59, 59)]\n }\n if (props.isEndTime && props.type === 'datetime') {\n return new Date(2000, 0, 1, 23, 59, 59)\n }\n return undefined\n})\n\nfunction applyEndTime(value: any): any {\n const startTime = '00:00:00'\n const endTime = '23:59:59'\n\n if (props.type === 'datetimerange' && Array.isArray(value) && value.length === 2) {\n let startVal = value[0]\n let endVal = value[1]\n\n if (startVal instanceof Date) {\n const newStart = new Date(startVal)\n newStart.setHours(0, 0, 0, 0)\n startVal = newStart\n } else if (typeof startVal === 'string' && startVal) {\n const datePart = startVal.substring(0, 10)\n startVal = datePart + ' ' + startTime\n }\n\n if (endVal instanceof Date) {\n const newEnd = new Date(endVal)\n newEnd.setHours(23, 59, 59, 0)\n endVal = newEnd\n } else if (typeof endVal === 'string' && endVal) {\n const datePart = endVal.substring(0, 10)\n endVal = datePart + ' ' + endTime\n }\n\n return [startVal, endVal]\n }\n\n if (props.type === 'datetime' && value) {\n if (value instanceof Date) {\n if (value.getHours() === 0 && value.getMinutes() === 0 && value.getSeconds() === 0) {\n const newDate = new Date(value)\n newDate.setHours(23, 59, 59, 0)\n return newDate\n }\n return value\n }\n\n if (typeof value === 'string') {\n const timePart = value.length > 10 ? value.substring(11) : ''\n if (!timePart) {\n const datePart = value.substring(0, 10)\n return datePart + ' ' + endTime\n }\n }\n }\n\n return value\n}\n\nwatch(() => props.modelValue, (newVal) => {\n let result = newVal\n if (props.isEndTime && newVal) {\n result = applyEndTime(newVal)\n }\n internalValue.value = result\n})\n\nfunction handleUpdate(value: any) {\n internalValue.value = value\n emit('update:modelValue', value)\n}\n</script>\n\n<style scoped lang=\"scss\">\n:deep(.el-date-editor) {\n width: 100%;\n}\n\n:deep(.el-date-editor--datetimerange),\n:deep(.el-date-editor--daterange),\n:deep(.el-date-editor--monthrange),\n:deep(.el-date-editor--yearrange) {\n width: 100% !important;\n}\n\n:deep(.el-date-editor--datetimerange .el-range-input),\n:deep(.el-date-editor--daterange .el-range-input),\n:deep(.el-date-editor--monthrange .el-range-input),\n:deep(.el-date-editor--yearrange .el-range-input) {\n width: 39%;\n}\n</style>\n","<template>\n <el-form\n ref=\"formRef\"\n v-bind=\"$attrs\"\n :model=\"model\"\n :rules=\"rules\"\n :inline=\"inline\"\n :label-width=\"labelWidth\"\n :label-position=\"labelPosition\"\n :size=\"size\"\n :disabled=\"disabled\"\n :show-message=\"showMessage\"\n :inline-message=\"inlineMessage\"\n :status-icon=\"statusIcon\"\n :validate-on-rule-change=\"validateOnRuleChange\"\n :hide-required-asterisk=\"hideRequiredAsterisk\"\n :require-asterisk-position=\"requireAsteriskPosition\"\n style=\"width: 100%;\"\n >\n <el-row :gutter=\"gutter\" :style=\"rowStyle\">\n <slot></slot>\n </el-row>\n </el-form>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, provide } from 'vue'\n\nconst props = defineProps({\n model: {\n type: Object,\n default: () => ({}),\n },\n rules: {\n type: Object,\n default: () => ({}),\n },\n inline: {\n type: Boolean,\n default: false,\n },\n labelWidth: {\n type: String,\n default: '120px',\n },\n labelPosition: {\n type: String as () => 'left' | 'right' | 'top',\n default: 'right',\n validator: (val: string) => ['left', 'right', 'top'].includes(val),\n },\n size: {\n type: String,\n default: 'default',\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n showMessage: {\n type: Boolean,\n default: true,\n },\n inlineMessage: {\n type: Boolean,\n default: false,\n },\n statusIcon: {\n type: Boolean,\n default: false,\n },\n validateOnRuleChange: {\n type: Boolean,\n default: true,\n },\n hideRequiredAsterisk: {\n type: Boolean,\n default: false,\n },\n requireAsteriskPosition: {\n type: String as () => 'left' | 'right',\n default: 'left',\n validator: (val: string) => ['left', 'right'].includes(val),\n },\n span: {\n type: Number,\n default: 24,\n },\n gutter: {\n type: Number,\n default: 20,\n },\n})\n\nconst formRef = ref()\n\nconst rowStyle = computed(() => ({\n marginLeft: 0,\n marginRight: 0,\n}))\n\nprovide('formItemSpan', props.span)\nprovide('formGutter', props.gutter)\n\nfunction validate(callback?: Parameters<InstanceType<typeof import('element-plus')['ElForm']>['validate']>[0]) {\n return formRef.value?.validate(callback)\n}\n\nfunction validateField(props: string | string[], callback?: (valid: boolean) => void) {\n return formRef.value?.validateField(props, callback)\n}\n\nfunction resetFields() {\n return formRef.value?.resetFields()\n}\n\nfunction clearValidate(props?: string | string[]) {\n return formRef.value?.clearValidate(props)\n}\n\nfunction scrollToField(prop: string) {\n return formRef.value?.scrollToField(prop)\n}\n\ndefineExpose({\n validate,\n validateField,\n resetFields,\n clearValidate,\n scrollToField,\n formRef,\n})\n</script>\n\n<style scoped lang=\"scss\">\n:deep(.el-form) {\n width: 100%;\n}\n\n:deep(.el-row) {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n</style>\n","<template>\n <el-col :span=\"currentSpan\">\n <el-form-item\n v-bind=\"$attrs\"\n :label=\"label\"\n :prop=\"prop\"\n :label-width=\"labelWidth\"\n :required=\"required\"\n :rules=\"rules\"\n :error=\"error\"\n :validate-status=\"validateStatus\"\n :show-message=\"showMessage\"\n :inline-message=\"inlineMessage\"\n :size=\"size\"\n >\n <slot></slot>\n </el-form-item>\n </el-col>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\n\nconst props = defineProps({\n label: {\n type: String,\n default: undefined,\n },\n prop: {\n type: String,\n default: undefined,\n },\n labelWidth: {\n type: [String, Number] as any,\n default: undefined,\n },\n required: {\n type: Boolean,\n default: false,\n },\n rules: {\n type: [Object, Array] as any,\n default: undefined,\n },\n error: {\n type: String,\n default: undefined,\n },\n validateStatus: {\n type: String,\n default: undefined,\n },\n showMessage: {\n type: Boolean,\n default: true,\n },\n inlineMessage: {\n type: Boolean,\n default: false,\n },\n size: {\n type: String,\n default: 'default',\n },\n span: {\n type: Number,\n default: null as any,\n },\n})\n\nconst formItemSpan = inject('formItemSpan', 24)\nconst formGutter = inject('formGutter', 0)\n\nconst currentSpan = computed(() => {\n return props.span !== null ? props.span : formItemSpan\n})\n</script>\n\n<style scoped lang=\"scss\">\n:deep(.el-form-item) {\n margin-bottom: 16px;\n}\n\n:deep(.el-col) {\n padding: 0 8px;\n}\n:deep(.el-date-editor.el-input),\n:deep(.el-date-editor.el-input__inner) {\n width: 100% !important;\n}\n</style>\n","<template>\n <el-option\n v-bind=\"$attrs\"\n :label=\"computedLabel\"\n :value=\"computedValue\"\n >\n <slot></slot>\n </el-option>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, type Ref } from 'vue'\n\nconst props = defineProps({\n label: {\n type: [String, Number] as any,\n default: undefined,\n },\n value: {\n type: [String, Number] as any,\n default: undefined,\n },\n disabled: {\n type: Boolean,\n default: false,\n },\n})\n\nconst elSelectModelValue = inject<Ref<any> | null>('elSelectModelValue', null)\n\nconst computedValue = computed(() => {\n const propValue = props.value\n\n if (!elSelectModelValue || !elSelectModelValue.value) {\n return propValue\n }\n\n const modelVal = elSelectModelValue.value\n\n if (Array.isArray(modelVal) && modelVal.length > 0) {\n const firstValueType = typeof modelVal[0]\n if (firstValueType === 'number' && typeof propValue === 'string') {\n return Number(propValue)\n }\n if (firstValueType === 'string' && typeof propValue === 'number') {\n return String(propValue)\n }\n }\n\n if (!Array.isArray(modelVal)) {\n const parentType = typeof modelVal\n if (parentType === 'number' && typeof propValue === 'string') {\n return Number(propValue)\n }\n if (parentType === 'string' && typeof propValue === 'number') {\n return String(propValue)\n }\n }\n\n return propValue\n})\n\nconst computedLabel = computed(() => props.label)\n</script>\n\n<style scoped lang=\"scss\">\n</style>\n","<template>\n <el-select\n ref=\"selectRef\"\n :multiple=\"multiple\"\n :model-value=\"computedLocalValue\"\n @update:model-value=\"handleLocalUpdate\"\n @change=\"handleChange\"\n v-bind=\"$attrs\"\n :clearable=\"clearable\"\n :filterable=\"filterable\"\n :placeholder=\"placeholder\"\n :size=\"size\"\n :style=\"{\n width: width\n }\"\n >\n <slot></slot>\n </el-select>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, provide, type Ref } from 'vue'\n\nconst props = defineProps({\n modelValue: {\n type: [String, Number, Array] as any,\n default: undefined,\n },\n width: {\n type: [String, Number] as any,\n default: '100%',\n },\n multiple: {\n type: Boolean,\n default: false,\n },\n typeConvert: {\n type: Boolean,\n default: true,\n },\n separator: {\n type: String,\n default: '',\n },\n targetType: {\n type: String as () => 'string' | 'number' | 'auto',\n default: 'auto',\n validator: (value: string) => ['string', 'number', 'auto'].includes(value),\n },\n clearable: {\n type: Boolean,\n default: true,\n },\n filterable: {\n type: Boolean,\n default: true,\n },\n placeholder: {\n type: String,\n default: undefined,\n },\n size: {\n type: String,\n default: 'default',\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: any): void\n (e: 'change', value: any): void\n}>()\n\nconst selectRef = ref()\nconst localValue = ref(props.modelValue)\nconst modelValueRef: Ref<any> = ref(null)\n\nprovide('elSelectModelValue', modelValueRef)\n\nconst computedLocalValue = computed(() => {\n const val = localValue.value\n\n if (!props.typeConvert || val === null || val === undefined) {\n return val\n }\n\n if (props.multiple && props.separator) {\n if (typeof val === 'string' && val.includes(props.separator)) {\n const values = val.split(props.separator)\n if (props.targetType === 'number') {\n return values.map((v: string) => Number(v))\n }\n return values\n }\n if (Array.isArray(val)) {\n return val\n }\n if (val === '' || val === null || val === undefined) {\n return []\n }\n return [val]\n }\n\n return val\n})\n\nwatch(() => props.modelValue, (newVal) => {\n localValue.value = newVal\n})\n\nwatch(computedLocalValue, (newVal) => {\n modelValueRef.value = newVal\n}, { immediate: true })\n\nfunction handleLocalUpdate(val: any) {\n localValue.value = val\n\n if (props.multiple && props.separator) {\n const arr = Array.isArray(val) ? val : [val]\n emit('update:modelValue', arr.join(props.separator))\n } else {\n emit('update:modelValue', val)\n }\n}\n\nfunction handleChange(val: any) {\n emit('change', val)\n}\n\ndefineExpose({\n selectRef,\n})\n</script>\n\n<style scoped lang=\"scss\">\n</style>\n","<template>\n <div class=\"x-pagination\">\n <el-pagination\n :current-page=\"internalCurrentPage\"\n :page-size=\"internalPageSize\"\n :total=\"total\"\n :page-sizes=\"pageSizes\"\n :layout=\"pagerLayout\"\n @current-change=\"handleCurrentChange\"\n @size-change=\"handleSizeChange\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch } from 'vue'\n\nconst props = defineProps({\n currentPage: {\n type: Number,\n default: 1,\n },\n pageSize: {\n type: Number,\n default: 20,\n },\n total: {\n type: Number,\n default: 0,\n },\n pageSizes: {\n type: Array as () => number[],\n default: () => [20, 50, 100, 200, 500, 1000],\n },\n layouts: {\n type: Array as () => string[],\n default: () => ['total', 'sizes', 'prev', 'pager', 'next', 'jumper'],\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update-page', page: number, size: number): void\n}>()\n\nconst internalCurrentPage = ref(props.currentPage)\nconst internalPageSize = ref(props.pageSize)\n\nconst pagerLayout = computed(() => {\n if (!props.layouts || !Array.isArray(props.layouts)) {\n return 'total, sizes, prev, pager, next, jumper'\n }\n return props.layouts.map(item => {\n if (typeof item === 'string') {\n return item.toLowerCase()\n }\n return item\n }).join(', ')\n})\n\nwatch(() => props.currentPage, (val) => {\n internalCurrentPage.value = val\n})\n\nwatch(() => props.pageSize, (val) => {\n internalPageSize.value = val\n})\n\nfunction handleCurrentChange(page: number) {\n internalCurrentPage.value = page\n emit('update-page', internalCurrentPage.value, internalPageSize.value)\n}\n\nfunction handleSizeChange(size: number) {\n internalPageSize.value = size\n internalCurrentPage.value = 1\n emit('update-page', internalCurrentPage.value, internalPageSize.value)\n}\n</script>\n\n<style lang=\"scss\" scoped>\n:deep(.el-pagination) {\n display: flex;\n align-items: center;\n height: 44px;\n border: 1px solid #EAEFFE;\n justify-content: flex-end;\n padding: 0 16px 0 0;\n}\n</style>\n","<template>\n <div :class=\"{'x-vxe-table-bg':isShowBg}\" class=\"x-vxe-table\" :style=\"{ height: `calc(100vh - ${subHeight})` }\">\n <vxe-toolbar\n v-if=\"showToolbar\"\n ref=\"xToolbarRef\"\n class=\"x-vxe-toolbar\"\n :refresh=\"{ query: getList }\"\n perfect\n export\n print\n custom\n >\n <template #buttons>\n <slot name=\"buttons\"></slot>\n </template>\n </vxe-toolbar>\n <div :style=\"{height: calcHeight}\">\n <vxe-table\n ref=\"vxeTableRef\"\n :print-config=\"{}\"\n :export-config=\"{\n type: 'xlsx',\n types: ['xlsx', 'csv', 'html', 'xml', 'txt'],\n }\"\n :data=\"showFooter && footerData.length < 1 ? tableData.slice(0, -1) : tableData\"\n border\n :size=\"size\"\n :stripe=\"stripe\"\n height=\"100%\"\n align=\"center\"\n resizable\n :max-height=\"maxHeight\"\n :show-header=\"showHeader\"\n :show-overflow=\"showOverflow === true ? 'title' : showOverflow\"\n :custom-config=\"{}\"\n :header-cell-class-name=\"headerCellClassName\"\n :cell-class-name=\"cellClassName\"\n :row-class-name=\"rowClassName\"\n :show-footer=\"showFooter\"\n :footer-cell-class-name=\"footerCellClassName\"\n :sort-config=\"sortConfig\"\n :filter-config=\"filterConfig\"\n :checkbox-config=\"checkboxConfig\"\n :radio-config=\"radioConfig\"\n :proxy-config=\"proxyConfig\"\n :loading=\"loading\"\n :empty-text=\"emptyText\"\n :footer-method=\"internalFooterMethod\"\n @checkbox-change=\"handleCheckboxChange\"\n @checkbox-all=\"handleCheckboxChange\"\n @radio-change=\"handleRadioChange\"\n @sort-change=\"handleSortChange\"\n @current-change=\"handleCurrentChange\"\n @edit-closed=\"handleEditClosed\"\n @edit-actived=\"handleEditActived\"\n >\n <vxe-column\n v-if=\"isCheckbox\"\n type=\"checkbox\"\n width=\"55\"\n fixed=\"left\"\n >\n </vxe-column>\n <!-- 序号列 -->\n <vxe-column v-if=\"showIndex\" type=\"seq\" fixed=\"left\" title=\"序号\" width=\"60\"></vxe-column>\n <!-- 动态列配置 -->\n <vxe-column\n v-for=\"(col, index) in columns\"\n :key=\"col.field || index\"\n v-bind=\"col\"\n >\n <template v-if=\"col.slots && col.slots.default\" #default=\"slotData\">\n <slot :name=\"col.slots.default\" v-bind=\"slotData\"></slot>\n </template>\n <template v-if=\"col.slots && col.slots.header\" #header=\"slotData\">\n <slot :name=\"col.slots.header\" v-bind=\"slotData\"></slot>\n </template>\n </vxe-column>\n <!-- 支持自定义插槽 -->\n <slot></slot>\n </vxe-table>\n <!-- 分页组件 -->\n <x-pagination\n v-if=\"showPagination\"\n class=\"x-pagination\"\n @update-page=\"handlePageChange\"\n :page-size=\"pageSize\"\n :current-page=\"internalCurrentPage\"\n :total=\"total\"/>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch } from 'vue'\nimport XPagination from './XPagination.vue'\n\nconst props = defineProps({\n tableData: { type: Array as () => any[], default: () => [] },\n isShowBg: { type: Boolean, default: true },\n size: { type: String, default: 'medium' },\n stripe: { type: Boolean, default: false },\n subHeight: { type: String, default: '200px' },\n maxHeight: { type: [Number, String] as any, default: null },\n showHeader: { type: Boolean, default: true },\n showOverflow: { type: Boolean, default: true },\n headerCellClassName: { type: [String, Function] as any, default: '' },\n cellClassName: { type: [String, Function] as any, default: '' },\n rowClassName: { type: [String, Function] as any, default: '' },\n isCheckbox: { type: Boolean, default: false },\n showFooter: { type: Boolean, default: false },\n showFooterText: { type: String, default: '' },\n footerMethod: { type: Function, default: null },\n footerCellClassName: { type: [String, Function] as any, default: '' },\n sortConfig: { type: Object, default: () => ({}) },\n filterConfig: { type: Object, default: () => ({}) },\n checkboxConfig: { type: Object, default: () => ({}) },\n radioConfig: { type: Object, default: () => ({}) },\n proxyConfig: { type: Object, default: null as any },\n loading: { type: Boolean, default: false },\n emptyText: { type: String, default: '暂无数据' },\n showIndex: { type: Boolean, default: true },\n showPagination: { type: Boolean, default: true },\n pageSize: { type: Number, default: 20 },\n currentPage: { type: Number, default: 1 },\n total: { type: Number, default: 0 },\n footerData: { type: Array as () => any[], default: () => [] },\n showToolbar: { type: Boolean, default: true },\n subToolbarHeight: { type: Number, default: 46 },\n subPaginationHeight: { type: Number, default: 46 },\n columns: { type: Array as () => any[], default: () => [] },\n})\n\nconst emit = defineEmits<{\n (e: 'checkbox-change', records: any[]): void\n (e: 'radio-change', params: any): void\n (e: 'sort-change', params: any): void\n (e: 'current-change', params: any): void\n (e: 'edit-closed', params: any): void\n (e: 'edit-actived', params: any): void\n (e: 'change-page', page: number, size: number): void\n}>()\n\nconst vxeTableRef = ref()\nconst xToolbarRef = ref()\nconst internalCurrentPage = ref(props.currentPage)\nconst internalPageSize = ref(props.pageSize)\n\nconst calcHeight = computed(() => {\n const baseHeight = props.isShowBg ? 19 : 0\n const toolbarHeight = props.showToolbar ? props.subToolbarHeight : 0\n const paginationHeight = props.showPagination ? props.subPaginationHeight : 0\n const totalHeight = baseHeight + toolbarHeight + paginationHeight\n return `calc(100% - ${totalHeight}px)`\n})\n\nwatch(() => props.currentPage, (val) => {\n internalCurrentPage.value = val\n})\n\nwatch(() => props.pageSize, (val) => {\n internalPageSize.value = val\n})\n\nfunction getTableInstance() {\n return vxeTableRef.value\n}\n\nfunction getList() {\n handlePageChange(1, props.pageSize)\n}\n\nfunction handleCheckboxChange({ records }: { records: any[] }) {\n emit('checkbox-change', records)\n}\n\nfunction getCheckboxRecords() {\n return vxeTableRef.value?.getCheckboxRecords()\n}\n\nfunction setCheckboxRow(row: any, checked: boolean) {\n vxeTableRef.value?.setCheckboxRow(row, checked)\n}\n\nfunction toggleCheckboxRow(row: any) {\n vxeTableRef.value?.toggleCheckboxRow(row)\n}\n\nfunction clearCheckbox() {\n vxeTableRef.value?.clearCheckbox()\n}\n\nfunction handleRadioChange(params: any) {\n emit('radio-change', params)\n}\n\nfunction handleSortChange(params: any) {\n emit('sort-change', params)\n}\n\nfunction handleCurrentChange(params: any) {\n emit('current-change', params)\n}\n\nfunction handleEditClosed(params: any) {\n emit('edit-closed', params)\n}\n\nfunction handleEditActived(params: any) {\n emit('edit-actived', params)\n}\n\nfunction handlePageChange(page: number, size: number) {\n internalCurrentPage.value = page\n internalPageSize.value = size\n emit('change-page', internalCurrentPage.value, internalPageSize.value)\n}\n\nfunction clearSort() {\n vxeTableRef.value?.clearSort()\n}\n\nfunction scrollTo(row: any) {\n vxeTableRef.value?.scrollTo(row)\n}\n\nfunction setCurrentRow(row: any) {\n vxeTableRef.value?.setCurrentRow(row)\n}\n\nfunction internalFooterMethod({ columns }: { columns: any[] }) {\n if (props.footerData.length > 0) {\n return props.footerData\n }\n const data = props.tableData\n if (data && data.length > 0) {\n const lastRow = data[data.length - 1]\n const footerRow = columns.map((column: any, index: number) => {\n if (index === 0) {\n return props.showFooterText ? props.showFooterText : '合计'\n }\n if (column.property) {\n return lastRow[column.property] || ''\n }\n return ''\n })\n return [footerRow]\n }\n return []\n}\n\ndefineExpose({\n getTableInstance,\n getCheckboxRecords,\n setCheckboxRow,\n toggleCheckboxRow,\n clearCheckbox,\n clearSort,\n scrollTo,\n setCurrentRow,\n vxeTableRef,\n})\n</script>\n\n<style lang=\"scss\" scoped>\n:deep(.vxe-toolbar.is--perfect) {\n background-color: #FFFFFF !important;\n border: none !important;\n}\n.x-vxe-toolbar {\n padding-left: 12px;\n padding-right: 12px;\n}\n.x-vxe-table {\n position: relative;\n}\n.x-vxe-table-bg {\n background: #FFFFFF;\n border-radius: 4px;\n padding: 0 20px;\n}\n:deep(.vxe-table--footer-wrapper) {\n background: #FFF0E6 !important;\n}\n</style>\n","<template>\n <div class=\"x-report-table\">\n <!-- 报表标题和操作按钮 -->\n <div class=\"report-header\">\n <h2 class=\"report-title\">{{ displayTitle }}</h2>\n <div class=\"report-actions\">\n <!-- 自定义按钮列表 -->\n <div\n v-for=\"(btn, index) in customButtons\"\n :key=\"index\"\n class=\"action-item report-cursor-pointer\"\n @click=\"handleCustomBtn(index, btn)\"\n >\n <span class=\"report-text-primary\">{{ btn }}</span>\n </div>\n <!-- 打印按钮 -->\n <div v-if=\"showPrint\" class=\"action-item report-cursor-pointer\" @click=\"printReport(1)\">\n <span class=\"report-text-primary\">{{printText}}</span>\n </div>\n <!-- 打印按钮2 -->\n <div v-if=\"printText1\" class=\"action-item report-cursor-pointer\" @click=\"printReport(2)\">\n <span class=\"report-text-primary\">{{printText1}}</span>\n </div>\n <!-- 导出按钮 -->\n <div v-if=\"showExport\" class=\"action-item report-cursor-pointer\" @click=\"handleExport\">\n <span class=\"report-text-primary\">导出</span>\n </div>\n </div>\n </div>\n\n <!-- 页头信息 -->\n <div class=\"report-info report-pb-12\" ref=\"reportHeaderRef\">\n <div class=\"report-flex report-justify-between\">\n <div>\n <span class=\"\">制表单位:</span>\n <span class=\"\">{{ organizationNameDisplay }}</span>\n </div>\n <div>\n <span class=\"\">日期范围:</span>\n <span class=\"\">{{ dateRangeDisplay }}</span>\n </div>\n <div v-if=\"customHeader1Label\">\n <span class=\"\">{{ customHeader1Label }}:</span>\n <span class=\"\">{{ customHeader1 || ''}}</span>\n </div>\n <div v-if=\"customHeader2Label\">\n <span class=\"\">{{ customHeader2Label }}:</span>\n <span class=\"\">{{ customHeader2 || '' }}</span>\n </div>\n <div>\n <span class=\"\">{{ customHeader3Label }}{{customHeader3Label ? ':':''}}</span>\n <span class=\"\">{{ customHeader3 || '' }}</span>\n </div>\n </div>\n </div>\n\n <!-- 表格主体 -->\n <div class=\"report-body\">\n <x-vxe-table\n ref=\"repVxeTableRef\"\n :table-data=\"tableData\"\n :sub-height=\"subHeight\"\n :show-toolbar=\"showToolbar\"\n :show-pagination=\"showPagination\"\n :loading=\"loading\"\n :is-show-bg=\"false\"\n :page-size=\"pageSize\"\n :current-page=\"currentPage\"\n :total=\"total\"\n :show-footer=\"showFooter\"\n :footer-data=\"footerData\"\n :columns=\"columns\"\n @change-page=\"handlePageChange\"\n >\n <template #buttons>\n <slot name=\"buttons\"></slot>\n </template>\n <slot></slot>\n </x-vxe-table>\n </div>\n\n <!-- 页尾信息 -->\n <div class=\"report-info report-pt-12\" ref=\"reportFooterRef\">\n <div class=\"report-flex report-justify-between\">\n <div>\n <span class=\"\">审核人员:</span>\n <span class=\"\">{{ auditorName || '' }}</span>\n </div>\n <div>\n <span class=\"\">制表人员:</span>\n <span class=\"\">{{ creatorNameDisplay }}</span>\n </div>\n <div v-if=\"customFooterFieldLabel\">\n <span class=\"\">{{ customFooterFieldLabel }}:</span>\n <span class=\"\">{{ customFooterField || '' }}</span>\n </div>\n <div>\n <span class=\"\">打印日期:</span>\n <span class=\"\">{{ formattedPrintDate }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, getCurrentInstance } from 'vue'\nimport XVxeTable from './XVxeTable.vue'\nimport { ElMessage } from 'element-plus'\n\nconst props = defineProps({\n tableData: { type: Array as () => any[], default: () => [] },\n columns: { type: Array as () => any[], default: () => [] },\n showFooter: { type: Boolean, default: false },\n reportTitle: { type: String, default: '' },\n organizationName: { type: String, default: '' },\n dateRange: { type: [String, Array] as any, default: '' },\n customHeader1: { type: String, default: '' },\n customHeader1Label: { type: String, default: '' },\n customHeader2: { type: String, default: '' },\n customHeader2Label: { type: String, default: '' },\n customHeader3: { type: String, default: '' },\n customHeader3Label: { type: String, default: '' },\n auditorName: { type: String, default: '' },\n creatorName: { type: String, default: '' },\n customFooterField: { type: String, default: '' },\n customFooterFieldLabel: { type: String, default: '' },\n printDate: { type: String, default: '' },\n showPrint: { type: Boolean, default: true },\n showExport: { type: Boolean, default: true },\n subHeight: { type: String, default: '343px' },\n showToolbar: { type: Boolean, default: false },\n showPagination: { type: Boolean, default: true },\n pageSize: { type: Number, default: 20 },\n total: { type: Number, default: 0 },\n footerData: { type: Array as () => any[], default: () => [] },\n currentPage: { type: Number, default: 1 },\n loading: { type: Boolean, default: false },\n printCallback: { type: Boolean, default: false },\n exportCallback: { type: Boolean, default: false },\n printText: { type: String, default: '打印' },\n printText1: { type: String, default: '' },\n customButtons: { type: Array as () => string[], default: () => [] },\n})\n\nconst emit = defineEmits<{\n (e: 'change-page', page: number, size: number): void\n (e: 'customBtn', index: number, btn: string): void\n (e: 'printReport', type: number): void\n (e: 'export'): void\n}>()\n\nconst instance = getCurrentInstance()\nconst repVxeTableRef = ref()\nconst reportHeaderRef = ref()\nconst reportFooterRef = ref()\n\nconst organizationNameDisplay = computed(() => {\n if (props.organizationName) return props.organizationName\n const store = (instance?.appContext?.config?.globalProperties?.$store as any)\n if (store?.getters?.tenantInfo?.tenantName) {\n return store.getters.tenantInfo.tenantName\n }\n return ''\n})\n\nconst displayTitle = computed(() => {\n if (props.reportTitle) return props.reportTitle\n const route = (instance?.appContext?.config?.globalProperties?.$route as any)\n if (route?.meta?.title) return route.meta.title\n return ''\n})\n\nconst creatorNameDisplay = computed(() => {\n if (props.creatorName) return props.creatorName\n const store = (instance?.appContext?.config?.globalProperties?.$store as any)\n if (store?.getters?.name) return store.getters.name\n return ''\n})\n\nconst formattedPrintDate = computed(() => {\n if (props.printDate) return props.printDate\n const now = new Date()\n const year = now.getFullYear()\n const month = String(now.getMonth() + 1).padStart(2, '0')\n const day = String(now.getDate()).padStart(2, '0')\n return `${year}-${month}-${day}`\n})\n\nconst dateRangeDisplay = computed(() => {\n if (!props.dateRange) return ''\n if (Array.isArray(props.dateRange)) {\n return props.dateRange[0] + '至' + props.dateRange[1]\n }\n return props.dateRange\n})\n\nfunction handlePageChange(page: number, size: number) {\n emit('change-page', page, size)\n}\n\nfunction handleCustomBtn(index: number, btn: string) {\n emit('customBtn', index, btn)\n}\n\nfunction printReport(type: number) {\n if (type === 2) {\n emit('printReport', type)\n } else if (props.printCallback) {\n emit('printReport', type)\n } else {\n handlePrint()\n }\n}\n\nfunction getTableInstance() {\n if (repVxeTableRef.value) {\n return repVxeTableRef.value.vxeTableRef\n }\n return null\n}\n\nfunction handlePrint(printData?: any[]) {\n const tableEl = getTableInstance()\n if (!tableEl) {\n console.error('VXE Table instance not found')\n ElMessage.error('表格组件未加载完成,请稍后再试')\n return\n }\n\n const headerEl = reportHeaderRef.value\n const footerEl = reportFooterRef.value\n\n if (!headerEl || !footerEl) {\n console.error('Report header or footer element not found')\n ElMessage.error('报表元素未加载完成,请稍后再试')\n return\n }\n\n const headerHtml = headerEl.innerHTML\n const footerHtml = footerEl.innerHTML\n\n if (typeof tableEl.print === 'function') {\n tableEl.print({\n sheetName: props.reportTitle || '报表',\n data: printData || props.tableData,\n style: `\n table td, table th {\n border: 1px solid #000!important;\n }\n .table-head{\n text-align: center;\n font-size: 20px;\n line-height: 40px;\n font-weight: bold;\n }\n .table-head-2{\n width: 33%;\n }\n .table-head-1{\n display: flex;\n line-height: 25px;\n }\n .btn-print{\n text-align: center;\n margin-top: 10px;\n }\n .report-info {\n font-weight: 400;\n font-size: 14px;\n color: #333333;\n line-height: 22px;\n }\n .report-flex {\n display: flex;\n }\n .report-justify-between {\n justify-content: space-between;\n }\n .report-pb-12 {\n padding-bottom: 12px;\n }\n .report-pt-12 {\n padding-top: 12px;\n }`,\n beforePrintMethod: ({ content }: { content: string }) => {\n if (displayTitle.value) {\n return `<div class=\"table-head\">${displayTitle.value}</div>` + headerHtml + content + footerHtml\n }\n return headerHtml + content + footerHtml\n },\n })\n } else {\n console.error('VXE Table print method not found')\n ElMessage.error('打印功能暂不可用')\n }\n}\n\nfunction handleExport() {\n if (props.exportCallback) {\n emit('export')\n } else {\n const tableInstance = getTableInstance()\n if (tableInstance) {\n tableInstance.exportData({\n filename: `${displayTitle.value}`,\n sheetName: 'Sheet1',\n type: 'xlsx',\n })\n }\n }\n}\n\nfunction clearCheckbox() {\n repVxeTableRef.value?.clearCheckbox()\n}\n\nfunction clearSort() {\n repVxeTableRef.value?.clearSort()\n}\n\ndefineExpose({\n clearCheckbox,\n clearSort,\n handlePrint,\n getTableInstance,\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.x-report-table {\n background: #FFFFFF;\n box-shadow: 0px 0px 6px 0px rgba(0,0,0,0.1);\n border-radius: 4px;\n backdrop-filter: blur(2px);\n padding: 20px;\n\n .report-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 12px;\n\n .report-title {\n margin: 0;\n font-size: 20px;\n font-weight: bold;\n color: #303133;\n text-align: center;\n flex: 1;\n }\n\n .report-actions {\n display: flex;\n gap: 20px;\n font-weight: 400;\n font-size: 14px;\n color: #333333;\n line-height: 22px;\n\n .action-item {\n display: flex;\n align-items: center;\n }\n }\n }\n}\n.report-info {\n font-weight: 400;\n font-size: 14px;\n color: #333333;\n line-height: 22px;\n}\n.report-pb-12 {\n padding-bottom: 12px;\n}\n.report-pt-12 {\n padding-top: 12px;\n}\n.report-flex {\n display: flex;\n}\n.report-justify-between {\n justify-content: space-between;\n}\n.report-cursor-pointer {\n cursor: pointer;\n}\n.report-text-primary {\n color: #409EFF;\n}\n.table-head {\n text-align: center;\n font-size: 20px;\n line-height: 40px;\n font-weight: bold;\n}\n</style>\n","<template>\n <div class=\"search\" :style=\"{ paddingBottom: paddingBottom }\">\n <div v-if=\"showSearch\" class=\"search-top\">\n <div class=\"search-top__inner\">\n <div class=\"search-top__row\">\n <span v-if=\"showInput\" class=\"search-top__label\">快捷搜索 </span>\n <div v-if=\"showInput\" class=\"search-top-input\">\n <el-input type=\"text\" @keyup.enter=\"searchParentList\" v-model=\"combinedQueries\"\n :placeholder=\"placeholder\"\n clearable\n >\n <template #prefix>\n <svg-icon icon-class=\"search\" class-name=\"svg-icon-22\"></svg-icon>\n </template>\n </el-input>\n </div>\n <div v-if=\"showMoreBottom\" class=\"search-top-filter\" @click=\"showMore = !showMore\">\n <svg-icon icon-class=\"filter\" class-name=\"svg-icon-22 filter-icon\"></svg-icon>\n <span class=\"btn_more\">更多</span>\n </div>\n <div :class=\"{'search-top-extra--ml': showInput}\" class=\"search-top-extra\">\n <slot></slot>\n <div v-if=\"slots.text1\" class=\"search-top-extra-item\">\n <span v-if=\"text1\" class=\"search-top-extra-label\">{{text1}}:</span>\n <div class=\"search-top-extra-content\">\n <slot name=\"text1\"></slot>\n </div>\n </div>\n <div v-if=\"slots.text2\" class=\"search-top-extra-item\">\n <span v-if=\"text2\" class=\"search-top-extra-label\">{{text2}}:</span>\n <div class=\"search-top-extra-content\">\n <slot name=\"text2\"></slot>\n </div>\n </div>\n <div v-if=\"slots.text3\" class=\"search-top-extra-item\">\n <span v-if=\"text3\" class=\"search-top-extra-label\">{{text3}}:</span>\n <div class=\"search-top-extra-content\">\n <slot name=\"text3\"></slot>\n </div>\n </div>\n </div>\n </div>\n <div class=\"search-top__actions\">\n <el-button plain @click=\"reset\">重 置</el-button>\n <el-button type=\"primary\" @click=\"searchParentList\">查 询</el-button>\n </div>\n </div>\n </div>\n <div :class=\"{'show_search': showSearch}\" class=\"search-form\" v-show=\"showMore || !showSearch\">\n <div class=\"search-form__inner\" :style=\"formContainerStyle\">\n <x-el-form\n v-if=\"hasFormSlot\"\n :rules=\"rules\"\n :model=\"queryForm\"\n ref=\"queryFormRef\"\n :span=\"vxeFormSpan\"\n :label-width=\"titleWidth\"\n >\n <slot name=\"form\"></slot>\n <x-el-form-item v-if=\"!showSearch\" label=\"\" :span=\"buttonItemSpan\">\n <div class=\"search-form__buttons\">\n <el-button plain @click=\"reset\">重 置</el-button>\n <el-button type=\"primary\" @click=\"searchParentList\">查 询</el-button>\n </div>\n </x-el-form-item>\n </x-el-form>\n\n <x-el-form\n v-if=\"hasDynamicFields\"\n :rules=\"dynamicRules\"\n :model=\"queryForm\"\n ref=\"dynamicFormRef\"\n :span=\"vxeFormSpan\"\n :label-width=\"titleWidth\"\n label-position=\"top\"\n >\n <x-el-form-item\n v-for=\"item in parsedSearchList\"\n :key=\"item.fieldJavaName\"\n :label=\"item.fieldName\"\n :prop=\"item.fieldJavaName\"\n >\n <component\n :is=\"resolveComponent(item.fieldType)\"\n v-model=\"queryForm[item.fieldJavaName]\"\n v-bind=\"item.attribute\"\n :options=\"shouldBindOptions(item) ? (selectOptions[item.fieldJavaName] || []) : undefined\"\n >\n <template v-if=\"item.fieldType === 'el-select'\">\n <el-option\n v-for=\"(option, idx) in (selectOptions[item.fieldJavaName] || [])\"\n :key=\"idx\"\n :label=\"option[item.dictKey?.label || 'label']\"\n :value=\"option[item.dictKey?.value || 'value']\"\n />\n </template>\n </component>\n </x-el-form-item>\n <x-el-form-item v-if=\"!showSearch\" label=\"\" :span=\"buttonItemSpan\">\n <div class=\"search-form__buttons\">\n <el-button plain @click=\"reset\">重 置</el-button>\n <el-button type=\"primary\" @click=\"searchParentList\">查 询</el-button>\n </div>\n </x-el-form-item>\n </x-el-form>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, useSlots, nextTick, onMounted, type Component } from 'vue'\nimport { ElInput, ElSelect, ElOption, ElDatePicker, ElCascader } from 'element-plus'\nimport SvgIcon from './SvgIcon.vue'\nimport XElForm from './XElForm.vue'\nimport XElFormItem from './XElFormItem.vue'\n\nexport interface SearchListDictKey {\n type?: string\n key?: string\n url?: string\n label?: string\n value?: string\n default?: string\n defaultValue?: any\n 'value-format'?: string\n}\n\nexport interface SearchListItem {\n fieldType: string\n fieldJavaName: string\n fieldName: string\n attribute?: Record<string, any>\n dictKey?: SearchListDictKey\n}\n\nconst props = defineProps({\n modelValue: {\n type: [String, Number] as any,\n default: undefined,\n },\n placeholder: {\n type: String,\n default: '请输入搜索关键词',\n },\n queryForm: {\n type: Object,\n required: true,\n default: () => ({}),\n },\n rules: {\n type: Object,\n default: () => ({}),\n },\n titleWidth: {\n type: String,\n default: '100px',\n },\n columns: {\n type: Number,\n default: 4,\n },\n paddingBottom: {\n type: String,\n default: '16px',\n },\n showInput: {\n type: Boolean,\n default: true,\n },\n showMoreBottom: {\n type: Boolean,\n default: true,\n },\n showSearch: {\n type: Boolean,\n default: true,\n },\n text1: {\n type: String,\n default: '',\n },\n text2: {\n type: String,\n default: '',\n },\n text3: {\n type: String,\n default: '',\n },\n searchList: {\n type: Array as () => any[],\n default: () => [],\n },\n selectOptions: {\n type: Object as () => Record<string, any[]>,\n default: () => ({}),\n },\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: any): void\n (e: 'update:queryForm', value: any): void\n (e: 'list-update', type: number): void\n (e: 'data-reset'): void\n}>()\n\nconst slots = useSlots()\nconst showMore = ref(false)\nconst queryFormRef = ref()\nconst dynamicFormRef = ref()\n\nconst componentMap: Record<string, Component> = {\n 'el-input': ElInput,\n 'el-select': ElSelect,\n 'el-date-picker': ElDatePicker,\n 'el-cascader': ElCascader,\n}\n\nconst combinedQueries = computed({\n get() {\n if (props.modelValue !== undefined && props.modelValue !== null) {\n return props.modelValue\n }\n return props.queryForm.combinedQueries || ''\n },\n set(val: any) {\n if (props.modelValue !== undefined && props.modelValue !== null) {\n emit('update:modelValue', val)\n } else {\n props.queryForm.combinedQueries = val\n }\n },\n})\n\nconst hasFormSlot = computed(() => !!slots.form)\nconst hasDynamicFields = computed(() => parsedSearchList.value.length > 0)\n\nconst vxeFormSpan = computed(() => Math.floor(24 / props.columns))\n\nconst formContainerStyle = computed(() => ({\n '--form-columns': props.columns,\n}))\n\nconst buttonItemSpan = computed(() => {\n return 24\n})\n\nconst parsedSearchList = computed(() => {\n return (props.searchList || []).map(item => {\n let attribute: Record<string, any> = {}\n if (typeof (item as any).attribute === 'string') {\n try { attribute = JSON.parse((item as any).attribute) } catch { attribute = {} }\n } else if (item.attribute && typeof item.attribute === 'object') {\n attribute = item.attribute\n }\n let dictKey: SearchListDictKey = {}\n if (typeof (item as any).dictKey === 'string') {\n try { dictKey = JSON.parse((item as any).dictKey) } catch { dictKey = {} }\n } else if (item.dictKey && typeof item.dictKey === 'object') {\n dictKey = item.dictKey\n }\n return { ...item, attribute, dictKey } as SearchListItem\n })\n})\n\nconst dynamicRules = computed(() => {\n const result: Record<string, any> = {}\n parsedSearchList.value.forEach(item => {\n if (item.attribute?.required) {\n result[item.fieldJavaName] = [\n { required: true, message: `请输入${item.fieldName}`, trigger: 'blur' }\n ]\n }\n })\n return result\n})\n\nfunction resolveComponent(fieldType: string): Component {\n return componentMap[fieldType] || ElInput\n}\n\nfunction shouldBindOptions(item: SearchListItem): boolean {\n return item.fieldType === 'el-cascader'\n}\n\nfunction initDefaultValues() {\n if (!parsedSearchList.value.length) return\n parsedSearchList.value.forEach(item => {\n const dk = item.dictKey\n if (!dk || !dk.default) return\n if (dk.default === '1') {\n props.queryForm[item.fieldJavaName] = dk.defaultValue\n } else if (dk.default === '2') {\n const now = new Date()\n if (dk.defaultValue === 1) {\n const firstDay = new Date(now.getFullYear(), now.getMonth(), 1)\n props.queryForm[item.fieldJavaName] = formatDate(firstDay)\n } else {\n props.queryForm[item.fieldJavaName] = formatDate(now)\n }\n }\n })\n}\n\nfunction formatDate(date: Date): string {\n const y = date.getFullYear()\n const m = String(date.getMonth() + 1).padStart(2, '0')\n const d = String(date.getDate()).padStart(2, '0')\n return `${y}-${m}-${d}`\n}\n\nfunction reset() {\n combinedQueries.value = ''\n\n if (props.modelValue !== undefined && props.modelValue !== null) {\n emit('update:modelValue', '')\n }\n\n if (hasFormSlot.value && queryFormRef.value && typeof queryFormRef.value.resetFields === 'function') {\n nextTick(() => {\n queryFormRef.value.resetFields()\n })\n }\n\n if (hasDynamicFields.value && dynamicFormRef.value && typeof dynamicFormRef.value.resetFields === 'function') {\n nextTick(() => {\n dynamicFormRef.value.resetFields()\n })\n }\n\n if (props.queryForm && Object.keys(props.queryForm).length > 0) {\n const emptyForm: Record<string, any> = {}\n Object.keys(props.queryForm).forEach(key => {\n const value = props.queryForm[key]\n if (Array.isArray(value)) {\n emptyForm[key] = []\n } else if (value !== null && typeof value === 'object') {\n emptyForm[key] = {}\n } else {\n emptyForm[key] = ''\n }\n })\n emit('update:queryForm', emptyForm)\n }\n\n showMore.value = false\n emit('data-reset')\n}\n\nfunction searchParentList() {\n if (props.rules && Object.keys(props.rules).length > 0) {\n if (hasFormSlot.value && queryFormRef.value && typeof queryFormRef.value.validate === 'function') {\n return new Promise((resolve, reject) => {\n queryFormRef.value.validate((valid: boolean) => {\n if (valid) {\n showMore.value = false\n emit('list-update', 1)\n resolve(true)\n } else {\n showMore.value = true\n reject(false)\n }\n })\n })\n }\n\n if (hasDynamicFields.value && dynamicFormRef.value && typeof dynamicFormRef.value.validate === 'function') {\n return new Promise((resolve, reject) => {\n dynamicFormRef.value.validate((valid: boolean) => {\n if (valid) {\n showMore.value = false\n emit('list-update', 1)\n resolve(true)\n } else {\n showMore.value = true\n reject(false)\n }\n })\n })\n }\n } else {\n showMore.value = false\n emit('list-update', 1)\n return Promise.resolve(true)\n }\n}\n\nonMounted(() => {\n initDefaultValues()\n})\n\nwatch(() => props.searchList, () => {\n initDefaultValues()\n}, { deep: true })\n\ndefineExpose({\n queryFormRef,\n dynamicFormRef,\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.svg-icon-22 {\n width: 22px;\n height: 22px;\n display: block;\n}\n\n.filter-icon {\n color: #409EFF;\n}\n\n.search-top {\n padding: 12px 16px;\n background: #FFFFFF;\n border: 1px solid #eaf1fa;\n\n &__inner {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n &__row {\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n }\n\n &__label {\n color: #000;\n font-size: 14px;\n line-height: 32px;\n font-weight: 400;\n padding-right: 16px;\n white-space: nowrap;\n flex-shrink: 0;\n }\n\n &__actions {\n flex-shrink: 0;\n margin-left: 16px;\n }\n}\n\n.search-top-input {\n width: 246px;\n height: 32px;\n display: flex;\n align-items: center;\n box-shadow: 0px -1px 8px 0px rgba(0, 105, 255, 0.1);\n flex-shrink: 0;\n}\n\n.search-top-filter {\n display: flex;\n align-items: center;\n height: 32px;\n margin-left: 12px;\n padding: 0 8px;\n cursor: pointer;\n background: #FFFFFF;\n box-shadow: 0px -1px 8px 0px rgba(0, 105, 255, 0.1);\n border-radius: 2px;\n border: 1px solid #EEEEEE;\n flex-shrink: 0;\n}\n\n.search-top-extra {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n min-width: 0;\n\n &--ml {\n margin-left: 20px;\n }\n}\n\n.search-top-extra-item {\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n margin-left: 20px;\n\n &:first-child {\n margin-left: 0;\n }\n}\n\n.search-top-extra-label {\n color: #000;\n font-size: 13px;\n line-height: 32px;\n white-space: nowrap;\n flex-shrink: 0;\n}\n\n.search-top-extra-content {\n display: flex;\n align-items: center;\n min-width: 0;\n}\n\n.btn_more {\n font-weight: 400;\n font-size: 14px;\n color: #666666;\n line-height: 20px;\n}\n\n.search-form {\n background: #FFFFFF;\n border-radius: 2px;\n border: 1px solid #E1EBFA;\n width: 100%;\n z-index: 1000;\n box-shadow: 0px -1px 8px 0px rgba(0, 105, 255, 0.1);\n\n &__inner {\n padding: 16px;\n }\n\n &__buttons {\n display: flex;\n justify-content: flex-end;\n width: 100%;\n }\n}\n\n.show_search {\n position: absolute;\n left: 0;\n top: 58px;\n}\n\n.search {\n position: relative;\n\n :deep(.el-date-editor--datetimerange),\n :deep(.el-date-editor--daterange),\n :deep(.el-date-editor--monthrange),\n :deep(.el-date-editor--yearrange) {\n width: 100% !important;\n }\n\n :deep(.el-input__prefix) {\n display: flex;\n align-items: center;\n }\n\n :deep(.search-top-extra-content > .el-input),\n :deep(.search-top-extra-content > .el-select),\n :deep(.search-top-extra-content > .el-date-editor) {\n display: inline-flex;\n align-items: center;\n }\n\n :deep(.el-button--small) {\n padding: 9px 18px;\n }\n\n :deep(.el-cascader) {\n width: 100%;\n }\n}\n</style>\n","<template>\n <div class=\"x-split-layout\" :style=\"{ height: height }\">\n <!-- 左侧目录 -->\n <div class=\"x-split-layout__sidebar\" :style=\"{ width: sidebarWidth }\">\n <!-- 顶部信息区 -->\n <div v-if=\"showSidebarHeader\" class=\"x-split-layout__sidebar-header\" :style=\"sidebarHeaderContainerStyle\">\n <slot name=\"sidebar-header\">\n <div v-for=\"(item, index) in sidebarHeader\" :key=\"index\" class=\"x-split-layout__header-item\" :style=\"{ marginBottom: index < sidebarHeader.length - 1 ? sidebarHeaderItemGap : '0' }\">\n <span class=\"x-split-layout__header-label\" :style=\"sidebarHeaderLabelStyle\">{{ item.label }}:</span>\n <span class=\"x-split-layout__header-value\" :style=\"sidebarHeaderValueStyle\">{{ item.value }}</span>\n </div>\n </slot>\n </div>\n\n <!-- 目录列表 -->\n <div class=\"x-split-layout__sidebar-menu\">\n <div\n v-for=\"(item, index) in menuItems\"\n :key=\"index\"\n class=\"x-split-layout__menu-item\"\n :class=\"{ 'is-active': activeIndex === index }\"\n @click=\"handleMenuClick(index, item)\"\n >\n <slot name=\"menu-item\" :item=\"item\" :index=\"index\" :active=\"activeIndex === index\">\n <span class=\"x-split-layout__menu-icon\">\n <span class=\"x-split-layout__menu-dot\" :class=\"{ 'is-active-dot': activeIndex === index }\"></span>\n </span>\n <span class=\"x-split-layout__menu-label\">{{ item[menuLabelKey] }}</span>\n </slot>\n <slot name=\"menu-item-right\" :item=\"item\" :index=\"index\" :active=\"activeIndex === index\"></slot>\n </div>\n </div>\n\n <!-- 侧边栏右侧自定义内容 -->\n <slot name=\"sidebar-right\"></slot>\n </div>\n\n <!-- 右侧内容区 -->\n <div class=\"x-split-layout__content\">\n <!-- 内容标题(固定顶部) -->\n <div v-if=\"showContentHeader\" class=\"x-split-layout__content-header\">\n <div class=\"x-split-layout__content-title\">\n <slot name=\"content-title\">\n <span>{{ currentContentTitle }}</span>\n </slot>\n </div>\n </div>\n\n <!-- 内容主体(可滚动) -->\n <div class=\"x-split-layout__content-scroll\" :class=\"contentAlignClass\">\n <div class=\"x-split-layout__content-body\" :style=\"contentMaxWidthStyle\">\n <slot :active-item=\"activeItem\" :active-index=\"activeIndex\"></slot>\n </div>\n </div>\n\n <!-- 底部操作按钮(固定底部) -->\n <div v-if=\"showActions\" class=\"x-split-layout__content-footer\">\n <slot name=\"actions\">\n <el-button @click=\"handleCancel\">取消</el-button>\n <el-button type=\"primary\" @click=\"handleSave\">保存</el-button>\n <el-button v-if=\"customBtnText\" :type=\"customBtnType\" @click=\"handleCustomBtn\">{{ customBtnText }}</el-button>\n </slot>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, useSlots, onMounted } from 'vue'\n\nconst props = defineProps({\n height: { type: String, default: '100%' },\n sidebarWidth: { type: String, default: '240px' },\n menuItems: { type: Array as () => any[], default: () => [] },\n menuLabelKey: { type: String, default: 'label' },\n activeIndex: { type: Number, default: 0 },\n contentAlign: {\n type: String as () => 'center' | 'left' | 'right',\n default: 'center',\n validator: (val: string) => ['center', 'left', 'right'].includes(val),\n },\n contentMaxWidth: { type: String, default: '800px' },\n showContentHeader: { type: Boolean, default: true },\n showActions: { type: Boolean, default: true },\n sidebarHeader: { type: Array as () => any[], default: () => [] },\n showSidebarHeader: { type: Boolean, default: true },\n sidebarHeaderStyle: { type: Object, default: () => ({}) },\n sidebarHeaderLabelStyle: { type: Object, default: () => ({ color: '#409EFF', fontWeight: '500' }) },\n sidebarHeaderValueStyle: { type: Object, default: () => ({ color: '#303133' }) },\n sidebarHeaderItemGap: { type: String, default: '8px' },\n sidebarHeaderPadding: { type: String, default: '16px' },\n sidebarHeaderBorderBottom: { type: String, default: '1px solid #EAEFFE' },\n customBtnText: { type: String, default: '' },\n customBtnType: { type: String, default: 'success' },\n})\n\nconst emit = defineEmits<{\n (e: 'menu-click', index: number, item: any): void\n (e: 'update:activeIndex', index: number): void\n (e: 'cancel'): void\n (e: 'save', data: { index: number; item: any }): void\n (e: 'custom-btn', data: { index: number; item: any }): void\n}>()\n\nconst slots = useSlots()\n\nconst activeIndex = ref(props.activeIndex)\nconst activeItem = ref<any>(null)\n\nconst showSidebarHeader = computed(() => {\n return props.showSidebarHeader && (slots['sidebar-header'] || props.sidebarHeader.length > 0)\n})\n\nconst showContentHeader = computed(() => props.showContentHeader)\nconst showActions = computed(() => props.showActions)\n\nconst currentContentTitle = computed(() => {\n if (activeItem.value && activeItem.value.title) {\n return activeItem.value.title\n }\n return ''\n})\n\nconst contentAlignClass = computed(() => `x-split-layout__content--${props.contentAlign}`)\n\nconst sidebarHeaderContainerStyle = computed(() => ({\n ...props.sidebarHeaderStyle,\n padding: props.sidebarHeaderPadding,\n borderBottom: props.sidebarHeaderBorderBottom,\n}))\n\nconst contentMaxWidthStyle = computed(() => {\n if (props.contentAlign === 'center' || props.contentAlign === 'right') {\n return { maxWidth: props.contentMaxWidth }\n }\n return {}\n})\n\nwatch(() => props.activeIndex, (newVal) => {\n activeIndex.value = newVal\n})\n\nfunction updateActiveItem() {\n if (props.menuItems.length > 0 && activeIndex.value >= 0 && activeIndex.value < props.menuItems.length) {\n activeItem.value = props.menuItems[activeIndex.value]\n }\n}\n\nfunction handleMenuClick(index: number, item: any) {\n activeIndex.value = index\n activeItem.value = item\n emit('menu-click', index, item)\n emit('update:activeIndex', index)\n}\n\nfunction handleCancel() {\n emit('cancel')\n}\n\nfunction handleSave() {\n emit('save', { index: activeIndex.value, item: activeItem.value })\n}\n\nfunction handleCustomBtn() {\n emit('custom-btn', { index: activeIndex.value, item: activeItem.value })\n}\n\nonMounted(() => {\n updateActiveItem()\n})\n</script>\n\n<style lang=\"scss\" scoped>\n.x-split-layout {\n display: flex;\n width: 100%;\n gap: 16px;\n\n &__sidebar {\n flex-shrink: 0;\n border-right: 1px solid #EAEFFE;\n display: flex;\n flex-direction: column;\n background: #FFFFFF;\n position: relative;\n }\n\n &__sidebar-header {\n padding: 16px;\n border-bottom: 1px solid #EAEFFE;\n }\n\n &__header-item {\n margin-bottom: 8px;\n font-size: 13px;\n line-height: 20px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n\n &__header-label {\n color: #909399;\n }\n\n &__header-value {\n color: #303133;\n }\n\n &__sidebar-menu {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n }\n\n &__menu-item {\n display: flex;\n align-items: center;\n padding: 12px 16px;\n cursor: pointer;\n transition: all 0.3s;\n color: #606266;\n font-size: 14px;\n\n &:hover {\n background: #ECF5FF;\n color: #409EFF;\n }\n\n &.is-active {\n background: #ECF5FF;\n color: #409EFF;\n font-weight: 500;\n }\n }\n\n &__menu-icon {\n margin-right: 8px;\n display: flex;\n align-items: center;\n }\n\n &__menu-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: #C0C4CC;\n }\n\n .is-active &__menu-dot {\n background: #409EFF;\n }\n\n &__menu-label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &__content {\n flex: 1;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n background: #FFFFFF;\n }\n\n &__content-header {\n flex-shrink: 0;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n border-bottom: 1px solid #EAEFFE;\n }\n\n &__content-title {\n font-size: 16px;\n font-weight: 500;\n color: #303133;\n }\n\n &__content-scroll {\n flex: 1;\n overflow-y: auto;\n padding: 20px 24px;\n }\n\n &__content--center {\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n &__content--center &__content-body {\n width: 100%;\n }\n\n &__content--left &__content-body {\n width: 100%;\n }\n\n &__content--right &__content-body {\n width: 100%;\n margin-left: auto;\n }\n\n &__content-body {\n border-radius: 4px;\n padding: 20px;\n }\n\n &__content-footer {\n flex-shrink: 0;\n display: flex;\n justify-content: center;\n gap: 8px;\n padding: 12px 24px;\n border-top: 1px solid #EAEFFE;\n background: #FFFFFF;\n }\n}\n</style>\n","<script setup lang=\"ts\">\r\nimport { computed } from 'vue'\r\n\r\nconst props = defineProps({\r\n modelValue: {\r\n type: [Boolean, String, Number],\r\n default: undefined,\r\n },\r\n activeColor: {\r\n type: String,\r\n default: '#67C23A',\r\n },\r\n inactiveColor: {\r\n type: String,\r\n default: undefined,\r\n },\r\n activeText: {\r\n type: String,\r\n default: undefined,\r\n },\r\n inactiveText: {\r\n type: String,\r\n default: undefined,\r\n },\r\n activeValue: {\r\n type: [Boolean, String, Number],\r\n default: true,\r\n },\r\n inactiveValue: {\r\n type: [Boolean, String, Number],\r\n default: false,\r\n },\r\n activeIcon: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n inactiveIcon: {\r\n type: Object,\r\n default: undefined,\r\n },\r\n width: {\r\n type: [String, Number],\r\n default: undefined,\r\n },\r\n size: {\r\n type: String,\r\n default: undefined,\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n inlinePrompt: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n})\r\n\r\nconst emit = defineEmits(['update:modelValue', 'change'])\r\n\r\nconst switchAttrs = computed(() => {\r\n return {\r\n ...props,\r\n 'active-color': props.activeColor,\r\n 'inactive-color': props.inactiveColor,\r\n 'active-text': props.activeText,\r\n 'inactive-text': props.inactiveText,\r\n 'active-value': props.activeValue,\r\n 'inactive-value': props.inactiveValue,\r\n 'active-icon': props.activeIcon,\r\n 'inactive-icon': props.inactiveIcon,\r\n 'inline-prompt': props.inlinePrompt,\r\n }\r\n})\r\n\r\nconst handleChange = (val: any) => {\r\n emit('update:modelValue', val)\r\n emit('change', val)\r\n}\r\n</script>\r\n\r\n<template>\r\n <el-switch\r\n :model-value=\"modelValue\"\r\n v-bind=\"switchAttrs\"\r\n @update:model-value=\"handleChange\"\r\n />\r\n</template>\r\n\r\n<style scoped lang=\"scss\">\r\n</style>\r\n","<script setup lang=\"ts\">\nimport { computed, useSlots } from 'vue'\n\nconst props = defineProps({\n title: {\n type: String,\n default: undefined,\n },\n field: {\n type: String,\n default: undefined,\n },\n width: {\n type: [String, Number] as any,\n default: undefined,\n },\n minWidth: {\n type: [String, Number] as any,\n default: undefined,\n },\n fixed: {\n type: [Boolean, String] as any,\n default: undefined,\n },\n align: {\n type: String,\n default: undefined,\n },\n showOverflowTooltip: {\n type: Boolean,\n default: undefined,\n },\n sortable: {\n type: [Boolean, String] as any,\n default: undefined,\n },\n resizable: {\n type: Boolean,\n default: undefined,\n },\n type: {\n type: String,\n default: undefined,\n },\n cellType: {\n type: String,\n default: undefined,\n },\n formatter: {\n type: [Function, String] as any,\n default: undefined,\n },\n})\n\nconst slots = useSlots()\n\nconst columnAttrs = computed(() => {\n const attrs: Record<string, any> = {}\n\n if (props.title !== undefined) attrs.title = props.title\n if (props.field !== undefined) attrs.field = props.field\n if (props.width !== undefined) attrs.width = props.width\n attrs['min-width'] = props.minWidth || 120\n if (props.fixed !== undefined) attrs.fixed = props.fixed\n if (props.align !== undefined) attrs.align = props.align\n if (props.showOverflowTooltip !== undefined) attrs['show-overflow-tooltip'] = props.showOverflowTooltip\n if (props.sortable !== undefined) attrs.sortable = props.sortable\n if (props.resizable !== undefined) attrs.resizable = props.resizable\n if (props.type !== undefined) attrs.type = props.type\n if (props.cellType !== undefined) attrs['cell-type'] = props.cellType\n if (props.formatter !== undefined) attrs.formatter = props.formatter\n\n return attrs\n})\n</script>\n\n<template>\n <vxe-column v-bind=\"columnAttrs\">\n <template v-for=\"(_, name) in slots\" :key=\"name\" #[name]=\"slotData\">\n <slot :name=\"name\" v-bind=\"slotData || {}\"></slot>\n </template>\n </vxe-column>\n</template>\n\n<style scoped lang=\"scss\">\n:deep(.vxe-cell) {\n background: #fff;\n}\n\n:deep(.vxe-body--row.row--stripe .vxe-cell) {\n background: #EAEFFE;\n}\n</style>\n","// 导入工具函数\nimport * as utils from './utils'\nimport * as directives from './directives'\n\n// 导入样式\nimport './styles/index.scss'\n// x-ui.scss 不在此导入,宿主项目通常已有自己的工具类\n// 如需使用插件的工具类,请在宿主项目中单独引入:\n// import '@xjw_/vue3-npm-system/styles/x-ui.scss'\n\n// 导入组件\nimport SvgIcon from './components/SvgIcon.vue'\nimport XDatePicker from './components/XDatePicker.vue'\nimport XElForm from './components/XElForm.vue'\nimport XElFormItem from './components/XElFormItem.vue'\nimport XElOption from './components/XElOption.vue'\nimport XElSelect from './components/XElSelect.vue'\nimport XPagination from './components/XPagination.vue'\nimport XReportTable from './components/XReportTable.vue'\nimport XSearchBar from './components/XSearchBar.vue'\nimport XSplitLayout from './components/XSplitLayout.vue'\nimport XSwitch from './components/XSwitch.vue'\nimport XVxeColumn from './components/XVxeColumn.vue'\nimport XVxeTable from './components/XVxeTable.vue'\n\n// 自动注册的组件(不含 SvgIcon,避免与宿主项目冲突)\nconst components = {\n XDatePicker,\n XElForm,\n XElFormItem,\n XElOption,\n XElSelect,\n XPagination,\n XReportTable,\n XSearchBar,\n XSplitLayout,\n XSwitch,\n XVxeColumn,\n XVxeTable,\n}\n\n// 定义插件安装\nconst install = (app: any) => {\n // 注册组件\n Object.keys(components).forEach(key => {\n const component = (components as any)[key]\n app.component(component.name || key, component)\n })\n\n // 注册指令\n const directiveKeys = Object.keys(directives) as Array<keyof typeof directives>\n directiveKeys.forEach(key => {\n if (key !== 'registerDirectives' && key !== 'default') {\n app.directive(key, directives[key])\n }\n })\n}\n\nexport {\n utils,\n directives,\n SvgIcon,\n XDatePicker,\n XElForm,\n XElFormItem,\n XElOption,\n XElSelect,\n XPagination,\n XReportTable,\n XSearchBar,\n XSplitLayout,\n XSwitch,\n XVxeColumn,\n XVxeTable,\n}\n\nexport default {\n install,\n}\n"],"names":["debounce","throttle","config","_openBlock","_createElementBlock","_mergeProps","$attrs","_createElementVNode","_createBlock","props","_createVNode","_renderSlot","_hoisted_1","index","_normalizeClass","_Fragment","_renderList","_createSlots","_withCtx","_hoisted_2","_hoisted_3","_toDisplayString","_hoisted_4","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","resolveComponent","formatDate","_hoisted_5","_unref","_resolveDynamicComponent","_vShow","_normalizeProps","_guardReactiveProps","XElOption","XElSelect","XSwitch"],"mappings":"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"}
|