[{"data":1,"prerenderedAt":5576},["ShallowReactive",2],{"post-thinking/component-encapsulation-2":3},{"id":4,"title":5,"body":6,"date":5566,"description":5567,"extension":5568,"meta":5569,"navigation":152,"path":5570,"seo":5571,"stem":5572,"tags":5573,"__hash__":5575},"content/thinking/组件封装的思考-下.md","组件封装的思考-下",{"type":7,"value":8,"toc":5564},"minimark",[9,13,17,20,23,83,86,89,2982,2985,2995,2998,3001,3132,3139,4731,4734,5561],[10,11,12],"h1",{"id":12},"一个弹窗组件",[14,15,16],"p",{},"上篇提到，封装不光是重用，更多考虑降低单文件的复杂度",[14,18,19],{},"下面的这个业务组件将穿梭框、筛选、请求、确认的功能全部封装在一个文件中",[14,21,22],{},"调用非常简单，父组件无需关注子组件内部，实现了整个局部业务的拆离",[24,25,30],"pre",{"className":26,"code":27,"language":28,"meta":29,"style":29},"language-ts shiki shiki-themes github-light github-dark","dialog.open({\n  defaultSelected,\n  context,\n  onConfirm(selected) {}\n})\n","ts","",[31,32,33,49,55,61,77],"code",{"__ignoreMap":29},[34,35,38,42,46],"span",{"class":36,"line":37},"line",1,[34,39,41],{"class":40},"sVt8B","dialog.",[34,43,45],{"class":44},"sScJk","open",[34,47,48],{"class":40},"({\n",[34,50,52],{"class":36,"line":51},2,[34,53,54],{"class":40},"  defaultSelected,\n",[34,56,58],{"class":36,"line":57},3,[34,59,60],{"class":40},"  context,\n",[34,62,64,67,70,74],{"class":36,"line":63},4,[34,65,66],{"class":44},"  onConfirm",[34,68,69],{"class":40},"(",[34,71,73],{"class":72},"s4XuR","selected",[34,75,76],{"class":40},") {}\n",[34,78,80],{"class":36,"line":79},5,[34,81,82],{"class":40},"})\n",[14,84,85],{},"这里嵌入了交互演示",[87,88],"grading-teacher-dialog-article-demo",{},[24,90,94],{"className":91,"code":92,"language":93,"meta":29,"style":29},"language-vue shiki shiki-themes github-light github-dark","\u003Cscript setup lang=\"ts\">\nimport { getSubjectBySchoolIdList, getTeacherBySchoolIdList } from '@/api/grading'\nimport { useUserStore } from '@/store'\n\nexport type TeacherItem = {\n  tenantUserId: string\n  userName?: string\n  userPhone?: string\n  schoolName?: string\n}\n\ntype SubjectOption = {\n  id: string\n  name: string\n}\n\nconst userStore = useUserStore()\n\n// 弹窗显示状态\nconst visible = ref(false)\n\n// 当前操作的上下文数据（由调用方传入）\nconst context = ref\u003Cany>(null)\n\n// 确认回调\nlet confirmCallback: ((selected: TeacherItem[], ctx: any) => void) | null = null\n\n// 筛选条件\nconst subjectFilter = ref('')\nconst searchKeyword = ref('')\n\n// 科目选项\nconst subjectOptions = ref\u003CSubjectOption[]>([])\n\nasync function fetchSubjectList() {\n  const { data } = await getSubjectBySchoolIdList({\n    schoolId: userStore.schoolInfo.id,\n  })\n  subjectOptions.value = data\n}\n\n// 左侧所有教师数据\nconst allTeachers = ref\u003CTeacherItem[]>([])\n\n// 右侧已选教师\nconst selectedTeachers = ref\u003CTeacherItem[]>([])\n\n// 左侧当前选中的行\nconst leftSelection = ref\u003CTeacherItem[]>([])\n\n// 右侧当前选中的行\nconst rightSelection = ref\u003CTeacherItem[]>([])\n\n// 左侧表格ref\nconst leftTableRef = ref()\n\n// 已选教师的id集合，用于快速判断\nconst selectedIds = computed(() => new Set(selectedTeachers.value.map(t => t.tenantUserId)))\n\n// 检查行是否可选\nfunction checkSelectable(row: TeacherItem) {\n  return !selectedIds.value.has(row.tenantUserId)\n}\n\n// 左侧选择变化\nfunction handleLeftSelectionChange(selection: TeacherItem[]) {\n  leftSelection.value = selection\n  // 将选中的添加到右侧\n  selection.forEach((teacher) => {\n    if (!selectedIds.value.has(teacher.tenantUserId)) {\n      selectedTeachers.value.push({ ...teacher })\n    }\n  })\n  // 清空左侧选择状态\n  nextTick(() => {\n    leftTableRef.value?.clearSelection()\n  })\n}\n\n// 右侧选择变化\nfunction handleRightSelectionChange(selection: TeacherItem[]) {\n  rightSelection.value = selection\n}\n\n// 删除单个\nfunction handleRemove(row: TeacherItem) {\n  const index = selectedTeachers.value.findIndex(t => t.tenantUserId === row.tenantUserId)\n  if (index > -1) {\n    selectedTeachers.value.splice(index, 1)\n  }\n}\n\n// 批量删除右侧选中的\nfunction handleBatchRemove() {\n  if (rightSelection.value.length === 0) {\n    ElMessage.warning('请先选择要删除的教师')\n    return\n  }\n  const removeIds = new Set(rightSelection.value.map(t => t.tenantUserId))\n  selectedTeachers.value = selectedTeachers.value.filter(t => !removeIds.has(t.tenantUserId))\n  rightSelection.value = []\n}\n\n// 取消\nfunction handleCancel() {\n  visible.value = false\n}\n\n// 确定\nfunction handleConfirm() {\n  if (confirmCallback) {\n    confirmCallback([...selectedTeachers.value], context.value)\n  }\n  visible.value = false\n}\n\n// 打开弹窗的方法\ninterface OpenOptions {\n  defaultSelected?: TeacherItem[]\n  context?: any\n  onConfirm?: (selected: TeacherItem[], ctx: any) => void\n}\n\nasync function open(options: OpenOptions = {}) {\n  const { defaultSelected = [], context: ctx = null, onConfirm } = options\n\n  context.value = ctx\n  confirmCallback = onConfirm || null\n  selectedTeachers.value = [...defaultSelected]\n\n  visible.value = true\n  await fetchAllTeachers()\n  await fetchSubjectList()\n}\n\n// 获取所有教师列表\nasync function fetchAllTeachers() {\n  const { data } = await getTeacherBySchoolIdList({\n    schoolId: userStore.schoolInfo.id,\n    classType: 'admin',\n    userNameOrPhone: searchKeyword.value || undefined,\n    subjectId: subjectFilter.value,\n  })\n  allTeachers.value = data as TeacherItem[]\n}\n\nfunction onDialogClosed() {\n  searchKeyword.value = ''\n  subjectFilter.value = ''\n  rightSelection.value = []\n  leftSelection.value = []\n  selectedTeachers.value = []\n  allTeachers.value = []\n  context.value = null\n  confirmCallback = null\n}\n\n// 暴露 open 方法供外部调用\ndefineExpose({\n  open,\n})\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cel-dialog\n    v-model=\"visible\"\n    title=\"设置阅卷教师\"\n    width=\"1000\"\n    :close-on-click-modal=\"false\"\n    :close-on-press-escape=\"false\"\n    @closed=\"onDialogClosed\"\n  >\n    \u003Cdiv class=\"grid grid-cols-[1fr_1fr] gap-[20px] h-[550px]\">\n      \u003C!-- 左侧：全部教师 -->\n      \u003Cdiv class=\"\">\n        \u003Cdiv class=\"flex items-center mb-[10px] gap-[10px]\">\n          \u003Cel-select v-model=\"subjectFilter\" placeholder=\"科目选择\" clearable class=\"w-[200px]!\" @change=\"fetchAllTeachers\">\n            \u003Cel-option\n              v-for=\"item in subjectOptions\"\n              :key=\"item.id\"\n              :label=\"item.name\"\n              :value=\"item.id\"\n            />\n          \u003C/el-select>\n          \u003Cel-input\n            v-model=\"searchKeyword\"\n            placeholder=\"请输入姓名或账号进行搜索\"\n            clearable\n            @change=\"fetchAllTeachers\"\n          />\n        \u003C/div>\n        \u003Cel-table\n          ref=\"leftTableRef\"\n          :data=\"allTeachers\"\n          border\n          max-height=\"500\"\n          @selection-change=\"handleLeftSelectionChange\"\n        >\n          \u003Cel-table-column\n            type=\"selection\"\n            width=\"55\"\n            :selectable=\"checkSelectable\"\n          />\n          \u003Cel-table-column prop=\"userName\" label=\"姓名\" />\n          \u003Cel-table-column prop=\"userPhone\" label=\"联系方式\" />\n          \u003Cel-table-column prop=\"schoolName\" label=\"学校\" />\n        \u003C/el-table>\n      \u003C/div>\n\n      \u003C!-- 右侧：已选教师 -->\n      \u003Cdiv class=\"\">\n        \u003Cdiv class=\"mb-[10px] font-bold text-[#027AFF] flex h-[32px] leading-[32px]\">\n          已选教师\n          \u003Cel-button type=\"primary\" link class=\"ml-auto\" @click=\"handleBatchRemove\">\n            删除选中教师\n          \u003C/el-button>\n        \u003C/div>\n        \u003Cel-table\n          :data=\"selectedTeachers\"\n          border\n          max-height=\"500\"\n          @selection-change=\"handleRightSelectionChange\"\n        >\n          \u003Cel-table-column type=\"selection\" width=\"55\" />\n          \u003Cel-table-column prop=\"userName\" label=\"姓名\" />\n          \u003Cel-table-column prop=\"userPhone\" label=\"联系方式\" />\n          \u003Cel-table-column prop=\"schoolName\" label=\"学校\" />\n          \u003Cel-table-column label=\"操作\" width=\"60\" align=\"center\">\n            \u003Ctemplate #default=\"{ row }\">\n              \u003Cel-button type=\"danger\" link @click=\"handleRemove(row)\">\n                删除\n              \u003C/el-button>\n            \u003C/template>\n          \u003C/el-table-column>\n        \u003C/el-table>\n      \u003C/div>\n    \u003C/div>\n\n    \u003Ctemplate #footer>\n      \u003Cdiv class=\"flex gap-4 justify-end\">\n        \u003Cel-button @click=\"handleCancel\">\n          取消\n        \u003C/el-button>\n        \u003Cel-button type=\"primary\" @click=\"handleConfirm\">\n          确定\n        \u003C/el-button>\n      \u003C/div>\n    \u003C/template>\n  \u003C/el-dialog>\n\u003C/template>\n\n\u003Cstyle scoped lang=\"scss\">\n:deep(.el-table .el-table__row) {\n  .el-checkbox.is-disabled {\n    .el-checkbox__inner {\n      background-color: #f5f7fa;\n      border-color: #e4e7ed;\n    }\n  }\n}\n\u003C/style>\n","vue",[31,95,96,121,136,148,154,171,184,195,205,215,221,226,239,249,259,264,269,286,291,298,319,324,330,355,360,366,419,424,430,449,467,472,478,498,503,518,543,549,555,566,571,576,582,601,606,612,630,635,641,659,664,670,688,693,699,713,718,724,765,770,776,797,815,820,825,831,851,862,868,889,908,926,932,937,943,955,966,971,976,981,987,1005,1015,1020,1025,1031,1049,1080,1100,1116,1122,1127,1132,1138,1148,1167,1183,1189,1194,1222,1251,1261,1266,1271,1277,1287,1298,1303,1308,1314,1324,1332,1346,1351,1360,1365,1370,1376,1387,1400,1411,1441,1446,1451,1475,1515,1520,1531,1547,1562,1567,1577,1588,1597,1602,1607,1613,1624,1644,1649,1661,1674,1680,1685,1703,1708,1713,1723,1734,1744,1753,1762,1771,1780,1789,1798,1803,1808,1814,1822,1828,1833,1843,1848,1858,1867,1878,1889,1900,1911,1921,1932,1938,1957,1963,1980,1997,2042,2051,2062,2073,2084,2094,2100,2110,2118,2129,2140,2146,2157,2163,2173,2181,2192,2203,2210,2221,2232,2238,2246,2257,2268,2279,2284,2311,2334,2357,2367,2377,2382,2388,2403,2419,2425,2460,2466,2475,2484,2491,2501,2506,2515,2525,2530,2554,2575,2596,2617,2648,2673,2699,2705,2715,2725,2734,2743,2752,2762,2767,2781,2797,2813,2819,2828,2850,2856,2865,2874,2883,2894,2903,2908,2928,2934,2940,2946,2952,2958,2963,2968,2973],{"__ignoreMap":29},[34,97,98,101,105,108,111,114,118],{"class":36,"line":37},[34,99,100],{"class":40},"\u003C",[34,102,104],{"class":103},"s9eBZ","script",[34,106,107],{"class":44}," setup",[34,109,110],{"class":44}," lang",[34,112,113],{"class":40},"=",[34,115,117],{"class":116},"sZZnC","\"ts\"",[34,119,120],{"class":40},">\n",[34,122,123,127,130,133],{"class":36,"line":51},[34,124,126],{"class":125},"szBVR","import",[34,128,129],{"class":40}," { getSubjectBySchoolIdList, getTeacherBySchoolIdList } ",[34,131,132],{"class":125},"from",[34,134,135],{"class":116}," '@/api/grading'\n",[34,137,138,140,143,145],{"class":36,"line":57},[34,139,126],{"class":125},[34,141,142],{"class":40}," { useUserStore } ",[34,144,132],{"class":125},[34,146,147],{"class":116}," '@/store'\n",[34,149,150],{"class":36,"line":63},[34,151,153],{"emptyLinePlaceholder":152},true,"\n",[34,155,156,159,162,165,168],{"class":36,"line":79},[34,157,158],{"class":125},"export",[34,160,161],{"class":125}," type",[34,163,164],{"class":44}," TeacherItem",[34,166,167],{"class":125}," =",[34,169,170],{"class":40}," {\n",[34,172,174,177,180],{"class":36,"line":173},6,[34,175,176],{"class":72},"  tenantUserId",[34,178,179],{"class":125},":",[34,181,183],{"class":182},"sj4cs"," string\n",[34,185,187,190,193],{"class":36,"line":186},7,[34,188,189],{"class":72},"  userName",[34,191,192],{"class":125},"?:",[34,194,183],{"class":182},[34,196,198,201,203],{"class":36,"line":197},8,[34,199,200],{"class":72},"  userPhone",[34,202,192],{"class":125},[34,204,183],{"class":182},[34,206,208,211,213],{"class":36,"line":207},9,[34,209,210],{"class":72},"  schoolName",[34,212,192],{"class":125},[34,214,183],{"class":182},[34,216,218],{"class":36,"line":217},10,[34,219,220],{"class":40},"}\n",[34,222,224],{"class":36,"line":223},11,[34,225,153],{"emptyLinePlaceholder":152},[34,227,229,232,235,237],{"class":36,"line":228},12,[34,230,231],{"class":125},"type",[34,233,234],{"class":44}," SubjectOption",[34,236,167],{"class":125},[34,238,170],{"class":40},[34,240,242,245,247],{"class":36,"line":241},13,[34,243,244],{"class":72},"  id",[34,246,179],{"class":125},[34,248,183],{"class":182},[34,250,252,255,257],{"class":36,"line":251},14,[34,253,254],{"class":72},"  name",[34,256,179],{"class":125},[34,258,183],{"class":182},[34,260,262],{"class":36,"line":261},15,[34,263,220],{"class":40},[34,265,267],{"class":36,"line":266},16,[34,268,153],{"emptyLinePlaceholder":152},[34,270,272,275,278,280,283],{"class":36,"line":271},17,[34,273,274],{"class":125},"const",[34,276,277],{"class":182}," userStore",[34,279,167],{"class":125},[34,281,282],{"class":44}," useUserStore",[34,284,285],{"class":40},"()\n",[34,287,289],{"class":36,"line":288},18,[34,290,153],{"emptyLinePlaceholder":152},[34,292,294],{"class":36,"line":293},19,[34,295,297],{"class":296},"sJ8bj","// 弹窗显示状态\n",[34,299,301,303,306,308,311,313,316],{"class":36,"line":300},20,[34,302,274],{"class":125},[34,304,305],{"class":182}," visible",[34,307,167],{"class":125},[34,309,310],{"class":44}," ref",[34,312,69],{"class":40},[34,314,315],{"class":182},"false",[34,317,318],{"class":40},")\n",[34,320,322],{"class":36,"line":321},21,[34,323,153],{"emptyLinePlaceholder":152},[34,325,327],{"class":36,"line":326},22,[34,328,329],{"class":296},"// 当前操作的上下文数据（由调用方传入）\n",[34,331,333,335,338,340,342,344,347,350,353],{"class":36,"line":332},23,[34,334,274],{"class":125},[34,336,337],{"class":182}," context",[34,339,167],{"class":125},[34,341,310],{"class":44},[34,343,100],{"class":40},[34,345,346],{"class":182},"any",[34,348,349],{"class":40},">(",[34,351,352],{"class":182},"null",[34,354,318],{"class":40},[34,356,358],{"class":36,"line":357},24,[34,359,153],{"emptyLinePlaceholder":152},[34,361,363],{"class":36,"line":362},25,[34,364,365],{"class":296},"// 确认回调\n",[34,367,369,372,375,377,380,382,384,386,389,392,394,397,400,403,406,408,411,414,416],{"class":36,"line":368},26,[34,370,371],{"class":125},"let",[34,373,374],{"class":40}," confirmCallback",[34,376,179],{"class":125},[34,378,379],{"class":40}," ((",[34,381,73],{"class":72},[34,383,179],{"class":125},[34,385,164],{"class":44},[34,387,388],{"class":40},"[], ",[34,390,391],{"class":72},"ctx",[34,393,179],{"class":125},[34,395,396],{"class":182}," any",[34,398,399],{"class":40},") ",[34,401,402],{"class":125},"=>",[34,404,405],{"class":182}," void",[34,407,399],{"class":40},[34,409,410],{"class":125},"|",[34,412,413],{"class":182}," null",[34,415,167],{"class":125},[34,417,418],{"class":182}," null\n",[34,420,422],{"class":36,"line":421},27,[34,423,153],{"emptyLinePlaceholder":152},[34,425,427],{"class":36,"line":426},28,[34,428,429],{"class":296},"// 筛选条件\n",[34,431,433,435,438,440,442,444,447],{"class":36,"line":432},29,[34,434,274],{"class":125},[34,436,437],{"class":182}," subjectFilter",[34,439,167],{"class":125},[34,441,310],{"class":44},[34,443,69],{"class":40},[34,445,446],{"class":116},"''",[34,448,318],{"class":40},[34,450,452,454,457,459,461,463,465],{"class":36,"line":451},30,[34,453,274],{"class":125},[34,455,456],{"class":182}," searchKeyword",[34,458,167],{"class":125},[34,460,310],{"class":44},[34,462,69],{"class":40},[34,464,446],{"class":116},[34,466,318],{"class":40},[34,468,470],{"class":36,"line":469},31,[34,471,153],{"emptyLinePlaceholder":152},[34,473,475],{"class":36,"line":474},32,[34,476,477],{"class":296},"// 科目选项\n",[34,479,481,483,486,488,490,492,495],{"class":36,"line":480},33,[34,482,274],{"class":125},[34,484,485],{"class":182}," subjectOptions",[34,487,167],{"class":125},[34,489,310],{"class":44},[34,491,100],{"class":40},[34,493,494],{"class":44},"SubjectOption",[34,496,497],{"class":40},"[]>([])\n",[34,499,501],{"class":36,"line":500},34,[34,502,153],{"emptyLinePlaceholder":152},[34,504,506,509,512,515],{"class":36,"line":505},35,[34,507,508],{"class":125},"async",[34,510,511],{"class":125}," function",[34,513,514],{"class":44}," fetchSubjectList",[34,516,517],{"class":40},"() {\n",[34,519,521,524,527,530,533,535,538,541],{"class":36,"line":520},36,[34,522,523],{"class":125},"  const",[34,525,526],{"class":40}," { ",[34,528,529],{"class":182},"data",[34,531,532],{"class":40}," } ",[34,534,113],{"class":125},[34,536,537],{"class":125}," await",[34,539,540],{"class":44}," getSubjectBySchoolIdList",[34,542,48],{"class":40},[34,544,546],{"class":36,"line":545},37,[34,547,548],{"class":40},"    schoolId: userStore.schoolInfo.id,\n",[34,550,552],{"class":36,"line":551},38,[34,553,554],{"class":40},"  })\n",[34,556,558,561,563],{"class":36,"line":557},39,[34,559,560],{"class":40},"  subjectOptions.value ",[34,562,113],{"class":125},[34,564,565],{"class":40}," data\n",[34,567,569],{"class":36,"line":568},40,[34,570,220],{"class":40},[34,572,574],{"class":36,"line":573},41,[34,575,153],{"emptyLinePlaceholder":152},[34,577,579],{"class":36,"line":578},42,[34,580,581],{"class":296},"// 左侧所有教师数据\n",[34,583,585,587,590,592,594,596,599],{"class":36,"line":584},43,[34,586,274],{"class":125},[34,588,589],{"class":182}," allTeachers",[34,591,167],{"class":125},[34,593,310],{"class":44},[34,595,100],{"class":40},[34,597,598],{"class":44},"TeacherItem",[34,600,497],{"class":40},[34,602,604],{"class":36,"line":603},44,[34,605,153],{"emptyLinePlaceholder":152},[34,607,609],{"class":36,"line":608},45,[34,610,611],{"class":296},"// 右侧已选教师\n",[34,613,615,617,620,622,624,626,628],{"class":36,"line":614},46,[34,616,274],{"class":125},[34,618,619],{"class":182}," selectedTeachers",[34,621,167],{"class":125},[34,623,310],{"class":44},[34,625,100],{"class":40},[34,627,598],{"class":44},[34,629,497],{"class":40},[34,631,633],{"class":36,"line":632},47,[34,634,153],{"emptyLinePlaceholder":152},[34,636,638],{"class":36,"line":637},48,[34,639,640],{"class":296},"// 左侧当前选中的行\n",[34,642,644,646,649,651,653,655,657],{"class":36,"line":643},49,[34,645,274],{"class":125},[34,647,648],{"class":182}," leftSelection",[34,650,167],{"class":125},[34,652,310],{"class":44},[34,654,100],{"class":40},[34,656,598],{"class":44},[34,658,497],{"class":40},[34,660,662],{"class":36,"line":661},50,[34,663,153],{"emptyLinePlaceholder":152},[34,665,667],{"class":36,"line":666},51,[34,668,669],{"class":296},"// 右侧当前选中的行\n",[34,671,673,675,678,680,682,684,686],{"class":36,"line":672},52,[34,674,274],{"class":125},[34,676,677],{"class":182}," rightSelection",[34,679,167],{"class":125},[34,681,310],{"class":44},[34,683,100],{"class":40},[34,685,598],{"class":44},[34,687,497],{"class":40},[34,689,691],{"class":36,"line":690},53,[34,692,153],{"emptyLinePlaceholder":152},[34,694,696],{"class":36,"line":695},54,[34,697,698],{"class":296},"// 左侧表格ref\n",[34,700,702,704,707,709,711],{"class":36,"line":701},55,[34,703,274],{"class":125},[34,705,706],{"class":182}," leftTableRef",[34,708,167],{"class":125},[34,710,310],{"class":44},[34,712,285],{"class":40},[34,714,716],{"class":36,"line":715},56,[34,717,153],{"emptyLinePlaceholder":152},[34,719,721],{"class":36,"line":720},57,[34,722,723],{"class":296},"// 已选教师的id集合，用于快速判断\n",[34,725,727,729,732,734,737,740,742,745,748,751,754,756,759,762],{"class":36,"line":726},58,[34,728,274],{"class":125},[34,730,731],{"class":182}," selectedIds",[34,733,167],{"class":125},[34,735,736],{"class":44}," computed",[34,738,739],{"class":40},"(() ",[34,741,402],{"class":125},[34,743,744],{"class":125}," new",[34,746,747],{"class":44}," Set",[34,749,750],{"class":40},"(selectedTeachers.value.",[34,752,753],{"class":44},"map",[34,755,69],{"class":40},[34,757,758],{"class":72},"t",[34,760,761],{"class":125}," =>",[34,763,764],{"class":40}," t.tenantUserId)))\n",[34,766,768],{"class":36,"line":767},59,[34,769,153],{"emptyLinePlaceholder":152},[34,771,773],{"class":36,"line":772},60,[34,774,775],{"class":296},"// 检查行是否可选\n",[34,777,779,782,785,787,790,792,794],{"class":36,"line":778},61,[34,780,781],{"class":125},"function",[34,783,784],{"class":44}," checkSelectable",[34,786,69],{"class":40},[34,788,789],{"class":72},"row",[34,791,179],{"class":125},[34,793,164],{"class":44},[34,795,796],{"class":40},") {\n",[34,798,800,803,806,809,812],{"class":36,"line":799},62,[34,801,802],{"class":125},"  return",[34,804,805],{"class":125}," !",[34,807,808],{"class":40},"selectedIds.value.",[34,810,811],{"class":44},"has",[34,813,814],{"class":40},"(row.tenantUserId)\n",[34,816,818],{"class":36,"line":817},63,[34,819,220],{"class":40},[34,821,823],{"class":36,"line":822},64,[34,824,153],{"emptyLinePlaceholder":152},[34,826,828],{"class":36,"line":827},65,[34,829,830],{"class":296},"// 左侧选择变化\n",[34,832,834,836,839,841,844,846,848],{"class":36,"line":833},66,[34,835,781],{"class":125},[34,837,838],{"class":44}," handleLeftSelectionChange",[34,840,69],{"class":40},[34,842,843],{"class":72},"selection",[34,845,179],{"class":125},[34,847,164],{"class":44},[34,849,850],{"class":40},"[]) {\n",[34,852,854,857,859],{"class":36,"line":853},67,[34,855,856],{"class":40},"  leftSelection.value ",[34,858,113],{"class":125},[34,860,861],{"class":40}," selection\n",[34,863,865],{"class":36,"line":864},68,[34,866,867],{"class":296},"  // 将选中的添加到右侧\n",[34,869,871,874,877,880,883,885,887],{"class":36,"line":870},69,[34,872,873],{"class":40},"  selection.",[34,875,876],{"class":44},"forEach",[34,878,879],{"class":40},"((",[34,881,882],{"class":72},"teacher",[34,884,399],{"class":40},[34,886,402],{"class":125},[34,888,170],{"class":40},[34,890,892,895,898,901,903,905],{"class":36,"line":891},70,[34,893,894],{"class":125},"    if",[34,896,897],{"class":40}," (",[34,899,900],{"class":125},"!",[34,902,808],{"class":40},[34,904,811],{"class":44},[34,906,907],{"class":40},"(teacher.tenantUserId)) {\n",[34,909,911,914,917,920,923],{"class":36,"line":910},71,[34,912,913],{"class":40},"      selectedTeachers.value.",[34,915,916],{"class":44},"push",[34,918,919],{"class":40},"({ ",[34,921,922],{"class":125},"...",[34,924,925],{"class":40},"teacher })\n",[34,927,929],{"class":36,"line":928},72,[34,930,931],{"class":40},"    }\n",[34,933,935],{"class":36,"line":934},73,[34,936,554],{"class":40},[34,938,940],{"class":36,"line":939},74,[34,941,942],{"class":296},"  // 清空左侧选择状态\n",[34,944,946,949,951,953],{"class":36,"line":945},75,[34,947,948],{"class":44},"  nextTick",[34,950,739],{"class":40},[34,952,402],{"class":125},[34,954,170],{"class":40},[34,956,958,961,964],{"class":36,"line":957},76,[34,959,960],{"class":40},"    leftTableRef.value?.",[34,962,963],{"class":44},"clearSelection",[34,965,285],{"class":40},[34,967,969],{"class":36,"line":968},77,[34,970,554],{"class":40},[34,972,974],{"class":36,"line":973},78,[34,975,220],{"class":40},[34,977,979],{"class":36,"line":978},79,[34,980,153],{"emptyLinePlaceholder":152},[34,982,984],{"class":36,"line":983},80,[34,985,986],{"class":296},"// 右侧选择变化\n",[34,988,990,992,995,997,999,1001,1003],{"class":36,"line":989},81,[34,991,781],{"class":125},[34,993,994],{"class":44}," handleRightSelectionChange",[34,996,69],{"class":40},[34,998,843],{"class":72},[34,1000,179],{"class":125},[34,1002,164],{"class":44},[34,1004,850],{"class":40},[34,1006,1008,1011,1013],{"class":36,"line":1007},82,[34,1009,1010],{"class":40},"  rightSelection.value ",[34,1012,113],{"class":125},[34,1014,861],{"class":40},[34,1016,1018],{"class":36,"line":1017},83,[34,1019,220],{"class":40},[34,1021,1023],{"class":36,"line":1022},84,[34,1024,153],{"emptyLinePlaceholder":152},[34,1026,1028],{"class":36,"line":1027},85,[34,1029,1030],{"class":296},"// 删除单个\n",[34,1032,1034,1036,1039,1041,1043,1045,1047],{"class":36,"line":1033},86,[34,1035,781],{"class":125},[34,1037,1038],{"class":44}," handleRemove",[34,1040,69],{"class":40},[34,1042,789],{"class":72},[34,1044,179],{"class":125},[34,1046,164],{"class":44},[34,1048,796],{"class":40},[34,1050,1052,1054,1057,1059,1062,1065,1067,1069,1071,1074,1077],{"class":36,"line":1051},87,[34,1053,523],{"class":125},[34,1055,1056],{"class":182}," index",[34,1058,167],{"class":125},[34,1060,1061],{"class":40}," selectedTeachers.value.",[34,1063,1064],{"class":44},"findIndex",[34,1066,69],{"class":40},[34,1068,758],{"class":72},[34,1070,761],{"class":125},[34,1072,1073],{"class":40}," t.tenantUserId ",[34,1075,1076],{"class":125},"===",[34,1078,1079],{"class":40}," row.tenantUserId)\n",[34,1081,1083,1086,1089,1092,1095,1098],{"class":36,"line":1082},88,[34,1084,1085],{"class":125},"  if",[34,1087,1088],{"class":40}," (index ",[34,1090,1091],{"class":125},">",[34,1093,1094],{"class":125}," -",[34,1096,1097],{"class":182},"1",[34,1099,796],{"class":40},[34,1101,1103,1106,1109,1112,1114],{"class":36,"line":1102},89,[34,1104,1105],{"class":40},"    selectedTeachers.value.",[34,1107,1108],{"class":44},"splice",[34,1110,1111],{"class":40},"(index, ",[34,1113,1097],{"class":182},[34,1115,318],{"class":40},[34,1117,1119],{"class":36,"line":1118},90,[34,1120,1121],{"class":40},"  }\n",[34,1123,1125],{"class":36,"line":1124},91,[34,1126,220],{"class":40},[34,1128,1130],{"class":36,"line":1129},92,[34,1131,153],{"emptyLinePlaceholder":152},[34,1133,1135],{"class":36,"line":1134},93,[34,1136,1137],{"class":296},"// 批量删除右侧选中的\n",[34,1139,1141,1143,1146],{"class":36,"line":1140},94,[34,1142,781],{"class":125},[34,1144,1145],{"class":44}," handleBatchRemove",[34,1147,517],{"class":40},[34,1149,1151,1153,1156,1159,1162,1165],{"class":36,"line":1150},95,[34,1152,1085],{"class":125},[34,1154,1155],{"class":40}," (rightSelection.value.",[34,1157,1158],{"class":182},"length",[34,1160,1161],{"class":125}," ===",[34,1163,1164],{"class":182}," 0",[34,1166,796],{"class":40},[34,1168,1170,1173,1176,1178,1181],{"class":36,"line":1169},96,[34,1171,1172],{"class":40},"    ElMessage.",[34,1174,1175],{"class":44},"warning",[34,1177,69],{"class":40},[34,1179,1180],{"class":116},"'请先选择要删除的教师'",[34,1182,318],{"class":40},[34,1184,1186],{"class":36,"line":1185},97,[34,1187,1188],{"class":125},"    return\n",[34,1190,1192],{"class":36,"line":1191},98,[34,1193,1121],{"class":40},[34,1195,1197,1199,1202,1204,1206,1208,1211,1213,1215,1217,1219],{"class":36,"line":1196},99,[34,1198,523],{"class":125},[34,1200,1201],{"class":182}," removeIds",[34,1203,167],{"class":125},[34,1205,744],{"class":125},[34,1207,747],{"class":44},[34,1209,1210],{"class":40},"(rightSelection.value.",[34,1212,753],{"class":44},[34,1214,69],{"class":40},[34,1216,758],{"class":72},[34,1218,761],{"class":125},[34,1220,1221],{"class":40}," t.tenantUserId))\n",[34,1223,1225,1228,1230,1232,1235,1237,1239,1241,1243,1246,1248],{"class":36,"line":1224},100,[34,1226,1227],{"class":40},"  selectedTeachers.value ",[34,1229,113],{"class":125},[34,1231,1061],{"class":40},[34,1233,1234],{"class":44},"filter",[34,1236,69],{"class":40},[34,1238,758],{"class":72},[34,1240,761],{"class":125},[34,1242,805],{"class":125},[34,1244,1245],{"class":40},"removeIds.",[34,1247,811],{"class":44},[34,1249,1250],{"class":40},"(t.tenantUserId))\n",[34,1252,1254,1256,1258],{"class":36,"line":1253},101,[34,1255,1010],{"class":40},[34,1257,113],{"class":125},[34,1259,1260],{"class":40}," []\n",[34,1262,1264],{"class":36,"line":1263},102,[34,1265,220],{"class":40},[34,1267,1269],{"class":36,"line":1268},103,[34,1270,153],{"emptyLinePlaceholder":152},[34,1272,1274],{"class":36,"line":1273},104,[34,1275,1276],{"class":296},"// 取消\n",[34,1278,1280,1282,1285],{"class":36,"line":1279},105,[34,1281,781],{"class":125},[34,1283,1284],{"class":44}," handleCancel",[34,1286,517],{"class":40},[34,1288,1290,1293,1295],{"class":36,"line":1289},106,[34,1291,1292],{"class":40},"  visible.value ",[34,1294,113],{"class":125},[34,1296,1297],{"class":182}," false\n",[34,1299,1301],{"class":36,"line":1300},107,[34,1302,220],{"class":40},[34,1304,1306],{"class":36,"line":1305},108,[34,1307,153],{"emptyLinePlaceholder":152},[34,1309,1311],{"class":36,"line":1310},109,[34,1312,1313],{"class":296},"// 确定\n",[34,1315,1317,1319,1322],{"class":36,"line":1316},110,[34,1318,781],{"class":125},[34,1320,1321],{"class":44}," handleConfirm",[34,1323,517],{"class":40},[34,1325,1327,1329],{"class":36,"line":1326},111,[34,1328,1085],{"class":125},[34,1330,1331],{"class":40}," (confirmCallback) {\n",[34,1333,1335,1338,1341,1343],{"class":36,"line":1334},112,[34,1336,1337],{"class":44},"    confirmCallback",[34,1339,1340],{"class":40},"([",[34,1342,922],{"class":125},[34,1344,1345],{"class":40},"selectedTeachers.value], context.value)\n",[34,1347,1349],{"class":36,"line":1348},113,[34,1350,1121],{"class":40},[34,1352,1354,1356,1358],{"class":36,"line":1353},114,[34,1355,1292],{"class":40},[34,1357,113],{"class":125},[34,1359,1297],{"class":182},[34,1361,1363],{"class":36,"line":1362},115,[34,1364,220],{"class":40},[34,1366,1368],{"class":36,"line":1367},116,[34,1369,153],{"emptyLinePlaceholder":152},[34,1371,1373],{"class":36,"line":1372},117,[34,1374,1375],{"class":296},"// 打开弹窗的方法\n",[34,1377,1379,1382,1385],{"class":36,"line":1378},118,[34,1380,1381],{"class":125},"interface",[34,1383,1384],{"class":44}," OpenOptions",[34,1386,170],{"class":40},[34,1388,1390,1393,1395,1397],{"class":36,"line":1389},119,[34,1391,1392],{"class":72},"  defaultSelected",[34,1394,192],{"class":125},[34,1396,164],{"class":44},[34,1398,1399],{"class":40},"[]\n",[34,1401,1403,1406,1408],{"class":36,"line":1402},120,[34,1404,1405],{"class":72},"  context",[34,1407,192],{"class":125},[34,1409,1410],{"class":182}," any\n",[34,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438],{"class":36,"line":1413},121,[34,1415,66],{"class":44},[34,1417,192],{"class":125},[34,1419,897],{"class":40},[34,1421,73],{"class":72},[34,1423,179],{"class":125},[34,1425,164],{"class":44},[34,1427,388],{"class":40},[34,1429,391],{"class":72},[34,1431,179],{"class":125},[34,1433,396],{"class":182},[34,1435,399],{"class":40},[34,1437,402],{"class":125},[34,1439,1440],{"class":182}," void\n",[34,1442,1444],{"class":36,"line":1443},122,[34,1445,220],{"class":40},[34,1447,1449],{"class":36,"line":1448},123,[34,1450,153],{"emptyLinePlaceholder":152},[34,1452,1454,1456,1458,1461,1463,1466,1468,1470,1472],{"class":36,"line":1453},124,[34,1455,508],{"class":125},[34,1457,511],{"class":125},[34,1459,1460],{"class":44}," open",[34,1462,69],{"class":40},[34,1464,1465],{"class":72},"options",[34,1467,179],{"class":125},[34,1469,1384],{"class":44},[34,1471,167],{"class":125},[34,1473,1474],{"class":40}," {}) {\n",[34,1476,1478,1480,1482,1485,1487,1490,1493,1496,1498,1500,1502,1505,1508,1510,1512],{"class":36,"line":1477},125,[34,1479,523],{"class":125},[34,1481,526],{"class":40},[34,1483,1484],{"class":182},"defaultSelected",[34,1486,167],{"class":125},[34,1488,1489],{"class":40}," [], ",[34,1491,1492],{"class":72},"context",[34,1494,1495],{"class":40},": ",[34,1497,391],{"class":182},[34,1499,167],{"class":125},[34,1501,413],{"class":182},[34,1503,1504],{"class":40},", ",[34,1506,1507],{"class":182},"onConfirm",[34,1509,532],{"class":40},[34,1511,113],{"class":125},[34,1513,1514],{"class":40}," options\n",[34,1516,1518],{"class":36,"line":1517},126,[34,1519,153],{"emptyLinePlaceholder":152},[34,1521,1523,1526,1528],{"class":36,"line":1522},127,[34,1524,1525],{"class":40},"  context.value ",[34,1527,113],{"class":125},[34,1529,1530],{"class":40}," ctx\n",[34,1532,1534,1537,1539,1542,1545],{"class":36,"line":1533},128,[34,1535,1536],{"class":40},"  confirmCallback ",[34,1538,113],{"class":125},[34,1540,1541],{"class":40}," onConfirm ",[34,1543,1544],{"class":125},"||",[34,1546,418],{"class":182},[34,1548,1550,1552,1554,1557,1559],{"class":36,"line":1549},129,[34,1551,1227],{"class":40},[34,1553,113],{"class":125},[34,1555,1556],{"class":40}," [",[34,1558,922],{"class":125},[34,1560,1561],{"class":40},"defaultSelected]\n",[34,1563,1565],{"class":36,"line":1564},130,[34,1566,153],{"emptyLinePlaceholder":152},[34,1568,1570,1572,1574],{"class":36,"line":1569},131,[34,1571,1292],{"class":40},[34,1573,113],{"class":125},[34,1575,1576],{"class":182}," true\n",[34,1578,1580,1583,1586],{"class":36,"line":1579},132,[34,1581,1582],{"class":125},"  await",[34,1584,1585],{"class":44}," fetchAllTeachers",[34,1587,285],{"class":40},[34,1589,1591,1593,1595],{"class":36,"line":1590},133,[34,1592,1582],{"class":125},[34,1594,514],{"class":44},[34,1596,285],{"class":40},[34,1598,1600],{"class":36,"line":1599},134,[34,1601,220],{"class":40},[34,1603,1605],{"class":36,"line":1604},135,[34,1606,153],{"emptyLinePlaceholder":152},[34,1608,1610],{"class":36,"line":1609},136,[34,1611,1612],{"class":296},"// 获取所有教师列表\n",[34,1614,1616,1618,1620,1622],{"class":36,"line":1615},137,[34,1617,508],{"class":125},[34,1619,511],{"class":125},[34,1621,1585],{"class":44},[34,1623,517],{"class":40},[34,1625,1627,1629,1631,1633,1635,1637,1639,1642],{"class":36,"line":1626},138,[34,1628,523],{"class":125},[34,1630,526],{"class":40},[34,1632,529],{"class":182},[34,1634,532],{"class":40},[34,1636,113],{"class":125},[34,1638,537],{"class":125},[34,1640,1641],{"class":44}," getTeacherBySchoolIdList",[34,1643,48],{"class":40},[34,1645,1647],{"class":36,"line":1646},139,[34,1648,548],{"class":40},[34,1650,1652,1655,1658],{"class":36,"line":1651},140,[34,1653,1654],{"class":40},"    classType: ",[34,1656,1657],{"class":116},"'admin'",[34,1659,1660],{"class":40},",\n",[34,1662,1664,1667,1669,1672],{"class":36,"line":1663},141,[34,1665,1666],{"class":40},"    userNameOrPhone: searchKeyword.value ",[34,1668,1544],{"class":125},[34,1670,1671],{"class":182}," undefined",[34,1673,1660],{"class":40},[34,1675,1677],{"class":36,"line":1676},142,[34,1678,1679],{"class":40},"    subjectId: subjectFilter.value,\n",[34,1681,1683],{"class":36,"line":1682},143,[34,1684,554],{"class":40},[34,1686,1688,1691,1693,1696,1699,1701],{"class":36,"line":1687},144,[34,1689,1690],{"class":40},"  allTeachers.value ",[34,1692,113],{"class":125},[34,1694,1695],{"class":40}," data ",[34,1697,1698],{"class":125},"as",[34,1700,164],{"class":44},[34,1702,1399],{"class":40},[34,1704,1706],{"class":36,"line":1705},145,[34,1707,220],{"class":40},[34,1709,1711],{"class":36,"line":1710},146,[34,1712,153],{"emptyLinePlaceholder":152},[34,1714,1716,1718,1721],{"class":36,"line":1715},147,[34,1717,781],{"class":125},[34,1719,1720],{"class":44}," onDialogClosed",[34,1722,517],{"class":40},[34,1724,1726,1729,1731],{"class":36,"line":1725},148,[34,1727,1728],{"class":40},"  searchKeyword.value ",[34,1730,113],{"class":125},[34,1732,1733],{"class":116}," ''\n",[34,1735,1737,1740,1742],{"class":36,"line":1736},149,[34,1738,1739],{"class":40},"  subjectFilter.value ",[34,1741,113],{"class":125},[34,1743,1733],{"class":116},[34,1745,1747,1749,1751],{"class":36,"line":1746},150,[34,1748,1010],{"class":40},[34,1750,113],{"class":125},[34,1752,1260],{"class":40},[34,1754,1756,1758,1760],{"class":36,"line":1755},151,[34,1757,856],{"class":40},[34,1759,113],{"class":125},[34,1761,1260],{"class":40},[34,1763,1765,1767,1769],{"class":36,"line":1764},152,[34,1766,1227],{"class":40},[34,1768,113],{"class":125},[34,1770,1260],{"class":40},[34,1772,1774,1776,1778],{"class":36,"line":1773},153,[34,1775,1690],{"class":40},[34,1777,113],{"class":125},[34,1779,1260],{"class":40},[34,1781,1783,1785,1787],{"class":36,"line":1782},154,[34,1784,1525],{"class":40},[34,1786,113],{"class":125},[34,1788,418],{"class":182},[34,1790,1792,1794,1796],{"class":36,"line":1791},155,[34,1793,1536],{"class":40},[34,1795,113],{"class":125},[34,1797,418],{"class":182},[34,1799,1801],{"class":36,"line":1800},156,[34,1802,220],{"class":40},[34,1804,1806],{"class":36,"line":1805},157,[34,1807,153],{"emptyLinePlaceholder":152},[34,1809,1811],{"class":36,"line":1810},158,[34,1812,1813],{"class":296},"// 暴露 open 方法供外部调用\n",[34,1815,1817,1820],{"class":36,"line":1816},159,[34,1818,1819],{"class":44},"defineExpose",[34,1821,48],{"class":40},[34,1823,1825],{"class":36,"line":1824},160,[34,1826,1827],{"class":40},"  open,\n",[34,1829,1831],{"class":36,"line":1830},161,[34,1832,82],{"class":40},[34,1834,1836,1839,1841],{"class":36,"line":1835},162,[34,1837,1838],{"class":40},"\u003C/",[34,1840,104],{"class":103},[34,1842,120],{"class":40},[34,1844,1846],{"class":36,"line":1845},163,[34,1847,153],{"emptyLinePlaceholder":152},[34,1849,1851,1853,1856],{"class":36,"line":1850},164,[34,1852,100],{"class":40},[34,1854,1855],{"class":103},"template",[34,1857,120],{"class":40},[34,1859,1861,1864],{"class":36,"line":1860},165,[34,1862,1863],{"class":40},"  \u003C",[34,1865,1866],{"class":103},"el-dialog\n",[34,1868,1870,1873,1875],{"class":36,"line":1869},166,[34,1871,1872],{"class":44},"    v-model",[34,1874,113],{"class":40},[34,1876,1877],{"class":116},"\"visible\"\n",[34,1879,1881,1884,1886],{"class":36,"line":1880},167,[34,1882,1883],{"class":44},"    title",[34,1885,113],{"class":40},[34,1887,1888],{"class":116},"\"设置阅卷教师\"\n",[34,1890,1892,1895,1897],{"class":36,"line":1891},168,[34,1893,1894],{"class":44},"    width",[34,1896,113],{"class":40},[34,1898,1899],{"class":116},"\"1000\"\n",[34,1901,1903,1906,1908],{"class":36,"line":1902},169,[34,1904,1905],{"class":44},"    :close-on-click-modal",[34,1907,113],{"class":40},[34,1909,1910],{"class":116},"\"false\"\n",[34,1912,1914,1917,1919],{"class":36,"line":1913},170,[34,1915,1916],{"class":44},"    :close-on-press-escape",[34,1918,113],{"class":40},[34,1920,1910],{"class":116},[34,1922,1924,1927,1929],{"class":36,"line":1923},171,[34,1925,1926],{"class":44},"    @closed",[34,1928,113],{"class":40},[34,1930,1931],{"class":116},"\"onDialogClosed\"\n",[34,1933,1935],{"class":36,"line":1934},172,[34,1936,1937],{"class":40},"  >\n",[34,1939,1941,1944,1947,1950,1952,1955],{"class":36,"line":1940},173,[34,1942,1943],{"class":40},"    \u003C",[34,1945,1946],{"class":103},"div",[34,1948,1949],{"class":44}," class",[34,1951,113],{"class":40},[34,1953,1954],{"class":116},"\"grid grid-cols-[1fr_1fr] gap-[20px] h-[550px]\"",[34,1956,120],{"class":40},[34,1958,1960],{"class":36,"line":1959},174,[34,1961,1962],{"class":296},"      \u003C!-- 左侧：全部教师 -->\n",[34,1964,1966,1969,1971,1973,1975,1978],{"class":36,"line":1965},175,[34,1967,1968],{"class":40},"      \u003C",[34,1970,1946],{"class":103},[34,1972,1949],{"class":44},[34,1974,113],{"class":40},[34,1976,1977],{"class":116},"\"\"",[34,1979,120],{"class":40},[34,1981,1983,1986,1988,1990,1992,1995],{"class":36,"line":1982},176,[34,1984,1985],{"class":40},"        \u003C",[34,1987,1946],{"class":103},[34,1989,1949],{"class":44},[34,1991,113],{"class":40},[34,1993,1994],{"class":116},"\"flex items-center mb-[10px] gap-[10px]\"",[34,1996,120],{"class":40},[34,1998,2000,2003,2006,2009,2011,2014,2017,2019,2022,2025,2027,2029,2032,2035,2037,2040],{"class":36,"line":1999},177,[34,2001,2002],{"class":40},"          \u003C",[34,2004,2005],{"class":103},"el-select",[34,2007,2008],{"class":44}," v-model",[34,2010,113],{"class":40},[34,2012,2013],{"class":116},"\"subjectFilter\"",[34,2015,2016],{"class":44}," placeholder",[34,2018,113],{"class":40},[34,2020,2021],{"class":116},"\"科目选择\"",[34,2023,2024],{"class":44}," clearable",[34,2026,1949],{"class":44},[34,2028,113],{"class":40},[34,2030,2031],{"class":116},"\"w-[200px]!\"",[34,2033,2034],{"class":44}," @change",[34,2036,113],{"class":40},[34,2038,2039],{"class":116},"\"fetchAllTeachers\"",[34,2041,120],{"class":40},[34,2043,2045,2048],{"class":36,"line":2044},178,[34,2046,2047],{"class":40},"            \u003C",[34,2049,2050],{"class":103},"el-option\n",[34,2052,2054,2057,2059],{"class":36,"line":2053},179,[34,2055,2056],{"class":44},"              v-for",[34,2058,113],{"class":40},[34,2060,2061],{"class":116},"\"item in subjectOptions\"\n",[34,2063,2065,2068,2070],{"class":36,"line":2064},180,[34,2066,2067],{"class":44},"              :key",[34,2069,113],{"class":40},[34,2071,2072],{"class":116},"\"item.id\"\n",[34,2074,2076,2079,2081],{"class":36,"line":2075},181,[34,2077,2078],{"class":44},"              :label",[34,2080,113],{"class":40},[34,2082,2083],{"class":116},"\"item.name\"\n",[34,2085,2087,2090,2092],{"class":36,"line":2086},182,[34,2088,2089],{"class":44},"              :value",[34,2091,113],{"class":40},[34,2093,2072],{"class":116},[34,2095,2097],{"class":36,"line":2096},183,[34,2098,2099],{"class":40},"            />\n",[34,2101,2103,2106,2108],{"class":36,"line":2102},184,[34,2104,2105],{"class":40},"          \u003C/",[34,2107,2005],{"class":103},[34,2109,120],{"class":40},[34,2111,2113,2115],{"class":36,"line":2112},185,[34,2114,2002],{"class":40},[34,2116,2117],{"class":103},"el-input\n",[34,2119,2121,2124,2126],{"class":36,"line":2120},186,[34,2122,2123],{"class":44},"            v-model",[34,2125,113],{"class":40},[34,2127,2128],{"class":116},"\"searchKeyword\"\n",[34,2130,2132,2135,2137],{"class":36,"line":2131},187,[34,2133,2134],{"class":44},"            placeholder",[34,2136,113],{"class":40},[34,2138,2139],{"class":116},"\"请输入姓名或账号进行搜索\"\n",[34,2141,2143],{"class":36,"line":2142},188,[34,2144,2145],{"class":44},"            clearable\n",[34,2147,2149,2152,2154],{"class":36,"line":2148},189,[34,2150,2151],{"class":44},"            @change",[34,2153,113],{"class":40},[34,2155,2156],{"class":116},"\"fetchAllTeachers\"\n",[34,2158,2160],{"class":36,"line":2159},190,[34,2161,2162],{"class":40},"          />\n",[34,2164,2166,2169,2171],{"class":36,"line":2165},191,[34,2167,2168],{"class":40},"        \u003C/",[34,2170,1946],{"class":103},[34,2172,120],{"class":40},[34,2174,2176,2178],{"class":36,"line":2175},192,[34,2177,1985],{"class":40},[34,2179,2180],{"class":103},"el-table\n",[34,2182,2184,2187,2189],{"class":36,"line":2183},193,[34,2185,2186],{"class":44},"          ref",[34,2188,113],{"class":40},[34,2190,2191],{"class":116},"\"leftTableRef\"\n",[34,2193,2195,2198,2200],{"class":36,"line":2194},194,[34,2196,2197],{"class":44},"          :data",[34,2199,113],{"class":40},[34,2201,2202],{"class":116},"\"allTeachers\"\n",[34,2204,2206],{"class":36,"line":2205},195,[34,2207,2209],{"class":2208},"s7hpK","          border\n",[34,2211,2213,2216,2218],{"class":36,"line":2212},196,[34,2214,2215],{"class":44},"          max-height",[34,2217,113],{"class":40},[34,2219,2220],{"class":116},"\"500\"\n",[34,2222,2224,2227,2229],{"class":36,"line":2223},197,[34,2225,2226],{"class":44},"          @selection-change",[34,2228,113],{"class":40},[34,2230,2231],{"class":116},"\"handleLeftSelectionChange\"\n",[34,2233,2235],{"class":36,"line":2234},198,[34,2236,2237],{"class":40},"        >\n",[34,2239,2241,2243],{"class":36,"line":2240},199,[34,2242,2002],{"class":40},[34,2244,2245],{"class":103},"el-table-column\n",[34,2247,2249,2252,2254],{"class":36,"line":2248},200,[34,2250,2251],{"class":44},"            type",[34,2253,113],{"class":40},[34,2255,2256],{"class":116},"\"selection\"\n",[34,2258,2260,2263,2265],{"class":36,"line":2259},201,[34,2261,2262],{"class":44},"            width",[34,2264,113],{"class":40},[34,2266,2267],{"class":116},"\"55\"\n",[34,2269,2271,2274,2276],{"class":36,"line":2270},202,[34,2272,2273],{"class":44},"            :selectable",[34,2275,113],{"class":40},[34,2277,2278],{"class":116},"\"checkSelectable\"\n",[34,2280,2282],{"class":36,"line":2281},203,[34,2283,2162],{"class":40},[34,2285,2287,2289,2292,2295,2297,2300,2303,2305,2308],{"class":36,"line":2286},204,[34,2288,2002],{"class":40},[34,2290,2291],{"class":103},"el-table-column",[34,2293,2294],{"class":44}," prop",[34,2296,113],{"class":40},[34,2298,2299],{"class":116},"\"userName\"",[34,2301,2302],{"class":44}," label",[34,2304,113],{"class":40},[34,2306,2307],{"class":116},"\"姓名\"",[34,2309,2310],{"class":40}," />\n",[34,2312,2314,2316,2318,2320,2322,2325,2327,2329,2332],{"class":36,"line":2313},205,[34,2315,2002],{"class":40},[34,2317,2291],{"class":103},[34,2319,2294],{"class":44},[34,2321,113],{"class":40},[34,2323,2324],{"class":116},"\"userPhone\"",[34,2326,2302],{"class":44},[34,2328,113],{"class":40},[34,2330,2331],{"class":116},"\"联系方式\"",[34,2333,2310],{"class":40},[34,2335,2337,2339,2341,2343,2345,2348,2350,2352,2355],{"class":36,"line":2336},206,[34,2338,2002],{"class":40},[34,2340,2291],{"class":103},[34,2342,2294],{"class":44},[34,2344,113],{"class":40},[34,2346,2347],{"class":116},"\"schoolName\"",[34,2349,2302],{"class":44},[34,2351,113],{"class":40},[34,2353,2354],{"class":116},"\"学校\"",[34,2356,2310],{"class":40},[34,2358,2360,2362,2365],{"class":36,"line":2359},207,[34,2361,2168],{"class":40},[34,2363,2364],{"class":103},"el-table",[34,2366,120],{"class":40},[34,2368,2370,2373,2375],{"class":36,"line":2369},208,[34,2371,2372],{"class":40},"      \u003C/",[34,2374,1946],{"class":103},[34,2376,120],{"class":40},[34,2378,2380],{"class":36,"line":2379},209,[34,2381,153],{"emptyLinePlaceholder":152},[34,2383,2385],{"class":36,"line":2384},210,[34,2386,2387],{"class":296},"      \u003C!-- 右侧：已选教师 -->\n",[34,2389,2391,2393,2395,2397,2399,2401],{"class":36,"line":2390},211,[34,2392,1968],{"class":40},[34,2394,1946],{"class":103},[34,2396,1949],{"class":44},[34,2398,113],{"class":40},[34,2400,1977],{"class":116},[34,2402,120],{"class":40},[34,2404,2406,2408,2410,2412,2414,2417],{"class":36,"line":2405},212,[34,2407,1985],{"class":40},[34,2409,1946],{"class":103},[34,2411,1949],{"class":44},[34,2413,113],{"class":40},[34,2415,2416],{"class":116},"\"mb-[10px] font-bold text-[#027AFF] flex h-[32px] leading-[32px]\"",[34,2418,120],{"class":40},[34,2420,2422],{"class":36,"line":2421},213,[34,2423,2424],{"class":40},"          已选教师\n",[34,2426,2428,2430,2433,2435,2437,2440,2443,2445,2447,2450,2453,2455,2458],{"class":36,"line":2427},214,[34,2429,2002],{"class":40},[34,2431,2432],{"class":103},"el-button",[34,2434,161],{"class":44},[34,2436,113],{"class":40},[34,2438,2439],{"class":116},"\"primary\"",[34,2441,2442],{"class":44}," link",[34,2444,1949],{"class":44},[34,2446,113],{"class":40},[34,2448,2449],{"class":116},"\"ml-auto\"",[34,2451,2452],{"class":44}," @click",[34,2454,113],{"class":40},[34,2456,2457],{"class":116},"\"handleBatchRemove\"",[34,2459,120],{"class":40},[34,2461,2463],{"class":36,"line":2462},215,[34,2464,2465],{"class":40},"            删除选中教师\n",[34,2467,2469,2471,2473],{"class":36,"line":2468},216,[34,2470,2105],{"class":40},[34,2472,2432],{"class":103},[34,2474,120],{"class":40},[34,2476,2478,2480,2482],{"class":36,"line":2477},217,[34,2479,2168],{"class":40},[34,2481,1946],{"class":103},[34,2483,120],{"class":40},[34,2485,2487,2489],{"class":36,"line":2486},218,[34,2488,1985],{"class":40},[34,2490,2180],{"class":103},[34,2492,2494,2496,2498],{"class":36,"line":2493},219,[34,2495,2197],{"class":44},[34,2497,113],{"class":40},[34,2499,2500],{"class":116},"\"selectedTeachers\"\n",[34,2502,2504],{"class":36,"line":2503},220,[34,2505,2209],{"class":2208},[34,2507,2509,2511,2513],{"class":36,"line":2508},221,[34,2510,2215],{"class":44},[34,2512,113],{"class":40},[34,2514,2220],{"class":116},[34,2516,2518,2520,2522],{"class":36,"line":2517},222,[34,2519,2226],{"class":44},[34,2521,113],{"class":40},[34,2523,2524],{"class":116},"\"handleRightSelectionChange\"\n",[34,2526,2528],{"class":36,"line":2527},223,[34,2529,2237],{"class":40},[34,2531,2533,2535,2537,2539,2541,2544,2547,2549,2552],{"class":36,"line":2532},224,[34,2534,2002],{"class":40},[34,2536,2291],{"class":103},[34,2538,161],{"class":44},[34,2540,113],{"class":40},[34,2542,2543],{"class":116},"\"selection\"",[34,2545,2546],{"class":44}," width",[34,2548,113],{"class":40},[34,2550,2551],{"class":116},"\"55\"",[34,2553,2310],{"class":40},[34,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573],{"class":36,"line":2556},225,[34,2558,2002],{"class":40},[34,2560,2291],{"class":103},[34,2562,2294],{"class":44},[34,2564,113],{"class":40},[34,2566,2299],{"class":116},[34,2568,2302],{"class":44},[34,2570,113],{"class":40},[34,2572,2307],{"class":116},[34,2574,2310],{"class":40},[34,2576,2578,2580,2582,2584,2586,2588,2590,2592,2594],{"class":36,"line":2577},226,[34,2579,2002],{"class":40},[34,2581,2291],{"class":103},[34,2583,2294],{"class":44},[34,2585,113],{"class":40},[34,2587,2324],{"class":116},[34,2589,2302],{"class":44},[34,2591,113],{"class":40},[34,2593,2331],{"class":116},[34,2595,2310],{"class":40},[34,2597,2599,2601,2603,2605,2607,2609,2611,2613,2615],{"class":36,"line":2598},227,[34,2600,2002],{"class":40},[34,2602,2291],{"class":103},[34,2604,2294],{"class":44},[34,2606,113],{"class":40},[34,2608,2347],{"class":116},[34,2610,2302],{"class":44},[34,2612,113],{"class":40},[34,2614,2354],{"class":116},[34,2616,2310],{"class":40},[34,2618,2620,2622,2624,2626,2628,2631,2633,2635,2638,2641,2643,2646],{"class":36,"line":2619},228,[34,2621,2002],{"class":40},[34,2623,2291],{"class":103},[34,2625,2302],{"class":44},[34,2627,113],{"class":40},[34,2629,2630],{"class":116},"\"操作\"",[34,2632,2546],{"class":44},[34,2634,113],{"class":40},[34,2636,2637],{"class":116},"\"60\"",[34,2639,2640],{"class":2208}," align",[34,2642,113],{"class":40},[34,2644,2645],{"class":116},"\"center\"",[34,2647,120],{"class":40},[34,2649,2651,2653,2655,2658,2661,2663,2666,2669,2671],{"class":36,"line":2650},229,[34,2652,2047],{"class":40},[34,2654,1855],{"class":103},[34,2656,2657],{"class":40}," #",[34,2659,2660],{"class":44},"default",[34,2662,113],{"class":40},[34,2664,2665],{"class":116},"\"",[34,2667,2668],{"class":40},"{ row }",[34,2670,2665],{"class":116},[34,2672,120],{"class":40},[34,2674,2676,2679,2681,2683,2685,2688,2690,2692,2694,2697],{"class":36,"line":2675},230,[34,2677,2678],{"class":40},"              \u003C",[34,2680,2432],{"class":103},[34,2682,161],{"class":44},[34,2684,113],{"class":40},[34,2686,2687],{"class":116},"\"danger\"",[34,2689,2442],{"class":44},[34,2691,2452],{"class":44},[34,2693,113],{"class":40},[34,2695,2696],{"class":116},"\"handleRemove(row)\"",[34,2698,120],{"class":40},[34,2700,2702],{"class":36,"line":2701},231,[34,2703,2704],{"class":40},"                删除\n",[34,2706,2708,2711,2713],{"class":36,"line":2707},232,[34,2709,2710],{"class":40},"              \u003C/",[34,2712,2432],{"class":103},[34,2714,120],{"class":40},[34,2716,2718,2721,2723],{"class":36,"line":2717},233,[34,2719,2720],{"class":40},"            \u003C/",[34,2722,1855],{"class":103},[34,2724,120],{"class":40},[34,2726,2728,2730,2732],{"class":36,"line":2727},234,[34,2729,2105],{"class":40},[34,2731,2291],{"class":103},[34,2733,120],{"class":40},[34,2735,2737,2739,2741],{"class":36,"line":2736},235,[34,2738,2168],{"class":40},[34,2740,2364],{"class":103},[34,2742,120],{"class":40},[34,2744,2746,2748,2750],{"class":36,"line":2745},236,[34,2747,2372],{"class":40},[34,2749,1946],{"class":103},[34,2751,120],{"class":40},[34,2753,2755,2758,2760],{"class":36,"line":2754},237,[34,2756,2757],{"class":40},"    \u003C/",[34,2759,1946],{"class":103},[34,2761,120],{"class":40},[34,2763,2765],{"class":36,"line":2764},238,[34,2766,153],{"emptyLinePlaceholder":152},[34,2768,2770,2772,2774,2776,2779],{"class":36,"line":2769},239,[34,2771,1943],{"class":40},[34,2773,1855],{"class":103},[34,2775,2657],{"class":40},[34,2777,2778],{"class":44},"footer",[34,2780,120],{"class":40},[34,2782,2784,2786,2788,2790,2792,2795],{"class":36,"line":2783},240,[34,2785,1968],{"class":40},[34,2787,1946],{"class":103},[34,2789,1949],{"class":44},[34,2791,113],{"class":40},[34,2793,2794],{"class":116},"\"flex gap-4 justify-end\"",[34,2796,120],{"class":40},[34,2798,2800,2802,2804,2806,2808,2811],{"class":36,"line":2799},241,[34,2801,1985],{"class":40},[34,2803,2432],{"class":103},[34,2805,2452],{"class":44},[34,2807,113],{"class":40},[34,2809,2810],{"class":116},"\"handleCancel\"",[34,2812,120],{"class":40},[34,2814,2816],{"class":36,"line":2815},242,[34,2817,2818],{"class":40},"          取消\n",[34,2820,2822,2824,2826],{"class":36,"line":2821},243,[34,2823,2168],{"class":40},[34,2825,2432],{"class":103},[34,2827,120],{"class":40},[34,2829,2831,2833,2835,2837,2839,2841,2843,2845,2848],{"class":36,"line":2830},244,[34,2832,1985],{"class":40},[34,2834,2432],{"class":103},[34,2836,161],{"class":44},[34,2838,113],{"class":40},[34,2840,2439],{"class":116},[34,2842,2452],{"class":44},[34,2844,113],{"class":40},[34,2846,2847],{"class":116},"\"handleConfirm\"",[34,2849,120],{"class":40},[34,2851,2853],{"class":36,"line":2852},245,[34,2854,2855],{"class":40},"          确定\n",[34,2857,2859,2861,2863],{"class":36,"line":2858},246,[34,2860,2168],{"class":40},[34,2862,2432],{"class":103},[34,2864,120],{"class":40},[34,2866,2868,2870,2872],{"class":36,"line":2867},247,[34,2869,2372],{"class":40},[34,2871,1946],{"class":103},[34,2873,120],{"class":40},[34,2875,2877,2879,2881],{"class":36,"line":2876},248,[34,2878,2757],{"class":40},[34,2880,1855],{"class":103},[34,2882,120],{"class":40},[34,2884,2886,2889,2892],{"class":36,"line":2885},249,[34,2887,2888],{"class":40},"  \u003C/",[34,2890,2891],{"class":103},"el-dialog",[34,2893,120],{"class":40},[34,2895,2897,2899,2901],{"class":36,"line":2896},250,[34,2898,1838],{"class":40},[34,2900,1855],{"class":103},[34,2902,120],{"class":40},[34,2904,2906],{"class":36,"line":2905},251,[34,2907,153],{"emptyLinePlaceholder":152},[34,2909,2911,2913,2916,2919,2921,2923,2926],{"class":36,"line":2910},252,[34,2912,100],{"class":40},[34,2914,2915],{"class":103},"style",[34,2917,2918],{"class":44}," scoped",[34,2920,110],{"class":44},[34,2922,113],{"class":40},[34,2924,2925],{"class":116},"\"scss\"",[34,2927,120],{"class":40},[34,2929,2931],{"class":36,"line":2930},253,[34,2932,2933],{"class":40},":deep(.el-table .el-table__row) {\n",[34,2935,2937],{"class":36,"line":2936},254,[34,2938,2939],{"class":40},"  .el-checkbox.is-disabled {\n",[34,2941,2943],{"class":36,"line":2942},255,[34,2944,2945],{"class":40},"    .el-checkbox__inner {\n",[34,2947,2949],{"class":36,"line":2948},256,[34,2950,2951],{"class":40},"      background-color: #f5f7fa;\n",[34,2953,2955],{"class":36,"line":2954},257,[34,2956,2957],{"class":40},"      border-color: #e4e7ed;\n",[34,2959,2961],{"class":36,"line":2960},258,[34,2962,931],{"class":40},[34,2964,2966],{"class":36,"line":2965},259,[34,2967,1121],{"class":40},[34,2969,2971],{"class":36,"line":2970},260,[34,2972,220],{"class":40},[34,2974,2976,2978,2980],{"class":36,"line":2975},261,[34,2977,1838],{"class":40},[34,2979,2915],{"class":103},[34,2981,120],{"class":40},[14,2983,2984],{},"但我想这正是组件封装容易走向的误区，不是封装不够，而是封装过度：当组件开始隐藏数据来源、主动处理副作用时，复杂度就开始变得不可控",[14,2986,2987,2988,2991,2992],{},"首先组件的输入不够明确，除了",[31,2989,2990],{},"defaultSelected, context,","还依赖",[31,2993,2994],{},"userStore",[14,2996,2997],{},"当然最重要的，组件承担了UI、数据请求、结果处理。这些组件内部的内容，让组件的可理解性变差，致使整个业务的复杂度并没有降低（我认为降低复杂度，旨在将大块业务拆离为可理解的部分，局部可理解后，才方便理解整体业务，整体复杂度随之降低）",[14,2999,3000],{},"所以，我进行了修改：让组件只负责UI，数据请求和确认逻辑还给外部",[24,3002,3004],{"className":91,"code":3003,"language":93,"meta":29,"style":29},"  \u003CTeacherSelector\n    :teachers=\"allTeachers\"\n    :subjects=\"subjectOptions\"\n    :selected=\"selectedTeachers\"\n    @search=\"handleSearch\"\n    @change=\"handleChange\"\n    @confirm=\"handleConfirm\"\n    @cancel=\"handleCancel\"\n  />\n",[31,3005,3006,3013,3031,3047,3062,3079,3095,3111,3127],{"__ignoreMap":29},[34,3007,3008,3010],{"class":36,"line":37},[34,3009,1863],{"class":40},[34,3011,3012],{"class":103},"TeacherSelector\n",[34,3014,3015,3018,3021,3023,3025,3028],{"class":36,"line":51},[34,3016,3017],{"class":40},"    :",[34,3019,3020],{"class":44},"teachers",[34,3022,113],{"class":40},[34,3024,2665],{"class":116},[34,3026,3027],{"class":40},"allTeachers",[34,3029,3030],{"class":116},"\"\n",[34,3032,3033,3035,3038,3040,3042,3045],{"class":36,"line":57},[34,3034,3017],{"class":40},[34,3036,3037],{"class":44},"subjects",[34,3039,113],{"class":40},[34,3041,2665],{"class":116},[34,3043,3044],{"class":40},"subjectOptions",[34,3046,3030],{"class":116},[34,3048,3049,3051,3053,3055,3057,3060],{"class":36,"line":63},[34,3050,3017],{"class":40},[34,3052,73],{"class":44},[34,3054,113],{"class":40},[34,3056,2665],{"class":116},[34,3058,3059],{"class":40},"selectedTeachers",[34,3061,3030],{"class":116},[34,3063,3064,3067,3070,3072,3074,3077],{"class":36,"line":79},[34,3065,3066],{"class":40},"    @",[34,3068,3069],{"class":44},"search",[34,3071,113],{"class":40},[34,3073,2665],{"class":116},[34,3075,3076],{"class":40},"handleSearch",[34,3078,3030],{"class":116},[34,3080,3081,3083,3086,3088,3090,3093],{"class":36,"line":173},[34,3082,3066],{"class":40},[34,3084,3085],{"class":44},"change",[34,3087,113],{"class":40},[34,3089,2665],{"class":116},[34,3091,3092],{"class":40},"handleChange",[34,3094,3030],{"class":116},[34,3096,3097,3099,3102,3104,3106,3109],{"class":36,"line":186},[34,3098,3066],{"class":40},[34,3100,3101],{"class":44},"confirm",[34,3103,113],{"class":40},[34,3105,2665],{"class":116},[34,3107,3108],{"class":40},"handleConfirm",[34,3110,3030],{"class":116},[34,3112,3113,3115,3118,3120,3122,3125],{"class":36,"line":197},[34,3114,3066],{"class":40},[34,3116,3117],{"class":44},"cancel",[34,3119,113],{"class":40},[34,3121,2665],{"class":116},[34,3123,3124],{"class":40},"handleCancel",[34,3126,3030],{"class":116},[34,3128,3129],{"class":36,"line":207},[34,3130,3131],{"class":40},"  />\n",[14,3133,3134,3135,3138],{},"子组件 ",[31,3136,3137],{},"TeacherSelector.vue","（只负责展示与交互）",[24,3140,3142],{"className":91,"code":3141,"language":93,"meta":29,"style":29},"\u003Cscript setup lang=\"ts\">\nimport { ElMessage } from 'element-plus'\nimport { computed, nextTick, ref } from 'vue'\n\nexport type TeacherItem = {\n  tenantUserId: string\n  userName?: string\n  userPhone?: string\n  schoolName?: string\n}\n\nexport type SubjectOption = { id: string, name: string }\n\nconst props = defineProps\u003C{\n  teachers: TeacherItem[]\n  subjects: SubjectOption[]\n  selected: TeacherItem[]\n}>()\n\nconst emit = defineEmits\u003C{\n  search: [payload: { subjectId: string, keyword: string }]\n  change: [selected: TeacherItem[]]\n  confirm: []\n  cancel: []\n}>()\n\nconst subjectId = ref('')\nconst keyword = ref('')\n\nconst leftTableRef = ref()\nconst rightSelection = ref\u003CTeacherItem[]>([])\n\nconst selectedIds = computed(() => new Set(props.selected.map(t => t.tenantUserId)))\n\nfunction checkSelectable(row: TeacherItem) {\n  return !selectedIds.value.has(row.tenantUserId)\n}\n\nfunction emitSearch() {\n  emit('search', { subjectId: subjectId.value, keyword: keyword.value })\n}\n\nfunction handleLeftSelectionChange(selection: TeacherItem[]) {\n  const next = [...props.selected]\n  for (const teacher of selection) {\n    if (!selectedIds.value.has(teacher.tenantUserId)) {\n      next.push({ ...teacher })\n    }\n  }\n  emit('change', next)\n  nextTick(() => leftTableRef.value?.clearSelection())\n}\n\nfunction handleRightSelectionChange(selection: TeacherItem[]) {\n  rightSelection.value = selection\n}\n\nfunction handleRemove(row: TeacherItem) {\n  emit(\n    'change',\n    props.selected.filter(t => t.tenantUserId !== row.tenantUserId),\n  )\n  rightSelection.value = rightSelection.value.filter(t => t.tenantUserId !== row.tenantUserId)\n}\n\nfunction handleBatchRemove() {\n  if (rightSelection.value.length === 0) {\n    ElMessage.warning('请先选择要删除的教师')\n    return\n  }\n  const removeIds = new Set(rightSelection.value.map(t => t.tenantUserId))\n  emit('change', props.selected.filter(t => !removeIds.has(t.tenantUserId)))\n  rightSelection.value = []\n}\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv class=\"grid grid-cols-[1fr_1fr] gap-[20px] h-[550px]\">\n    \u003Cdiv>\n      \u003Cdiv class=\"flex items-center mb-[10px] gap-[10px]\">\n        \u003Cel-select\n          v-model=\"subjectId\"\n          placeholder=\"科目选择\"\n          clearable\n          class=\"w-[200px]!\"\n          @change=\"emitSearch\"\n        >\n          \u003Cel-option\n            v-for=\"item in subjects\"\n            :key=\"item.id\"\n            :label=\"item.name\"\n            :value=\"item.id\"\n          />\n        \u003C/el-select>\n        \u003Cel-input\n          v-model=\"keyword\"\n          placeholder=\"请输入姓名或账号进行搜索\"\n          clearable\n          @change=\"emitSearch\"\n        />\n      \u003C/div>\n      \u003Cel-table\n        ref=\"leftTableRef\"\n        :data=\"teachers\"\n        border\n        max-height=\"500\"\n        @selection-change=\"handleLeftSelectionChange\"\n      >\n        \u003Cel-table-column type=\"selection\" width=\"55\" :selectable=\"checkSelectable\" />\n        \u003Cel-table-column prop=\"userName\" label=\"姓名\" />\n        \u003Cel-table-column prop=\"userPhone\" label=\"联系方式\" />\n        \u003Cel-table-column prop=\"schoolName\" label=\"学校\" />\n      \u003C/el-table>\n    \u003C/div>\n\n    \u003Cdiv>\n      \u003Cdiv class=\"mb-[10px] font-bold text-[#027AFF] flex h-[32px] leading-[32px]\">\n        已选教师\n        \u003Cel-button type=\"primary\" link class=\"ml-auto\" @click=\"handleBatchRemove\">\n          删除选中教师\n        \u003C/el-button>\n      \u003C/div>\n      \u003Cel-table\n        :data=\"selected\"\n        border\n        max-height=\"500\"\n        @selection-change=\"handleRightSelectionChange\"\n      >\n        \u003Cel-table-column type=\"selection\" width=\"55\" />\n        \u003Cel-table-column prop=\"userName\" label=\"姓名\" />\n        \u003Cel-table-column prop=\"userPhone\" label=\"联系方式\" />\n        \u003Cel-table-column prop=\"schoolName\" label=\"学校\" />\n        \u003Cel-table-column label=\"操作\" width=\"60\" align=\"center\">\n          \u003Ctemplate #default=\"{ row }\">\n            \u003Cel-button type=\"danger\" link @click=\"handleRemove(row)\">\n              删除\n            \u003C/el-button>\n          \u003C/template>\n        \u003C/el-table-column>\n      \u003C/el-table>\n    \u003C/div>\n  \u003C/div>\n\n  \u003Cdiv class=\"flex gap-4 justify-end mt-4\">\n    \u003Cel-button @click=\"emit('cancel')\">\n      取消\n    \u003C/el-button>\n    \u003Cel-button type=\"primary\" @click=\"emit('confirm')\">\n      确定\n    \u003C/el-button>\n  \u003C/div>\n\u003C/template>\n",[31,3143,3144,3160,3172,3184,3188,3200,3208,3216,3224,3232,3236,3240,3272,3276,3291,3302,3313,3324,3329,3333,3347,3381,3399,3408,3417,3421,3425,3442,3459,3463,3475,3491,3495,3526,3530,3546,3558,3562,3566,3575,3588,3592,3596,3612,3628,3646,3660,3673,3677,3681,3693,3709,3713,3717,3733,3741,3745,3749,3765,3772,3779,3800,3805,3828,3832,3836,3844,3858,3870,3874,3878,3902,3930,3938,3942,3950,3954,3962,3976,3984,3998,4005,4015,4025,4030,4040,4050,4054,4060,4070,4079,4088,4097,4101,4109,4115,4124,4132,4136,4144,4149,4157,4163,4172,4182,4187,4196,4205,4210,4238,4258,4278,4298,4306,4314,4318,4326,4340,4345,4373,4378,4386,4394,4400,4409,4413,4421,4429,4433,4453,4473,4493,4513,4539,4559,4581,4586,4594,4602,4610,4618,4626,4634,4638,4653,4668,4673,4681,4702,4707,4715,4723],{"__ignoreMap":29},[34,3145,3146,3148,3150,3152,3154,3156,3158],{"class":36,"line":37},[34,3147,100],{"class":40},[34,3149,104],{"class":103},[34,3151,107],{"class":44},[34,3153,110],{"class":44},[34,3155,113],{"class":40},[34,3157,117],{"class":116},[34,3159,120],{"class":40},[34,3161,3162,3164,3167,3169],{"class":36,"line":51},[34,3163,126],{"class":125},[34,3165,3166],{"class":40}," { ElMessage } ",[34,3168,132],{"class":125},[34,3170,3171],{"class":116}," 'element-plus'\n",[34,3173,3174,3176,3179,3181],{"class":36,"line":57},[34,3175,126],{"class":125},[34,3177,3178],{"class":40}," { computed, nextTick, ref } ",[34,3180,132],{"class":125},[34,3182,3183],{"class":116}," 'vue'\n",[34,3185,3186],{"class":36,"line":63},[34,3187,153],{"emptyLinePlaceholder":152},[34,3189,3190,3192,3194,3196,3198],{"class":36,"line":79},[34,3191,158],{"class":125},[34,3193,161],{"class":125},[34,3195,164],{"class":44},[34,3197,167],{"class":125},[34,3199,170],{"class":40},[34,3201,3202,3204,3206],{"class":36,"line":173},[34,3203,176],{"class":72},[34,3205,179],{"class":125},[34,3207,183],{"class":182},[34,3209,3210,3212,3214],{"class":36,"line":186},[34,3211,189],{"class":72},[34,3213,192],{"class":125},[34,3215,183],{"class":182},[34,3217,3218,3220,3222],{"class":36,"line":197},[34,3219,200],{"class":72},[34,3221,192],{"class":125},[34,3223,183],{"class":182},[34,3225,3226,3228,3230],{"class":36,"line":207},[34,3227,210],{"class":72},[34,3229,192],{"class":125},[34,3231,183],{"class":182},[34,3233,3234],{"class":36,"line":217},[34,3235,220],{"class":40},[34,3237,3238],{"class":36,"line":223},[34,3239,153],{"emptyLinePlaceholder":152},[34,3241,3242,3244,3246,3248,3250,3252,3255,3257,3260,3262,3265,3267,3269],{"class":36,"line":228},[34,3243,158],{"class":125},[34,3245,161],{"class":125},[34,3247,234],{"class":44},[34,3249,167],{"class":125},[34,3251,526],{"class":40},[34,3253,3254],{"class":72},"id",[34,3256,179],{"class":125},[34,3258,3259],{"class":182}," string",[34,3261,1504],{"class":40},[34,3263,3264],{"class":72},"name",[34,3266,179],{"class":125},[34,3268,3259],{"class":182},[34,3270,3271],{"class":40}," }\n",[34,3273,3274],{"class":36,"line":241},[34,3275,153],{"emptyLinePlaceholder":152},[34,3277,3278,3280,3283,3285,3288],{"class":36,"line":251},[34,3279,274],{"class":125},[34,3281,3282],{"class":182}," props",[34,3284,167],{"class":125},[34,3286,3287],{"class":44}," defineProps",[34,3289,3290],{"class":40},"\u003C{\n",[34,3292,3293,3296,3298,3300],{"class":36,"line":261},[34,3294,3295],{"class":72},"  teachers",[34,3297,179],{"class":125},[34,3299,164],{"class":44},[34,3301,1399],{"class":40},[34,3303,3304,3307,3309,3311],{"class":36,"line":266},[34,3305,3306],{"class":72},"  subjects",[34,3308,179],{"class":125},[34,3310,234],{"class":44},[34,3312,1399],{"class":40},[34,3314,3315,3318,3320,3322],{"class":36,"line":271},[34,3316,3317],{"class":72},"  selected",[34,3319,179],{"class":125},[34,3321,164],{"class":44},[34,3323,1399],{"class":40},[34,3325,3326],{"class":36,"line":288},[34,3327,3328],{"class":40},"}>()\n",[34,3330,3331],{"class":36,"line":293},[34,3332,153],{"emptyLinePlaceholder":152},[34,3334,3335,3337,3340,3342,3345],{"class":36,"line":300},[34,3336,274],{"class":125},[34,3338,3339],{"class":182}," emit",[34,3341,167],{"class":125},[34,3343,3344],{"class":44}," defineEmits",[34,3346,3290],{"class":40},[34,3348,3349,3352,3354,3356,3359,3362,3365,3367,3369,3371,3374,3376,3378],{"class":36,"line":321},[34,3350,3351],{"class":72},"  search",[34,3353,179],{"class":125},[34,3355,1556],{"class":40},[34,3357,3358],{"class":44},"payload",[34,3360,3361],{"class":40},": { ",[34,3363,3364],{"class":72},"subjectId",[34,3366,179],{"class":125},[34,3368,3259],{"class":182},[34,3370,1504],{"class":40},[34,3372,3373],{"class":72},"keyword",[34,3375,179],{"class":125},[34,3377,3259],{"class":182},[34,3379,3380],{"class":40}," }]\n",[34,3382,3383,3386,3388,3390,3392,3394,3396],{"class":36,"line":326},[34,3384,3385],{"class":72},"  change",[34,3387,179],{"class":125},[34,3389,1556],{"class":40},[34,3391,73],{"class":44},[34,3393,1495],{"class":40},[34,3395,598],{"class":44},[34,3397,3398],{"class":40},"[]]\n",[34,3400,3401,3404,3406],{"class":36,"line":332},[34,3402,3403],{"class":72},"  confirm",[34,3405,179],{"class":125},[34,3407,1260],{"class":40},[34,3409,3410,3413,3415],{"class":36,"line":357},[34,3411,3412],{"class":72},"  cancel",[34,3414,179],{"class":125},[34,3416,1260],{"class":40},[34,3418,3419],{"class":36,"line":362},[34,3420,3328],{"class":40},[34,3422,3423],{"class":36,"line":368},[34,3424,153],{"emptyLinePlaceholder":152},[34,3426,3427,3429,3432,3434,3436,3438,3440],{"class":36,"line":421},[34,3428,274],{"class":125},[34,3430,3431],{"class":182}," subjectId",[34,3433,167],{"class":125},[34,3435,310],{"class":44},[34,3437,69],{"class":40},[34,3439,446],{"class":116},[34,3441,318],{"class":40},[34,3443,3444,3446,3449,3451,3453,3455,3457],{"class":36,"line":426},[34,3445,274],{"class":125},[34,3447,3448],{"class":182}," keyword",[34,3450,167],{"class":125},[34,3452,310],{"class":44},[34,3454,69],{"class":40},[34,3456,446],{"class":116},[34,3458,318],{"class":40},[34,3460,3461],{"class":36,"line":432},[34,3462,153],{"emptyLinePlaceholder":152},[34,3464,3465,3467,3469,3471,3473],{"class":36,"line":451},[34,3466,274],{"class":125},[34,3468,706],{"class":182},[34,3470,167],{"class":125},[34,3472,310],{"class":44},[34,3474,285],{"class":40},[34,3476,3477,3479,3481,3483,3485,3487,3489],{"class":36,"line":469},[34,3478,274],{"class":125},[34,3480,677],{"class":182},[34,3482,167],{"class":125},[34,3484,310],{"class":44},[34,3486,100],{"class":40},[34,3488,598],{"class":44},[34,3490,497],{"class":40},[34,3492,3493],{"class":36,"line":474},[34,3494,153],{"emptyLinePlaceholder":152},[34,3496,3497,3499,3501,3503,3505,3507,3509,3511,3513,3516,3518,3520,3522,3524],{"class":36,"line":480},[34,3498,274],{"class":125},[34,3500,731],{"class":182},[34,3502,167],{"class":125},[34,3504,736],{"class":44},[34,3506,739],{"class":40},[34,3508,402],{"class":125},[34,3510,744],{"class":125},[34,3512,747],{"class":44},[34,3514,3515],{"class":40},"(props.selected.",[34,3517,753],{"class":44},[34,3519,69],{"class":40},[34,3521,758],{"class":72},[34,3523,761],{"class":125},[34,3525,764],{"class":40},[34,3527,3528],{"class":36,"line":500},[34,3529,153],{"emptyLinePlaceholder":152},[34,3531,3532,3534,3536,3538,3540,3542,3544],{"class":36,"line":505},[34,3533,781],{"class":125},[34,3535,784],{"class":44},[34,3537,69],{"class":40},[34,3539,789],{"class":72},[34,3541,179],{"class":125},[34,3543,164],{"class":44},[34,3545,796],{"class":40},[34,3547,3548,3550,3552,3554,3556],{"class":36,"line":520},[34,3549,802],{"class":125},[34,3551,805],{"class":125},[34,3553,808],{"class":40},[34,3555,811],{"class":44},[34,3557,814],{"class":40},[34,3559,3560],{"class":36,"line":545},[34,3561,220],{"class":40},[34,3563,3564],{"class":36,"line":551},[34,3565,153],{"emptyLinePlaceholder":152},[34,3567,3568,3570,3573],{"class":36,"line":557},[34,3569,781],{"class":125},[34,3571,3572],{"class":44}," emitSearch",[34,3574,517],{"class":40},[34,3576,3577,3580,3582,3585],{"class":36,"line":568},[34,3578,3579],{"class":44},"  emit",[34,3581,69],{"class":40},[34,3583,3584],{"class":116},"'search'",[34,3586,3587],{"class":40},", { subjectId: subjectId.value, keyword: keyword.value })\n",[34,3589,3590],{"class":36,"line":573},[34,3591,220],{"class":40},[34,3593,3594],{"class":36,"line":578},[34,3595,153],{"emptyLinePlaceholder":152},[34,3597,3598,3600,3602,3604,3606,3608,3610],{"class":36,"line":584},[34,3599,781],{"class":125},[34,3601,838],{"class":44},[34,3603,69],{"class":40},[34,3605,843],{"class":72},[34,3607,179],{"class":125},[34,3609,164],{"class":44},[34,3611,850],{"class":40},[34,3613,3614,3616,3619,3621,3623,3625],{"class":36,"line":603},[34,3615,523],{"class":125},[34,3617,3618],{"class":182}," next",[34,3620,167],{"class":125},[34,3622,1556],{"class":40},[34,3624,922],{"class":125},[34,3626,3627],{"class":40},"props.selected]\n",[34,3629,3630,3633,3635,3637,3640,3643],{"class":36,"line":608},[34,3631,3632],{"class":125},"  for",[34,3634,897],{"class":40},[34,3636,274],{"class":125},[34,3638,3639],{"class":182}," teacher",[34,3641,3642],{"class":125}," of",[34,3644,3645],{"class":40}," selection) {\n",[34,3647,3648,3650,3652,3654,3656,3658],{"class":36,"line":614},[34,3649,894],{"class":125},[34,3651,897],{"class":40},[34,3653,900],{"class":125},[34,3655,808],{"class":40},[34,3657,811],{"class":44},[34,3659,907],{"class":40},[34,3661,3662,3665,3667,3669,3671],{"class":36,"line":632},[34,3663,3664],{"class":40},"      next.",[34,3666,916],{"class":44},[34,3668,919],{"class":40},[34,3670,922],{"class":125},[34,3672,925],{"class":40},[34,3674,3675],{"class":36,"line":637},[34,3676,931],{"class":40},[34,3678,3679],{"class":36,"line":643},[34,3680,1121],{"class":40},[34,3682,3683,3685,3687,3690],{"class":36,"line":661},[34,3684,3579],{"class":44},[34,3686,69],{"class":40},[34,3688,3689],{"class":116},"'change'",[34,3691,3692],{"class":40},", next)\n",[34,3694,3695,3697,3699,3701,3704,3706],{"class":36,"line":666},[34,3696,948],{"class":44},[34,3698,739],{"class":40},[34,3700,402],{"class":125},[34,3702,3703],{"class":40}," leftTableRef.value?.",[34,3705,963],{"class":44},[34,3707,3708],{"class":40},"())\n",[34,3710,3711],{"class":36,"line":672},[34,3712,220],{"class":40},[34,3714,3715],{"class":36,"line":690},[34,3716,153],{"emptyLinePlaceholder":152},[34,3718,3719,3721,3723,3725,3727,3729,3731],{"class":36,"line":695},[34,3720,781],{"class":125},[34,3722,994],{"class":44},[34,3724,69],{"class":40},[34,3726,843],{"class":72},[34,3728,179],{"class":125},[34,3730,164],{"class":44},[34,3732,850],{"class":40},[34,3734,3735,3737,3739],{"class":36,"line":701},[34,3736,1010],{"class":40},[34,3738,113],{"class":125},[34,3740,861],{"class":40},[34,3742,3743],{"class":36,"line":715},[34,3744,220],{"class":40},[34,3746,3747],{"class":36,"line":720},[34,3748,153],{"emptyLinePlaceholder":152},[34,3750,3751,3753,3755,3757,3759,3761,3763],{"class":36,"line":726},[34,3752,781],{"class":125},[34,3754,1038],{"class":44},[34,3756,69],{"class":40},[34,3758,789],{"class":72},[34,3760,179],{"class":125},[34,3762,164],{"class":44},[34,3764,796],{"class":40},[34,3766,3767,3769],{"class":36,"line":767},[34,3768,3579],{"class":44},[34,3770,3771],{"class":40},"(\n",[34,3773,3774,3777],{"class":36,"line":772},[34,3775,3776],{"class":116},"    'change'",[34,3778,1660],{"class":40},[34,3780,3781,3784,3786,3788,3790,3792,3794,3797],{"class":36,"line":778},[34,3782,3783],{"class":40},"    props.selected.",[34,3785,1234],{"class":44},[34,3787,69],{"class":40},[34,3789,758],{"class":72},[34,3791,761],{"class":125},[34,3793,1073],{"class":40},[34,3795,3796],{"class":125},"!==",[34,3798,3799],{"class":40}," row.tenantUserId),\n",[34,3801,3802],{"class":36,"line":799},[34,3803,3804],{"class":40},"  )\n",[34,3806,3807,3809,3811,3814,3816,3818,3820,3822,3824,3826],{"class":36,"line":817},[34,3808,1010],{"class":40},[34,3810,113],{"class":125},[34,3812,3813],{"class":40}," rightSelection.value.",[34,3815,1234],{"class":44},[34,3817,69],{"class":40},[34,3819,758],{"class":72},[34,3821,761],{"class":125},[34,3823,1073],{"class":40},[34,3825,3796],{"class":125},[34,3827,1079],{"class":40},[34,3829,3830],{"class":36,"line":822},[34,3831,220],{"class":40},[34,3833,3834],{"class":36,"line":827},[34,3835,153],{"emptyLinePlaceholder":152},[34,3837,3838,3840,3842],{"class":36,"line":833},[34,3839,781],{"class":125},[34,3841,1145],{"class":44},[34,3843,517],{"class":40},[34,3845,3846,3848,3850,3852,3854,3856],{"class":36,"line":853},[34,3847,1085],{"class":125},[34,3849,1155],{"class":40},[34,3851,1158],{"class":182},[34,3853,1161],{"class":125},[34,3855,1164],{"class":182},[34,3857,796],{"class":40},[34,3859,3860,3862,3864,3866,3868],{"class":36,"line":864},[34,3861,1172],{"class":40},[34,3863,1175],{"class":44},[34,3865,69],{"class":40},[34,3867,1180],{"class":116},[34,3869,318],{"class":40},[34,3871,3872],{"class":36,"line":870},[34,3873,1188],{"class":125},[34,3875,3876],{"class":36,"line":891},[34,3877,1121],{"class":40},[34,3879,3880,3882,3884,3886,3888,3890,3892,3894,3896,3898,3900],{"class":36,"line":910},[34,3881,523],{"class":125},[34,3883,1201],{"class":182},[34,3885,167],{"class":125},[34,3887,744],{"class":125},[34,3889,747],{"class":44},[34,3891,1210],{"class":40},[34,3893,753],{"class":44},[34,3895,69],{"class":40},[34,3897,758],{"class":72},[34,3899,761],{"class":125},[34,3901,1221],{"class":40},[34,3903,3904,3906,3908,3910,3913,3915,3917,3919,3921,3923,3925,3927],{"class":36,"line":928},[34,3905,3579],{"class":44},[34,3907,69],{"class":40},[34,3909,3689],{"class":116},[34,3911,3912],{"class":40},", props.selected.",[34,3914,1234],{"class":44},[34,3916,69],{"class":40},[34,3918,758],{"class":72},[34,3920,761],{"class":125},[34,3922,805],{"class":125},[34,3924,1245],{"class":40},[34,3926,811],{"class":44},[34,3928,3929],{"class":40},"(t.tenantUserId)))\n",[34,3931,3932,3934,3936],{"class":36,"line":934},[34,3933,1010],{"class":40},[34,3935,113],{"class":125},[34,3937,1260],{"class":40},[34,3939,3940],{"class":36,"line":939},[34,3941,220],{"class":40},[34,3943,3944,3946,3948],{"class":36,"line":945},[34,3945,1838],{"class":40},[34,3947,104],{"class":103},[34,3949,120],{"class":40},[34,3951,3952],{"class":36,"line":957},[34,3953,153],{"emptyLinePlaceholder":152},[34,3955,3956,3958,3960],{"class":36,"line":968},[34,3957,100],{"class":40},[34,3959,1855],{"class":103},[34,3961,120],{"class":40},[34,3963,3964,3966,3968,3970,3972,3974],{"class":36,"line":973},[34,3965,1863],{"class":40},[34,3967,1946],{"class":103},[34,3969,1949],{"class":44},[34,3971,113],{"class":40},[34,3973,1954],{"class":116},[34,3975,120],{"class":40},[34,3977,3978,3980,3982],{"class":36,"line":978},[34,3979,1943],{"class":40},[34,3981,1946],{"class":103},[34,3983,120],{"class":40},[34,3985,3986,3988,3990,3992,3994,3996],{"class":36,"line":983},[34,3987,1968],{"class":40},[34,3989,1946],{"class":103},[34,3991,1949],{"class":44},[34,3993,113],{"class":40},[34,3995,1994],{"class":116},[34,3997,120],{"class":40},[34,3999,4000,4002],{"class":36,"line":989},[34,4001,1985],{"class":40},[34,4003,4004],{"class":103},"el-select\n",[34,4006,4007,4010,4012],{"class":36,"line":1007},[34,4008,4009],{"class":44},"          v-model",[34,4011,113],{"class":40},[34,4013,4014],{"class":116},"\"subjectId\"\n",[34,4016,4017,4020,4022],{"class":36,"line":1017},[34,4018,4019],{"class":44},"          placeholder",[34,4021,113],{"class":40},[34,4023,4024],{"class":116},"\"科目选择\"\n",[34,4026,4027],{"class":36,"line":1022},[34,4028,4029],{"class":44},"          clearable\n",[34,4031,4032,4035,4037],{"class":36,"line":1027},[34,4033,4034],{"class":44},"          class",[34,4036,113],{"class":40},[34,4038,4039],{"class":116},"\"w-[200px]!\"\n",[34,4041,4042,4045,4047],{"class":36,"line":1033},[34,4043,4044],{"class":44},"          @change",[34,4046,113],{"class":40},[34,4048,4049],{"class":116},"\"emitSearch\"\n",[34,4051,4052],{"class":36,"line":1051},[34,4053,2237],{"class":40},[34,4055,4056,4058],{"class":36,"line":1082},[34,4057,2002],{"class":40},[34,4059,2050],{"class":103},[34,4061,4062,4065,4067],{"class":36,"line":1102},[34,4063,4064],{"class":44},"            v-for",[34,4066,113],{"class":40},[34,4068,4069],{"class":116},"\"item in subjects\"\n",[34,4071,4072,4075,4077],{"class":36,"line":1118},[34,4073,4074],{"class":44},"            :key",[34,4076,113],{"class":40},[34,4078,2072],{"class":116},[34,4080,4081,4084,4086],{"class":36,"line":1124},[34,4082,4083],{"class":44},"            :label",[34,4085,113],{"class":40},[34,4087,2083],{"class":116},[34,4089,4090,4093,4095],{"class":36,"line":1129},[34,4091,4092],{"class":44},"            :value",[34,4094,113],{"class":40},[34,4096,2072],{"class":116},[34,4098,4099],{"class":36,"line":1134},[34,4100,2162],{"class":40},[34,4102,4103,4105,4107],{"class":36,"line":1140},[34,4104,2168],{"class":40},[34,4106,2005],{"class":103},[34,4108,120],{"class":40},[34,4110,4111,4113],{"class":36,"line":1150},[34,4112,1985],{"class":40},[34,4114,2117],{"class":103},[34,4116,4117,4119,4121],{"class":36,"line":1169},[34,4118,4009],{"class":44},[34,4120,113],{"class":40},[34,4122,4123],{"class":116},"\"keyword\"\n",[34,4125,4126,4128,4130],{"class":36,"line":1185},[34,4127,4019],{"class":44},[34,4129,113],{"class":40},[34,4131,2139],{"class":116},[34,4133,4134],{"class":36,"line":1191},[34,4135,4029],{"class":44},[34,4137,4138,4140,4142],{"class":36,"line":1196},[34,4139,4044],{"class":44},[34,4141,113],{"class":40},[34,4143,4049],{"class":116},[34,4145,4146],{"class":36,"line":1224},[34,4147,4148],{"class":40},"        />\n",[34,4150,4151,4153,4155],{"class":36,"line":1253},[34,4152,2372],{"class":40},[34,4154,1946],{"class":103},[34,4156,120],{"class":40},[34,4158,4159,4161],{"class":36,"line":1263},[34,4160,1968],{"class":40},[34,4162,2180],{"class":103},[34,4164,4165,4168,4170],{"class":36,"line":1268},[34,4166,4167],{"class":44},"        ref",[34,4169,113],{"class":40},[34,4171,2191],{"class":116},[34,4173,4174,4177,4179],{"class":36,"line":1273},[34,4175,4176],{"class":44},"        :data",[34,4178,113],{"class":40},[34,4180,4181],{"class":116},"\"teachers\"\n",[34,4183,4184],{"class":36,"line":1279},[34,4185,4186],{"class":2208},"        border\n",[34,4188,4189,4192,4194],{"class":36,"line":1289},[34,4190,4191],{"class":44},"        max-height",[34,4193,113],{"class":40},[34,4195,2220],{"class":116},[34,4197,4198,4201,4203],{"class":36,"line":1300},[34,4199,4200],{"class":44},"        @selection-change",[34,4202,113],{"class":40},[34,4204,2231],{"class":116},[34,4206,4207],{"class":36,"line":1305},[34,4208,4209],{"class":40},"      >\n",[34,4211,4212,4214,4216,4218,4220,4222,4224,4226,4228,4231,4233,4236],{"class":36,"line":1310},[34,4213,1985],{"class":40},[34,4215,2291],{"class":103},[34,4217,161],{"class":44},[34,4219,113],{"class":40},[34,4221,2543],{"class":116},[34,4223,2546],{"class":44},[34,4225,113],{"class":40},[34,4227,2551],{"class":116},[34,4229,4230],{"class":44}," :selectable",[34,4232,113],{"class":40},[34,4234,4235],{"class":116},"\"checkSelectable\"",[34,4237,2310],{"class":40},[34,4239,4240,4242,4244,4246,4248,4250,4252,4254,4256],{"class":36,"line":1316},[34,4241,1985],{"class":40},[34,4243,2291],{"class":103},[34,4245,2294],{"class":44},[34,4247,113],{"class":40},[34,4249,2299],{"class":116},[34,4251,2302],{"class":44},[34,4253,113],{"class":40},[34,4255,2307],{"class":116},[34,4257,2310],{"class":40},[34,4259,4260,4262,4264,4266,4268,4270,4272,4274,4276],{"class":36,"line":1326},[34,4261,1985],{"class":40},[34,4263,2291],{"class":103},[34,4265,2294],{"class":44},[34,4267,113],{"class":40},[34,4269,2324],{"class":116},[34,4271,2302],{"class":44},[34,4273,113],{"class":40},[34,4275,2331],{"class":116},[34,4277,2310],{"class":40},[34,4279,4280,4282,4284,4286,4288,4290,4292,4294,4296],{"class":36,"line":1334},[34,4281,1985],{"class":40},[34,4283,2291],{"class":103},[34,4285,2294],{"class":44},[34,4287,113],{"class":40},[34,4289,2347],{"class":116},[34,4291,2302],{"class":44},[34,4293,113],{"class":40},[34,4295,2354],{"class":116},[34,4297,2310],{"class":40},[34,4299,4300,4302,4304],{"class":36,"line":1348},[34,4301,2372],{"class":40},[34,4303,2364],{"class":103},[34,4305,120],{"class":40},[34,4307,4308,4310,4312],{"class":36,"line":1353},[34,4309,2757],{"class":40},[34,4311,1946],{"class":103},[34,4313,120],{"class":40},[34,4315,4316],{"class":36,"line":1362},[34,4317,153],{"emptyLinePlaceholder":152},[34,4319,4320,4322,4324],{"class":36,"line":1367},[34,4321,1943],{"class":40},[34,4323,1946],{"class":103},[34,4325,120],{"class":40},[34,4327,4328,4330,4332,4334,4336,4338],{"class":36,"line":1372},[34,4329,1968],{"class":40},[34,4331,1946],{"class":103},[34,4333,1949],{"class":44},[34,4335,113],{"class":40},[34,4337,2416],{"class":116},[34,4339,120],{"class":40},[34,4341,4342],{"class":36,"line":1378},[34,4343,4344],{"class":40},"        已选教师\n",[34,4346,4347,4349,4351,4353,4355,4357,4359,4361,4363,4365,4367,4369,4371],{"class":36,"line":1389},[34,4348,1985],{"class":40},[34,4350,2432],{"class":103},[34,4352,161],{"class":44},[34,4354,113],{"class":40},[34,4356,2439],{"class":116},[34,4358,2442],{"class":44},[34,4360,1949],{"class":44},[34,4362,113],{"class":40},[34,4364,2449],{"class":116},[34,4366,2452],{"class":44},[34,4368,113],{"class":40},[34,4370,2457],{"class":116},[34,4372,120],{"class":40},[34,4374,4375],{"class":36,"line":1402},[34,4376,4377],{"class":40},"          删除选中教师\n",[34,4379,4380,4382,4384],{"class":36,"line":1413},[34,4381,2168],{"class":40},[34,4383,2432],{"class":103},[34,4385,120],{"class":40},[34,4387,4388,4390,4392],{"class":36,"line":1443},[34,4389,2372],{"class":40},[34,4391,1946],{"class":103},[34,4393,120],{"class":40},[34,4395,4396,4398],{"class":36,"line":1448},[34,4397,1968],{"class":40},[34,4399,2180],{"class":103},[34,4401,4402,4404,4406],{"class":36,"line":1453},[34,4403,4176],{"class":44},[34,4405,113],{"class":40},[34,4407,4408],{"class":116},"\"selected\"\n",[34,4410,4411],{"class":36,"line":1477},[34,4412,4186],{"class":2208},[34,4414,4415,4417,4419],{"class":36,"line":1517},[34,4416,4191],{"class":44},[34,4418,113],{"class":40},[34,4420,2220],{"class":116},[34,4422,4423,4425,4427],{"class":36,"line":1522},[34,4424,4200],{"class":44},[34,4426,113],{"class":40},[34,4428,2524],{"class":116},[34,4430,4431],{"class":36,"line":1533},[34,4432,4209],{"class":40},[34,4434,4435,4437,4439,4441,4443,4445,4447,4449,4451],{"class":36,"line":1549},[34,4436,1985],{"class":40},[34,4438,2291],{"class":103},[34,4440,161],{"class":44},[34,4442,113],{"class":40},[34,4444,2543],{"class":116},[34,4446,2546],{"class":44},[34,4448,113],{"class":40},[34,4450,2551],{"class":116},[34,4452,2310],{"class":40},[34,4454,4455,4457,4459,4461,4463,4465,4467,4469,4471],{"class":36,"line":1564},[34,4456,1985],{"class":40},[34,4458,2291],{"class":103},[34,4460,2294],{"class":44},[34,4462,113],{"class":40},[34,4464,2299],{"class":116},[34,4466,2302],{"class":44},[34,4468,113],{"class":40},[34,4470,2307],{"class":116},[34,4472,2310],{"class":40},[34,4474,4475,4477,4479,4481,4483,4485,4487,4489,4491],{"class":36,"line":1569},[34,4476,1985],{"class":40},[34,4478,2291],{"class":103},[34,4480,2294],{"class":44},[34,4482,113],{"class":40},[34,4484,2324],{"class":116},[34,4486,2302],{"class":44},[34,4488,113],{"class":40},[34,4490,2331],{"class":116},[34,4492,2310],{"class":40},[34,4494,4495,4497,4499,4501,4503,4505,4507,4509,4511],{"class":36,"line":1579},[34,4496,1985],{"class":40},[34,4498,2291],{"class":103},[34,4500,2294],{"class":44},[34,4502,113],{"class":40},[34,4504,2347],{"class":116},[34,4506,2302],{"class":44},[34,4508,113],{"class":40},[34,4510,2354],{"class":116},[34,4512,2310],{"class":40},[34,4514,4515,4517,4519,4521,4523,4525,4527,4529,4531,4533,4535,4537],{"class":36,"line":1590},[34,4516,1985],{"class":40},[34,4518,2291],{"class":103},[34,4520,2302],{"class":44},[34,4522,113],{"class":40},[34,4524,2630],{"class":116},[34,4526,2546],{"class":44},[34,4528,113],{"class":40},[34,4530,2637],{"class":116},[34,4532,2640],{"class":2208},[34,4534,113],{"class":40},[34,4536,2645],{"class":116},[34,4538,120],{"class":40},[34,4540,4541,4543,4545,4547,4549,4551,4553,4555,4557],{"class":36,"line":1599},[34,4542,2002],{"class":40},[34,4544,1855],{"class":103},[34,4546,2657],{"class":40},[34,4548,2660],{"class":44},[34,4550,113],{"class":40},[34,4552,2665],{"class":116},[34,4554,2668],{"class":40},[34,4556,2665],{"class":116},[34,4558,120],{"class":40},[34,4560,4561,4563,4565,4567,4569,4571,4573,4575,4577,4579],{"class":36,"line":1604},[34,4562,2047],{"class":40},[34,4564,2432],{"class":103},[34,4566,161],{"class":44},[34,4568,113],{"class":40},[34,4570,2687],{"class":116},[34,4572,2442],{"class":44},[34,4574,2452],{"class":44},[34,4576,113],{"class":40},[34,4578,2696],{"class":116},[34,4580,120],{"class":40},[34,4582,4583],{"class":36,"line":1609},[34,4584,4585],{"class":40},"              删除\n",[34,4587,4588,4590,4592],{"class":36,"line":1615},[34,4589,2720],{"class":40},[34,4591,2432],{"class":103},[34,4593,120],{"class":40},[34,4595,4596,4598,4600],{"class":36,"line":1626},[34,4597,2105],{"class":40},[34,4599,1855],{"class":103},[34,4601,120],{"class":40},[34,4603,4604,4606,4608],{"class":36,"line":1646},[34,4605,2168],{"class":40},[34,4607,2291],{"class":103},[34,4609,120],{"class":40},[34,4611,4612,4614,4616],{"class":36,"line":1651},[34,4613,2372],{"class":40},[34,4615,2364],{"class":103},[34,4617,120],{"class":40},[34,4619,4620,4622,4624],{"class":36,"line":1663},[34,4621,2757],{"class":40},[34,4623,1946],{"class":103},[34,4625,120],{"class":40},[34,4627,4628,4630,4632],{"class":36,"line":1676},[34,4629,2888],{"class":40},[34,4631,1946],{"class":103},[34,4633,120],{"class":40},[34,4635,4636],{"class":36,"line":1682},[34,4637,153],{"emptyLinePlaceholder":152},[34,4639,4640,4642,4644,4646,4648,4651],{"class":36,"line":1687},[34,4641,1863],{"class":40},[34,4643,1946],{"class":103},[34,4645,1949],{"class":44},[34,4647,113],{"class":40},[34,4649,4650],{"class":116},"\"flex gap-4 justify-end mt-4\"",[34,4652,120],{"class":40},[34,4654,4655,4657,4659,4661,4663,4666],{"class":36,"line":1705},[34,4656,1943],{"class":40},[34,4658,2432],{"class":103},[34,4660,2452],{"class":44},[34,4662,113],{"class":40},[34,4664,4665],{"class":116},"\"emit('cancel')\"",[34,4667,120],{"class":40},[34,4669,4670],{"class":36,"line":1710},[34,4671,4672],{"class":40},"      取消\n",[34,4674,4675,4677,4679],{"class":36,"line":1715},[34,4676,2757],{"class":40},[34,4678,2432],{"class":103},[34,4680,120],{"class":40},[34,4682,4683,4685,4687,4689,4691,4693,4695,4697,4700],{"class":36,"line":1725},[34,4684,1943],{"class":40},[34,4686,2432],{"class":103},[34,4688,161],{"class":44},[34,4690,113],{"class":40},[34,4692,2439],{"class":116},[34,4694,2452],{"class":44},[34,4696,113],{"class":40},[34,4698,4699],{"class":116},"\"emit('confirm')\"",[34,4701,120],{"class":40},[34,4703,4704],{"class":36,"line":1736},[34,4705,4706],{"class":40},"      确定\n",[34,4708,4709,4711,4713],{"class":36,"line":1746},[34,4710,2757],{"class":40},[34,4712,2432],{"class":103},[34,4714,120],{"class":40},[34,4716,4717,4719,4721],{"class":36,"line":1755},[34,4718,2888],{"class":40},[34,4720,1946],{"class":103},[34,4722,120],{"class":40},[34,4724,4725,4727,4729],{"class":36,"line":1764},[34,4726,1838],{"class":40},[34,4728,1855],{"class":103},[34,4730,120],{"class":40},[14,4732,4733],{},"父组件（请求、弹窗、确认逻辑）",[24,4735,4737],{"className":91,"code":4736,"language":93,"meta":29,"style":29},"\u003Cscript setup lang=\"ts\">\nimport type { TeacherItem } from './TeacherSelector.vue'\nimport { getSubjectBySchoolIdList, getTeacherBySchoolIdList } from '@/api/grading'\nimport { useUserStore } from '@/store'\nimport TeacherSelector from './TeacherSelector.vue'\n\nconst userStore = useUserStore()\n\nconst visible = ref(false)\nconst subjectOptions = ref\u003C{ id: string, name: string }[]>([])\nconst allTeachers = ref\u003CTeacherItem[]>([])\nconst selectedTeachers = ref\u003CTeacherItem[]>([])\n\nconst currentPaperId = ref\u003Cstring | null>(null)\n\nconst searchParams = ref({ subjectId: '', keyword: '' })\n\nasync function loadSubjects() {\n  const { data } = await getSubjectBySchoolIdList({\n    schoolId: userStore.schoolInfo.id,\n  })\n  subjectOptions.value = data\n}\n\nasync function loadTeachers() {\n  const { data } = await getTeacherBySchoolIdList({\n    schoolId: userStore.schoolInfo.id,\n    classType: 'admin',\n    userNameOrPhone: searchParams.value.keyword || undefined,\n    subjectId: searchParams.value.subjectId,\n  })\n  allTeachers.value = data as TeacherItem[]\n}\n\nfunction handleSearch(payload: { subjectId: string, keyword: string }) {\n  searchParams.value = payload\n  loadTeachers()\n}\n\nfunction handleChange(next: TeacherItem[]) {\n  selectedTeachers.value = next\n}\n\nasync function openForPaper(paperId: string, defaultSelected: TeacherItem[]) {\n  currentPaperId.value = paperId\n  selectedTeachers.value = [...defaultSelected]\n  visible.value = true\n  await loadSubjects()\n  await loadTeachers()\n}\n\nfunction handleCancel() {\n  visible.value = false\n}\n\nasync function handleConfirm() {\n  if (!currentPaperId.value) {\n    return\n  }\n  await saveGradersApi(currentPaperId.value, selectedTeachers.value)\n  visible.value = false\n}\n\nasync function saveGradersApi(_paperId: string, _teachers: TeacherItem[]) {\n  // await api.save(...)\n}\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cel-dialog\n    v-model=\"visible\"\n    title=\"设置阅卷教师\"\n    width=\"1000\"\n    :close-on-click-modal=\"false\"\n    :close-on-press-escape=\"false\"\n    @closed=\"selectedTeachers = []; currentPaperId = null\"\n  >\n    \u003CTeacherSelector\n      :teachers=\"allTeachers\"\n      :subjects=\"subjectOptions\"\n      :selected=\"selectedTeachers\"\n      @search=\"handleSearch\"\n      @change=\"handleChange\"\n      @confirm=\"handleConfirm\"\n      @cancel=\"handleCancel\"\n    />\n  \u003C/el-dialog>\n\u003C/template>\n",[31,4738,4739,4755,4769,4779,4789,4800,4804,4816,4820,4836,4866,4882,4898,4902,4929,4933,4957,4961,4972,4990,4994,4998,5006,5010,5014,5025,5043,5047,5055,5066,5071,5075,5089,5093,5097,5129,5139,5146,5150,5154,5172,5181,5185,5189,5217,5227,5239,5247,5255,5263,5267,5271,5279,5287,5291,5295,5305,5316,5320,5324,5334,5342,5346,5350,5378,5383,5387,5395,5399,5407,5413,5421,5429,5437,5445,5453,5462,5466,5472,5481,5491,5500,5510,5520,5530,5540,5545,5553],{"__ignoreMap":29},[34,4740,4741,4743,4745,4747,4749,4751,4753],{"class":36,"line":37},[34,4742,100],{"class":40},[34,4744,104],{"class":103},[34,4746,107],{"class":44},[34,4748,110],{"class":44},[34,4750,113],{"class":40},[34,4752,117],{"class":116},[34,4754,120],{"class":40},[34,4756,4757,4759,4761,4764,4766],{"class":36,"line":51},[34,4758,126],{"class":125},[34,4760,161],{"class":125},[34,4762,4763],{"class":40}," { TeacherItem } ",[34,4765,132],{"class":125},[34,4767,4768],{"class":116}," './TeacherSelector.vue'\n",[34,4770,4771,4773,4775,4777],{"class":36,"line":57},[34,4772,126],{"class":125},[34,4774,129],{"class":40},[34,4776,132],{"class":125},[34,4778,135],{"class":116},[34,4780,4781,4783,4785,4787],{"class":36,"line":63},[34,4782,126],{"class":125},[34,4784,142],{"class":40},[34,4786,132],{"class":125},[34,4788,147],{"class":116},[34,4790,4791,4793,4796,4798],{"class":36,"line":79},[34,4792,126],{"class":125},[34,4794,4795],{"class":40}," TeacherSelector ",[34,4797,132],{"class":125},[34,4799,4768],{"class":116},[34,4801,4802],{"class":36,"line":173},[34,4803,153],{"emptyLinePlaceholder":152},[34,4805,4806,4808,4810,4812,4814],{"class":36,"line":186},[34,4807,274],{"class":125},[34,4809,277],{"class":182},[34,4811,167],{"class":125},[34,4813,282],{"class":44},[34,4815,285],{"class":40},[34,4817,4818],{"class":36,"line":197},[34,4819,153],{"emptyLinePlaceholder":152},[34,4821,4822,4824,4826,4828,4830,4832,4834],{"class":36,"line":207},[34,4823,274],{"class":125},[34,4825,305],{"class":182},[34,4827,167],{"class":125},[34,4829,310],{"class":44},[34,4831,69],{"class":40},[34,4833,315],{"class":182},[34,4835,318],{"class":40},[34,4837,4838,4840,4842,4844,4846,4849,4851,4853,4855,4857,4859,4861,4863],{"class":36,"line":217},[34,4839,274],{"class":125},[34,4841,485],{"class":182},[34,4843,167],{"class":125},[34,4845,310],{"class":44},[34,4847,4848],{"class":40},"\u003C{ ",[34,4850,3254],{"class":72},[34,4852,179],{"class":125},[34,4854,3259],{"class":182},[34,4856,1504],{"class":40},[34,4858,3264],{"class":72},[34,4860,179],{"class":125},[34,4862,3259],{"class":182},[34,4864,4865],{"class":40}," }[]>([])\n",[34,4867,4868,4870,4872,4874,4876,4878,4880],{"class":36,"line":223},[34,4869,274],{"class":125},[34,4871,589],{"class":182},[34,4873,167],{"class":125},[34,4875,310],{"class":44},[34,4877,100],{"class":40},[34,4879,598],{"class":44},[34,4881,497],{"class":40},[34,4883,4884,4886,4888,4890,4892,4894,4896],{"class":36,"line":228},[34,4885,274],{"class":125},[34,4887,619],{"class":182},[34,4889,167],{"class":125},[34,4891,310],{"class":44},[34,4893,100],{"class":40},[34,4895,598],{"class":44},[34,4897,497],{"class":40},[34,4899,4900],{"class":36,"line":241},[34,4901,153],{"emptyLinePlaceholder":152},[34,4903,4904,4906,4909,4911,4913,4915,4918,4921,4923,4925,4927],{"class":36,"line":251},[34,4905,274],{"class":125},[34,4907,4908],{"class":182}," currentPaperId",[34,4910,167],{"class":125},[34,4912,310],{"class":44},[34,4914,100],{"class":40},[34,4916,4917],{"class":182},"string",[34,4919,4920],{"class":125}," |",[34,4922,413],{"class":182},[34,4924,349],{"class":40},[34,4926,352],{"class":182},[34,4928,318],{"class":40},[34,4930,4931],{"class":36,"line":261},[34,4932,153],{"emptyLinePlaceholder":152},[34,4934,4935,4937,4940,4942,4944,4947,4949,4952,4954],{"class":36,"line":266},[34,4936,274],{"class":125},[34,4938,4939],{"class":182}," searchParams",[34,4941,167],{"class":125},[34,4943,310],{"class":44},[34,4945,4946],{"class":40},"({ subjectId: ",[34,4948,446],{"class":116},[34,4950,4951],{"class":40},", keyword: ",[34,4953,446],{"class":116},[34,4955,4956],{"class":40}," })\n",[34,4958,4959],{"class":36,"line":271},[34,4960,153],{"emptyLinePlaceholder":152},[34,4962,4963,4965,4967,4970],{"class":36,"line":288},[34,4964,508],{"class":125},[34,4966,511],{"class":125},[34,4968,4969],{"class":44}," loadSubjects",[34,4971,517],{"class":40},[34,4973,4974,4976,4978,4980,4982,4984,4986,4988],{"class":36,"line":293},[34,4975,523],{"class":125},[34,4977,526],{"class":40},[34,4979,529],{"class":182},[34,4981,532],{"class":40},[34,4983,113],{"class":125},[34,4985,537],{"class":125},[34,4987,540],{"class":44},[34,4989,48],{"class":40},[34,4991,4992],{"class":36,"line":300},[34,4993,548],{"class":40},[34,4995,4996],{"class":36,"line":321},[34,4997,554],{"class":40},[34,4999,5000,5002,5004],{"class":36,"line":326},[34,5001,560],{"class":40},[34,5003,113],{"class":125},[34,5005,565],{"class":40},[34,5007,5008],{"class":36,"line":332},[34,5009,220],{"class":40},[34,5011,5012],{"class":36,"line":357},[34,5013,153],{"emptyLinePlaceholder":152},[34,5015,5016,5018,5020,5023],{"class":36,"line":362},[34,5017,508],{"class":125},[34,5019,511],{"class":125},[34,5021,5022],{"class":44}," loadTeachers",[34,5024,517],{"class":40},[34,5026,5027,5029,5031,5033,5035,5037,5039,5041],{"class":36,"line":368},[34,5028,523],{"class":125},[34,5030,526],{"class":40},[34,5032,529],{"class":182},[34,5034,532],{"class":40},[34,5036,113],{"class":125},[34,5038,537],{"class":125},[34,5040,1641],{"class":44},[34,5042,48],{"class":40},[34,5044,5045],{"class":36,"line":421},[34,5046,548],{"class":40},[34,5048,5049,5051,5053],{"class":36,"line":426},[34,5050,1654],{"class":40},[34,5052,1657],{"class":116},[34,5054,1660],{"class":40},[34,5056,5057,5060,5062,5064],{"class":36,"line":432},[34,5058,5059],{"class":40},"    userNameOrPhone: searchParams.value.keyword ",[34,5061,1544],{"class":125},[34,5063,1671],{"class":182},[34,5065,1660],{"class":40},[34,5067,5068],{"class":36,"line":451},[34,5069,5070],{"class":40},"    subjectId: searchParams.value.subjectId,\n",[34,5072,5073],{"class":36,"line":469},[34,5074,554],{"class":40},[34,5076,5077,5079,5081,5083,5085,5087],{"class":36,"line":474},[34,5078,1690],{"class":40},[34,5080,113],{"class":125},[34,5082,1695],{"class":40},[34,5084,1698],{"class":125},[34,5086,164],{"class":44},[34,5088,1399],{"class":40},[34,5090,5091],{"class":36,"line":480},[34,5092,220],{"class":40},[34,5094,5095],{"class":36,"line":500},[34,5096,153],{"emptyLinePlaceholder":152},[34,5098,5099,5101,5104,5106,5108,5110,5112,5114,5116,5118,5120,5122,5124,5126],{"class":36,"line":505},[34,5100,781],{"class":125},[34,5102,5103],{"class":44}," handleSearch",[34,5105,69],{"class":40},[34,5107,3358],{"class":72},[34,5109,179],{"class":125},[34,5111,526],{"class":40},[34,5113,3364],{"class":72},[34,5115,179],{"class":125},[34,5117,3259],{"class":182},[34,5119,1504],{"class":40},[34,5121,3373],{"class":72},[34,5123,179],{"class":125},[34,5125,3259],{"class":182},[34,5127,5128],{"class":40}," }) {\n",[34,5130,5131,5134,5136],{"class":36,"line":520},[34,5132,5133],{"class":40},"  searchParams.value ",[34,5135,113],{"class":125},[34,5137,5138],{"class":40}," payload\n",[34,5140,5141,5144],{"class":36,"line":545},[34,5142,5143],{"class":44},"  loadTeachers",[34,5145,285],{"class":40},[34,5147,5148],{"class":36,"line":551},[34,5149,220],{"class":40},[34,5151,5152],{"class":36,"line":557},[34,5153,153],{"emptyLinePlaceholder":152},[34,5155,5156,5158,5161,5163,5166,5168,5170],{"class":36,"line":568},[34,5157,781],{"class":125},[34,5159,5160],{"class":44}," handleChange",[34,5162,69],{"class":40},[34,5164,5165],{"class":72},"next",[34,5167,179],{"class":125},[34,5169,164],{"class":44},[34,5171,850],{"class":40},[34,5173,5174,5176,5178],{"class":36,"line":573},[34,5175,1227],{"class":40},[34,5177,113],{"class":125},[34,5179,5180],{"class":40}," next\n",[34,5182,5183],{"class":36,"line":578},[34,5184,220],{"class":40},[34,5186,5187],{"class":36,"line":584},[34,5188,153],{"emptyLinePlaceholder":152},[34,5190,5191,5193,5195,5198,5200,5203,5205,5207,5209,5211,5213,5215],{"class":36,"line":603},[34,5192,508],{"class":125},[34,5194,511],{"class":125},[34,5196,5197],{"class":44}," openForPaper",[34,5199,69],{"class":40},[34,5201,5202],{"class":72},"paperId",[34,5204,179],{"class":125},[34,5206,3259],{"class":182},[34,5208,1504],{"class":40},[34,5210,1484],{"class":72},[34,5212,179],{"class":125},[34,5214,164],{"class":44},[34,5216,850],{"class":40},[34,5218,5219,5222,5224],{"class":36,"line":608},[34,5220,5221],{"class":40},"  currentPaperId.value ",[34,5223,113],{"class":125},[34,5225,5226],{"class":40}," paperId\n",[34,5228,5229,5231,5233,5235,5237],{"class":36,"line":614},[34,5230,1227],{"class":40},[34,5232,113],{"class":125},[34,5234,1556],{"class":40},[34,5236,922],{"class":125},[34,5238,1561],{"class":40},[34,5240,5241,5243,5245],{"class":36,"line":632},[34,5242,1292],{"class":40},[34,5244,113],{"class":125},[34,5246,1576],{"class":182},[34,5248,5249,5251,5253],{"class":36,"line":637},[34,5250,1582],{"class":125},[34,5252,4969],{"class":44},[34,5254,285],{"class":40},[34,5256,5257,5259,5261],{"class":36,"line":643},[34,5258,1582],{"class":125},[34,5260,5022],{"class":44},[34,5262,285],{"class":40},[34,5264,5265],{"class":36,"line":661},[34,5266,220],{"class":40},[34,5268,5269],{"class":36,"line":666},[34,5270,153],{"emptyLinePlaceholder":152},[34,5272,5273,5275,5277],{"class":36,"line":672},[34,5274,781],{"class":125},[34,5276,1284],{"class":44},[34,5278,517],{"class":40},[34,5280,5281,5283,5285],{"class":36,"line":690},[34,5282,1292],{"class":40},[34,5284,113],{"class":125},[34,5286,1297],{"class":182},[34,5288,5289],{"class":36,"line":695},[34,5290,220],{"class":40},[34,5292,5293],{"class":36,"line":701},[34,5294,153],{"emptyLinePlaceholder":152},[34,5296,5297,5299,5301,5303],{"class":36,"line":715},[34,5298,508],{"class":125},[34,5300,511],{"class":125},[34,5302,1321],{"class":44},[34,5304,517],{"class":40},[34,5306,5307,5309,5311,5313],{"class":36,"line":720},[34,5308,1085],{"class":125},[34,5310,897],{"class":40},[34,5312,900],{"class":125},[34,5314,5315],{"class":40},"currentPaperId.value) {\n",[34,5317,5318],{"class":36,"line":726},[34,5319,1188],{"class":125},[34,5321,5322],{"class":36,"line":767},[34,5323,1121],{"class":40},[34,5325,5326,5328,5331],{"class":36,"line":772},[34,5327,1582],{"class":125},[34,5329,5330],{"class":44}," saveGradersApi",[34,5332,5333],{"class":40},"(currentPaperId.value, selectedTeachers.value)\n",[34,5335,5336,5338,5340],{"class":36,"line":778},[34,5337,1292],{"class":40},[34,5339,113],{"class":125},[34,5341,1297],{"class":182},[34,5343,5344],{"class":36,"line":799},[34,5345,220],{"class":40},[34,5347,5348],{"class":36,"line":817},[34,5349,153],{"emptyLinePlaceholder":152},[34,5351,5352,5354,5356,5358,5360,5363,5365,5367,5369,5372,5374,5376],{"class":36,"line":822},[34,5353,508],{"class":125},[34,5355,511],{"class":125},[34,5357,5330],{"class":44},[34,5359,69],{"class":40},[34,5361,5362],{"class":72},"_paperId",[34,5364,179],{"class":125},[34,5366,3259],{"class":182},[34,5368,1504],{"class":40},[34,5370,5371],{"class":72},"_teachers",[34,5373,179],{"class":125},[34,5375,164],{"class":44},[34,5377,850],{"class":40},[34,5379,5380],{"class":36,"line":827},[34,5381,5382],{"class":296},"  // await api.save(...)\n",[34,5384,5385],{"class":36,"line":833},[34,5386,220],{"class":40},[34,5388,5389,5391,5393],{"class":36,"line":853},[34,5390,1838],{"class":40},[34,5392,104],{"class":103},[34,5394,120],{"class":40},[34,5396,5397],{"class":36,"line":864},[34,5398,153],{"emptyLinePlaceholder":152},[34,5400,5401,5403,5405],{"class":36,"line":870},[34,5402,100],{"class":40},[34,5404,1855],{"class":103},[34,5406,120],{"class":40},[34,5408,5409,5411],{"class":36,"line":891},[34,5410,1863],{"class":40},[34,5412,1866],{"class":103},[34,5414,5415,5417,5419],{"class":36,"line":910},[34,5416,1872],{"class":44},[34,5418,113],{"class":40},[34,5420,1877],{"class":116},[34,5422,5423,5425,5427],{"class":36,"line":928},[34,5424,1883],{"class":44},[34,5426,113],{"class":40},[34,5428,1888],{"class":116},[34,5430,5431,5433,5435],{"class":36,"line":934},[34,5432,1894],{"class":44},[34,5434,113],{"class":40},[34,5436,1899],{"class":116},[34,5438,5439,5441,5443],{"class":36,"line":939},[34,5440,1905],{"class":44},[34,5442,113],{"class":40},[34,5444,1910],{"class":116},[34,5446,5447,5449,5451],{"class":36,"line":945},[34,5448,1916],{"class":44},[34,5450,113],{"class":40},[34,5452,1910],{"class":116},[34,5454,5455,5457,5459],{"class":36,"line":957},[34,5456,1926],{"class":44},[34,5458,113],{"class":40},[34,5460,5461],{"class":116},"\"selectedTeachers = []; currentPaperId = null\"\n",[34,5463,5464],{"class":36,"line":968},[34,5465,1937],{"class":40},[34,5467,5468,5470],{"class":36,"line":973},[34,5469,1943],{"class":40},[34,5471,3012],{"class":103},[34,5473,5474,5477,5479],{"class":36,"line":978},[34,5475,5476],{"class":44},"      :teachers",[34,5478,113],{"class":40},[34,5480,2202],{"class":116},[34,5482,5483,5486,5488],{"class":36,"line":983},[34,5484,5485],{"class":44},"      :subjects",[34,5487,113],{"class":40},[34,5489,5490],{"class":116},"\"subjectOptions\"\n",[34,5492,5493,5496,5498],{"class":36,"line":989},[34,5494,5495],{"class":44},"      :selected",[34,5497,113],{"class":40},[34,5499,2500],{"class":116},[34,5501,5502,5505,5507],{"class":36,"line":1007},[34,5503,5504],{"class":44},"      @search",[34,5506,113],{"class":40},[34,5508,5509],{"class":116},"\"handleSearch\"\n",[34,5511,5512,5515,5517],{"class":36,"line":1017},[34,5513,5514],{"class":44},"      @change",[34,5516,113],{"class":40},[34,5518,5519],{"class":116},"\"handleChange\"\n",[34,5521,5522,5525,5527],{"class":36,"line":1022},[34,5523,5524],{"class":44},"      @confirm",[34,5526,113],{"class":40},[34,5528,5529],{"class":116},"\"handleConfirm\"\n",[34,5531,5532,5535,5537],{"class":36,"line":1027},[34,5533,5534],{"class":44},"      @cancel",[34,5536,113],{"class":40},[34,5538,5539],{"class":116},"\"handleCancel\"\n",[34,5541,5542],{"class":36,"line":1033},[34,5543,5544],{"class":40},"    />\n",[34,5546,5547,5549,5551],{"class":36,"line":1051},[34,5548,2888],{"class":40},[34,5550,2891],{"class":103},[34,5552,120],{"class":40},[34,5554,5555,5557,5559],{"class":36,"line":1082},[34,5556,1838],{"class":40},[34,5558,1855],{"class":103},[34,5560,120],{"class":40},[2915,5562,5563],{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}",{"title":29,"searchDepth":63,"depth":63,"links":5565},[],"2026-04-17","我认为降低复杂度，旨在将大块业务拆离为可理解的部分，局部可理解后，才方便理解整体业务，整体复杂度随之降低","md",{},"/thinking/component-encapsulation-2",{"title":5,"description":5567},"thinking/组件封装的思考-下",[5574],"Encapsulation","f1rcP9WcO4klI-U2YiDq7Wy_x0i9upGz3sbY94Agkco",1776757930046]