diff --git a/apps/vue/build/vite/plugin/styleImport.ts b/apps/vue/build/vite/plugin/styleImport.ts index 32b8f823a..4384583b1 100644 --- a/apps/vue/build/vite/plugin/styleImport.ts +++ b/apps/vue/build/vite/plugin/styleImport.ts @@ -49,6 +49,7 @@ export function configStyleImportPlugin(_isBuild: boolean) { // 这里是需要额外引入样式的子组件列表 // 单独引入子组件时需引入组件样式,否则会在打包后导致子组件样式丢失 const replaceList = { + textarea: 'input', 'typography-text': 'typography', 'typography-title': 'typography', 'typography-paragraph': 'typography', diff --git a/apps/vue/package.json b/apps/vue/package.json index b88d7b3b2..6793ae97b 100644 --- a/apps/vue/package.json +++ b/apps/vue/package.json @@ -149,7 +149,7 @@ "vite-plugin-vue-setup-extend": "^0.4.0", "vite-plugin-windicss": "^1.8.4", "vue-eslint-parser": "^8.3.0", - "vue-tsc": "^0.33.9" + "vue-tsc": "^1.0.9" }, "resolutions": { "bin-wrapper": "npm:bin-wrapper-china", diff --git a/apps/vue/src/components/Button/src/props.ts b/apps/vue/src/components/Button/src/props.ts index d79d378af..806d39577 100644 --- a/apps/vue/src/components/Button/src/props.ts +++ b/apps/vue/src/components/Button/src/props.ts @@ -1,5 +1,12 @@ +const validColors = ['error', 'warning', 'success', ''] as const; +type ButtonColorType = typeof validColors[number]; + export const buttonProps = { - color: { type: String, validator: (v) => ['error', 'warning', 'success', ''].includes(v) }, + color: { + type: String as PropType, + validator: (v) => validColors.includes(v), + default: '', + }, loading: { type: Boolean }, disabled: { type: Boolean }, /** diff --git a/apps/vue/src/components/Cropper/src/CropperAvatar.vue b/apps/vue/src/components/Cropper/src/CropperAvatar.vue index b34574fae..2d40cc6e0 100644 --- a/apps/vue/src/components/Cropper/src/CropperAvatar.vue +++ b/apps/vue/src/components/Cropper/src/CropperAvatar.vue @@ -92,9 +92,9 @@ }, ); - function handleUploadSuccess({ source }) { + function handleUploadSuccess({ source, data }) { sourceValue.value = source; - emits('change', source); + emits('change', { source, data }); createMessage.success(t('component.cropper.uploadSuccess')); } diff --git a/apps/vue/src/components/Excel/src/Export2Excel.ts b/apps/vue/src/components/Excel/src/Export2Excel.ts index 952ac45f1..24d05ec9b 100644 --- a/apps/vue/src/components/Excel/src/Export2Excel.ts +++ b/apps/vue/src/components/Excel/src/Export2Excel.ts @@ -6,6 +6,28 @@ const { utils, writeFile } = xlsx; const DEF_FILE_NAME = 'excel-list.xlsx'; +/** + * @param data source data + * @param worksheet worksheet object + * @param min min width + */ + function setColumnWidth(data, worksheet, min = 3) { + const obj = {}; + worksheet['!cols'] = []; + data.forEach((item) => { + Object.keys(item).forEach((key) => { + const cur = item[key]; + const length = cur?.length ?? min; + obj[key] = Math.max(length, obj[key] ?? min); + }); + }); + Object.keys(obj).forEach((key) => { + worksheet['!cols'].push({ + wch: obj[key], + }); + }); +} + export function jsonToSheetXlsx({ data, header, @@ -20,7 +42,7 @@ export function jsonToSheetXlsx({ } const worksheet = utils.json_to_sheet(arrData, json2sheetOpts); - + setColumnWidth(arrData, worksheet); /* add worksheet to workbook */ const workbook: WorkBook = { SheetNames: [filename], diff --git a/apps/vue/src/components/Excel/src/ImportExcel.vue b/apps/vue/src/components/Excel/src/ImportExcel.vue index f6f742525..fb3dc9d6b 100644 --- a/apps/vue/src/components/Excel/src/ImportExcel.vue +++ b/apps/vue/src/components/Excel/src/ImportExcel.vue @@ -137,8 +137,10 @@ * @description: 触发选择文件管理器 */ function handleInputClick(e: Event) { - const files = e && (e.target as HTMLInputElement).files; + const target = e && (e.target as HTMLInputElement); + const files = target?.files; const rawFile = files && files[0]; // only setting files[0] + target.value = ''; if (!rawFile) return; upload(rawFile); } diff --git a/apps/vue/src/components/Form/src/BasicForm.vue b/apps/vue/src/components/Form/src/BasicForm.vue index cb6daedd0..b9a8c9ee9 100644 --- a/apps/vue/src/components/Form/src/BasicForm.vue +++ b/apps/vue/src/components/Form/src/BasicForm.vue @@ -10,6 +10,7 @@