diff --git a/admin/apps/game/domain/comm_resource.go b/admin/apps/game/domain/comm_resource.go index 4f0af17..5ae4a2c 100644 --- a/admin/apps/game/domain/comm_resource.go +++ b/admin/apps/game/domain/comm_resource.go @@ -141,7 +141,7 @@ func (svc *CommonResourceService) startLoadAllDelayInvokeDbData() { } } -func (svc *CommonResourceService) List(projectId int, resource string, listParams *dto2.CommonListReq) (int, []*dto2.CommonDtoFieldDesc, []dto2.CommonDtoValues, error) { +func (svc *CommonResourceService) List(ctx context.Context, projectId int, resource string, listParams *dto2.CommonListReq) (int, []*dto2.CommonDtoFieldDesc, []dto2.CommonDtoValues, error) { _, projectEt, find, err := svc.projectRepo.GetById(projectId) if err != nil { return 0, nil, nil, err @@ -151,6 +151,24 @@ func (svc *CommonResourceService) List(projectId int, resource string, listParam } rRepo := findCommResourceRepo(resource) + + if rRepo.Repo.Need(projectEt, resource) { + // 查看当前操作账号是否有审核员 + userId := ctx.Value("user_id").(int) + getRsp, err := api2.GetUserApiInstance().OpPermissionNeedReview(context.Background(), &api2.OpPermissionNeedReviewReq{UserId: userId}) + if err != nil { + return 0, nil, nil, err + } + if getRsp.IsNeedReview { + // 只能查看自己新增的数据 + listParams.ParsedWhereConditions.Conditions = append([]*dto2.GetWhereCondition{&dto2.GetWhereCondition{ + Key: "PostUserId", + Op: "eq", + Value1: strconv.Itoa(userId), + }}, listParams.ParsedWhereConditions.Conditions...) + } + } + totalCount, fieldsDescInfo, etList, err := rRepo.Repo.List(projectEt, listParams) if err != nil { return 0, nil, nil, err @@ -214,9 +232,13 @@ func (svc *CommonResourceService) Create(ctx context.Context, projectId int, res if getRsp.IsNeedReview { createNeedReview = true obj["ReviewCheckStatus"] = consts.OpReviewStatus_Pending + obj["PostUserId"] = userId + obj["PostUserName"] = getRsp.UserName obj["ReviewNeedCharacters"] = getRsp.ReviewCharacters } else { obj["ReviewCheckStatus"] = consts.OpReviewStatus_DirectOk + obj["PostUserId"] = userId + obj["PostUserName"] = getRsp.UserName obj["ReviewNeedCharacters"] = make([]string, 0) } } @@ -230,7 +252,7 @@ func (svc *CommonResourceService) Create(ctx context.Context, projectId int, res // 这里转换一次新的数据传输对象,因为上一步走了创建,会给dto分配id newObj := et.ToCommonDto() - if !createNeedReview { + if createNeedReview { return newObj, nil } diff --git a/admin/apps/game/model/rolemail.go b/admin/apps/game/model/rolemail.go index e2cc24c..d487fe6 100644 --- a/admin/apps/game/model/rolemail.go +++ b/admin/apps/game/model/rolemail.go @@ -22,7 +22,7 @@ type RoleMail struct { ID int `gorm:"primarykey" readonly:"true"` ProjectId int `gorm:"index:idx_project_id"` ServerID string `name:"所属区服" choices:"GetChoiceServers" required:"true" where:"eq"` - RoleIDs []string `gorm:"type:json;serializer:json" name:"生效的角色id" desc:"生效的角色id,逗号分隔多个" required:"true"` + RoleIDs []string `gorm:"type:json;serializer:json" name:"生效的角色id" desc:"生效的角色id,逗号分隔多个" required:"true" big_column:"true"` Title string `name:"邮件标题" required:"true" big_column:"true"` Content string `name:"邮件内容" required:"true" big_column:"true"` Attach []*MailAttachItem `gorm:"type:json;serializer:json" name:"邮件附件" type:"items" desc:"搜索道具并点击添加"` @@ -31,6 +31,8 @@ type RoleMail struct { UpdatedAt time.Time `readonly:"true"` ReviewCheckStatus string `gorm:"type:varchar(20);default:pending" name:"审核状态" type:"tagStatus" choices:"GetStatusChoices" readonly:"true"` + PostUserId int `name:"发送用户id" readonly:"true"` + PostUserName string `name:"发送用户名字" readonly:"true"` ReviewNeedCharacters []string `gorm:"type:json;serializer:json" name:"审核角色组" readonly:"true"` ReviewUserId int `name:"审核员id" readonly:"true"` ReviewUserName string `name:"审核员名字" readonly:"true"` diff --git a/admin/apps/game/service/service.go b/admin/apps/game/service/service.go index 064addb..2ebc6e5 100644 --- a/admin/apps/game/service/service.go +++ b/admin/apps/game/service/service.go @@ -56,7 +56,7 @@ func (svc *Service) CommonList(ctx context.Context, projectId int, resourceName Value1: projectId, }}, params.ParsedWhereConditions.Conditions...) } - totalCount, fieldsDescInfo, rows, err := svc.resourceSvc.List(projectId, resourceName, params) + totalCount, fieldsDescInfo, rows, err := svc.resourceSvc.List(ctx, projectId, resourceName, params) itemBags, err := svc.projectSvc.GetAllItemBag(projectId) if err != nil { return nil, err diff --git a/admin/apps/user/api/api_user.go b/admin/apps/user/api/api_user.go index c8f2631..f6594dd 100644 --- a/admin/apps/user/api/api_user.go +++ b/admin/apps/user/api/api_user.go @@ -49,6 +49,7 @@ type OpPermissionNeedReviewReq struct { type OpPermissionNeedReviewRsp struct { IsNeedReview bool + UserName string ReviewCharacters []string } diff --git a/admin/apps/user/domain/user.go b/admin/apps/user/domain/user.go index 016d5d1..f862cd6 100644 --- a/admin/apps/user/domain/user.go +++ b/admin/apps/user/domain/user.go @@ -68,13 +68,13 @@ func (svc *CommonResourceService) GetToken(userId int) (*model.Token, error) { return tokenInfo, nil } -func (svc *CommonResourceService) UserHasPermitReviewCharacters(userId int) ([]string, bool, error) { +func (svc *CommonResourceService) UserHasPermitReviewCharacters(userId int) (*entity.User, []string, bool, error) { user, find, err := svc.userRepo.GetById(userId) if err != nil { - return nil, false, err + return nil, nil, false, err } if !find { - return nil, false, errcode.New(errcode.ParamsInvalid, "not found user %v db data", userId) + return nil, nil, false, errcode.New(errcode.ParamsInvalid, "not found user %v db data", userId) } - return user.Character.WriteOpCheckCharacters, len(user.Character.WriteOpCheckCharacters) > 0, nil + return user, user.Character.WriteOpCheckCharacters, len(user.Character.WriteOpCheckCharacters) > 0, nil } diff --git a/admin/apps/user/service/service_user.go b/admin/apps/user/service/service_user.go index 20bee37..a296fc7 100644 --- a/admin/apps/user/service/service_user.go +++ b/admin/apps/user/service/service_user.go @@ -149,12 +149,13 @@ func (svc *Service) ListUserExecHistory(params *dto2.ListUserOpHistoryReq) (*dto } func (svc *Service) OpPermissionNeedReview(ctx context.Context, req *apiUser.OpPermissionNeedReviewReq) (*apiUser.OpPermissionNeedReviewRsp, error) { - reviewCharacters, need, err := svc.resourceSvc.UserHasPermitReviewCharacters(req.UserId) + user, reviewCharacters, need, err := svc.resourceSvc.UserHasPermitReviewCharacters(req.UserId) if err != nil { return nil, err } return &apiUser.OpPermissionNeedReviewRsp{ IsNeedReview: need, + UserName: user.Po.UserName, ReviewCharacters: reviewCharacters, }, nil } diff --git a/admin/cmd/all_in_one/admin b/admin/cmd/all_in_one/admin index 2d0dedb..7986742 100755 Binary files a/admin/cmd/all_in_one/admin and b/admin/cmd/all_in_one/admin differ diff --git a/admin/ui/static/index.html b/admin/ui/static/index.html index 9ed10d8..d7546ef 100644 --- a/admin/ui/static/index.html +++ b/admin/ui/static/index.html @@ -5,8 +5,8 @@
d?Z(e,a,i,!0,!1,p):O(t,o,r,a,i,l,s,u,p)},K=(e,t,o,r,a,i,l,s,u)=>{let c=0;const d=t.length;let p=e.length-1,h=d-1;for(;c<=p&&c<=h;){const n=e[c],r=t[c]=u?qr(t[c]):Yr(t[c]);if(!Hr(n,r))break;m(n,r,o,null,a,i,l,s,u),c++}for(;c<=p&&c<=h;){const n=e[p],r=t[h]=u?qr(t[h]):Yr(t[h]);if(!Hr(n,r))break;m(n,r,o,null,a,i,l,s,u),p--,h--}if(c>p){if(c<=h){const e=h+1,n=e ((e,t,n)=>{const{items:o,lastVisitedIndex:r}=t;return(r>0?o[r].offset:0)>=n?Ez(e,t,0,r,n):Dz(e,t,Math.max(0,r),n)})(e,n,t),getStopIndexForStartIndex:(e,t,n,o)=>{const{height:r,total:a,layout:i,width:l}=e,s=kz(i)?l:r,u=Az(e,t,o),c=n+s;let d=u.offset+u.size,p=t;for(;p {const o=NH(e,t,n,"column");return[o.size,o.offset]},getRowPosition:(e,t,n)=>{const o=NH(e,t,n,"row");return[o.size,o.offset]},getColumnOffset:(e,t,n,o,r,a)=>KH(e,t,n,o,r,"column",a),getRowOffset:(e,t,n,o,r,a)=>KH(e,t,n,o,r,"row",a),getColumnStartIndexForOffset:(e,t,n)=>FH(e,n,t,"column"),getColumnStopIndexForStartIndex:(e,t,n,o)=>{const r=NH(e,t,o,"column"),a=n+e.width;let i=r.offset+r.size,l=t;for(;l>1,e[n[l]]0&&(t[o]=n[a-1]),n[a]=o)}}a=n.length,i=n[a-1];for(;a-- >0;)n[a]=i,i=t[i];return n}(C):n;for(y=k.length-1,c=x-1;c>=0;c--){const e=v+c,n=t[e],p=e+1(n[e]||"").split(", "),r=o(`${$a}Delay`),a=o(`${$a}Duration`),i=ja(r,a),l=o(`${Ma}Delay`),s=o(`${Ma}Duration`),u=ja(l,s);let c=null,d=0,p=0;t===$a?i>0&&(c=$a,d=i,p=a.length):t===Ma?u>0&&(c=Ma,d=u,p=s.length):(d=Math.max(i,u),c=d>0?i>u?$a:Ma:null,p=c?c===$a?a.length:s.length:0);return{type:c,timeout:d,propCount:p,hasTransform:c===$a&&/\b(transform|all)(,|$)/.test(o(`${$a}Property`).toString())}}function ja(e,t){for(;e.length{t.isLeaf||t.setChecked(!1,!1),e(t)}))};e(n)}}else n.checked&&!r[s]&&n.setChecked(!1,!1)}}setCheckedNodes(e,t=!1){const n=this.key,o={};e.forEach((e=>{o[(e||{})[n]]=!0})),this._setCheckedKeys(n,t,o)}setCheckedKeys(e,t=!1){this.defaultCheckedKeys=e;const n=this.key,o={};e.forEach((e=>{o[e]=!0})),this._setCheckedKeys(n,t,o)}setDefaultExpandedKeys(e){e=e||[],this.defaultExpandedKeys=e,e.forEach((e=>{const t=this.getNode(e);t&&t.expand(null,this.autoExpandParent)}))}setChecked(e,t,n){const o=this.getNode(e);o&&o.setChecked(!!t,n)}getCurrentNode(){return this.currentNode}setCurrentNode(e){const t=this.currentNode;t&&(t.isCurrent=!1),this.currentNode=e,this.currentNode.isCurrent=!0}setUserCurrentNode(e,t=!0){const n=e[this.key],o=this.nodesMap[n];this.setCurrentNode(o),t&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0)}setCurrentNodeKey(e,t=!0){if(this.currentNodeKey=e,null==e)return this.currentNode&&(this.currentNode.isCurrent=!1),void(this.currentNode=null);const n=this.getNode(e);n&&(this.setCurrentNode(n),t&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0))}}var nW=Eh(Nn({name:"ElTreeNodeContent",props:{node:{type:Object,required:!0},renderContent:Function},setup(e){const t=hl("tree"),n=jo("NodeInstance"),o=jo("RootTree");return()=>{const r=e.node,{data:a,store:i}=r;return e.renderContent?e.renderContent(ma,{_self:n,node:r,data:a,store:i}):go(o.ctx.slots,"default",{node:r,data:a},(()=>[ma("span",{class:t.be("node","label")},[r.label])]))}}}),[["__file","tree-node-content.vue"]]);function oW(e){const t=jo("TreeNodeMap",null),n={treeNodeExpand:t=>{e.node!==t&&e.node.collapse()},children:[]};return t&&t.children.push(n),Vo("TreeNodeMap",n),{broadcastExpanded:t=>{if(e.accordion)for(const e of n.children)e.treeNodeExpand(t)}}}const rW=Symbol("dragEvents");const aW=Nn({name:"ElTreeNode",components:{ElCollapseTransition:NT,ElCheckbox:LI,NodeContent:nW,ElIcon:nf,Loading:Db},props:{node:{type:eW,default:()=>({})},props:{type:Object,default:()=>({})},accordion:Boolean,renderContent:Function,renderAfterExpand:Boolean,showCheckbox:{type:Boolean,default:!1}},emits:["node-expand"],setup(e,t){const n=hl("tree"),{broadcastExpanded:o}=oW(e),r=jo("RootTree"),a=kt(!1),i=kt(!1),l=kt(),s=kt(),u=kt(),c=jo(rW),d=oa();Vo("NodeInstance",d),e.node.expanded&&(a.value=!0,i.value=!0);const p=r.props.props.children||"children";fr((()=>{var t;const n=null==(t=e.node.data)?void 0:t[p];return n&&[...n]}),(()=>{e.node.updateChildren()})),fr((()=>e.node.indeterminate),(t=>{f(e.node.checked,t)})),fr((()=>e.node.checked),(t=>{f(t,e.node.indeterminate)})),fr((()=>e.node.childNodes.length),(()=>e.node.reInitChecked())),fr((()=>e.node.expanded),(e=>{Jt((()=>a.value=e)),e&&(i.value=!0)}));const h=e=>Uj(r.props.nodeKey,e.data),f=(t,n)=>{l.value===t&&s.value===n||r.ctx.emit("check-change",e.node.data,t,n),l.value=t,s.value=n},m=()=>{e.node.isLeaf||(a.value?(r.ctx.emit("node-collapse",e.node.data,e.node,d),e.node.collapse()):e.node.expand((()=>{t.emit("node-expand",e.node.data,e.node,d)})))},y=t=>{e.node.setChecked(t,!(null==r?void 0:r.props.checkStrictly)),Jt((()=>{const t=r.store.value;r.ctx.emit("check",e.node.data,{checkedNodes:t.getCheckedNodes(),checkedKeys:t.getCheckedKeys(),halfCheckedNodes:t.getHalfCheckedNodes(),halfCheckedKeys:t.getHalfCheckedKeys()})}))};return{ns:n,node$:u,tree:r,expanded:a,childNodeRendered:i,oldChecked:l,oldIndeterminate:s,getNodeKey:h,getNodeClass:t=>{const n=e.props.class;if(!n)return{};let o;if(v(n)){const{data:e}=t;o=n(e,t)}else o=n;return g(o)?{[o]:!0}:o},handleSelectChange:f,handleClick:t=>{Yj(r.store,r.ctx.emit,(()=>{var t;if(null==(t=null==r?void 0:r.props)?void 0:t.nodeKey){const t=h(e.node);r.store.value.setCurrentNodeKey(t)}else r.store.value.setCurrentNode(e.node)})),r.currentNode.value=e.node,r.props.expandOnClickNode&&m(),(r.props.checkOnClickNode||e.node.isLeaf&&r.props.checkOnClickLeaf)&&!e.node.disabled&&y(!e.node.checked),r.ctx.emit("node-click",e.node.data,e.node,d,t)},handleContextMenu:t=>{var n;(null==(n=r.instance.vnode.props)?void 0:n.onNodeContextmenu)&&(t.stopPropagation(),t.preventDefault()),r.ctx.emit("node-contextmenu",t,e.node.data,e.node,d)},handleExpandIconClick:m,handleCheckChange:y,handleChildNodeExpand:(e,t,n)=>{o(t),r.ctx.emit("node-expand",e,t,n)},handleDragStart:t=>{r.props.draggable&&c.treeNodeDragStart({event:t,treeNode:e})},handleDragOver:t=>{t.preventDefault(),r.props.draggable&&c.treeNodeDragOver({event:t,treeNode:{$el:u.value,node:e.node}})},handleDrop:e=>{e.preventDefault()},handleDragEnd:e=>{r.props.draggable&&c.treeNodeDragEnd(e)},CaretRight:mv}}});const iW=Nn({name:"ElTree",components:{ElTreeNode:Eh(aW,[["render",function(e,t,n,o,r,a){const i=lo("el-icon"),l=lo("el-checkbox"),s=lo("loading"),u=lo("node-content"),c=lo("el-tree-node"),d=lo("el-collapse-transition");return dn((Dr(),zr("div",{ref:"node$",class:j([e.ns.b("node"),e.ns.is("expanded",e.expanded),e.ns.is("current",e.node.isCurrent),e.ns.is("hidden",!e.node.visible),e.ns.is("focusable",!e.node.disabled),e.ns.is("checked",!e.node.disabled&&e.node.checked),e.getNodeClass(e.node)]),role:"treeitem",tabindex:"-1","aria-expanded":e.expanded,"aria-disabled":e.node.disabled,"aria-checked":e.node.checked,draggable:e.tree.props.draggable,"data-key":e.getNodeKey(e.node),onClick:Li(e.handleClick,["stop"]),onContextmenu:e.handleContextMenu,onDragstart:Li(e.handleDragStart,["stop"]),onDragover:Li(e.handleDragOver,["stop"]),onDragend:Li(e.handleDragEnd,["stop"]),onDrop:Li(e.handleDrop,["stop"])},[jr("div",{class:j(e.ns.be("node","content")),style:B({paddingLeft:(e.node.level-1)*e.tree.props.indent+"px"})},[e.tree.props.icon||e.CaretRight?(Dr(),Br(i,{key:0,class:j([e.ns.be("node","expand-icon"),e.ns.is("leaf",e.node.isLeaf),{expanded:!e.node.isLeaf&&e.expanded}]),onClick:Li(e.handleExpandIconClick,["stop"])},{default:cn((()=>[(Dr(),Br(uo(e.tree.props.icon||e.CaretRight)))])),_:1},8,["class","onClick"])):Ur("v-if",!0),e.showCheckbox?(Dr(),Br(l,{key:1,"model-value":e.node.checked,indeterminate:e.node.indeterminate,disabled:!!e.node.disabled,onClick:Li((()=>{}),["stop"]),onChange:e.handleCheckChange},null,8,["model-value","indeterminate","disabled","onClick","onChange"])):Ur("v-if",!0),e.node.loading?(Dr(),Br(i,{key:2,class:j([e.ns.be("node","loading-icon"),e.ns.is("loading")])},{default:cn((()=>[Wr(s)])),_:1},8,["class"])):Ur("v-if",!0),Wr(u,{node:e.node,"render-content":e.renderContent},null,8,["node","render-content"])],6),Wr(d,null,{default:cn((()=>[!e.renderAfterExpand||e.childNodeRendered?dn((Dr(),zr("div",{key:0,class:j(e.ns.be("node","children")),role:"group","aria-expanded":e.expanded},[(Dr(!0),zr(Mr,null,fo(e.node.childNodes,(t=>(Dr(),Br(c,{key:e.getNodeKey(t),"render-content":e.renderContent,"render-after-expand":e.renderAfterExpand,"show-checkbox":e.showCheckbox,node:t,accordion:e.accordion,props:e.props,onNodeExpand:e.handleChildNodeExpand},null,8,["render-content","render-after-expand","show-checkbox","node","accordion","props","onNodeExpand"])))),128))],10,["aria-expanded"])),[[Ua,e.expanded]]):Ur("v-if",!0)])),_:1})],42,["aria-expanded","aria-disabled","aria-checked","draggable","data-key","onClick","onContextmenu","onDragstart","onDragover","onDragend","onDrop"])),[[Ua,e.node.visible]])}],["__file","tree-node.vue"]])},props:{data:{type:Array,default:()=>[]},emptyText:{type:String},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkOnClickLeaf:{type:Boolean,default:!0},checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{type:Object,default:()=>({children:"children",label:"label",disabled:"disabled"})},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},icon:{type:iC}},emits:["check-change","current-change","node-click","node-contextmenu","node-collapse","node-expand","check","node-drag-start","node-drag-end","node-drop","node-drag-leave","node-drag-enter","node-drag-over"],setup(e,t){const{t:n}=lh(),o=hl("tree"),r=jo(EL,null),a=kt(new tW({key:e.nodeKey,data:e.data,lazy:e.lazy,props:e.props,load:e.load,currentNodeKey:e.currentNodeKey,checkStrictly:e.checkStrictly,checkDescendants:e.checkDescendants,defaultCheckedKeys:e.defaultCheckedKeys,defaultExpandedKeys:e.defaultExpandedKeys,autoExpandParent:e.autoExpandParent,defaultExpandAll:e.defaultExpandAll,filterNodeMethod:e.filterNodeMethod}));a.value.initialize();const i=kt(a.value.root),l=kt(null),s=kt(null),u=kt(null),{broadcastExpanded:c}=oW(e),{dragState:d}=function({props:e,ctx:t,el$:n,dropIndicator$:o,store:r}){const a=hl("tree"),i=kt({showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0,dropType:null});return Vo(rW,{treeNodeDragStart:({event:n,treeNode:o})=>{if(v(e.allowDrag)&&!e.allowDrag(o.node))return n.preventDefault(),!1;n.dataTransfer.effectAllowed="move";try{n.dataTransfer.setData("text/plain","")}catch(HO){}i.value.draggingNode=o,t.emit("node-drag-start",o.node,n)},treeNodeDragOver:({event:r,treeNode:l})=>{const s=l,u=i.value.dropNode;u&&u.node.id!==s.node.id&&Bh(u.$el,a.is("drop-inner"));const c=i.value.draggingNode;if(!c||!s)return;let d=!0,p=!0,h=!0,f=!0;v(e.allowDrop)&&(d=e.allowDrop(c.node,s.node,"prev"),f=p=e.allowDrop(c.node,s.node,"inner"),h=e.allowDrop(c.node,s.node,"next")),r.dataTransfer.dropEffect=p||d||h?"move":"none",(d||p||h)&&(null==u?void 0:u.node.id)!==s.node.id&&(u&&t.emit("node-drag-leave",c.node,u.node,r),t.emit("node-drag-enter",c.node,s.node,r)),i.value.dropNode=d||p||h?s:null,s.node.nextSibling===c.node&&(h=!1),s.node.previousSibling===c.node&&(d=!1),s.node.contains(c.node,!1)&&(p=!1),(c.node===s.node||c.node.contains(s.node))&&(d=!1,p=!1,h=!1);const g=s.$el.querySelector(`.${a.be("node","content")}`).getBoundingClientRect(),m=n.value.getBoundingClientRect();let y;const b=d?p?.25:h?.45:1:-1,x=h?p?.75:d?.55:0:1;let w=-9999;const S=r.clientY-g.top;y=Si.message:null);return u.appContext=qd(t)?GG._context:t,u.props.onDestroy=()=>{Fi(null,s)},Fi(u,s),WG[n].push({vm:u}),l.appendChild(s.firstElementChild),{close:()=>{u.component.exposed.visible.value=!1}}};FG.forEach((e=>{GG[e]=(t={},n)=>((g(t)||Nr(t))&&(t={message:t}),GG({...t,type:e},n))})),GG.closeAll=function(){for(const e of Object.values(WG))e.forEach((({vm:e})=>{e.component.exposed.visible.value=!1}))},GG._context=null;const XG=Qh(GG,"$notify");var UG=((e=[])=>({version:"2.9.7",install:(t,n)=>{t[ll]||(t[ll]=!0,e.forEach((e=>t.use(e))),n&&_h(n,t,!0))}}))([...JK,...[lG,mG,IG,HG,XG,yR]]),YG={name:"zh-cn",el:{breadcrumb:{label:"面包屑"},colorpicker:{confirm:"确定",clear:"清空",defaultLabel:"颜色选择器",description:"当前颜色 {color},按 Enter 键选择新颜色",alphaLabel:"选择透明度的值"},datepicker:{now:"此刻",today:"今天",cancel:"取消",clear:"清空",confirm:"确定",dateTablePrompt:"使用方向键与 Enter 键可选择日期",monthTablePrompt:"使用方向键与 Enter 键可选择月份",yearTablePrompt:"使用方向键与 Enter 键可选择年份",selectedDate:"已选日期",selectDate:"选择日期",selectTime:"选择时间",startDate:"开始日期",startTime:"开始时间",endDate:"结束日期",endTime:"结束时间",prevYear:"前一年",nextYear:"后一年",prevMonth:"上个月",nextMonth:"下个月",year:"年",month1:"1 月",month2:"2 月",month3:"3 月",month4:"4 月",month5:"5 月",month6:"6 月",month7:"7 月",month8:"8 月",month9:"9 月",month10:"10 月",month11:"11 月",month12:"12 月",weeks:{sun:"日",mon:"一",tue:"二",wed:"三",thu:"四",fri:"五",sat:"六"},weeksFull:{sun:"星期日",mon:"星期一",tue:"星期二",wed:"星期三",thu:"星期四",fri:"星期五",sat:"星期六"},months:{jan:"一月",feb:"二月",mar:"三月",apr:"四月",may:"五月",jun:"六月",jul:"七月",aug:"八月",sep:"九月",oct:"十月",nov:"十一月",dec:"十二月"}},inputNumber:{decrease:"减少数值",increase:"增加数值"},select:{loading:"加载中",noMatch:"无匹配数据",noData:"无数据",placeholder:"请选择"},dropdown:{toggleDropdown:"切换下拉选项"},mention:{loading:"加载中"},cascader:{noMatch:"无匹配数据",loading:"加载中",placeholder:"请选择",noData:"暂无数据"},pagination:{goto:"前往",pagesize:"条/页",total:"共 {total} 条",pageClassifier:"页",page:"页",prev:"上一页",next:"下一页",currentPage:"第 {pager} 页",prevPages:"向前 {pager} 页",nextPages:"向后 {pager} 页",deprecationWarning:"你使用了一些已被废弃的用法,请参考 el-pagination 的官方文档"},dialog:{close:"关闭此对话框"},drawer:{close:"关闭此对话框"},messagebox:{title:"提示",confirm:"确定",cancel:"取消",error:"输入的数据不合法!",close:"关闭此对话框"},upload:{deleteTip:"按 delete 键可删除",delete:"删除",preview:"查看图片",continue:"继续上传"},slider:{defaultLabel:"滑块介于 {min} 至 {max}",defaultRangeStartLabel:"选择起始值",defaultRangeEndLabel:"选择结束值"},table:{emptyText:"暂无数据",confirmFilter:"筛选",resetFilter:"重置",clearFilter:"全部",sumText:"合计"},tour:{next:"下一步",previous:"上一步",finish:"结束导览"},tree:{emptyText:"暂无数据"},transfer:{noMatch:"无匹配数据",noData:"无数据",titles:["列表 1","列表 2"],filterPlaceholder:"请输入搜索内容",noCheckedFormat:"共 {total} 项",hasCheckedFormat:"已选 {checked}/{total} 项"},image:{error:"加载失败"},pageHeader:{title:"返回"},popconfirm:{confirmButtonText:"确定",cancelButtonText:"取消"},carousel:{leftArrow:"上一张幻灯片",rightArrow:"下一张幻灯片",indicator:"幻灯片切换至索引 {index}"}}};
+/*!
+ * vue-router v4.5.0
+ * (c) 2024 Eduardo San Martin Morote
+ * @license MIT
+ */
+const qG="undefined"!=typeof document;function ZG(e){return"object"==typeof e||"displayName"in e||"props"in e||"__vccOpts"in e}const QG=Object.assign;function JG(e,t){const n={};for(const o in t){const r=t[o];n[o]=tX(r)?r.map(e):e(r)}return n}const eX=()=>{},tX=Array.isArray,nX=/#/g,oX=/&/g,rX=/\//g,aX=/=/g,iX=/\?/g,lX=/\+/g,sX=/%5B/g,uX=/%5D/g,cX=/%5E/g,dX=/%60/g,pX=/%7B/g,hX=/%7C/g,fX=/%7D/g,vX=/%20/g;function gX(e){return encodeURI(""+e).replace(hX,"|").replace(sX,"[").replace(uX,"]")}function mX(e){return gX(e).replace(lX,"%2B").replace(vX,"+").replace(nX,"%23").replace(oX,"%26").replace(dX,"`").replace(pX,"{").replace(fX,"}").replace(cX,"^")}function yX(e){return null==e?"":function(e){return gX(e).replace(nX,"%23").replace(iX,"%3F")}(e).replace(rX,"%2F")}function bX(e){try{return decodeURIComponent(""+e)}catch(t){}return""+e}const xX=/\/$/;function wX(e,t,n="/"){let o,r={},a="",i="";const l=t.indexOf("#");let s=t.indexOf("?");return l=0&&(s=-1),s>-1&&(o=t.slice(0,s),a=t.slice(s+1,l>-1?l:t.length),r=e(a)),l>-1&&(o=o||t.slice(0,l),i=t.slice(l,t.length)),o=function(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),o=e.split("/"),r=o[o.length-1];".."!==r&&"."!==r||o.push("");let a,i,l=n.length-1;for(a=0;a