久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Univer 在線表格單元格鎖定:實(shí)現(xiàn)指定區(qū)域可編輯的完整指南

Univer 在線表格單元格鎖定:實(shí)現(xiàn)指定區(qū)域可編輯的完整指南 “想用在線表格做一個(gè)報(bào)名表或者工單登記表業(yè)務(wù)同學(xué)打開網(wǎng)頁(yè)就能填但只能改我指定的那幾格標(biāo)題、說(shuō)明還有那些公式列一概不能碰”——這是我最近被問(wèn)到次數(shù)最多的一個(gè)需求。字面聽上去不復(fù)雜真正落到代碼里才發(fā)現(xiàn)彎彎繞繞不少。如果你正在用Univer搞這類“用戶定義表格 指定單元格填寫、其他單元格鎖定”的在線表格場(chǎng)景或者剛接觸 Univer 在評(píng)估它能不能扛起這個(gè)業(yè)務(wù)這篇就是給你準(zhǔn)備的實(shí)操筆記。我會(huì)從項(xiàng)目選型講到權(quán)限模型再給可直接抄的配置和代碼最后整理幾個(gè)我實(shí)際踩過(guò)的坑。1. Univer 是什么項(xiàng)目定位與核心技術(shù)拆解1.1 開箱即用的在線表格內(nèi)核Univer 是一套基于 TypeScript 構(gòu)建的開源辦公套件方案主打在線創(chuàng)建、編輯和預(yù)覽電子表格、文檔與幻燈片。如果你聽過(guò) Luckysheet那可以把它理解為 Luckysheet 團(tuán)隊(duì)在架構(gòu)上推翻重做后的下一代產(chǎn)物渲染層換成了 Canvas 繪制核心與 UI 徹底解耦插件化程度更高還內(nèi)置了一套公式引擎和命令系統(tǒng)。從業(yè)務(wù)接入角度Univer 最讓人舒服的一點(diǎn)是它不是給你一個(gè)“靜態(tài)表格組件”而是給你一個(gè)完整的、可編程的表格運(yùn)行時(shí)。你可以在里面定義工作簿、工作表、單元格數(shù)據(jù)、公式、樣式、數(shù)據(jù)校驗(yàn)也可以通過(guò)命令服務(wù)去執(zhí)行“設(shè)置單元格值”“合并單元格”“開啟工作表保護(hù)”這些操作。換句話說(shuō)你不需要像過(guò)去那樣在一堆 div 和 table 標(biāo)簽上模擬表格行為而是直接操作一個(gè)真實(shí)存在的電子表格實(shí)例。Univer 的模塊劃分大概是這樣univerjs/core核心數(shù)據(jù)模型工作簿、工作表、單元格、區(qū)域、樣式、命令框架都在這層。univerjs/sheets表格業(yè)務(wù)邏輯包括單元格編輯、選區(qū)、公式計(jì)算、篩選、排序等基礎(chǔ)能力。univerjs/sheets-ui表格 UI 層負(fù)責(zé)渲染工具欄、編輯欄、右鍵菜單、彈窗。univerjs/ui通用 UI 基礎(chǔ)設(shè)施讓 Univer 可以嵌入 React、Vue 或原生 JS 項(xiàng)目。univerjs/engine-formula公式引擎用來(lái)處理跨表、跨工作簿的公式計(jì)算。univerjs/engine-renderCanvas 渲染引擎負(fù)責(zé)把表格畫到頁(yè)面上。這個(gè)分層直接決定了它的擴(kuò)展性。比如你只想用表格編輯能力不想顯示官方那一整條工具欄那完全可以不注冊(cè) UI 插件自己寫一套編輯入口反過(guò)來(lái)如果你需要標(biāo)準(zhǔn) Excel 體驗(yàn)把 sheets-ui 注冊(cè)上就基本齊了。正因?yàn)檫@種靈活度Univer 特別適合做“半定制化”的業(yè)務(wù)表格而不是只能全盤照搬的標(biāo)準(zhǔn) Excel。1.2 為什么選 Univer 做“用戶填表”場(chǎng)景做“用戶填寫指定單元格”這件事傳統(tǒng)方案一般有三條路直接發(fā) Excel 模板讓人填了再回收、用傳統(tǒng)前端表格組件仿一個(gè)填表頁(yè)、或者直接在自己系統(tǒng)里做表單引擎。這三條路各有各的別扭Excel 模板回收版本混亂、格式被改、收集匯總?cè)咳巳怏w驗(yàn)很差。前端表格組件仿填表頁(yè)表格行為很難做到位。用戶想要拖動(dòng)填充、下拉選擇、公式聯(lián)動(dòng)時(shí)基本都要自己造輪子。表單引擎雖然能限制輸入項(xiàng)但表達(dá)不了表格布局。比如一行一個(gè)項(xiàng)目的工時(shí)填報(bào)或者橫豎軸交叉的排班表用表單控件排出來(lái)非常痛苦。Univer 剛好卡在中間它有原生表格的交互能力又允許你用編程方式控制哪些單元格可編輯、哪些被鎖定。管理員先在頁(yè)面上把模板搭好鎖定不需要用戶碰的區(qū)域再把鏈接發(fā)給用戶用戶在網(wǎng)頁(yè)里只能按預(yù)定位置填寫。整個(gè)流程在線上閉環(huán)數(shù)據(jù)直接回傳后端既避免了 Excel 文件滿天飛又保留了表格天然的布局表達(dá)能力。更關(guān)鍵的是Univer 的保護(hù)機(jī)制不是“只能設(shè)置整表只讀”這種一刀切它支持把工作表的“保護(hù)”和“單元格的鎖定屬性”拆開組合配合非常細(xì)的權(quán)限范圍能夠準(zhǔn)確實(shí)現(xiàn)“某些區(qū)域可以編輯、其他區(qū)域不能改”的需求。這就是這篇實(shí)操里最核心的切入點(diǎn)。2. 需求拆解讓用戶填寫指定單元格其余鎖定2.1 “用戶定義表格”的業(yè)務(wù)本質(zhì)先把“用戶定義表格”這個(gè)說(shuō)法拆開。用戶這個(gè)詞在不同場(chǎng)景里指代不一樣。在多數(shù)業(yè)務(wù)系統(tǒng)里設(shè)計(jì)表格模板的是管理員或財(cái)務(wù)最終填寫數(shù)據(jù)的是普通員工或外部客戶。所以“用戶定義表格”實(shí)際上包含兩層含義模板定義權(quán)誰(shuí)來(lái)創(chuàng)建表格結(jié)構(gòu)、設(shè)置標(biāo)題、公式、校驗(yàn)規(guī)則、鎖定規(guī)則。數(shù)據(jù)填寫權(quán)誰(shuí)能在特定區(qū)域內(nèi)填入內(nèi)容。這篇文章要解決的核心是第二層但實(shí)現(xiàn)第二層之前必須先想清楚第一層。因?yàn)槟0宓亩x過(guò)程往往也需要在 Univer 里面完成如果管理員自己都分不清哪些單元格是鎖定用的、哪些是放開用的后面所有規(guī)則都是空中樓閣。一個(gè)典型的業(yè)務(wù)例子是培訓(xùn)報(bào)名表A1:D1 是合并標(biāo)題“2025年第三期安全培訓(xùn)報(bào)名表”。第二行是列名姓名、部門、郵箱、是否住宿。管理員不希望用戶改標(biāo)題和列名甚至不希望用戶能選中這些單元格用戶只需要從第三行往下填寫自己的信息如果郵箱格式錯(cuò)了表格應(yīng)給出提示。這個(gè)例子里的“可編輯區(qū)域”就是一個(gè)從第三行到表格末尾的數(shù)據(jù)區(qū)域。用戶在這個(gè)區(qū)域里輸入內(nèi)容其他區(qū)域要么鎖定、要么只讀。管理員創(chuàng)建模板時(shí)也應(yīng)該把這個(gè)規(guī)則體現(xiàn)在配置里而不是等表格上線后再去臨時(shí)設(shè)置。2.2 權(quán)限模型與可編輯范圍控制的關(guān)鍵點(diǎn)Univer 控制可編輯性的機(jī)制本質(zhì)上沿用了 Excel 那套經(jīng)典的“工作表保護(hù) 單元格鎖定”模型。先記住一個(gè)關(guān)鍵結(jié)論單元格默認(rèn)的鎖定狀態(tài)并不等于用戶不可編輯。只有當(dāng)工作表開啟了保護(hù)protection之后鎖定屬性才會(huì)生效。這個(gè)關(guān)系可以類比成小區(qū)門禁每個(gè)房間有門鎖單元格 locked 狀態(tài)但只有保安啟動(dòng)門禁系統(tǒng)工作表保護(hù)這些門鎖才真正起作用。如果你只給每個(gè)房間換了鎖卻讓保安放假那誰(shuí)都能推門進(jìn)去。在 Univer 的配置模型里工作表保護(hù)對(duì)象至少包含這幾個(gè)關(guān)鍵字段sheet布爾值表示這張工作表是否啟用保護(hù)。lockCells布爾值表示當(dāng)前工作表是否鎖定所有單元格。ranges數(shù)組用來(lái)聲明保護(hù)范圍內(nèi)的例外區(qū)域每個(gè)區(qū)域可以單獨(dú)設(shè)置是否允許鎖定。當(dāng)lockCells: true且protection.sheet: true時(shí)整張表默認(rèn)不可編輯只有ranges里明確列為 unlock 的區(qū)域可以編輯。反過(guò)來(lái)如果lockCells: false整張表默認(rèn)可編輯ranges里的區(qū)域可以被單獨(dú)鎖死。大多數(shù)“用戶填表”場(chǎng)景用的是前者先鎖全表再把填寫區(qū)域放出來(lái)。還有兩個(gè)容易被忽略的配置項(xiàng)allowSelectingLockedCells和allowSelectingUnlockedCells。前者控制用戶能不能點(diǎn)選鎖定區(qū)域后者控制用戶能不能點(diǎn)選可編輯區(qū)域。如果業(yè)務(wù)上要求“用戶連標(biāo)題都選不中”就把a(bǔ)llowSelectingLockedCells設(shè)為 false如果允許用戶點(diǎn)選已填寫的內(nèi)容只是不能修改那就保持為 true。我這邊的經(jīng)驗(yàn)是填表業(yè)務(wù)里通常把兩個(gè)都放開因?yàn)橛脩暨x中有助于看清他填過(guò)什么只要不能編輯就可以了。另外要注意Univer 的保護(hù)模型是工作表級(jí)別的不是工作簿級(jí)別。如果你想整個(gè)工作簿都進(jìn)入“填表模式”需要遍歷里面每一張工作表分別設(shè)置保護(hù)。如果有多個(gè) Sheet且用戶應(yīng)該只能看到其中一張?zhí)顖?bào)表那更實(shí)用的做法是直接隱藏其他工作表只保留目標(biāo)表。3. 實(shí)操在 Univer 中實(shí)現(xiàn)“可指定區(qū)域填寫”3.1 環(huán)境準(zhǔn)備與最小示例先搭一個(gè)最小可運(yùn)行的 Univer 項(xiàng)目。我用的是 Vite TypeScript 的 React 工程其實(shí)框架不限Univer 官方封裝好了 React 組件和非 React 接入兩種方式核心邏輯一樣。安裝依賴npm install univerjs/core univerjs/sheets univerjs/sheets-ui univerjs/ui univerjs/engine-formula univerjs/engine-render初始化代碼大概長(zhǎng)這樣import { Univer } from univerjs/core; import { UniverSheetsPlugin } from univerjs/sheets; import { UniverSheetsUIPlugin } from univerjs/sheets-ui; import { UniverUIPlugin } from univerjs/ui; import { UniverFormulaEnginePlugin } from univerjs/engine-formula; const univer new Univer({ locale: zhCN, }); univer.registerPlugin(UniverSheetsPlugin); univer.registerPlugin(UniverFormulaEnginePlugin); univer.registerPlugin(UniverUIPlugin, { container: app, }); univer.registerPlugin(UniverSheetsUIPlugin);這一步跑起來(lái)以后頁(yè)面右上角會(huì)出現(xiàn) Univer 自己的工具欄。我建議開發(fā)階段不要急著隱藏工具欄因?yàn)椤氨Wo(hù)工作表”這個(gè)功能在工具欄里可以直接點(diǎn)方便你驗(yàn)證效果。生產(chǎn)環(huán)境再根據(jù)業(yè)務(wù)隱藏不必要按鈕。然后在項(xiàng)目里創(chuàng)建一張工作表數(shù)據(jù)。Univer 創(chuàng)建表格時(shí)可以傳一個(gè)類似“工作表配置快照”的對(duì)象里面包含單元格數(shù)據(jù)、樣式、合并信息、行高列寬還有我們關(guān)心的保護(hù)配置。下面的示例是完整模板結(jié)構(gòu)const formSheet { id: training-signup, name: 報(bào)名填寫, rowCount: 20, columnCount: 6, cellData: { 0: { 0: { v: 2025年第三期安全培訓(xùn)報(bào)名表, s: { bl: 1, bg: #f2f2f2, locked: true, merge: 3 } }, }, 1: { 0: { v: 姓名, s: { locked: true, bg: #e8e8e8 } }, 1: { v: 部門, s: { locked: true, bg: #e8e8e8 } }, 2: { v: 郵箱, s: { locked: true, bg: #e8e8e8 } }, 3: { v: 是否住宿, s: { locked: true, bg: #e8e8e8 } }, }, }, protection: { sheet: true, lockCells: true, allowSelectingLockedCells: true, allowSelectingUnlockedCells: true, ranges: [ { range: { startRow: 2, endRow: 19, startColumn: 0, endColumn: 3 }, lock: false, }, ], }, }; univer.createSheet(formSheet);這段配置的作用很直白把整張表鎖定然后在第 3 行到第 20 行的前四列放出一個(gè)可編輯區(qū)域。用戶在網(wǎng)頁(yè)上打開后表頭區(qū)域內(nèi)容灰色、選中但改不了第 3 行及以下的白色區(qū)域內(nèi)用戶可以像操作 Excel 一樣輸入姓名、部門、郵箱和住宿信息。3.2 定義可填寫區(qū)域模板配置方式上一步的 protection 配置里ranges就是指“放給用戶編輯的區(qū)域”。這個(gè)數(shù)組可以包含多個(gè)不連續(xù)的區(qū)域比如一張表上既有“基本信息區(qū)”又有“家庭成員區(qū)”那就寫兩個(gè) range 對(duì)象。注意startRow和endRow、startColumn、endColumn都是從 0 開始計(jì)數(shù)的表格第 1 行對(duì)應(yīng) startRow 0第 1 列對(duì)應(yīng) startColumn 0。這個(gè)計(jì)數(shù)方式特別容易踩坑我第一次寫就把第三行寫成了 startRow 2 還是 3 糾結(jié)了半天。單元格樣式里的locked是給單元格本身打標(biāo)用的。如果你在創(chuàng)建模板時(shí)想明確某個(gè)單元格“永遠(yuǎn)不能被編輯”除了在 protection 的 ranges 里不放這個(gè)區(qū)域還可以同時(shí)在s.locked上做標(biāo)記。但需要說(shuō)明locked 只是標(biāo)簽保護(hù)范圍才是最終執(zhí)行依據(jù)。開啟保護(hù)后Univer 執(zhí)行編輯命令時(shí)會(huì)去檢查“當(dāng)前選中區(qū)域是否在 protection 的允許編輯范圍內(nèi)”。所以模板正確性最終看 protection.ranges單元格的 locked 屬性用來(lái)配合 UI 展示比如給鎖定區(qū)域加淺灰背景讓用戶一眼看出哪里不能填。3.3 運(yùn)行時(shí)切換編輯權(quán)限命令方式模板配置是“靜態(tài)初始化”的做法適合表格結(jié)構(gòu)在代碼里寫死。但真實(shí)業(yè)務(wù)里管理員很可能要在界面上臨時(shí)修改可編輯范圍這就需要用命令動(dòng)態(tài)調(diào)整保護(hù)配置。Univer 的命令服務(wù)CommandService是運(yùn)行時(shí)改變表格狀態(tài)的唯一正規(guī)入口。示例代碼如下import { ICommandService } from univerjs/core; import { SetWorksheetProtectionCommand } from univerjs/sheets; const commandService univer.getCommandService(); await commandService.executeCommand(SetWorksheetProtectionCommand.id, { unitId: training-signup, subUnitId: training-signup, protection: { sheet: true, lockCells: true, ranges: [ { range: { startRow: 2, endRow: 19, startColumn: 0, endColumn: 3 }, lock: false }, { range: { startRow: 2, endRow: 19, startColumn: 4, endColumn: 5 }, lock: true }, ], }, });這里有兩個(gè) idunitId是工作簿的 idsubUnitId是工作表的 id。在我這個(gè)例子里兩者都用了同一個(gè)字符串。如果你的業(yè)務(wù)里有兩張 sheet那 subUnitId 就分別指向?qū)?yīng) sheet。很多初學(xué)時(shí)困惑的“為什么執(zhí)行命令沒(méi)反應(yīng)”八成是這兩個(gè) id 沒(méi)對(duì)上。調(diào)試時(shí)可以先打印工作簿和工作表的 idconst workbook univer.getActiveWorkbook(); const worksheet workbook.getActiveSheet(); console.log(workbook.getId(), worksheet.getId());執(zhí)行完這個(gè)命令后表格的編輯權(quán)限會(huì)立即變化不需要刷新頁(yè)面。這種動(dòng)態(tài)控制很適合做“審批流”管理員編輯模板時(shí)保護(hù)未開啟審核通過(guò)后調(diào)用命令開啟保護(hù)業(yè)務(wù)用戶拿到鏈接就進(jìn)入了填寫模式。3.4 前端純攔截兜底方案保護(hù)機(jī)制原理上是攔截了 Univer 內(nèi)部的編輯命令但并不是所有交互都能被 protection 覆蓋。比如某些版本里你仍然可以通過(guò)填充柄向下拖拽一個(gè)鎖定區(qū)域的值或者復(fù)制鎖定區(qū)域粘貼到可編輯區(qū)域。遇到這種情況光靠 protection 不夠還得在前端事件層做兜底。Univer 提供命令執(zhí)行監(jiān)聽我們可以攔下不必要的操作univer.getCommandService().onCommandExecuted((command) { if (command.id sheet.command.set-range-values) { // 檢查 command.params 里的 range 是否落在可編輯區(qū)域內(nèi) // 如果不在保護(hù)范圍內(nèi)就攔截或者回滾 } });更簡(jiǎn)單的做法是在編輯器外層加一層業(yè)務(wù)校驗(yàn)?zāi)玫接脩籼峤粩?shù)據(jù)后在后端再次校驗(yàn)“提交的字段是否都位于允許范圍內(nèi)”。前端保護(hù)是為了體驗(yàn)后端校驗(yàn)才是底線。這個(gè)原則放在任何表格權(quán)限場(chǎng)景都適用。4. 進(jìn)階協(xié)同填寫與后端保存的完整方案4.1 多用戶同時(shí)填寫時(shí)保護(hù)區(qū)域怎么保證如果你只是把一張帶保護(hù)的工作表發(fā)給用戶每個(gè)用戶獨(dú)立打開、獨(dú)立填寫那權(quán)限控制很清晰。但現(xiàn)實(shí)里經(jīng)常出現(xiàn)幾十個(gè)人同時(shí)打開同一張表各自往自己那一行填數(shù)據(jù)。Univer 本身支持協(xié)同編輯底層可以用 WebSocket、Yjs 等同步但協(xié)同模式下保護(hù)邏輯的復(fù)雜度會(huì)上升。首要原則是不要把后端權(quán)限校驗(yàn)寄托在前端保護(hù)上。前端保護(hù)只是 UI 層面的限制協(xié)同服務(wù)收到操作指令后必須自己校驗(yàn)這個(gè) range 是否允許寫入。否則一個(gè)懂點(diǎn)前端的人可以繞過(guò)界面直接調(diào)協(xié)同同步接口把鎖定區(qū)域的數(shù)據(jù)改掉。具體操作層面我建議把“保護(hù)配置”提升為后端的一張配置表這張表里存了工作簿的 unitId、sheet 的 subUnitId、允許編輯的 ranges 列表。用戶發(fā)起編輯時(shí)協(xié)同服務(wù)先查配置表校驗(yàn)操作范圍再?zèng)Q定是否放行。如果業(yè)務(wù)里用到了 Univer 官方協(xié)同方案可以基于其命令廣播機(jī)制在命令進(jìn)入同步管道之前加一個(gè)鑒權(quán)中間層。4.2 把填寫結(jié)果持久化到后端填表業(yè)務(wù)最終要落庫(kù)。Univer 里讀取用戶填寫內(nèi)容有幾種做法用戶填完后前端統(tǒng)一從表格實(shí)例中取出整個(gè)數(shù)據(jù)區(qū)。監(jiān)聽單元格變更事件實(shí)時(shí)增量提交。第一種做法適合“填完點(diǎn)提交”的流程。代碼大概這樣const worksheet univer.getActiveWorkbook().getActiveSheet(); // 讀固定區(qū)域的數(shù)據(jù) const rangeData worksheet.getRange({ startRow: 2, endRow: 19, startColumn: 0, endColumn: 3, }); const rows rangeData.map(row ({ name: row.cells?.[0]?.v, department: row.cells?.[1]?.v, email: row.cells?.[2]?.v, accommodation: row.cells?.[3]?.v, }));然后把這組對(duì)象 POST 到后端接口。這里的重點(diǎn)是讀取數(shù)據(jù)時(shí)不要讀全表只讀你允許填寫的區(qū)域既減少不必要的傳輸也天然規(guī)避了越權(quán)數(shù)據(jù)被帶上來(lái)的風(fēng)險(xiǎn)。第二種做法適合表格長(zhǎng)期打開、自動(dòng)保存的場(chǎng)景。Univer 的命令服務(wù)有對(duì)應(yīng)事件univer.getCommandService().onCommandExecuted((command) { if (command.id sheet.command.set-cell-value) { // 把 command.params 里的 values 增量提交 } });增量提交要做防抖不然用戶連續(xù)輸入十幾個(gè)字符會(huì)打出十幾條請(qǐng)求。我習(xí)慣把變更先緩存到一個(gè) Map 里用 500ms 的定時(shí)器統(tǒng)一上報(bào)。4.3 配合表單校驗(yàn)與數(shù)據(jù)聯(lián)動(dòng)“能編輯”和“能填對(duì)”是兩回事。用戶雖然只能寫指定區(qū)域但寫出來(lái)的內(nèi)容可能格式完全不對(duì)。Univer 在填表場(chǎng)景下最好開啟數(shù)據(jù)校驗(yàn)?zāi)芰?。比如郵箱列可以在模板配置里給單元格加上校驗(yàn)規(guī)則或者使用公式做判斷。Univer 支持在初始化時(shí)給單元格指定 validator在填表業(yè)務(wù)中更實(shí)用的做法是監(jiān)聽值變更在 UI 上實(shí)時(shí)提醒。這里有一個(gè)經(jīng)驗(yàn)校驗(yàn)規(guī)則不要寫在保護(hù)配置里也不要散落在模板各處最好集中在一個(gè)數(shù)據(jù)字典結(jié)構(gòu)里帶進(jìn)模板這樣后端校驗(yàn)和前端提示共用同一份規(guī)則避免兩邊不一致。舉個(gè)例子郵箱列的校驗(yàn)規(guī)則可以定義為{ type: regex, pattern: ^[\\w.-][\\w-](\\.[\\w-])$, message: 郵箱格式不正確, }用戶填完不合法提交按鈕置灰只有全部合法才能提交。這提升了表格的可用性也讓后臺(tái)少收很多臟數(shù)據(jù)。5. 常見(jiàn)問(wèn)題與避坑指南5.1 保護(hù)開啟后鎖定區(qū)域仍能編輯這是我在社區(qū)里看到最多的問(wèn)題自己第一次也遇到。排查順序如下確認(rèn) protection 的sheet是否真的為 true。很多人只設(shè)置了lockCells沒(méi)有把sheet打開保護(hù)等于沒(méi)啟用。確認(rèn)lockCells是否為 true。如果 lockCells 為 falseranges 之外的區(qū)域默認(rèn)可編輯保護(hù)范圍的含義反過(guò)來(lái)了。確認(rèn) ranges 的lock字段??删庉媴^(qū)域要用lock: false顯式標(biāo)記。有些版本字段名是locked拿到的示例代碼里寫的是lock就照抄結(jié)果毫無(wú)反應(yīng)。確認(rèn)執(zhí)行的是重新設(shè)置整套 protection而不是增量 patch。Univer 命令執(zhí)行時(shí)通常會(huì)整體替換 protection 對(duì)象所以每次更新都要把完整的 ranges 放進(jìn)去。5.2 公式計(jì)算、填充柄繞過(guò)保護(hù)保護(hù)只能攔編輯命令攔不住用戶把可編輯區(qū)域的公式向下填充到鎖定區(qū)域。如果想徹底避免這種問(wèn)題有兩個(gè)思路在鎖定區(qū)域不上公式改由后端統(tǒng)一計(jì)算。在事件層攔截填充操作只允許在非鎖定區(qū)域范圍內(nèi)執(zhí)行。第二種思路實(shí)現(xiàn)起來(lái)要監(jiān)聽比較底層的命令比較麻煩。我的建議是填表場(chǎng)景能不用公式就不用公式。表格的計(jì)算能力讓管理員在后臺(tái)設(shè)計(jì)模板時(shí)用最終提交給用戶的填表視圖盡量只展示普通文本和數(shù)字把公式計(jì)算挪到保存后的結(jié)果頁(yè)。5.3 Excel 導(dǎo)入與保護(hù)兼容性問(wèn)題Univer 支持導(dǎo)入 xlsx但導(dǎo)入文件的保護(hù)配置不一定能完整還原。Excel 里“允許用戶編輯區(qū)域”是通過(guò)范圍安全性設(shè)置的Univer 從 xlsx 里解析時(shí)可能會(huì)丟失或者轉(zhuǎn)換偏差。如果業(yè)務(wù)要求管理員先上傳 Excel 模板再由系統(tǒng)啟用填表模式我的建議是上傳后不要依賴原文件的保護(hù)屬性而是按業(yè)務(wù)規(guī)則重新生成 protection ranges。怎么做呢上傳后先解析 Excel 的單元格結(jié)構(gòu)然后通過(guò)規(guī)則匹配出可編輯區(qū)域。比如約定“所有帶黃色背景的單元格為可編輯區(qū)域”解析時(shí)讀單元格背景色把這些坐標(biāo)轉(zhuǎn)成 ranges。這樣做的好處是模板設(shè)計(jì)者不需要懂 Univer API只要在 Excel 里涂色就行。5.4 大表格初始化性能填表模板一般不會(huì)太大但如果管理員從 Excel 導(dǎo)入了幾千行數(shù)據(jù)Univer 初始化時(shí)全量渲染會(huì)卡頓。優(yōu)化手段有幾個(gè)減少初始 cellData 里所有單元格都賦空對(duì)象的情況Univer 對(duì)稀疏數(shù)據(jù)渲染更友好。隱藏不必要的行列不要讓用戶看到空白區(qū)域。條件格式和校驗(yàn)規(guī)則不要鋪滿整張表只設(shè)置在真正的數(shù)據(jù)區(qū)域。如果可編輯區(qū)域很單調(diào)優(yōu)先用 range 規(guī)則代替逐格樣式盡量減少單元格級(jí)對(duì)象數(shù)量。6. 一套可直接使用的“可填寫表格”配置參考6.1 模板配置速查最后給一份完整的、可以改改就用的配置。我用“工時(shí)統(tǒng)計(jì)”舉例管理員每月發(fā)一張表給組員填寫組員只能填“項(xiàng)目名稱、工時(shí)、說(shuō)明”三列其他列鎖定。工作表規(guī)劃第 1 行合并標(biāo)題。第 2 行列名項(xiàng)目編號(hào)、項(xiàng)目名稱、工時(shí)、說(shuō)明。第 3 行到第 20 行填寫區(qū)。項(xiàng)目編號(hào)列鎖定內(nèi)容由系統(tǒng)寫入項(xiàng)目名稱、工時(shí)、說(shuō)明列可編輯。配置如下const timesheet { id: timesheet-2025-06, name: 6月工時(shí), rowCount: 20, columnCount: 4, cellData: { 0: { 0: { v: 2025年6月工時(shí)登記表, s: { bl: 1, bg: #f2f2f2, locked: true } }, 1: { v: , s: { locked: true } }, }, 1: { 0: { v: 項(xiàng)目編號(hào), s: { locked: true, bg: #e8e8e8 } }, 1: { v: 項(xiàng)目名稱, s: { locked: true, bg: #e8e8e8 } }, 2: { v: 工時(shí), s: { locked: true, bg: #e8e8e8 } }, 3: { v: 說(shuō)明, s: { locked: true, bg: #e8e8e8 } }, }, }, protection: { sheet: true, lockCells: true, ranges: [ { range: { startRow: 2, endRow: 19, startColumn: 1, endColumn: 3 }, lock: false, }, ], }, };用戶打開后項(xiàng)目編號(hào)列由系統(tǒng)預(yù)先填好用戶只能填項(xiàng)目名稱、工時(shí)、說(shuō)明三列。這樣收集上來(lái)的數(shù)據(jù)非常規(guī)整后端解析也方便。6.2 事件聯(lián)動(dòng)填寫完成后的處理一個(gè)比較好用的小技巧是監(jiān)聽單元格變更之后把變更單元格標(biāo)成其他背景色這樣用戶一眼就能看出自己填了哪些格子管理員也能快速判斷哪些數(shù)據(jù)是新增的。核心代碼就幾行univer.getCommandService().onCommandExecuted((command) { if (command.id sheet.command.set-cell-value) { const { unitId, subUnitId, values } command.params; // 遍歷 values把對(duì)應(yīng)單元格背景色置為淺綠或淺黃 } });要提醒一句這個(gè)監(jiān)聽事件非常頻繁做樣式更新時(shí)最好合并批處理避免每輸入一個(gè)字符就重繪一次。我一般把待更新格子攢到一個(gè)數(shù)組里等事件循環(huán)空閑時(shí)統(tǒng)一應(yīng)用。這個(gè)“可填寫區(qū)域控制”的功能真正的關(guān)鍵不在 API 調(diào)用而是把權(quán)限模型想清楚。前端保護(hù)做得再好也只是給用戶一個(gè)順暢的操作邊界后端必須持有同一份規(guī)則做最終校驗(yàn)。我在實(shí)際項(xiàng)目里被坑最慘的一次就是前端保護(hù)全做好了協(xié)同接口漏了校驗(yàn)結(jié)果用戶直接繞過(guò)界面改掉了鎖定的公式列。后來(lái)我把 ranges 配置抽成公共模塊前后端共用問(wèn)題才徹底消失。你動(dòng)手做的時(shí)候建議第一步就先設(shè)計(jì)好這份公共配置再碰 Univer 的代碼后面會(huì)省掉非常多的返工。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
超硑97精品| www国产无码| 五月婷婷综合网| 亚洲精品国产熟女| 张柏芝国产一区在线观看| 屌妞视频久久久久久久久久久久| 国产传媒av天美传媒在线| 成人久久无码www| 久久一级无码精品毛片6| 久久久久大香青草精品综合| 草b在线| 乱伦熟女区| 亚洲日韩电影| 成人情色综合网| 色婷婷电影网| 国产精品久久久久久片| 日语五十路和六十路亚洲国产精品 | 久热久操| 黑操B| 无码乱人伦中文视频| 日欧毛片久久| 熟女在线视频| 另类综合另类| AA丁香综合激情| 人妻日日干| 国产精品白丝在线播放| 一本色道无码DVD中文字幕| 日日骚中文字幕| 国产久久成人| 在线日韩日本亚洲国产| 欧美 亚洲 在线| 青青青草原| 久久久久人| 91丨九色丨国产打屁股| 激情AV| 丝袜剧情| 自偷自拍的亚洲视频| 日本在线激情一区二区三区| 五月色网| 五月婷网站| 免费精品无码一级毛片牛牛影视| 青青草视频爽一爽| 9 9精品一区二区三区| 97精品熟女少妇一区 | 亚洲强奸乱伦影视网| 久久久99999久网站| 狠狠综合网| 综合久久婷婷| 啊好大好舒服| 97超碰逼| 欧美成人精品一区二区男人蜜臀| 射丝袜高跟鞋99| 国产午夜无码片在线观看影视| 伊香蕉综合久久久久久久噜噜噜| 久久精品中文字幕女同| 亚欧美综合| 懂色av中文字幕| 亚洲色棕合| 久久久久白虎| 日本三级一区二区 在线| 日本道人妻久久久在线不卡色视频| 99热亚洲| 一区二区三区四区五区高清无码永久视频| 日本免费亚洲欧美| 亚州中文字幕超碰97| 国产精品一区人妻精品阁在线| A片 AV一级在线播放观看免费 | 91成人在线免费视频| 1024人妻熟女一区二区三区| AA丁香综合激情| av在线人气| 中文字幕女同在线| 天天日天天操VV| 天天草AV| 免看60秒涩涩视频| 九九九九一级| 亚洲综合电影| 少妇滛荡视频| 校园春色欧美色图| 亚欧无码在线| 久操热线| 加勒比伊人综合| 大香蕉78| 啪啪91| 超碰97色色| 制服丝袜第二页| 亚洲欧美999| 国产操伦| 99久久久er直播网址| AAA久久| 国产精品天美传媒| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 神马久久午夜| 日韩免费看在线黄色片| 高清无码国产亚洲| 91色爽欧美| 亚洲性猛| 在线岛| 噜噜噜在线视频| 欧美十八禁网站| 国产精品福利视频播放| 精品一区96| 色哟哟1区2区| 成 人片 黄色大片| 婷婷五月天补不补| 久久久精品九| 2018天天干在线视频| 婷婷色婷婷| 中文字幕免费观看| 9久在线视频只有精品| 探花一区在线| 久热99| 日韩精品第3页| 蜜区区视频79| 干干干天天| 91精品国产综合久久久蜜臀| 青久久| 丰满人妻一区二区三区四区| 人人操AV| 青春草莓视频在线观看网址| 日韩成人大片在线观看| 精品九九九九九九九九九| 97超碰国产亚洲精品| 免费黄色A片| 欧美 中文字幕 一区| 日日爽熟女| 在线综合色| 国产精品91ai| 国产午夜福利电影免费在线观看| 在线观看高清AV| 一区二区三区在线资源| 欧洲亚洲人妻无码高清久久三区四区| 97狠狠| 91黑人无码激情在线| 噜噜噜久久亚洲精品色情| 人妻少妇精品久久久久久久| 国产精品三级视频网站| 熟女熟妇一区二区三区视频| 熟妇操花| 夜夜嗨TV| 免费看欧美美女黄色大片 | 不卡超碰护士AV在线免费播放| 亚洲中文字幕乱码无码一区二区| 日本中文字幕一区| 蜜臀久久99精品久久久久久婷婷| 午夜视频好爽啊| 中文久久一区| 亚洲囯产精品女人久久久| 综合啪啪| 78精品| 无码9区| 超碰在线人妻中文字幕| 美欧老女人97| 亚洲在线a| 国产精品成人蜜臀AV在线| 久久久A∨| 超碰在线97国产| 操婢日韩| 丰满人妻一区二区中文| 99色天堂| 久操精品| 中文字幕精品三级久久久| 久久九九99| 色综合91好| 一本道综合色图| 欧美激情综合网| 欧美72网页| 亚洲一区二区三区欧美日韩| 92久久| 国产亚洲日本| 啪啪视频亚洲第一| 一区二区精品更新提醒| 777AV电影| 亚洲码在线中文在线观看| 一级久久性爱视频| 老鸭窝在线视频播放| 99热精品在线播放| 午夜视频好爽啊| 亚洲成人精品久久久| 张柏芝国产一区在线观看| 日本伦理一区二区| 亚洲精品日韩国产欧美| 日韩免费在线观看不卡| 亚洲欧美91| 中文字幕精品人妻丝袜| 日本免费中文一区二区三区四区| 色九久| 中文字幕日韩人妻视频一区二区三区交换夫妻 | 中 文字幕一区二区三四 五 区日 日 骚| 嗯嗯啊啊啊好爽| 91丝袜美女| 久久在线观看免费视频| 精品视频日日夜夜| 天天干天天操天天干天天操| 琪琪精品免费一区二区三区 | 国产高清不卡视频| 农村妇女一级二级三级视频| 色图综合| 天堂成人网| 亚洲欧美校园| 亚洲大胆人体av| 中文字幕在线播放2中文字幕在线观看2| 风间由美日韩欧美久久| 亚洲人久久久网| www.欧精品| 99色天堂| 激情久久av一区av二区av| 欧美视频一| 天堂伊人久久| 九草在线大香蕉| 97天天爽| 91亚洲黑人| 大屁股人妻女教师撅着屁股| 亚洲人妻中文在线视频| 午夜精品久久久久久久久久久久久| 五月天伊人| 熟女精品va中文字幕| 亚洲欧洲无码bt精品合集| 欧美亚洲AN| 小草精彩毛片| 操屄不卡视频| www.av在线观看| 天堂网亚洲区手机版| 日本爽爽爽爽爽爽免费视频| 麻豆 亚洲 97| 校园春色亚洲无码| 欧美91久久久久| 少妇精品久久久| 色欲色香天天天综合网www-亚洲综合国| 成人av福利在线观看| 亚洲春色欧美| 亚洲欧美小说| 高清有码一区二区| 隔壁邻居波多野结衣中文字幕| 色噜噜日韩精品| 四虎在线免费视频| 久久久久久久久久久999| 久久啊哟| 天天舔天天日天天射| 久久久男人的天堂| 日韩综合97p| 欧美性爱超碰97| 午夜传煤十二区精品| 91精品国产91熟女| 色呦色呦色精品| 妇女视频网站| 9久久久久久| 九九亚洲| 国产精品亚洲一级av第二区| 日本午夜久久电影| 欧美综合骚| 福利风月五月天影院| 超碰97起碰| 天天色悠悠激情| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 久久久久久久九九九九九九| 91操人| 精品国产一区二区三区四区在线看 | 国产91亚洲精品一区二区三区| 91丝袜熟女| 久久久专区| 天天做天天爱| 色综合天天| 在线中文字幕极品av| 日韩婷婷| 91国内外在线| 人人操人人色网| 熟妇人妻精品一区二区| 人人操人人插人人摸人人干| 内射小黄片| 国产福利在线视频网站| 天堂av2019| 在线五区| 五月综合婷婷久久网站| 成人A片男人的天堂| 日本不卡中文| 日韩不卡毛片Av免费高清| 亚洲色色探花| 精品大久久| 国产嫩草精品A88AV| 99亚洲国产精品色一区二区三区| 国产传媒午夜理伦精品| 一区二区三区四区色图| 九九九九97| 婷婷人妻激情| 高清一区AV无码| 九色97| 欧美特黄视频网站| 岛国激情视频软件| 国产午夜福利视频在线| 天天综合中文字幕 91| 国产一区二区三区导航| 一区二三区四区视频大全套| 国产精品盗摄 偷窥盗摄| 欧美一区二区福利在线| 夜夜狼人妻| 中文字幕一品色图| 手机在线A片| 国产精品天美传媒| 亚洲天堂男人的天堂| 日本三级A片网站com| 在线天堂999| 婷婷色香伊人| 夜夜中出国产| 97色色色| 激情六月天| 992视频一区| 88xx成人精品视频| 久久婷婷色| 美女人妻色网站| 伦理第一页| 色哟哟 日韩精品| 偷拍欧美激情| 天天综合网~91| 最新日韩黄片| 在线观看午夜婷婷久久久久清性观看| 97日韩超碰超碰中文字幕| 嫖老熟女A片一二三区| 97精品国产精品免费观看| 日本成人电影资源网| 99re在线精品78| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 久久的免费性爱视频| 丁香五月天社区| 九色黄站| 日韩AV一区二区三区三州三州| 日日骚网站| 五月丁香六月激情综合| 欧美综合网在线| 亚洲精品久久久久久久久豆丁网| 99re视频在线播放青草| 91在线免费观看处女| 国产日韩精品suv| 久久久久久久78| 性色av蜜臀av色欲aV| 黑人粗大V S日韩女优视频| 屁股久久久久久| 26uuu国产免费观看| 91老熟女91老女人| 国产AV激情无码久久无码| 丰满少妇精品一区二区| 成人五月香网在线| 飘花国产午夜精品不卡| AV天堂因数| 蜜臀精品1区2区| 国产极品精品美女视频| 人人搡人人肉久久精品| 国产精品4p在线观看| 婷婷五月天无码 | 国产97在线 | 亚洲| 97超碰美国| 一区二区三区视频国产免费| 熟女人妻精品一区二区视频| 人妻无码久久一区二区三区免费| 国产精品久久妻无码网站| 国产久久男人天堂| 日本三级日本三级三级人妇四虎| 操碰97| 国产25页| 狠狠躁AV| 99综合视频一体| 91人妻最真实刺激绿帽| 四虎精品永久在线播放| 清纯唯美综合| 97亚洲综合电影| 色狠狠 - 百度| 特色a在线上| 天天色悠悠激情| 乱伦av.com| 人人么人人操| 天天欲望网| 农村妇女精品一区二区| 猛交交| 日本123区操B视频| 欧美一区二区观看在线| 国产精品久久久久无码A√| 国产路线专区| 欧美视频一区二区三区| 夜夜福利| 久久久久久久久久久久黄色 | 一区二区 韩日AV| 岛国在线一区二区三区| 夜夜爽77777| 操我无码| 岛国艾薇凹凸视频天堂| 啪啪啪精品| 玖玖综合视频| 精产品久久| 八戒午夜福利理论片| 日本2020一区二区| 九九九九亚洲| AV男人天堂网| 色五月婷婷五月天| 一区二区娱乐网站| 国产精品无码久久久久2025| 色欲久久99精品久久| a人片中文字幕一区二区| 大香蕉AV丝袜| 大香蕉欧美国产日韩高潮| 日产国产精品中文久久婷婷| 强上我不卡卡| 亚洲熟妇丝袜在线观看| 91日产欧美| 色婷婷激情| 天堂蜜桃无码视频一区二区| 亚洲人妻中文高清| 999岛国大片| 大香蕉综合| 四虎 精品 WWW| 日韩精品三区四区| 久久宗合亚洲| 97久操| 久久精品无码一区二区三区| 中文字幕三四五区| 90后后入| 狼人狠干| 国产一区在线观看无码AV| 波多野42部激情无码喷潮| 91精品女厕偷拍视频| 国产AV精久久| 91人妻PORNY九色大屁股| 天天综合,91综合永久| 熟女啪啪视频| 又摸又舔在线观看网站| 国产欧美日产一区二区三区 - 国产欧美日 | 天美传媒AV国产在线| 久欲AV| 国产二区三区粉嫩在线| 狠狠干妹子| 亚洲图片 欧美电影| 老熟女91视频| 亚洲图片激情综合另类| 国产精选三级在线观看| 在线无码操| 人人摸人人干| 天堂九九九九九九九九九| 中文字幕AV片| 果冻传媒A片麻豆熟妇人妻| 久久天堂| 亚洲熟女中文字幕在线| 亚洲AO在线| 欧美图片偷拍| 劲爆欧美人妖三区91| 精品999日本| 国产sv美女内射| 怡红院亚洲怡春院av| 在线啊啊啊| 国产美女高潮| 国产精品岛国片在线观看| 看大黄色大片原件| 91久久久久免| 亚洲色图欧美色图制服诱惑| 五月亭亭六月丁香| 高清国产av无码| 久久天天躁日日躁狠狠躁| 久久久蜜桃一区二区三区| 中文字幕第页| 97超碰色中文字幕| CCYY草草影院地址入口| 一区二区三区在线资源| 国产丝袜一区二区三区| 久久久久久99AV无码免费网站| 91丨九色丨国产丨人妻在线| 激情五月天色播| 射丝袜高跟鞋99| 欧美极品| 91无码中出人妻视频| 黄色av播放免不| 91色人妻| 国产精品自拍欧美在线| 柠檬AV导航| 香港日本韩国人妇99www.wccm20| 欧美色图99| 伊人超碰97| 九月丁香婷婷| 日韩欧美麻豆 | 青青草女人天天干| 日韩激情小说一区二区| 色综合20p| 免费啪啪av| 性做久久久久久久| 加勒比AV天堂| 亚洲精品国产熟女| 天天α片| 欧美精品xxxwww| 日韩欧亚中文在线| 精品亚洲国产成人精品| 美女裸体麻豆天美蜜桃91| 91被操| 人妻99p| 久久久久久99999国产精品| 在线综合网| 97亚洲综合电影| 97精品免费| 色婷婷aV一区二区三区麻豆综合| 日本最新1区2区3区| 国产精品懂色tv影视免费观看| 搡老熟女老女人老熟妇免费视频| 图色综合网| www.av家庭乱伦| 色诱中文字幕| 中文字幕一区二区三区高清| 欧美1727免费观看视频| 97超碰人妻| 日本97久久久精品| 亚洲国产美女久久久久| 激情四射婷婷六月天| 在线视频日韩欧美国产| 精品传媒在线一区| 亚洲综合有玛| 国产综合永久精品日韩鬼片| 78精品在线| 欧美色图亚洲色图成人在在线| 97天天摸天天爽| 精品国产网站| 啊啊啊想要| 精品无吗久久| 99热只有这里有精品| 夜夜高潮夜夜爽夜夜爱爱一区 | 成年人黄色视频免费| 男人天堂日日夜夜| www.超碰在线| 亚洲97成人在线观看| 欧美性五月| 中文一区二区婷婷视频| sewuyueav| 亚洲蜜臀懂色| 婷婷久久综合久| 亚洲**2021在线观看| 福利五区| 九九久久99| 久操热线| 精品欧美А∨无码黑人大荫蒂 | 亚洲丝袜少妇在线| 大吊色| 9999久久久久| 18禁中文字幕| JuliaAnnXXX888| 欧美色图97| 国产极品999| 亚洲成人美女无吗| 亚洲精品一区二区精品| 久久久久国产| 国产一区二区三区不卡手机在线| 日韩精品一区二区高清| 97网址97| 老熟妇一区二区三区啪啪| 91狠| 志村玲子视频一区二区| 日韩兔费看黄片| 97资源站国产精品| 亭亭在线资源| 亚洲 欧美 另类 日韩 人妻一区| 国产免费一区在线观看| 国产精品嫩草久久久久| 在线日韩日本亚洲国产| 亚洲黄色电影| 97欧美色| 91在线一起| 91丨精品丨国产丨丝袜| 蜜桃视频一区二区三区在线观看| 你想操日本小逼吗| 五月婷婷丁香六月丁香| 最新日日夜夜天天干干| 日本操逼视频在线| 风月影院男女十八禁| 色婷久久| 无码抄逼网| 色婷婷九月天天综合| 欧美综合娱乐久久| 日本孕妇一区二区视频操逼免费看 | 日韩美女高潮喷水视频| 国产在线不卡导航| 九九精品美女高溯喷水| 日韩精彩免费| 亚州操操穴网| 无码人妻丰满熟妇奶水区毛片| 黄片aaaaa一区| 不卡日本一区二区| 亚洲国产97| 91五十路| 久久精品午夜国产亚洲AV无码| 亚洲欧美校园| 91白嫩| 国产精品一区二区a| 国产精品点击进入在线影院高清 | av毛片aaaaa免费看| 在线αⅴ| 亚洲精品一二区| 强奸乱伦日韩AV| 精品少妇一区二区三区免费观看| 91精品啪在线观看国产城中村| 精品一区二区三区国产 | 超碰免费人妻人人| 看全色黄大色大片免费视频| 最新三级网址| 婷婷丁香成人| 亚洲精品丝袜-不卡成人免费……| 日日操丁香五月天| www…国产操逼| 久久精品一区二区三区不卡| 人妻日日夜夜精品| 亚洲天天影视综合网| 国产丝袜高跟美女av免费观看| 青青操在线亚洲视频观看欧美在线 | 欧美大香蕉专区网| 99热精品在线| 色婷婷综合久久久久中文一区二区 | 国产suv精品一区二区四区999| 久久久中文| 蜜桃色院一区久久| 九九九久久久W精品| 人妻另类 专区 欧美 制服| 超碰色男人操熟女| 熟妇的味道HD中文字幕| 九九综合色| 精品国产一区二区三区久久久蜜臀 | 91麻豆一二三区| 蜜臀AV一区二区三区| 欧美草草| 国产辣妈在线视频福利| 成人av动漫在线观看| 神马久久中文字幕| 久久久久女教师免费一区| 国产精品爆乳懂色蜜乳| 操逼网站地址| 国产精品欧美激在线| 欧美精品系列| 嗯嗯啊啊操我| www.色五月| 粉嫩小泬久久久一区二区| 怡春院久久| 国产免a费看黄片在线| 午夜人妻精品综合在线| 九九热午夜欧亚国产视频| 3PAV乱伦视频| 五月天婷婷小说| 欧美综合 站| 亚洲一区二区三区春色| 簧片免费看视频| 天天激色| 最新亚洲人成网站在线影院| 人人摸人人干| 精品九九九九九九| 亚洲精品视频在线| 欧美综合色综合| 加勒比99999| 亚洲成熟国产精品美女| 97公开久久| 95自拍视频在线观看| 艳美熟妇先锋一二三区| 91爰爱欧美| 少妇一级无码精品| 91n美女视频| 国产乱子伦一区二区三区在线观看| 国产成年女人免费视频播放a| 国产精品一级片在线看| 天美传媒在线一区| 国产一区二区在线播放量| 91xingse| 久久精品国产亚洲AV清纯| 免费看黄视频亚洲网站| 插入综合网| 欧美巨大性舒爽顶到了| 少妇无码太爽| 乱伦一二三区| 亚州 综合 色图| 久热这里只有精品9| jizz啪啪| 男人的天堂2019AV| 精品熟妇视频一区二区| 黄色免费网页无码| 在线人妻熟女一区二区三区四区五区| 国产AV天美传媒一区二区三区| 试看日韩黄片| 超碰97在线 欧美 国产| 波多野结衣之双飞调教在线播放 | 日韩精品人妻中文字幕不卡乱码| 97天天摸天天爽| 久久成年精品| 日本激情免费大片| 亚洲se电影| 天天爽天天爽| 国产精品一区二区a| 熟女欧美日韩综合婷婷| 欧美刺激色黄片免费看| 久久高潮妇女视频| 2025亚洲男人天堂| 亚洲毛片基地专区| 日韩婷婷| 精品无码久久久久久久杏吧| 国产超碰国产97| www.91理论| 久久精品噜噜噜成人看免欧美大片| 老熟女搡BBBB搡BBBB视频| 级品肉射| 91久久久久久久久18| 欧美色偷偷| oumeizonghese,www| 手机在线人成免费视频| 久久超碰com| 嗯啊啊啊轻点视频 | 日本免费二区三区| 黄页18禁| 久久久久久国产手机AV| 欧美综合第一页| 久久超碰大香蕉| 97国产色综合| 熟女精品va中文字幕| 久九九九九九九九热| 欧美在线观看综合国产| 91色综合| 亚洲不卡av在线| 天天精品| 色乱二区| 日韩青久久| 日本加靬比网站发布页| 99爱爱| 操逼天美3区| 肉丝中文无码高清| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 天天色悠悠激情| 激情久久av一区av二区av| 懂色av中文字幕一区二区三区天美| 国产精品无码av嫩草| 精品传媒在线一区| 18一区二区三区| 秋霞视频一区二区| 亚洲国产欧美另类自拍| 久久东京热久久| 日日嗷| 亚洲精品蜜桃久久久久久久| 国产精品一区二区三区,亚洲综合| 91国产伊人大香蕉| 99 国产丝袜在线| 欧美亚洲国内自拍| 久久久久免费少妇| 亚洲一区操| 91五十路| 国产又粗又长的视频| 丝袜亚洲91| 天天日天天舔东京热| 蜜臀AV一区二区三区激情综合| 日韩簧片免费看| 精品福利| 94色色电影网| 啊啊啊 在线| 99热国产精品| 无套后入双马尾| 欧美精品欧美精品系列 | 中文字幕 码 自拍 视频 区| 蜜乳性色无码专日粉嫩骚逼AV| 90后后入| 天天操福利视频综合网站| 热热色色综合| 麻豆天美国美国产AV| 一道本久久棕合爱| 97天天爽| 亚洲第一成人影院色播| 欧美日韩操逼动图| 亚洲一级性爱视频免费看| 国产乱伦亚洲| 第一高清av中文字幕| 国产毛片片精品天天看视频| a级免费在线观看| 日韩亚洲欧美中文字幕| 精品99999| 熟女人妻精品一区二区视频 | 黄页网站成人免费| 欧美日本视频一区| AV中文字幕三四五| 国产强奸乱伦第1页| AAAA欧美日韩| 欧美国产欧美在线观看| 国产精品一区二区三区,亚洲综合| 久久精品熟妇丰满人妻99| 亚洲精品蜜桃久久久久久久| 大香交| 国产精品电影推荐| 国产成人精品一区| 风韵犹存大大大大香蕉 | 国产91亚洲精品一区二区三区| 男人天堂毛片| 欧美色青| 亚洲第一免费视频| 亚洲Av无码成人精品国产| 欧美日韩在线视频网站| 亚洲精品三区在线观看| 在线可观看的黄色网址| 九月婷婷综合| 求求你操操我| 少妇激情AV| 乱伦日本中文自拍| 囯产操逼片| 狠狠操夜夜操蜜桃视频三区| 国产13区| 女人天堂网| 日韩日本欧美在线观看| 97人人操人人摸| 狠狠色综合网| 97色涩| 91色婷婷综合久久中文字幕二区| 97精品一区| 国产成久久综合片| 男人的天堂一区三区| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 图色综合网| 久久久精| 成全在线观看免费观看| 91丨九色丨国产打屁股| 少妇人妻精品| 91岛国动作片| 色色色色日本| 99九九久久| 国产又粗又长视频| 欧美日韩色综合网| 国产精品无码av嫩草| 天天干天天插| 99热这里只有精| 粉嫩AV一区夜夜嗨| 97频视在线| 亚洲91网| 日本福利二区视频| av久日| 色五月AV| 欧美大香蕉专区网| 青青草日逼视频| 丰满人妻-区二区三区免费看 | 一级A片女人高潮叫床| 超碰国产情侣自拍网| 精品一区二区2| 欧美性爱日韩性爱| 精精夜夜| 午夜男人的天堂| 黄色高清无码无码破解免费暗网 | 一区二区三区激情在线观看| 青青青操| 精品中文一区二区| 被男人吃奶很爽的毛片| 日韩人体偷拍| www.男人的天堂| 久久精品三级影视| 智利AV在线网| 精品高清一区二区三区三州| 久草精品国产蜜臀| 91东京热男人的天堂| 亚洲精品久久久久久久久豆丁网| 午夜精品久久久久| 久久久久久久强迫| 亚洲天堂女优在线| 国产精品人妻无码久久久互動交流| 欧美激情性爱视频网站| 五月天伊人| 中文字幕三四区| 亚州宗合另类| 国产精品一二三| 九九99久久| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 五月丁香啪| 欧美色综合网| 男人天堂久久精品| 91精品人妻一区二区三区蜜桃| 99999国产| 熟女丰满人妻一区| 日本欧美中文字幕| 快点操死我| 操逼逼一区视频| 亚洲国产精品久久久久婷婷青年| 日韩97超碰| 欧美综合自拍成人自拍第二十页| 熟女91网| 日本欧美一区二区三区免费| 亚洲天堂人妻一区二区| 国产91影院| AA丁香综合激情| 精品久| 操狠狠| 一个人免费视频观看在线WWW | 色999;丁香五月| 九九九九97| 综合在线导航一区| 亚洲天堂久久| 超碰亚洲97| 人妻啪| 夜夜嗷嗷一区二区| 亚洲操人| 国产一级内射高清视频| 91艹逼精品| 国产成人精品日本视频| 中文日韩欧美熟| 激情小说五月天| 日本道不卡| 蜜臀AV成人精品蜜臀| 午夜电影在线观看无码专区| 日本黄色精品| 熟妇艹鸡八| 欧美劲爆视频一区二区| 97热视频在线观看| 婷婷五月天伊人| 蜜桃视频成a人v在线| 91色夜| 99在线观看无大码| 国产激情综合五月久久| 国产精品视频在线观看| 中文熟女五十乱码在线| 97爱免费插| 啪啪啪精品视频| 97欧美视频| 亚洲色图一区二区三区| 大地资源在线观看中文第二页| 殴美大黄片| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 草草电影院| 熟妇熟女一区二三区| 岛国黄| 1769一区| 东京太热男人的天堂久久久| 黄色不卡视频| 国产福利小视频高清在线观看| 蜜臀久久久| 男人兔费天堂| 欧美专区日本专区| 国产无码精品久久久久久| 欧美啪啪色吧在线| 快播久久人人aV| 欧美曰韩国产精品| 一区二区三区精品黑丝白丝酒店对鸡 | 亚洲色图a| 99精品久久| 激情网色| 天天综合欧美黑人| 色呦呦、国产精品| 日本有码影片下载 | 97人人草| 久久久久国产一区二| 青青免费在线视频一区| 天天亚洲| 熟妇色99| 亚洲双插| 嗯嗯啊啊日韩精品| 色九九九九| 性爱欧美五月| 色91综合网| 精品人妻二区三区| 96精品在线| 成人26uuu| 一起草三级AV电影在线观看| 国产成人五月天丁香花| 99热线麻豆 | 一区二区三区高清天码| 国产二区三区免费视频| www.人人摸在线视频| 亚洲天堂少妇| 午夜福利 成人 91| 精品人妻一区二区蜜桃视频| 96精品一区| 97国产精品一区| 97人人夜| 青青草一区二区高清无码视频| 91处女视频在线观看| 日韩精品操少妇| 先锋精品av色鲁| 中日韩久久久| 激情网色| 黄色片大香蕉| 丰满人妻-区二区三区免费| 五月婷婷六月天| 欧美激色| 日韩亚洲97| rion磁力链接| 一区二区三区不卡视频| 17c嫩草51久久91嫩草| 不卡av免费在线网址| 欧美性生活免费网| 伊人激情五月天一区二区| 国产91精品福利在线| 國產尤物AV尤物在線觀看| 97色色网| 天天干天天操天天拍| 伊人久久大香线综合无码| 欧美在线55555| 免费看污网址| 亚洲综合另类色图| 91岛国动作片| 插穴性爱视频在线观看| J?P?NESEHD熟女熟妇伦| 久久久久亚洲三级电影| www国产天美久久久| 亚洲熟妇自偷自拍另欧美| 蜜臀av中字字幕网站| 天堂在线一区二区| 少妇蹲下买菜露大唇0| 国产伦精品| 人人贴人人摸| 国产精品成人无码av| 中文字幕一区 二区三四五 区日 日骚 | 九九综合久久| 五月婷婷激情综合| 97国产色图| 超碰97极品9| 欧美色图综合| 国内精品a| 熟女人妻av在线资源,黄色的资源| 国产又色又爽又舒服的三级视频| 操逼视频色| 五月天成人综合| 人妻爽爽啪视频| 亚洲精品乱码久久久久久蜜桃麻豆| 97国产|免费| 亚洲成人激情小说视频| 日本高清一区二区在线| 久久精品国产亚洲AV片多多 | 成人夜夜爽| 欧美色图在线视频少妇| 91精品国产乱码| 精品传媒在线一区| 蜜臀久久99精品久久久久久无删减| 亚洲一区日韩精品中文字幕| 日本阿v天堂在线观看| 特级毛片特黄久久免费看| 狼天天狼天天大香蕉| 大乔未久88一区| 99re6国产精品99re| 无码78| 久久精品三级影视| 天天爽夜夜欢视| 超碰97 线线 在现| 久草免费福利在线播放| 丰满人妻一区二区三区四| 欧美另类丝袜熟女| 韩国午夜理伦三级好看| 717影院理论午夜伦八戒| 99精品网站| 日韩字幕一区| 嫩草影院性色| 91九九九小逼| 久久只有精品一区二区三区| 欧美一二三| 99久久9| 久热99999| 蜜桃臀AV在线| 国产真实野战在线视频| 一区| 熟女这里只有精品6| 亚洲视频小说| 26uuu最新| 在线观看十八禁| 大白逼三四级| 麻豆这里只有精品| 久极品在线观看| 俞拍久久国应视频| 久久精视频美日韩在线视频| 久久久专区| 97超碰9| 国产67194| 亚洲日韩乱码中文无码蜜桃臀网站 | 久久a久久| 97久久精品| 久操高青| 国产中文大片资源中文字幕| 久久久久久91香蕉国产| 久久精品国产精品一区| 五月色综合| 国产在线视频午夜精华在| 2001天天操| 日韩电影在线观看网址| 中文字幕乱碼在线| 风间由美日韩欧美久久| 亚欧无码在线| 青草伊人久久| 顶级丝袜熟女一区二区三区| 欧美人妻一区二区| 337p大胆噜噜噜噜噜91Av| 久草看看看| 亚洲天堂另类小说男人| 国产兽交视频在线播放| 91黑丝美女| 日本肉体xxxx裸交| 亚洲精品电影| Av色五月| 日韩中文字幕精品一区在线| 蜜臀亚洲综合一二三四区| 亚洲图片欧洲图片aⅴ| 一区二区播放| 亚洲色人妻综合| 国产精品麻豆免费视频| 91AV天美在线视频| 亚洲另类综合欧美| 国产成久久综合片| 日韩精品怡红院| 国产一区在线观看无码AV| 天天操天天7| 婷婷久久综合| 青青草依人大香蕉| 久久精品视频在线观看| 国产欧美一级在线观看| 天天综合网~91| 三级网站超变态精品| 日韩伦理久 久久 清纯| 久久久国产av美女私房| 操老熟女AV| 人人爽天天爽| 一区操逼日比视频| 干B网| 日韩 女同 综合| 欧美极品女人的天堂| 五月亭亭六月丁香| 97在线日韩中文字幕| 色月天AV导航| 欧亚性爱啪啪| 囯戸精品高潮呻吟旡码| 久久97视频| 草伊人高潮喷水超碰| www.狠狠| 国产精品亚洲无码| 四虎AV在线播放| 亚欧美综合网。| 嫩草影院在线观看精品| 久久久人妻| 人人澡人人干| 99色骚| 1区2区3区在线视频| 五月婷婷色色| 极品尤物自安慰| www国产无码| Aa东京男人的天堂| 欧美,日韩,亚洲视频| 久久亚洲国产成人| 日韩欧美日韩| 黄色成年| 久久综合18p| 欧美人妻精品一区二区| 欧洲站一级二级三级h| 久草婷婷| 天天α片| 婷婷中文网| 亚洲精品97久久| 人妻第一页| 青青草国产一区二区三区| 精品人妻久久久久一区二区三区| 日韩色图 一区二区| 日本久久久久久久久| 无遮挡h肉动漫在线观看| 亚洲欧美另类激情小说| 人妻激情视频| 亚洲人成色9999精品久久| www.色婷婷色综合| 丰满的三级少妇欧美久久久| 亚洲精品人妻在线| 天堂成人网| 久久久久夜夜夜夜| 国产精品久久泡妞网站| 久九9精品| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 人人玩人人添人人澡免费| 夫妻天天操岛国视频| 久久久青青草| 日产成人久久| 日本亚洲vr欧美不卡高清专区| 激情无码日韩|