|
46 | 46 | </div> |
47 | 47 | <div class="center-panel"> |
48 | 48 | <div class="style-toolbar"> |
49 | | - <el-select v-model="selFontName" size="small" style="width:110px" @change="applyStyle('fontName')"> |
| 49 | + <el-select v-model="selFontName" size="small" style="width:110px" @change="onStyleChange('fontName')"> |
50 | 50 | <el-option v-for="f in ['Microsoft YaHei','SimSun','SimHei','Arial','Times New Roman']" :key="f" :label="f" :value="f" /> |
51 | 51 | </el-select> |
52 | | - <el-select v-model="selFontSize" size="small" style="width:55px" @change="applyStyle('fontSize')"> |
| 52 | + <el-select v-model="selFontSize" size="small" style="width:55px" @change="onStyleChange('fontSize')"> |
53 | 53 | <el-option v-for="s in [8,9,10,11,12,14,16,18,20,24,28,36]" :key="s" :label="String(s)" :value="s" /> |
54 | 54 | </el-select> |
55 | 55 | <el-button-group size="small"> |
56 | 56 | <el-button :type="boldActive?'primary':''" @click="applyStyle('bold')"><b>B</b></el-button> |
57 | 57 | <el-button :type="italicActive?'primary':''" @click="applyStyle('italic')"><i>I</i></el-button> |
58 | 58 | <el-button @click="applyStyle('underline')"><u>U</u></el-button> |
59 | 59 | </el-button-group> |
60 | | - <el-color-picker v-model="selColor" size="small" @change="onColorChange('color')" /> |
61 | | - <el-color-picker v-model="selBgColor" size="small" @change="onColorChange('bgColor')" /> |
| 60 | + <el-color-picker v-model="selColor" size="small" @change="onStyleChange('color')" /> |
| 61 | + <el-color-picker v-model="selBgColor" size="small" @change="onStyleChange('bgColor')" /> |
62 | 62 | <el-button-group size="small"> |
63 | 63 | <el-button @click="applyStyle('align','left')">左</el-button> |
64 | 64 | <el-button @click="applyStyle('align','center')">中</el-button> |
@@ -777,9 +777,13 @@ function applyStyle(prop:string, val?:any) { |
777 | 777 | }) |
778 | 778 | } |
779 | 779 |
|
780 | | -/** 颜色选择器变更(v-model 已更新,读取最新值写入选中单元格) */ |
781 | | -function onColorChange(prop: 'color' | 'bgColor') { |
782 | | - applyStyle(prop, prop==='color' ? selColor.value : selBgColor.value) |
| 780 | +/** 字体/字号/颜色选择器变更(v-model 已更新,读取最新值写入选中单元格) */ |
| 781 | +function onStyleChange(prop: 'color' | 'bgColor' | 'fontName' | 'fontSize') { |
| 782 | + const val = prop === 'color' ? selColor.value |
| 783 | + : prop === 'bgColor' ? selBgColor.value |
| 784 | + : prop === 'fontName' ? selFontName.value |
| 785 | + : selFontSize.value |
| 786 | + applyStyle(prop, val) |
783 | 787 | } |
784 | 788 |
|
785 | 789 | function toggleBorder() { pushHistory(); forEachSelected((r,c)=>{const key=`${r},${c}`,ex=cells.value[key]||{value:''},s=ex.style||{}; s.border=s.border===false?true:false; cells.value[key]={...ex,style:s}}) } |
|
0 commit comments