You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
69 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-af6e47d4"],{"07ac":function(e,t,r){var n=r("23e7"),a=r("6f53").values;n({target:"Object",stat:!0},{values:function(e){return a(e)}})},"13d5":function(e,t,r){"use strict";var n=r("23e7"),a=r("d58f").left,s=r("a640"),o=r("ae40"),i=s("reduce"),l=o("reduce",{1:0});n({target:"Array",proto:!0,forced:!i||!l},{reduce:function(e){return a(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}})},"221b":function(e,t,r){},"26dc":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("el-dialog",{attrs:{title:"地点管理",visible:e.innerVisible,width:"640px","append-to-body":""},on:{"update:visible":function(t){e.innerVisible=t},open:function(t){return e.$emit("open")}}},[r("div",{staticClass:"manager-toolbar"},[r("div",{staticClass:"manager-title"},[e._v("地点列表")]),r("div",{staticClass:"manager-actions"},[r("el-button",{attrs:{size:"small",type:"primary"},on:{click:e.openCreate}},[e._v("新增")])],1)]),r("el-table",{attrs:{data:e.list,border:"",size:"small"}},[r("el-table-column",{attrs:{prop:"name",label:"地点","min-width":"220"},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[e._v(e._s(r.name))]}}])}),r("el-table-column",{attrs:{prop:"status",label:"状态",width:"100",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[r("el-tag",{attrs:{type:1===Number(n.status)?"success":"info"}},[e._v(e._s(1===Number(n.status)?"启用":"禁用"))])]}}])}),r("el-table-column",{attrs:{prop:"sort",label:"排序",width:"100",align:"center"}}),r("el-table-column",{attrs:{label:"操作",width:"200",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[r("el-button",{attrs:{type:"text",size:"small"},on:{click:function(t){return e.openEdit(n)}}},[e._v("编辑")]),r("el-button",{staticClass:"danger-text",attrs:{type:"text",size:"small"},on:{click:function(t){return e.$emit("delete",n)}}},[e._v("删除")])]}}])})],1),r("span",{attrs:{slot:"footer"},slot:"footer"},[r("el-button",{on:{click:function(t){e.innerVisible=!1}}},[e._v("关闭")])],1),r("el-dialog",{attrs:{title:"create"===e.editor.mode?"新增地点":"编辑地点",visible:e.editor.visible,width:"420px","append-to-body":""},on:{"update:visible":function(t){return e.$set(e.editor,"visible",t)}}},[r("el-form",{ref:"editorRef",attrs:{model:e.editor.form,rules:e.editorRules,"label-width":"80px"}},[r("el-form-item",{attrs:{label:"地点名称",prop:"name"}},[r("el-input",{attrs:{placeholder:"请输入地点名称"},model:{value:e.editor.form.name,callback:function(t){e.$set(e.editor.form,"name",t)},expression:"editor.form.name"}})],1),r("el-form-item",{attrs:{label:"状态",prop:"status"}},[r("el-radio-group",{model:{value:e.editor.form.status,callback:function(t){e.$set(e.editor.form,"status",t)},expression:"editor.form.status"}},[r("el-radio",{attrs:{label:1}},[e._v("启用")]),r("el-radio",{attrs:{label:0}},[e._v("禁用")])],1)],1),r("el-form-item",{attrs:{label:"排序",prop:"sort"}},[r("el-input-number",{staticStyle:{width:"100%"},attrs:{min:0,max:9999},model:{value:e.editor.form.sort,callback:function(t){e.$set(e.editor.form,"sort",t)},expression:"editor.form.sort"}})],1)],1),r("span",{attrs:{slot:"footer"},slot:"footer"},[r("el-button",{on:{click:function(t){e.editor.visible=!1}}},[e._v("取消")]),r("el-button",{attrs:{type:"primary"},on:{click:e.submitEditor}},[e._v("保存")])],1)],1)],1)},a=[],s=(r("4e82"),r("b0c0"),r("a9e3"),r("498a"),{name:"LocationManagerDialog",props:{visible:{type:Boolean,default:!1},list:{type:Array,default:function(){return[]}}},data:function(){return{editor:{visible:!1,mode:"create",form:{id:"",name:"",status:1,sort:0}},editorRules:{name:[{required:!0,message:"请输入地点名称",trigger:"blur"}]}}},computed:{innerVisible:{get:function(){return this.visible},set:function(e){this.$emit("update:visible",e)}}},methods:{openCreate:function(){var e=this;this.editor.mode="create",this.editor.form={id:"",name:"",status:1,sort:0},this.editor.visible=!0,this.$nextTick((function(){var t,r;return null===(t=e.$refs.editorRef)||void 0===t||null===(r=t.clearValidate)||void 0===r?void 0:r.call(t)}))},openEdit:function(e){var t=this;this.editor.mode="edit",this.editor.form={id:e.id,name:e.name,status:0===Number(e.status)?0:1,sort:Number(e.sort||0)},this.editor.visible=!0,this.$nextTick((function(){var e,r;return null===(e=t.$refs.editorRef)||void 0===e||null===(r=e.clearValidate)||void 0===r?void 0:r.call(e)}))},submitEditor:function(){var e=this;this.$refs.editorRef.validate((function(t){if(t){var r={id:e.editor.form.id,name:String(e.editor.form.name||"").trim(),status:0===Number(e.editor.form.status)?0:1,sort:Number(e.editor.form.sort||0)};"create"===e.editor.mode?e.$emit("add",r):e.$emit("edit",r),e.editor.visible=!1}}))}}}),o=s,i=(r("bde0"),r("2877")),l=Object(i["a"])(o,n,a,!1,null,"2af96146",null);t["default"]=l.exports},2948:function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("el-dialog",{attrs:{title:"负责人管理",visible:e.innerVisible,width:"640px","append-to-body":""},on:{"update:visible":function(t){e.innerVisible=t},open:function(t){return e.$emit("open")}}},[r("div",{staticClass:"manager-toolbar"},[r("div",{staticClass:"manager-title"},[e._v("负责人列表")]),r("div",{staticClass:"manager-actions"},[r("el-button",{attrs:{size:"small",type:"primary"},on:{click:e.openCreate}},[e._v("新增")])],1)]),r("el-table",{attrs:{data:e.list,border:"",size:"small"}},[r("el-table-column",{attrs:{prop:"name",label:"负责人","min-width":"220"},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[e._v(e._s(r.name))]}}])}),r("el-table-column",{attrs:{prop:"status",label:"状态",width:"100",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[r("el-tag",{attrs:{type:1===Number(n.status)?"success":"info"}},[e._v(e._s(1===Number(n.status)?"启用":"禁用"))])]}}])}),r("el-table-column",{attrs:{prop:"sort",label:"排序",width:"100",align:"center"}}),r("el-table-column",{attrs:{label:"操作",width:"200",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[r("el-button",{attrs:{type:"text",size:"small"},on:{click:function(t){return e.openEdit(n)}}},[e._v("编辑")]),r("el-button",{staticClass:"danger-text",attrs:{type:"text",size:"small"},on:{click:function(t){return e.$emit("delete",n)}}},[e._v("删除")])]}}])})],1),r("span",{attrs:{slot:"footer"},slot:"footer"},[r("el-button",{on:{click:function(t){e.innerVisible=!1}}},[e._v("关闭")])],1),r("el-dialog",{attrs:{title:"create"===e.editor.mode?"新增负责人":"编辑负责人",visible:e.editor.visible,width:"420px","append-to-body":""},on:{"update:visible":function(t){return e.$set(e.editor,"visible",t)}}},[r("el-form",{ref:"editorRef",attrs:{model:e.editor.form,rules:e.editorRules,"label-width":"80px"}},[r("el-form-item",{attrs:{label:"负责人",prop:"name"}},[r("el-input",{attrs:{placeholder:"请输入负责人名称"},model:{value:e.editor.form.name,callback:function(t){e.$set(e.editor.form,"name",t)},expression:"editor.form.name"}})],1),r("el-form-item",{attrs:{label:"状态",prop:"status"}},[r("el-radio-group",{model:{value:e.editor.form.status,callback:function(t){e.$set(e.editor.form,"status",t)},expression:"editor.form.status"}},[r("el-radio",{attrs:{label:1}},[e._v("启用")]),r("el-radio",{attrs:{label:0}},[e._v("禁用")])],1)],1),r("el-form-item",{attrs:{label:"排序",prop:"sort"}},[r("el-input-number",{staticStyle:{width:"100%"},attrs:{min:0,max:9999},model:{value:e.editor.form.sort,callback:function(t){e.$set(e.editor.form,"sort",t)},expression:"editor.form.sort"}})],1)],1),r("span",{attrs:{slot:"footer"},slot:"footer"},[r("el-button",{on:{click:function(t){e.editor.visible=!1}}},[e._v("取消")]),r("el-button",{attrs:{type:"primary"},on:{click:e.submitEditor}},[e._v("保存")])],1)],1)],1)},a=[],s=(r("4e82"),r("b0c0"),r("a9e3"),r("498a"),{name:"OwnerManagerDialog",props:{visible:{type:Boolean,default:!1},list:{type:Array,default:function(){return[]}}},data:function(){return{editor:{visible:!1,mode:"create",form:{id:"",name:"",status:1,sort:0}},editorRules:{name:[{required:!0,message:"请输入负责人名称",trigger:"blur"}]}}},computed:{innerVisible:{get:function(){return this.visible},set:function(e){this.$emit("update:visible",e)}}},methods:{openCreate:function(){var e=this;this.editor.mode="create",this.editor.form={id:"",name:"",status:1,sort:0},this.editor.visible=!0,this.$nextTick((function(){var t,r;return null===(t=e.$refs.editorRef)||void 0===t||null===(r=t.clearValidate)||void 0===r?void 0:r.call(t)}))},openEdit:function(e){var t=this;this.editor.mode="edit",this.editor.form={id:e.id,name:e.name,status:0===Number(e.status)?0:1,sort:Number(e.sort||0)},this.editor.visible=!0,this.$nextTick((function(){var e,r;return null===(e=t.$refs.editorRef)||void 0===e||null===(r=e.clearValidate)||void 0===r?void 0:r.call(e)}))},submitEditor:function(){var e=this;this.$refs.editorRef.validate((function(t){if(t){var r={id:e.editor.form.id,name:String(e.editor.form.name||"").trim(),status:0===Number(e.editor.form.status)?0:1,sort:Number(e.editor.form.sort||0)};"create"===e.editor.mode?e.$emit("add",r):e.$emit("edit",r),e.editor.visible=!1}}))}}}),o=s,i=(r("c3f9"),r("2877")),l=Object(i["a"])(o,n,a,!1,null,"48324256",null);t["default"]=l.exports},"2a15":function(e,t,r){e.exports={menuText:"#fff",menuActiveText:"#fff",subMenuActiveText:"#fff",menuBg:"rgba(255,255,255,0)",menuHover:"rgba(242,242,242,.4)",menuActiveBg:"rgba(242,242,242,.4)",submenuActiveBg:"rgba(242,242,242,.4)",subMenuHover:"rgba(242,242,242,.4)",sideBarWidth:"210px",primaryColor:"#07c"}},"382c":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("el-dialog",{attrs:{title:"add"===e.mode?"新增计划体系":"编辑计划体系",visible:e.innerVisible,width:"520px","append-to-body":""},on:{"update:visible":function(t){e.innerVisible=t},open:e.handleOpen}},[r("el-form",{ref:"formRef",attrs:{model:e.form,rules:e.rules,"label-width":"88px"}},[r("el-form-item",{attrs:{label:"年份",prop:"year"}},[r("el-date-picker",{staticStyle:{width:"100%"},attrs:{type:"year","value-format":"yyyy",format:"yyyy",placeholder:"请选择年份"},model:{value:e.form.year,callback:function(t){e.$set(e.form,"year",t)},expression:"form.year"}})],1),r("el-form-item",{attrs:{label:"计划体系名称",prop:"name"}},[r("el-input",{attrs:{placeholder:"请输入计划体系名称"},model:{value:e.form.name,callback:function(t){e.$set(e.form,"name",t)},expression:"form.name"}})],1),r("el-form-item",{attrs:{label:"排序",prop:"sort"}},[r("el-input-number",{staticStyle:{width:"100%"},attrs:{min:1,max:999},model:{value:e.form.sort,callback:function(t){e.$set(e.form,"sort",t)},expression:"form.sort"}})],1)],1),r("span",{attrs:{slot:"footer"},slot:"footer"},[r("el-button",{on:{click:function(t){e.innerVisible=!1}}},[e._v("取消")]),r("el-button",{attrs:{type:"primary"},on:{click:e.handleSubmit}},[e._v("保存")])],1)],1)},a=[],s={name:"SystemFormDialog",props:{visible:{type:Boolean,default:!1},mode:{type:String,default:"add"},form:{type:Object,required:!0},rules:{type:Object,default:function(){return{}}}},computed:{innerVisible:{get:function(){return this.visible},set:function(e){this.$emit("update:visible",e)}}},methods:{handleOpen:function(){var e=this;this.$nextTick((function(){e.$refs.formRef&&e.$refs.formRef.clearValidate()}))},handleSubmit:function(){var e=this;this.$refs.formRef.validate((function(t){t&&e.$emit("submit")}))}}},o=s,i=r("2877"),l=Object(i["a"])(o,n,a,!1,null,null,null);t["default"]=l.exports},"3c55":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticClass:"schedule-overview-page"},[r("lx-header",{staticStyle:{"margin-bottom":"10px",border:"0","margin-top":"15px"},attrs:{icon:"md-apps",text:e.$route.meta.title}},[r("div",{staticClass:"header-actions",attrs:{slot:"content"},slot:"content"},[r("el-date-picker",{staticStyle:{width:"120px"},attrs:{type:"year","value-format":"yyyy",format:"yyyy",placeholder:"选择年份",size:"small"},on:{change:e.handleYearChange},model:{value:e.currentYear,callback:function(t){e.currentYear=t},expression:"currentYear"}}),r("el-button",{attrs:{size:"small",plain:""},on:{click:e.openSystemCourseManager}},[e._v("计划体系管理")]),r("el-button",{attrs:{size:"small",type:"primary",plain:""},on:{click:e.openScheduleManager}},[e._v("带班管理")]),r("el-button",{attrs:{size:"small",plain:""},on:{click:e.openLocationManager}},[e._v("新增地点")]),r("el-button",{attrs:{size:"small",plain:""},on:{click:e.openOwnerManager}},[e._v("新增负责人")])],1)]),r("summary-panel",{attrs:{"summary-cards":e.summaryCards}}),r("monthly-heatmap",{attrs:{"month-labels":e.monthLabels,"monthly-stats":e.monthlyStats,"heat-class":e.heatClass}}),r("member-overview",{attrs:{"member-analysis":e.memberAnalysis}}),r("plan-matrix",{attrs:{year:e.currentYear,"month-labels":e.monthLabels,"plan-rows":e.planRows},on:{"cell-click":e.handlePlanCellClick}}),r("system-course-manager-dialog",{attrs:{visible:e.systemCourseDialogVisible,"tree-data":e.systemCourseTreeData,"selected-system":e.selectedSystem,"selected-tree-node":e.selectedTreeNode,"current-key":e.selectedTreeNodeKey},on:{"update:visible":function(t){e.systemCourseDialogVisible=t},"tree-node-select":e.handleTreeNodeSelect,"open-system-form":e.openSystemForm,"open-course-form":e.handleOpenCourseFormFromDialog,"delete-system":e.handleDeleteSystem,"delete-course":e.handleDeleteCourse}}),r("schedule-manager-dialog",{attrs:{visible:e.scheduleManagerDialogVisible,rows:e.scheduleTableRows,"span-method":e.scheduleSpanMethod},on:{"update:visible":function(t){e.scheduleManagerDialogVisible=t},"open-schedule-form":e.openScheduleForm,"delete-schedule":e.handleDeleteSchedule}}),r("system-form-dialog",{attrs:{visible:e.systemFormVisible,mode:e.systemFormMode,form:e.systemForm,rules:e.systemRules},on:{"update:visible":function(t){e.systemFormVisible=t},submit:e.submitSystemForm}}),r("course-form-dialog",{attrs:{visible:e.courseFormVisible,mode:e.courseFormMode,form:e.courseForm,rules:e.courseRules,systems:e.systems,"course-types":e.courseTypes},on:{"update:visible":function(t){e.courseFormVisible=t},"course-type-change":function(t){e.courseForm.name=e.getCourseTypeNameById(t)||e.courseForm.name},submit:e.submitCourseForm}}),r("schedule-form-dialog",{attrs:{visible:e.scheduleFormVisible,mode:e.scheduleFormMode,form:e.scheduleForm,rules:e.scheduleRules,systems:e.scheduleFormSystems,"course-options":e.scheduleFormCourseOptions,"month-options":e.monthOptions,locations:e.locations,owners:e.owners},on:{"update:visible":function(t){e.scheduleFormVisible=t},"year-change":e.handleScheduleYearChange,"system-change":e.handleScheduleSystemChange,"open-location-manager":e.openLocationManager,"open-owner-manager":e.openOwnerManager,cancel:e.handleScheduleDialogCancel,delete:e.handleDeleteSchedule,submit:e.submitScheduleForm}}),r("location-manager-dialog",{attrs:{visible:e.locationManagerDialogVisible,list:e.locations},on:{"update:visible":function(t){e.locationManagerDialogVisible=t},open:e.loadLocations,add:e.handleAddLocation,edit:e.handleEditLocation,delete:e.handleDeleteLocation}}),r("owner-manager-dialog",{attrs:{visible:e.ownerManagerDialogVisible,list:e.owners},on:{"update:visible":function(t){e.ownerManagerDialogVisible=t},open:e.loadOwners,add:e.handleAddOwner,edit:e.handleEditOwner,delete:e.handleDeleteOwner}})],1)},a=[],s=r("5530"),o=r("c14f"),i=r("1da1"),l=r("2909"),c=(r("99af"),r("cb29"),r("4de4"),r("7db0"),r("a630"),r("d81d"),r("13d5"),r("4e82"),r("b0c0"),r("a9e3"),r("b64b"),r("d3b7"),r("07ac"),r("ac1f"),r("6062"),r("3ca3"),r("5319"),r("0643"),r("2382"),r("fffc"),r("4e3e"),r("a573"),r("9d4a"),r("9a9a"),r("159b"),r("ddb0"),r("8feb")),u=r("5258"),d=r("73f2"),m=r("a7b8"),f=r("47c5"),p=r("8ca4"),h=r("382c"),y=r("6e6b"),b=r("6efe"),v=r("26dc"),g=r("2948"),w=r("90e6"),_=r("b775");function S(e){return Object(_["a"])({method:"get",url:"/api/admin/schedule-overview/overview",params:e})}function C(e){return Object(_["a"])({method:"post",url:"/api/admin/schedule-overview/systems/save",data:e})}function O(e){return Object(_["a"])({method:"get",url:"/api/admin/schedule-overview/systems/destroy",params:e})}function x(e){return Object(_["a"])({method:"post",url:"/api/admin/schedule-overview/courses/save",data:e})}function k(e){return Object(_["a"])({method:"get",url:"/api/admin/schedule-overview/courses/destroy",params:e})}function $(e){return Object(_["a"])({method:"get",url:"/api/admin/schedule-overview/schedules/index",params:e})}function j(e){return Object(_["a"])({method:"post",url:"/api/admin/schedule-overview/schedules/save",data:e})}function F(e){return Object(_["a"])({method:"get",url:"/api/admin/schedule-overview/schedules/destroy",params:e})}function N(e){return Object(_["a"])({method:"get",url:"/api/admin/schedule-overview/locations/index",params:e})}function T(e){return Object(_["a"])({method:"post",url:"/api/admin/schedule-overview/locations/save",data:e})}function M(e){return Object(_["a"])({method:"get",url:"/api/admin/schedule-overview/locations/destroy",params:e})}function A(e){return Object(_["a"])({method:"get",url:"/api/admin/schedule-overview/owners/index",params:e})}function V(e){return Object(_["a"])({method:"post",url:"/api/admin/schedule-overview/owners/save",data:e})}function D(e){return Object(_["a"])({method:"get",url:"/api/admin/schedule-overview/owners/destroy",params:e})}var I=function(){return String((new Date).getFullYear())},z=function(){return{id:"",year:I(),name:"",sort:1}},E=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return{id:"",system_id:e||"",course_type_id:"",name:"",sort:1}},R=function(){return{id:"",year:I(),system_id:"",course_id:"",title:"",modules:[]}},L=["tone-green","tone-blue","tone-purple","tone-sand","tone-cyan","tone-cream"],K=[{min:0,class:"heat-empty"},{min:1,class:"heat-level-1"},{min:2,class:"heat-level-2"},{min:3,class:"heat-level-3"},{min:4,class:"heat-level-4"}],Y={name:"ScheduleOverview",components:{SummaryPanel:c["default"],MonthlyHeatmap:u["default"],MemberOverview:d["default"],PlanMatrix:m["default"],SystemCourseManagerDialog:f["default"],ScheduleManagerDialog:p["default"],SystemFormDialog:h["default"],CourseFormDialog:y["default"],ScheduleFormDialog:b["default"],LocationManagerDialog:v["default"],OwnerManagerDialog:g["default"]},data:function(){return{systems:[],courses:[],schedules:[],scheduleGroups:[],courseTypes:[],locations:[],owners:[],loading:!1,monthLabels:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthOptions:Array.from({length:12},(function(e,t){return{value:t+1,label:"".concat(t+1,"月")}})),selectedSystemId:"",selectedTreeNodeKey:"",scheduleFormSystems:[],scheduleFormCourses:[],systemCourseDialogVisible:!1,scheduleManagerDialogVisible:!1,locationManagerDialogVisible:!1,ownerManagerDialogVisible:!1,systemFormVisible:!1,courseFormVisible:!1,scheduleFormVisible:!1,systemFormMode:"add",courseFormMode:"add",scheduleFormMode:"add",systemForm:z(),courseForm:E(),scheduleForm:R(),systemRules:{year:[{required:!0,message:"请选择年份",trigger:"change"}],name:[{required:!0,message:"请输入计划体系名称",trigger:"blur"}],sort:[{required:!0,message:"请输入排序",trigger:"change"}]},courseRules:{system_id:[{required:!0,message:"请选择所属计划体系",trigger:"change"}],course_type_id:[{required:!0,message:"请选择课程体系",trigger:"change"}],sort:[{required:!0,message:"请输入排序",trigger:"change"}]},scheduleRules:{year:[{required:!0,message:"请选择年份",trigger:"change"}],system_id:[{required:!0,message:"请选择计划体系",trigger:"change"}],modules:[{trigger:"change",validator:function(e,t,r){Array.isArray(t)&&t.length?r():r(new Error("模块/期数至少需要一条数据"))}}],title:[{required:!0,message:"请输入课程名称",trigger:"blur"}]},currentYear:I()}},computed:{selectedSystem:function(){var e=this;return this.systems.find((function(t){return String(t.id)===String(e.selectedSystemId)}))||null},selectedTreeNode:function(){var e=String(this.selectedTreeNodeKey||"");if(!e)return null;if(0===e.indexOf("system-")){var t=e.replace("system-",""),r=this.systems.find((function(e){return String(e.id)===String(t)}));return r?{treeKey:e,nodeType:"system",name:r.name,year:r.year,sort:r.sort,raw:r}:null}if(0===e.indexOf("course-")){var n=e.replace("course-",""),a=this.courses.find((function(e){return String(e.id)===String(n)})),s=a?this.systemMap[a.system_id]:null;return a?{treeKey:e,nodeType:"course",name:a.name,year:s?s.year:"-",sort:a.sort,systemName:s?s.name:"-",raw:a}:null}return null},selectedSystemCourses:function(){var e=this;return this.courses.filter((function(t){return String(t.system_id)===String(e.selectedSystemId)}))},systemCourseTreeData:function(){var e=this;return this.systems.map((function(t){return{treeKey:"system-".concat(t.id),id:t.id,year:t.year,name:t.name,sort:t.sort,nodeType:"system",raw:t,children:e.courses.filter((function(e){return String(e.system_id)===String(t.id)})).sort((function(e,t){return Number(e.sort||0)-Number(t.sort||0)})).map((function(e){return{treeKey:"course-".concat(e.id),id:e.id,name:e.name,sort:e.sort,nodeType:"course",systemName:t.name,raw:e}}))}}))},scheduleFormCourseOptions:function(){var e=this;return this.scheduleFormCourses.filter((function(t){return String(t.system_id)===String(e.scheduleForm.system_id)}))},summaryCards:function(){var e=this.schedules.length,t=Object(l["a"])(new Set(this.schedules.map((function(e){return e.owner})).filter(Boolean))),r=Object(l["a"])(new Set(this.schedules.map((function(e){return Number(e.month)})).filter(Boolean))),n=this.buildCounter(this.schedules,(function(e){return"".concat(e.month,"月")})),a=this.buildCounter(this.schedules,(function(e){return e.owner||"未分配"})),s=this.getTopCounterEntry(n),o=this.getTopCounterEntry(a);return[{label:"总开班次数(周期)",value:String(e),unit:"次"},{label:"参与人员",value:String(t.length),unit:"人"},{label:"活跃月度",value:String(r.length),unit:"个月"},{label:"峰值月度",value:s?"".concat(s.label,"/").concat(s.value):"-",unit:s?"次":""},{label:"峰值人员",value:o?"".concat(o.label,"/").concat(o.value):"-",unit:o?"次":""}]},monthlyStats:function(){var e={};return this.schedules.forEach((function(t){var r=t.owner||"未分配";e[r]||(e[r]={name:r,months:Array(12).fill(0),total:0});var n=Number(t.month)-1;n>=0&&n<12&&(e[r].months[n]+=1,e[r].total+=1)})),Object.values(e).sort((function(e,t){return t.total!==e.total?t.total-e.total:e.name.localeCompare(t.name,"zh-CN")}))},memberAnalysis:function(){var e=this,t=this.systemMap,r={};return this.schedules.forEach((function(n){var a=n.owner||"未分配";r[a]||(r[a]={total:0,monthCounter:{},locationCounter:{},systemCounter:{}}),r[a].total+=1,e.incrementCounter(r[a].monthCounter,"".concat(n.month,"月")),e.incrementCounter(r[a].locationCounter,n.location||"-"),e.incrementCounter(r[a].systemCounter,(t[n.system_id]||{}).name||"-")})),Object.keys(r).map((function(t){var n,a,s;return{name:t,total:"".concat(r[t].total,"次"),month:(null===(n=e.getTopCounterEntry(r[t].monthCounter))||void 0===n?void 0:n.label)||"-",location:(null===(a=e.getTopCounterEntry(r[t].locationCounter))||void 0===a?void 0:a.label)||"-",tag:(null===(s=e.getTopCounterEntry(r[t].systemCounter))||void 0===s?void 0:s.label)||"-"}})).sort((function(e,t){return Number(t.total.replace("次",""))-Number(e.total.replace("次",""))}))},systemMap:function(){return this.systems.reduce((function(e,t){return e[t.id]=t,e}),{})},courseMap:function(){return this.courses.reduce((function(e,t){return e[t.id]=t,e}),{})},scheduleTableRows:function(){var e=this,t=Array.isArray(this.scheduleGroups)?this.scheduleGroups:[],r=t.reduce((function(t,r){var n=Array.isArray(r.modules)?r.modules:[];return n.length?(n.forEach((function(n){t.push({id:n.id,group_id:r.id,year:r.year,system_id:r.system_id,course_id:r.course_id,title:r.title,moduleName:n.name||"-",month:n.month,monthLabel:n.month?"".concat(n.month,"月"):"-",location:(n.location||{}).name||"-",owner:(n.owner||{}).name||"-",count_text:n.count_text||"",systemName:(e.systemMap[r.system_id]||{}).name||"-",courseName:(e.courseMap[r.course_id]||{}).name||"-"})})),t):(t.push({group_id:r.id,year:r.year,system_id:r.system_id,course_id:r.course_id,title:r.title,moduleName:"-",month:"",monthLabel:"-",location:"-",owner:"-",count_text:"",systemName:(e.systemMap[r.system_id]||{}).name||"-",courseName:(e.courseMap[r.course_id]||{}).name||"-"}),t)}),[]);return r.sort((function(t,r){var n=e.systemMap[t.system_id]||{},a=e.systemMap[r.system_id]||{},s=Number(n.sort||0)-Number(a.sort||0);if(0!==s)return s;var o=String(n.name||"").localeCompare(String(a.name||""),"zh-CN");if(0!==o)return o;var i=e.courseMap[t.course_id]||{},l=e.courseMap[r.course_id]||{},c=Number(i.sort||0)-Number(l.sort||0);if(0!==c)return c;var u=String(i.name||"").localeCompare(String(l.name||""),"zh-CN");if(0!==u)return u;var d=String(t.group_id||"").localeCompare(String(r.group_id||""));return 0!==d?d:Number(t.month||0)-Number(r.month||0)}))},scheduleSpanMeta:function(){var e=this.scheduleTableRows,t=e.map((function(){return{rowspan:1,colspan:1}})),r=e.map((function(){return{rowspan:1,colspan:1}})),n=e.map((function(){return{rowspan:1,colspan:1}})),a=e.map((function(){return{rowspan:1,colspan:1}})),s=0;while(s<e.length){var o=String(e[s].system_id),i=s+1;while(i<e.length&&String(e[i].system_id)===o)i+=1;var l=i-s;t[s]={rowspan:l,colspan:1};for(var c=s+1;c<i;c+=1)t[c]={rowspan:0,colspan:0};s=i}s=0;while(s<e.length){var u=String(e[s].system_id),d=s+1;while(d<e.length&&String(e[d].system_id)===u)d+=1;var m=s;while(m<d){var f=String(e[m].course_id),p=m+1;while(p<d&&String(e[p].course_id)===f)p+=1;var h=p-m;r[m]={rowspan:h,colspan:1};for(var y=m+1;y<p;y+=1)r[y]={rowspan:0,colspan:0};var b=m;while(b<p){var v=String(e[b].group_id||""),g=b+1;while(g<p&&String(e[g].group_id||"")===v)g+=1;var w=g-b;n[b]={rowspan:w,colspan:1},a[b]={rowspan:w,colspan:1};for(var _=b+1;_<g;_+=1)n[_]={rowspan:0,colspan:0},a[_]={rowspan:0,colspan:0};b=g}m=p}s=d}return{systemMeta:t,courseMeta:r,titleMeta:n,opMeta:a}},planRows:function(){var e=this,t=[],r=Object(l["a"])(this.systems).sort((function(e,t){return Number(e.sort||0)-Number(t.sort||0)})),n=Array.isArray(this.scheduleGroups)?this.scheduleGroups:[];return r.forEach((function(r,a){var s=n.filter((function(e){return String(e.system_id)===String(r.id)})).sort((function(e,t){var r=e.course||{},n=t.course||{},a=String(r.name||""),s=String(n.name||""),o=""!==a,i=""!==s;if(o!==i)return o?-1:1;var l=Number(r.sort||0)-Number(n.sort||0);if(0!==l)return l;var c=a.localeCompare(s,"zh-CN");return 0!==c?c:String(e.title||"").localeCompare(String(t.title||""),"zh-CN")})),o=L[a%L.length],i=e.courses.filter((function(e){return String(e.system_id)===String(r.id)})).sort((function(e,t){var r=Number(e.sort||0)-Number(t.sort||0);return 0!==r?r:String(e.name||"").localeCompare(String(t.name||""),"zh-CN")}));s.forEach((function(n){for(var a=Array.isArray(n.modules)?n.modules:[],s=e.monthLabels.reduce((function(e,t){var r=Number(t.replace("月",""));return e[t]=a.filter((function(e){return Number(e.month)===r})).sort((function(e,t){return String(e.name||"").localeCompare(String(t.name||""),"zh-CN")})).map((function(e){return{id:e.id,group_id:n.id,year:n.year,system_id:n.system_id,course_id:n.course_id,month:e.month,title:n.title||"",moduleName:e.name||"",owner:(e.owner||{}).name||"",location:(e.location||{}).name||"",count_text:e.count_text||"",ownerLocation:"".concat((e.owner||{}).name||"-"," / ").concat((e.location||{}).name||"-"),countText:e.count_text||""}})),e}),{}),i=Math.max.apply(Math,[1].concat(Object(l["a"])(e.monthLabels.map((function(e){return(s[e]||[]).length||0}))))),c=function(a){var i=e.monthLabels.reduce((function(e,t){var r=s[t]||[];return e[t]=r[a]?[r[a]]:[],e}),{});t.push({rowKey:"".concat(r.id,"-").concat(n.course_id||"none","-").concat(n.id,"-").concat(a),systemId:r.id,group:r.name,groupClass:o,courseId:n.course_id||"",course:(n.course||{}).name||"-",plan:i})},u=0;u<i;u+=1)c(u)}));var c=new Set(s.map((function(e){return String(e.course_id||"")})).filter(Boolean));if(i.forEach((function(n){if(!c.has(String(n.id))){var a=e.monthLabels.reduce((function(e,t){return e[t]=[],e}),{});t.push({rowKey:"".concat(r.id,"-").concat(n.id,"-empty"),systemId:r.id,group:r.name,groupClass:o,courseId:n.id,course:n.name||"-",plan:a})}})),!i.length&&!s.length){var u=e.monthLabels.reduce((function(e,t){return e[t]=[],e}),{});t.push({rowKey:"".concat(r.id,"-empty"),systemId:r.id,group:r.name,groupClass:o,courseId:"",course:"-",plan:u})}})),t}},created:function(){this.loadData(),this.loadCourseTypes(),this.loadLocations(),this.loadOwners()},methods:{loadLocations:function(){var e=this;return Object(i["a"])(Object(o["a"])().m((function t(){var r;return Object(o["a"])().w((function(t){while(1)switch(t.p=t.n){case 0:return t.p=0,t.n=1,N();case 1:r=t.v,e.locations=Array.isArray(r)?r:r.data||r||[],t.n=3;break;case 2:t.p=2,t.v,e.locations=[];case 3:return t.a(2)}}),t,null,[[0,2]])})))()},loadOwners:function(){var e=this;return Object(i["a"])(Object(o["a"])().m((function t(){var r;return Object(o["a"])().w((function(t){while(1)switch(t.p=t.n){case 0:return t.p=0,t.n=1,A();case 1:r=t.v,e.owners=Array.isArray(r)?r:r.data||r||[],t.n=3;break;case 2:t.p=2,t.v,e.owners=[];case 3:return t.a(2)}}),t,null,[[0,2]])})))()},handleAddLocation:function(e){var t=this;return Object(i["a"])(Object(o["a"])().m((function r(){return Object(o["a"])().w((function(r){while(1)switch(r.n){case 0:return r.n=1,T({name:e.name,status:e.status,sort:e.sort});case 1:return r.n=2,t.loadLocations();case 2:t.$message.success("地点新增成功");case 3:return r.a(2)}}),r)})))()},handleEditLocation:function(e){var t=this;return Object(i["a"])(Object(o["a"])().m((function r(){return Object(o["a"])().w((function(r){while(1)switch(r.n){case 0:return r.n=1,T({id:e.id,name:e.name,status:e.status,sort:e.sort});case 1:return r.n=2,t.loadLocations();case 2:t.$message.success("地点保存成功");case 3:return r.a(2)}}),r)})))()},handleDeleteLocation:function(e){var t=this;this.$confirm("确定删除地点“".concat(e.name,"”吗?"),"提示",{type:"warning"}).then(Object(i["a"])(Object(o["a"])().m((function r(){return Object(o["a"])().w((function(r){while(1)switch(r.n){case 0:return r.n=1,M({id:e.id});case 1:return r.n=2,t.loadLocations();case 2:t.$message.success("地点删除成功");case 3:return r.a(2)}}),r)})))).catch((function(){}))},handleAddOwner:function(e){var t=this;return Object(i["a"])(Object(o["a"])().m((function r(){return Object(o["a"])().w((function(r){while(1)switch(r.n){case 0:return r.n=1,V({name:e.name,status:e.status,sort:e.sort});case 1:return r.n=2,t.loadOwners();case 2:t.$message.success("负责人新增成功");case 3:return r.a(2)}}),r)})))()},handleEditOwner:function(e){var t=this;return Object(i["a"])(Object(o["a"])().m((function r(){return Object(o["a"])().w((function(r){while(1)switch(r.n){case 0:return r.n=1,V({id:e.id,name:e.name,status:e.status,sort:e.sort});case 1:return r.n=2,t.loadOwners();case 2:t.$message.success("负责人保存成功");case 3:return r.a(2)}}),r)})))()},handleDeleteOwner:function(e){var t=this;this.$confirm("确定删除负责人“".concat(e.name,"”吗?"),"提示",{type:"warning"}).then(Object(i["a"])(Object(o["a"])().m((function r(){return Object(o["a"])().w((function(r){while(1)switch(r.n){case 0:return r.n=1,D({id:e.id});case 1:return r.n=2,t.loadOwners();case 2:t.$message.success("负责人删除成功");case 3:return r.a(2)}}),r)})))).catch((function(){}))},openLocationManager:function(){this.locationManagerDialogVisible=!0},openOwnerManager:function(){this.ownerManagerDialogVisible=!0},handleOpenCourseFormFromDialog:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.mode||"add",r=e.row||null,n=e.targetSystem||null;this.openCourseForm(t,r,n)},scheduleSpanMethod:function(e){var t=e.rowIndex,r=e.columnIndex,n=e.column,a=this.scheduleSpanMeta;if(n&&"操作"===n.label){var s=a.opMeta[t];return s?{rowspan:s.rowspan,colspan:s.colspan}:{rowspan:1,colspan:1}}if(0===r){var o=a.systemMeta[t];return o?{rowspan:o.rowspan,colspan:o.colspan}:{rowspan:1,colspan:1}}if(1===r){var i=a.courseMeta[t];return i?{rowspan:i.rowspan,colspan:i.colspan}:{rowspan:1,colspan:1}}if(2===r){var l=a.titleMeta[t];return l?{rowspan:l.rowspan,colspan:l.colspan}:{rowspan:1,colspan:1}}if(8===r){var c=a.opMeta[t];return c?{rowspan:c.rowspan,colspan:c.colspan}:{rowspan:1,colspan:1}}return{rowspan:1,colspan:1}},loadCourseTypes:function(){var e=this;return Object(i["a"])(Object(o["a"])().m((function t(){var r;return Object(o["a"])().w((function(t){while(1)switch(t.p=t.n){case 0:return t.p=0,t.n=1,Object(w["b"])({page:1,page_size:9999,sort_name:"sort",sort_type:"ASC",filter:[{key:"status",op:"like",value:1}]},!0);case 1:r=t.v,e.courseTypes=r&&r.data?r.data:[],t.n=3;break;case 2:t.p=2,t.v,e.courseTypes=[];case 3:return t.a(2)}}),t,null,[[0,2]])})))()},getCourseTypeNameById:function(e){var t=this.courseTypes.find((function(t){return String(t.id)===String(e)}));return t?t.name:""},loadData:function(){var e=this;return Object(i["a"])(Object(o["a"])().m((function t(){var r,n;return Object(o["a"])().w((function(t){while(1)switch(t.p=t.n){case 0:return e.loading=!0,t.p=1,t.n=2,S({year:e.currentYear});case 2:return r=t.v,e.systems=r.systems||[],e.courses=r.courses||[],e.schedules=r.schedules||[],t.n=3,$({year:e.currentYear});case 3:if(n=t.v,n){t.n=4;break}n=[];case 4:e.scheduleGroups=n,e.selectedSystemId&&e.systems.find((function(t){return String(t.id)===String(e.selectedSystemId)}))||(e.selectedSystemId=e.systems[0]?e.systems[0].id:""),e.syncSelectedTreeNode();case 5:return t.p=5,e.loading=!1,t.f(5);case 6:return t.a(2)}}),t,null,[[1,,5,6]])})))()},loadScheduleFormOptions:function(e){var t=this;return Object(i["a"])(Object(o["a"])().m((function r(){var n;return Object(o["a"])().w((function(r){while(1)switch(r.n){case 0:return r.n=1,S({year:e||t.currentYear});case 1:n=r.v,t.scheduleFormSystems=n.systems||[],t.scheduleFormCourses=n.courses||[];case 2:return r.a(2)}}),r)})))()},buildCounter:function(e,t){var r=this;return e.reduce((function(e,n){var a=t(n);return r.incrementCounter(e,a),e}),{})},incrementCounter:function(e,t){var r=t||"-";e[r]=(e[r]||0)+1},getTopCounterEntry:function(e){return Object.keys(e||{}).map((function(t){return{label:t,value:e[t]}})).sort((function(e,t){return t.value!==e.value?t.value-e.value:e.label.localeCompare(t.label,"zh-CN")}))[0]},heatClass:function(e){for(var t=Number(e)||0,r=K.length-1;r>=0;r--)if(t>=K[r].min)return K[r].class;return"heat-empty"},openSystemCourseManager:function(){this.systemCourseDialogVisible=!0,!this.selectedSystemId&&this.systems[0]&&(this.selectedSystemId=this.systems[0].id),!this.selectedTreeNodeKey&&this.selectedSystemId&&(this.selectedTreeNodeKey="system-".concat(this.selectedSystemId))},openScheduleManager:function(){this.scheduleManagerDialogVisible=!0},handleYearChange:function(e){this.currentYear=e||I(),this.loadData()},openSystemForm:function(e,t){this.systemFormMode=e,this.systemForm=t?{id:t.id,year:t.year||this.currentYear,name:t.name,sort:t.sort}:Object(s["a"])(Object(s["a"])({},z()),{},{year:this.currentYear}),this.systemFormVisible=!0},submitSystemForm:function(){var e=this;Object(i["a"])(Object(o["a"])().m((function t(){return Object(o["a"])().w((function(t){while(1)switch(t.n){case 0:return t.n=1,C(e.systemForm);case 1:return t.n=2,e.loadData();case 2:e.systemForm.id&&(e.selectedTreeNodeKey="system-".concat(e.systemForm.id)),!e.selectedSystemId&&e.systems[0]&&(e.selectedSystemId=e.systems[0].id),!e.systemForm.id&&e.selectedSystemId&&(e.selectedTreeNodeKey="system-".concat(e.selectedSystemId)),e.systemFormVisible=!1,e.$message.success("计划体系保存成功");case 3:return t.a(2)}}),t)})))()},handleDeleteSystem:function(e){var t=this;this.$confirm("删除计划体系“".concat(e.name,"”后,其下课程体系和带班也会一并删除,是否继续?"),"提示",{type:"warning"}).then(Object(i["a"])(Object(o["a"])().m((function r(){return Object(o["a"])().w((function(r){while(1)switch(r.n){case 0:return r.n=1,O({id:e.id});case 1:return r.n=2,t.loadData();case 2:t.selectedTreeNodeKey=t.selectedSystemId?"system-".concat(t.selectedSystemId):"",t.$message.success("计划体系删除成功");case 3:return r.a(2)}}),r)})))).catch((function(){}))},openCourseForm:function(e,t,r){this.courseFormMode=e,this.courseForm=t?{id:t.id,system_id:t.system_id,course_type_id:t.course_type_id||(t.course_type?t.course_type.id:""),name:t.name,sort:t.sort}:E(r?r.id:this.selectedSystemId),this.courseFormVisible=!0},submitCourseForm:function(){var e=this;Object(i["a"])(Object(o["a"])().m((function t(){var r;return Object(o["a"])().w((function(t){while(1)switch(t.n){case 0:return r=e.getCourseTypeNameById(e.courseForm.course_type_id),r&&(e.courseForm.name=r),t.n=1,x(e.courseForm);case 1:return t.n=2,e.loadData();case 2:e.selectedSystemId=e.courseForm.system_id,e.courseForm.id&&(e.selectedTreeNodeKey="course-".concat(e.courseForm.id)),e.courseFormVisible=!1,e.$message.success("课程体系保存成功");case 3:return t.a(2)}}),t)})))()},handleDeleteCourse:function(e){var t=this;this.$confirm("删除课程体系“".concat(e.name,"”后,其下带班也会一并删除,是否继续?"),"提示",{type:"warning"}).then(Object(i["a"])(Object(o["a"])().m((function r(){return Object(o["a"])().w((function(r){while(1)switch(r.n){case 0:return r.n=1,k({id:e.id});case 1:return r.n=2,t.loadData();case 2:t.selectedTreeNodeKey=t.selectedSystemId?"system-".concat(t.selectedSystemId):"",t.$message.success("课程体系删除成功");case 3:return r.a(2)}}),r)})))).catch((function(){}))},handleTreeNodeSelect:function(e){this.selectedTreeNodeKey=e.treeKey,"system"===e.nodeType?this.selectedSystemId=e.id:e.raw&&e.raw.system_id&&(this.selectedSystemId=e.raw.system_id)},syncSelectedTreeNode:function(){var e=this,t=this.systemCourseTreeData.some((function(t){return t.treeKey===e.selectedTreeNodeKey||(t.children||[]).some((function(t){return t.treeKey===e.selectedTreeNodeKey}))}));t||(this.selectedTreeNodeKey=this.selectedSystemId?"system-".concat(this.selectedSystemId):this.systemCourseTreeData[0]?this.systemCourseTreeData[0].treeKey:"")},openScheduleForm:function(e,t){var r=arguments,n=this;return Object(i["a"])(Object(o["a"])().m((function a(){var i,l,c,u,d,m,f;return Object(o["a"])().w((function(a){while(1)switch(a.n){case 0:if(i=r.length>2&&void 0!==r[2]?r[2]:{},n.scheduleFormMode=e,!t){a.n=2;break}return l=t.group_id||t.id,c=(Array.isArray(n.scheduleGroups)?n.scheduleGroups:[]).find((function(e){return String(e.id)===String(l)})),u=c&&Array.isArray(c.modules)?c.modules:[],n.scheduleForm={id:c?c.id:l,year:(c?c.year:t.year)||I(),system_id:c?c.system_id:t.system_id,course_id:c?c.course_id:t.course_id,title:c?c.title:t.title,modules:u.map((function(e){return{id:e.id,name:e.name||"",month:e.month,location_id:e.location_id||(e.location||{}).id||"",owner_id:e.owner_id||(e.owner||{}).id||"",count_text:e.count_text||""}}))},a.n=1,n.loadScheduleFormOptions(n.scheduleForm.year);case 1:a.n=4;break;case 2:return d=i.year||n.currentYear,a.n=3,n.loadScheduleFormOptions(d);case 3:m=i.system_id||n.selectedSystemId||(n.scheduleFormSystems[0]?n.scheduleFormSystems[0].id:""),f=n.scheduleFormCourses.find((function(e){return String(e.system_id)===String(m)})),n.scheduleForm=Object(s["a"])(Object(s["a"])({},R()),{},{year:d,system_id:m,course_id:i.course_id||(f?f.id:"")}),i.month&&(n.scheduleForm.modules=[{name:"",month:i.month,location_id:"",owner_id:"",count_text:""}]);case 4:n.scheduleFormVisible=!0;case 5:return a.a(2)}}),a)})))()},handlePlanCellClick:function(e,t,r){if(r&&r.length)this.openScheduleForm("edit",r[0]);else{var n=Number(String(t).replace("月",""));this.openScheduleForm("add",null,{year:this.currentYear,system_id:e.systemId,course_id:e.courseId,month:n})}},handleScheduleYearChange:function(e){var t=this;return Object(i["a"])(Object(o["a"])().m((function r(){var n,a,s;return Object(o["a"])().w((function(r){while(1)switch(r.n){case 0:return n=e||I(),t.scheduleForm.year=n,r.n=1,t.loadScheduleFormOptions(n);case 1:a=t.scheduleFormSystems[0],s=t.scheduleFormCourses.find((function(e){return a&&String(e.system_id)===String(a.id)})),t.scheduleForm.system_id=a?a.id:"",t.scheduleForm.course_id=s?s.id:"",t.scheduleForm.month=[];case 2:return r.a(2)}}),r)})))()},handleScheduleSystemChange:function(e){var t=this,r=this.scheduleFormCourses.find((function(r){return String(r.id)===String(t.scheduleForm.course_id)&&String(r.system_id)===String(e)}));if(!r){var n=this.scheduleFormCourses.find((function(t){return String(t.system_id)===String(e)}));this.scheduleForm.course_id=n?n.id:""}},refreshAfterScheduleAction:function(e){var t=this;return Object(i["a"])(Object(o["a"])().m((function r(){return Object(o["a"])().w((function(r){while(1)switch(r.n){case 0:return t.scheduleFormVisible=!1,r.n=1,t.loadData();case 1:e&&t.$message.success(e);case 2:return r.a(2)}}),r)})))()},handleScheduleDialogCancel:function(){this.scheduleFormVisible=!1,this.loadData()},submitScheduleForm:function(){var e=this;Object(i["a"])(Object(o["a"])().m((function t(){return Object(o["a"])().w((function(t){while(1)switch(t.n){case 0:return t.n=1,j(e.scheduleForm);case 1:return t.n=2,e.refreshAfterScheduleAction("带班保存成功");case 2:return t.a(2)}}),t)})))()},handleDeleteSchedule:function(e){var t=this,r=e.group_id||e.id;this.$confirm("确定删除带班“".concat(e.title,"”吗?"),"提示",{type:"warning"}).then(Object(i["a"])(Object(o["a"])().m((function e(){return Object(o["a"])().w((function(e){while(1)switch(e.n){case 0:return e.n=1,F({id:r});case 1:return e.n=2,t.refreshAfterScheduleAction("带班删除成功");case 2:return e.a(2)}}),e)})))).catch((function(){}))}}},B=Y,q=(r("54d0"),r("2877")),P=Object(q["a"])(B,n,a,!1,null,null,null);t["default"]=P.exports},"47c5":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("el-dialog",{attrs:{title:"计划体系管理",visible:e.innerVisible,width:"58%","custom-class":"overview-dialog"},on:{"update:visible":function(t){e.innerVisible=t},open:e.handleOpen}},[r("div",{staticClass:"tree-manager"},[r("div",{staticClass:"tree-panel"},[r("div",{staticClass:"manager-toolbar"},[r("div",{staticClass:"manager-title"},[e._v("计划体系树")]),r("div",{staticClass:"manager-actions"},[r("el-button",{attrs:{size:"small",type:"primary"},on:{click:function(t){return e.$emit("open-system-form","add")}}},[e._v("新增计划体系")]),r("el-button",{attrs:{size:"small",disabled:!e.selectedSystem},on:{click:function(t){return e.$emit("open-course-form",{mode:"add"})}}},[e._v("新增课程体系")])],1)]),r("div",{staticClass:"tree-wrap"},[r("el-tree",{ref:"tree",attrs:{data:e.treeData,"node-key":"treeKey","highlight-current":"","default-expand-all":"","expand-on-click-node":!1},on:{"node-click":function(t){return e.$emit("tree-node-select",t)}},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.data;return r("div",{staticClass:"tree-node"},[r("div",{staticClass:"tree-node-main"},[r("span",{class:["tree-node-tag","system"===n.nodeType?"system-tag":"course-tag"]},[e._v(" "+e._s("system"===n.nodeType?"计划体系":"课程体系")+" ")]),r("span",{staticClass:"tree-node-label"},[e._v(e._s(n.name))])]),r("div",{staticClass:"tree-node-actions"},["system"===n.nodeType?r("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(t){return t.stopPropagation(),e.$emit("open-course-form",{mode:"add",row:null,targetSystem:n.raw})}}},[e._v(" 新增课程体系 ")]):e._e(),r("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(t){t.stopPropagation(),"system"===n.nodeType?e.$emit("open-system-form","edit",n.raw):e.$emit("open-course-form",{mode:"edit",row:n.raw})}}},[e._v(" 编辑 ")]),r("el-button",{staticClass:"danger-text",attrs:{type:"text",size:"mini"},on:{click:function(t){t.stopPropagation(),"system"===n.nodeType?e.$emit("delete-system",n.raw):e.$emit("delete-course",n.raw)}}},[e._v(" 删除 ")])],1)])}}])})],1)]),r("div",{staticClass:"tree-detail-panel"},[r("div",{staticClass:"manager-toolbar"},[r("div",{staticClass:"manager-title"},[e._v("节点信息")]),r("div",{staticClass:"manager-actions"},[r("span",{staticClass:"selected-tip"},[e._v(e._s(e.selectedTreeNode?e.selectedTreeNode.name:"请在左侧选择节点"))])])]),e.selectedTreeNode?r("div",{staticClass:"node-detail-card"},[r("div",{staticClass:"node-detail-row"},[r("span",{staticClass:"node-detail-label"},[e._v("类型")]),r("span",{staticClass:"node-detail-value"},[e._v(e._s("system"===e.selectedTreeNode.nodeType?"计划体系":"课程体系"))])]),r("div",{staticClass:"node-detail-row"},[r("span",{staticClass:"node-detail-label"},[e._v("名称")]),r("span",{staticClass:"node-detail-value"},[e._v(e._s(e.selectedTreeNode.name))])]),r("div",{staticClass:"node-detail-row"},[r("span",{staticClass:"node-detail-label"},[e._v("年份")]),r("span",{staticClass:"node-detail-value"},[e._v(e._s(e.selectedTreeNode.year))])]),r("div",{staticClass:"node-detail-row"},[r("span",{staticClass:"node-detail-label"},[e._v("排序")]),r("span",{staticClass:"node-detail-value"},[e._v(e._s(e.selectedTreeNode.sort))])]),"course"===e.selectedTreeNode.nodeType?r("div",{staticClass:"node-detail-row"},[r("span",{staticClass:"node-detail-label"},[e._v("所属计划体系")]),r("span",{staticClass:"node-detail-value"},[e._v(e._s(e.selectedTreeNode.systemName))])]):e._e(),r("div",{staticClass:"node-detail-actions"},["system"===e.selectedTreeNode.nodeType?r("el-button",{attrs:{size:"small",type:"primary"},on:{click:function(t){return e.$emit("open-course-form",{mode:"add",row:null,targetSystem:e.selectedTreeNode.raw})}}},[e._v(" 新增课程体系 ")]):e._e(),r("el-button",{attrs:{size:"small"},on:{click:function(t){"system"===e.selectedTreeNode.nodeType?e.$emit("open-system-form","edit",e.selectedTreeNode.raw):e.$emit("open-course-form",{mode:"edit",row:e.selectedTreeNode.raw})}}},[e._v(" 编辑 ")]),r("el-button",{attrs:{size:"small",type:"danger",plain:""},on:{click:function(t){"system"===e.selectedTreeNode.nodeType?e.$emit("delete-system",e.selectedTreeNode.raw):e.$emit("delete-course",e.selectedTreeNode.raw)}}},[e._v(" 删除 ")])],1)]):r("div",{staticClass:"tree-empty-state"},[e._v(" 请在左侧树中选择计划体系或课程体系 ")])])])])},a=[],s={name:"SystemCourseManagerDialog",props:{visible:{type:Boolean,default:!1},treeData:{type:Array,default:function(){return[]}},selectedSystem:{type:Object,default:null},selectedTreeNode:{type:Object,default:null},currentKey:{type:String,default:""}},computed:{innerVisible:{get:function(){return this.visible},set:function(e){this.$emit("update:visible",e)}}},watch:{currentKey:function(){this.syncCurrentKey()}},methods:{handleOpen:function(){var e=this;this.$nextTick((function(){return e.syncCurrentKey()})),this.$emit("open")},syncCurrentKey:function(){this.$refs.tree&&this.currentKey&&this.$refs.tree.setCurrentKey(this.currentKey)}}},o=s,i=r("2877"),l=Object(i["a"])(o,n,a,!1,null,null,null);t["default"]=l.exports},5258:function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"panel"},[r("div",{staticClass:"panel-title"},[e._v("人员月度开班次数")]),r("div",{staticClass:"table-scroll-y limit-rows-8"},[r("el-table",{staticClass:"heatmap-table",attrs:{data:e.monthlyStats,border:"","max-height":"314","cell-class-name":e.cellClassName,"empty-text":"暂无数据"}},[r("el-table-column",{attrs:{prop:"name",label:"人员","min-width":"80",align:"center","class-name":"name-cell"}}),e._l(e.monthLabels,(function(t,n){return r("el-table-column",{key:t,attrs:{label:t,"min-width":"60",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[e._v(" "+e._s(r.months&&r.months[n]?r.months[n]:"-")+" ")]}}],null,!0)})})),r("el-table-column",{attrs:{prop:"total",label:"合计","min-width":"70",align:"center","class-name":"total-cell"}})],2)],1)])},a=[],s=(r("4de4"),r("a15b"),r("d3b7"),{name:"ScheduleMonthlyHeatmap",props:{monthLabels:{type:Array,default:function(){return[]}},monthlyStats:{type:Array,default:function(){return[]}},heatClass:{type:Function,default:function(){return function(){return"heat-empty"}}}},methods:{cellClassName:function(e){var t=e.row,r=e.columnIndex;if(r>=1&&r<1+this.monthLabels.length){var n=t.months&&t.months[r-1];return["heat-cell",this.heatClass(n)].filter(Boolean).join(" ")}return""}}}),o=s,i=r("2877"),l=Object(i["a"])(o,n,a,!1,null,null,null);t["default"]=l.exports},"54d0":function(e,t,r){"use strict";r("2a15")},"5a1e":function(e,t,r){},"5ecf":function(e,t,r){},6062:function(e,t,r){"use strict";var n=r("6d61"),a=r("6566");e.exports=n("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),a)},"6e6b":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("el-dialog",{attrs:{title:"add"===e.mode?"新增课程体系":"编辑课程体系",visible:e.innerVisible,width:"520px","append-to-body":""},on:{"update:visible":function(t){e.innerVisible=t},open:e.handleOpen}},[r("el-form",{ref:"formRef",attrs:{model:e.form,rules:e.rules,"label-width":"88px"}},[r("el-form-item",{attrs:{label:"所属计划体系",prop:"system_id"}},[r("el-select",{staticStyle:{width:"100%"},attrs:{filterable:"",placeholder:"请选择计划体系"},model:{value:e.form.system_id,callback:function(t){e.$set(e.form,"system_id",t)},expression:"form.system_id"}},e._l(e.systems,(function(e){return r("el-option",{key:e.id,attrs:{label:e.name,value:e.id}})})),1)],1),r("el-form-item",{attrs:{label:"课程体系",prop:"course_type_id"}},[r("el-select",{staticStyle:{width:"100%"},attrs:{filterable:"",placeholder:"请选择课程体系"},on:{change:function(t){return e.$emit("course-type-change",t)}},model:{value:e.form.course_type_id,callback:function(t){e.$set(e.form,"course_type_id",t)},expression:"form.course_type_id"}},e._l(e.courseTypes,(function(e){return r("el-option",{key:e.id,attrs:{label:e.name,value:e.id}})})),1)],1),r("el-form-item",{attrs:{label:"排序",prop:"sort"}},[r("el-input-number",{staticStyle:{width:"100%"},attrs:{min:1,max:999},model:{value:e.form.sort,callback:function(t){e.$set(e.form,"sort",t)},expression:"form.sort"}})],1)],1),r("span",{attrs:{slot:"footer"},slot:"footer"},[r("el-button",{on:{click:function(t){e.innerVisible=!1}}},[e._v("取消")]),r("el-button",{attrs:{type:"primary"},on:{click:e.handleSubmit}},[e._v("保存")])],1)],1)},a=[],s={name:"CourseFormDialog",props:{visible:{type:Boolean,default:!1},mode:{type:String,default:"add"},form:{type:Object,required:!0},rules:{type:Object,default:function(){return{}}},systems:{type:Array,default:function(){return[]}},courseTypes:{type:Array,default:function(){return[]}}},computed:{innerVisible:{get:function(){return this.visible},set:function(e){this.$emit("update:visible",e)}}},methods:{handleOpen:function(){var e=this;this.$nextTick((function(){e.$refs.formRef&&e.$refs.formRef.clearValidate()}))},handleSubmit:function(){var e=this;this.$refs.formRef.validate((function(t){t&&e.$emit("submit")}))}}},o=s,i=r("2877"),l=Object(i["a"])(o,n,a,!1,null,null,null);t["default"]=l.exports},"6efe":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("el-dialog",{attrs:{title:"add"===e.mode?"新增带班":"编辑带班",visible:e.innerVisible,width:"60%","append-to-body":""},on:{"update:visible":function(t){e.innerVisible=t},open:e.handleOpen}},[r("el-form",{ref:"formRef",attrs:{model:e.form,rules:e.rules,"label-width":"88px"}},[r("el-form-item",{attrs:{label:"年份",prop:"year"}},[r("el-date-picker",{staticStyle:{width:"100%"},attrs:{type:"year","value-format":"yyyy",format:"yyyy",placeholder:"请选择年份"},on:{change:function(t){return e.$emit("year-change",t)}},model:{value:e.form.year,callback:function(t){e.$set(e.form,"year",t)},expression:"form.year"}})],1),r("el-form-item",{attrs:{label:"计划体系",prop:"system_id"}},[r("el-select",{staticStyle:{width:"100%"},attrs:{filterable:"",placeholder:"请选择计划体系"},on:{change:function(t){return e.$emit("system-change",t)}},model:{value:e.form.system_id,callback:function(t){e.$set(e.form,"system_id",t)},expression:"form.system_id"}},e._l(e.systems,(function(e){return r("el-option",{key:e.id,attrs:{label:e.name,value:e.id}})})),1)],1),r("el-form-item",{attrs:{label:"课程体系",prop:"course_id"}},[r("el-select",{staticStyle:{width:"100%"},attrs:{filterable:"",placeholder:"请选择课程体系"},model:{value:e.form.course_id,callback:function(t){e.$set(e.form,"course_id",t)},expression:"form.course_id"}},e._l(e.courseOptions,(function(e){return r("el-option",{key:e.id,attrs:{label:e.name,value:e.id}})})),1)],1),r("el-form-item",{attrs:{label:"课程名称",prop:"title"}},[r("el-input",{attrs:{placeholder:"请输入课程名称"},model:{value:e.form.title,callback:function(t){e.$set(e.form,"title",t)},expression:"form.title"}})],1),r("el-form-item",{attrs:{label:"模块/期数",prop:"modules"}},[r("div",{staticClass:"modules-toolbar"},[r("div",{staticClass:"modules-tip"},[e._v("至少添加 1 条;名称可不填,月份/地点/负责人必填")]),r("el-button",{attrs:{size:"small",type:"primary",plain:""},on:{click:e.addModule}},[e._v("新增一条")])],1),r("el-table",{attrs:{data:e.form.modules,border:"",size:"mini"}},[r("el-table-column",{attrs:{label:"名称(可选)","min-width":"140"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[r("el-input",{attrs:{size:"mini",placeholder:"例如模块1"},model:{value:n.name,callback:function(t){e.$set(n,"name",t)},expression:"row.name"}})]}}])}),r("el-table-column",{attrs:{label:"月份",width:"110"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[r("el-select",{staticStyle:{width:"100%"},attrs:{size:"mini",placeholder:"月份"},model:{value:n.month,callback:function(t){e.$set(n,"month",t)},expression:"row.month"}},e._l(e.monthOptions,(function(e){return r("el-option",{key:e.value,attrs:{label:e.label,value:e.value}})})),1)]}}])}),r("el-table-column",{attrs:{label:"地点","min-width":"160"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[r("div",{staticClass:"inline-field"},[r("el-select",{staticStyle:{flex:"1","min-width":"0"},attrs:{size:"mini",filterable:"",placeholder:"请选择地点"},model:{value:n.location_id,callback:function(t){e.$set(n,"location_id",t)},expression:"row.location_id"}},e._l(e.locations,(function(e){return r("el-option",{key:e.id,attrs:{label:e.name,value:e.id}})})),1),r("el-button",{attrs:{size:"mini",plain:""},on:{click:function(t){return t.stopPropagation(),e.$emit("open-location-manager")}}},[e._v("新增")])],1)]}}])}),r("el-table-column",{attrs:{label:"负责人","min-width":"140"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[r("div",{staticClass:"inline-field"},[r("el-select",{staticStyle:{flex:"1","min-width":"0"},attrs:{size:"mini",filterable:"",placeholder:"请选择负责人"},model:{value:n.owner_id,callback:function(t){e.$set(n,"owner_id",t)},expression:"row.owner_id"}},e._l(e.owners,(function(e){return r("el-option",{key:e.id,attrs:{label:e.name,value:e.id}})})),1),r("el-button",{attrs:{size:"mini",plain:""},on:{click:function(t){return t.stopPropagation(),e.$emit("open-owner-manager")}}},[e._v("新增")])],1)]}}])}),r("el-table-column",{attrs:{label:"备注","min-width":"160"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[r("el-input",{attrs:{size:"mini",placeholder:"请输入备注"},model:{value:n.count_text,callback:function(t){e.$set(n,"count_text",t)},expression:"row.count_text"}})]}}])}),r("el-table-column",{attrs:{label:"操作",width:"90",align:"center"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.$index;return[r("el-button",{staticClass:"danger-text",attrs:{type:"text",size:"mini"},on:{click:function(t){return e.removeModule(n)}}},[e._v("删除")])]}}])})],1)],1)],1),r("span",{attrs:{slot:"footer"},slot:"footer"},["edit"===e.mode&&e.form.id?r("el-button",{attrs:{type:"danger",plain:""},on:{click:function(t){return e.$emit("delete",e.form)}}},[e._v(" 删除 ")]):e._e(),r("el-button",{on:{click:function(t){return e.$emit("cancel")}}},[e._v("取消")]),r("el-button",{attrs:{type:"primary"},on:{click:e.handleSubmit}},[e._v("保存")])],1)],1)},a=[],s=(r("c740"),r("a434"),{name:"ScheduleFormDialog",props:{visible:{type:Boolean,default:!1},mode:{type:String,default:"add"},form:{type:Object,required:!0},rules:{type:Object,default:function(){return{}}},systems:{type:Array,default:function(){return[]}},courseOptions:{type:Array,default:function(){return[]}},monthOptions:{type:Array,default:function(){return[]}},locations:{type:Array,default:function(){return[]}},owners:{type:Array,default:function(){return[]}}},computed:{innerVisible:{get:function(){return this.visible},set:function(e){this.$emit("update:visible",e)}}},methods:{handleOpen:function(){var e=this;this.$nextTick((function(){e.$refs.formRef&&e.$refs.formRef.clearValidate()})),Array.isArray(this.form.modules)||this.$set(this.form,"modules",[]),this.form.modules.length||this.addModule()},addModule:function(){Array.isArray(this.form.modules)||this.$set(this.form,"modules",[]),this.form.modules.push({name:"",month:"",location_id:"",owner_id:"",count_text:""})},removeModule:function(e){Array.isArray(this.form.modules)&&(this.form.modules.length<=1?this.$message.warning("模块/期数至少需要一条数据"):this.form.modules.splice(e,1))},handleSubmit:function(){var e=this;this.$refs.formRef.validate((function(t){if(t){var r=Array.isArray(e.form.modules)?e.form.modules:[];if(r.length){var n=r.findIndex((function(e){return!e.month||!e.location_id||!e.owner_id}));n>=0?e.$message.error("请完善第 ".concat(n+1," 条模块/期数的必填项")):e.$emit("submit")}else e.$message.error("模块/期数至少需要一条数据")}}))}}}),o=s,i=(r("bf51"),r("2877")),l=Object(i["a"])(o,n,a,!1,null,"418a3959",null);t["default"]=l.exports},"6f53":function(e,t,r){var n=r("83ab"),a=r("df75"),s=r("fc6a"),o=r("d1e7").f,i=function(e){return function(t){var r,i=s(t),l=a(i),c=l.length,u=0,d=[];while(c>u)r=l[u++],n&&!o.call(i,r)||d.push(e?[r,i[r]]:i[r]);return d}};e.exports={entries:i(!0),values:i(!1)}},"73f2":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"panel"},[r("div",{staticClass:"panel-title"},[e._v("人员负载与交叉分布")]),r("div",{staticClass:"table-scroll-y limit-rows-8"},[r("el-table",{attrs:{data:e.memberAnalysis,border:"","max-height":"314","empty-text":"暂无数据"}},[r("el-table-column",{attrs:{prop:"name",label:"人员","min-width":"100",align:"center"}}),r("el-table-column",{attrs:{prop:"total",label:"总次数","min-width":"90",align:"center"}}),r("el-table-column",{attrs:{prop:"month",label:"峰值月","min-width":"90",align:"center"}}),r("el-table-column",{attrs:{prop:"location",label:"主战场地","min-width":"120",align:"center"}}),r("el-table-column",{attrs:{prop:"tag",label:"主战体系","min-width":"120",align:"center"}})],1)],1)])},a=[],s={name:"ScheduleMemberOverview",props:{memberAnalysis:{type:Array,default:function(){return[]}}}},o=s,i=r("2877"),l=Object(i["a"])(o,n,a,!1,null,null,null);t["default"]=l.exports},"77b7":function(e,t,r){},"786e":function(e,t,r){},"81d5":function(e,t,r){"use strict";var n=r("7b0b"),a=r("23cb"),s=r("50c4");e.exports=function(e){var t=n(this),r=s(t.length),o=arguments.length,i=a(o>1?arguments[1]:void 0,r),l=o>2?arguments[2]:void 0,c=void 0===l?r:a(l,r);while(c>i)t[i++]=e;return t}},"8ca4":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("el-dialog",{attrs:{title:"带班管理",visible:e.innerVisible,width:"68%","custom-class":"overview-dialog"},on:{"update:visible":function(t){e.innerVisible=t}}},[r("div",{staticClass:"manager-toolbar"},[r("div",{staticClass:"manager-header"},[r("div",{staticClass:"manager-title"},[e._v("带班列表")]),r("div",{staticClass:"manager-tip"},[e._v("同一课程不同模块可直接编辑")])]),r("div",{staticClass:"manager-actions"},[r("el-button",{attrs:{size:"small",type:"primary"},on:{click:function(t){return e.$emit("open-schedule-form","add")}}},[e._v("新增带班")])],1)]),r("el-table",{attrs:{data:e.rows,border:"","span-method":e.spanMethod}},[r("el-table-column",{attrs:{prop:"systemName",label:"计划体系","min-width":"140"}}),r("el-table-column",{attrs:{prop:"courseName",label:"课程体系","min-width":"160"}}),r("el-table-column",{attrs:{prop:"title",label:"课程名称","min-width":"180"}}),r("el-table-column",{attrs:{prop:"moduleName",label:"模块/期数","min-width":"120"}}),r("el-table-column",{attrs:{prop:"monthLabel",label:"月份",width:"90",align:"center"}}),r("el-table-column",{attrs:{prop:"location",label:"地点","min-width":"120"}}),r("el-table-column",{attrs:{prop:"owner",label:"负责人","min-width":"120"}}),r("el-table-column",{attrs:{prop:"count_text",label:"备注","min-width":"160"}}),r("el-table-column",{attrs:{label:"操作",width:"160",align:"center",fixed:"right"},scopedSlots:e._u([{key:"default",fn:function(t){return[r("el-button",{attrs:{type:"text",size:"small"},on:{click:function(r){return e.$emit("open-schedule-form","edit",t.row)}}},[e._v("编辑")]),r("el-button",{staticClass:"danger-text",attrs:{type:"text",size:"small"},on:{click:function(r){return e.$emit("delete-schedule",t.row)}}},[e._v("删除")])]}}])})],1)],1)},a=[],s={name:"ScheduleManagerDialog",props:{visible:{type:Boolean,default:!1},rows:{type:Array,default:function(){return[]}},spanMethod:{type:Function,default:null}},computed:{innerVisible:{get:function(){return this.visible},set:function(e){this.$emit("update:visible",e)}}}},o=s,i=(r("95dc"),r("2877")),l=Object(i["a"])(o,n,a,!1,null,"33165524",null);t["default"]=l.exports},"8feb":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"summary-panel"},[r("div",{staticClass:"summary-grid"},e._l(e.summaryCards,(function(t){return r("div",{key:t.label,staticClass:"summary-card"},[r("div",{staticClass:"summary-label"},[e._v(e._s(t.label))]),r("div",{staticClass:"summary-value"},[r("span",{staticClass:"summary-number"},[e._v(e._s(t.value))]),t.unit?r("span",{staticClass:"summary-unit"},[e._v(e._s(t.unit))]):e._e()])])})),0)])},a=[],s={name:"ScheduleSummaryPanel",props:{summaryCards:{type:Array,default:function(){return[]}}}},o=s,i=r("2877"),l=Object(i["a"])(o,n,a,!1,null,null,null);t["default"]=l.exports},"90e6":function(e,t,r){"use strict";r.d(t,"b",(function(){return s})),r.d(t,"d",(function(){return o})),r.d(t,"c",(function(){return i})),r.d(t,"a",(function(){return l}));r("99af"),r("fb6a"),r("d3b7"),r("0643"),r("4e3e"),r("159b");var n=r("b775");function a(e){var t="",r=function(r){e.hasOwnProperty(r)&&(Array.isArray(e[r])?e[r].forEach((function(e,n){e.key?t+="".concat(r,"[").concat(n,"][key]=").concat(e.key,"&").concat(r,"[").concat(n,"][op]=").concat(e.op,"&").concat(r,"[").concat(n,"][value]=").concat(e.value,"&"):t+="".concat(r,"[").concat(n,"]=").concat(e,"&")})):t+="".concat(r,"=").concat(e[r],"&"))};for(var n in e)r(n);return t.slice(0,-1)}function s(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return Object(n["a"])({method:"get",url:"/api/admin/course-types/index",params:e,paramsSerializer:a,isLoading:t})}function o(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return Object(n["a"])({method:"get",url:"/api/admin/course-types/show",params:e,isLoading:t})}function i(e){return Object(n["a"])({method:"post",url:"/api/admin/course-types/save",data:e})}function l(e){return Object(n["a"])({method:"get",url:"/api/admin/course-types/destroy",params:e})}},"95dc":function(e,t,r){"use strict";r("77b7")},"9d4a":function(e,t,r){"use strict";var n=r("23e7"),a=r("2266"),s=r("1c0b"),o=r("825a");n({target:"Iterator",proto:!0,real:!0},{reduce:function(e){o(this),s(e);var t=arguments.length<2,r=t?void 0:arguments[1];if(a(this,(function(n){t?(t=!1,r=n):r=e(r,n)}),void 0,!1,!0),t)throw TypeError("Reduce of empty iterator with no initial value");return r}})},a15b:function(e,t,r){"use strict";var n=r("23e7"),a=r("44ad"),s=r("fc6a"),o=r("a640"),i=[].join,l=a!=Object,c=o("join",",");n({target:"Array",proto:!0,forced:l||!c},{join:function(e){return i.call(s(this),void 0===e?",":e)}})},a7b8:function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"panel"},[r("div",{staticClass:"panel-header"},[r("div",{staticClass:"panel-title"},[e._v(e._s(e.displayYear)+"年度带班工作分工")]),r("el-button",{attrs:{type:"primary",size:"small",plain:"",icon:"el-icon-download"},on:{click:e.handleExport}},[e._v(" 导出 ")])],1),r("el-table",{staticClass:"plan-el-table",attrs:{data:e.planRows,border:"","span-method":e.spanMethod,"cell-class-name":e.cellClassName,"header-cell-class-name":e.headerCellClassName}},[r("el-table-column",{attrs:{fixed:"left",prop:"group",label:"计划体系",width:"140"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[r("div",{staticClass:"fixed-cell"},[e._v(e._s(n.group))])]}}])}),r("el-table-column",{attrs:{fixed:"left",prop:"course",label:"课程体系",width:"140"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[r("div",{staticClass:"fixed-cell"},[e._v(e._s(n.course))])]}}])}),e._l(e.monthLabels,(function(t){return r("el-table-column",{key:t,attrs:{label:t,"min-width":140},scopedSlots:e._u([{key:"default",fn:function(n){var a=n.row;return[r("div",{staticClass:"month-cell",on:{click:function(r){return e.onCellClick(a,t,a.plan[t])}}},[a.plan[t]&&a.plan[t].length?r("div",{staticClass:"plan-chip-list"},e._l(a.plan[t],(function(t){return r("div",{key:t.id,staticClass:"plan-chip"},[r("div",{staticClass:"plan-chip-line1"},[e._v(" "+e._s(e.formatChipLine1(t))+" ")]),t.countText?r("div",{staticClass:"plan-chip-line2"},[e._v(" "+e._s(t.countText)+" ")]):e._e()])})),0):e._e()])]}}],null,!0)})}))],2)],1)},a=[],s=r("2909"),o=(r("99af"),r("4de4"),r("a15b"),r("d81d"),r("d3b7"),r("498a"),r("0643"),r("4e3e"),r("a573"),r("159b"),r("25ca")),i={name:"SchedulePlanMatrix",props:{year:{type:String,default:""},monthLabels:{type:Array,default:function(){return[]}},planRows:{type:Array,default:function(){return[]}}},computed:{displayYear:function(){return this.year||String((new Date).getFullYear())},spanMeta:function(){var e=this.planRows||[],t=e.map((function(){return{rowspan:1,colspan:1}})),r=e.map((function(){return{rowspan:1,colspan:1}})),n=0;while(n<e.length){var a=String(e[n].systemId),s=n+1;while(s<e.length&&String(e[s].systemId)===a)s+=1;var o=s-n;t[n]={rowspan:o,colspan:1};for(var i=n+1;i<s;i+=1)t[i]={rowspan:0,colspan:0};n=s}n=0;while(n<e.length){var l=String(e[n].systemId),c=n+1;while(c<e.length&&String(e[c].systemId)===l)c+=1;var u=n;while(u<c){var d=String(e[u].courseId),m=u+1;while(m<c&&String(e[m].courseId)===d)m+=1;var f=m-u;r[u]={rowspan:f,colspan:1};for(var p=u+1;p<m;p+=1)r[p]={rowspan:0,colspan:0};u=m}n=c}return{systemMeta:t,courseMeta:r}}},methods:{formatChipLine1:function(e){var t=e.title||"",r=e.moduleName||"",n=e.location||"-",a=e.owner||"-",s=r?"".concat(t,"").concat(r,""):t;return"".concat(s," - ").concat(n," - ").concat(a).trim()||"-"},onCellClick:function(e,t,r){this.$emit("cell-click",e,t,r)},formatMonthCell:function(e,t){var r=this,n=e.plan&&e.plan[t];return n&&n.length?n.map((function(e){var t=r.formatChipLine1(e);return e.countText?"".concat(t,"\n").concat(e.countText):t})).join("\n"):""},handleExport:function(){var e=this;if(this.planRows&&this.planRows.length)try{var t=["计划体系","课程体系"].concat(Object(s["a"])(this.monthLabels)),r=[t];this.planRows.forEach((function(t){var n=e.monthLabels.map((function(r){return e.formatMonthCell(t,r)}));r.push([t.group||"",t.course||""].concat(Object(s["a"])(n)))}));var n=o["utils"].book_new(),a=o["utils"].aoa_to_sheet(r);a["!cols"]=t.map((function(e,t){return{wch:t<2?14:28}})),o["utils"].book_append_sheet(n,a,"带班工作分工");var i="".concat(this.displayYear,"年度带班工作分工.xlsx");o["writeFile"](n,i),this.$message.success("导出成功")}catch(l){console.error("导出失败:",l),this.$message.error("导出失败,请重试")}else this.$message.warning("暂无数据可导出")},spanMethod:function(e){var t=e.rowIndex,r=e.columnIndex,n=this.spanMeta;if(0===r){var a=n.systemMeta[t];return a?{rowspan:a.rowspan,colspan:a.colspan}:{rowspan:1,colspan:1}}if(1===r){var s=n.courseMeta[t];return s?{rowspan:s.rowspan,colspan:s.colspan}:{rowspan:1,colspan:1}}return{rowspan:1,colspan:1}},cellClassName:function(e){var t=e.row,r=e.columnIndex;if(0===r||1===r)return["fixed-col-cell",t&&t.groupClass?t.groupClass:""].filter(Boolean).join(" ");var n=this.monthLabels[r-2],a=n&&t.plan&&t.plan[n]&&t.plan[n].length>0,s=a&&t.groupClass?t.groupClass:"";return["month-col-cell",s].filter(Boolean).join(" ")},headerCellClassName:function(e){var t=e.columnIndex;return 0===t||1===t?"fixed-col-header":""}}},l=i,c=(r("edaa"),r("2877")),u=Object(c["a"])(l,n,a,!1,null,"1e8f6e98",null);t["default"]=u.exports},bde0:function(e,t,r){"use strict";r("5a1e")},bf51:function(e,t,r){"use strict";r("786e")},c3f9:function(e,t,r){"use strict";r("221b")},c740:function(e,t,r){"use strict";var n=r("23e7"),a=r("b727").findIndex,s=r("44d2"),o=r("ae40"),i="findIndex",l=!0,c=o(i);i in[]&&Array(1)[i]((function(){l=!1})),n({target:"Array",proto:!0,forced:l||!c},{findIndex:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}}),s(i)},cb29:function(e,t,r){var n=r("23e7"),a=r("81d5"),s=r("44d2");n({target:"Array",proto:!0},{fill:a}),s("fill")},d58f:function(e,t,r){var n=r("1c0b"),a=r("7b0b"),s=r("44ad"),o=r("50c4"),i=function(e){return function(t,r,i,l){n(r);var c=a(t),u=s(c),d=o(c.length),m=e?d-1:0,f=e?-1:1;if(i<2)while(1){if(m in u){l=u[m],m+=f;break}if(m+=f,e?m<0:d<=m)throw TypeError("Reduce of empty array with no initial value")}for(;e?m>=0:d>m;m+=f)m in u&&(l=r(l,u[m],m,c));return l}};e.exports={left:i(!1),right:i(!0)}},edaa:function(e,t,r){"use strict";r("5ecf")}}]);