From 26ef60a1ad746f521ed3ddb118eb89fb86df3165 Mon Sep 17 00:00:00 2001 From: likun <906102152@qq.com> Date: Fri, 11 Jul 2025 03:28:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=A1=E6=A0=B8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin/apps/game/domain/comm_resource.go | 5 +- .../game/domain/comm_resource_selection.go | 7 +- admin/apps/game/model/rolemail.go | 1 + admin/apps/user/model/character.go | 2 +- admin/internal/consts/consts.go | 5 +- admin/uniugm.db | Bin 221184 -> 229376 bytes ui/src/components/restful/table.vue | 104 +++++++++++++----- ui/src/stores/user.js | 8 +- 8 files changed, 93 insertions(+), 39 deletions(-) diff --git a/admin/apps/game/domain/comm_resource.go b/admin/apps/game/domain/comm_resource.go index 73b0d23..4f0af17 100644 --- a/admin/apps/game/domain/comm_resource.go +++ b/admin/apps/game/domain/comm_resource.go @@ -67,7 +67,7 @@ func (svc *CommonResourceService) initCommonResourcesRepo(db *gorm.DB) { { roleMailRepo := r(consts.ResourcesName_MailRole, "个人邮件", repo.NewCommonResourceRepo(db, &model.RoleMail{}), ShowMethod_Get|ShowMethod_Post) roleMailRepo.RowBtns = []*ResourceBtnInfo{ - {&api.ResourceBtnInfo{Key: consts.BtnKeyRow_RoleMailReview, Name: "确认审核", BtnColorType: "primary"}, svc.handleServerUpOrDown}, + {&api.ResourceBtnInfo{Key: consts.BtnKeyRow_RoleMailReview, Name: "确认审核", BtnColorType: "primary"}, svc.handleReviewRows}, } } // 个人邮件发放就没法撤回? @@ -215,6 +215,9 @@ func (svc *CommonResourceService) Create(ctx context.Context, projectId int, res createNeedReview = true obj["ReviewCheckStatus"] = consts.OpReviewStatus_Pending obj["ReviewNeedCharacters"] = getRsp.ReviewCharacters + } else { + obj["ReviewCheckStatus"] = consts.OpReviewStatus_DirectOk + obj["ReviewNeedCharacters"] = make([]string, 0) } } diff --git a/admin/apps/game/domain/comm_resource_selection.go b/admin/apps/game/domain/comm_resource_selection.go index 937c48d..f764560 100644 --- a/admin/apps/game/domain/comm_resource_selection.go +++ b/admin/apps/game/domain/comm_resource_selection.go @@ -201,8 +201,8 @@ func (svc *CommonResourceService) handleReviewRows(ctx context.Context, projectE if resourceRepo.Repo.Need(projectEt, resourceName) { for _, dtoObj := range params.Rows { - opRowId := dtoObj["ID"].(int) - _, dbEt, find, err := resourceRepo.Repo.GetById(projectEt, opRowId) + opRowId := dtoObj["ID"].(float64) + _, dbEt, find, err := resourceRepo.Repo.GetById(projectEt, int(opRowId)) if err != nil { return nil, err } @@ -217,11 +217,12 @@ func (svc *CommonResourceService) handleReviewRows(ctx context.Context, projectE return nil, errcode.New(errcode.ParamsInvalid, "resource %v db data already review:%v", resourceName, opRowId) } + dbObj["ProjectId"] = projectEt.GetProjectID() dbObj["ReviewCheckStatus"] = consts.OpReviewStatus_Ok dbObj["ReviewUserId"] = userId dbObj["ReviewUserName"] = getRsp.User.UserName - _, err = resourceRepo.Repo.Edit(projectEt, dtoObj) + _, err = resourceRepo.Repo.Edit(projectEt, dbObj) if err != nil { return nil, err } diff --git a/admin/apps/game/model/rolemail.go b/admin/apps/game/model/rolemail.go index 101c7b0..e2cc24c 100644 --- a/admin/apps/game/model/rolemail.go +++ b/admin/apps/game/model/rolemail.go @@ -56,5 +56,6 @@ func (m *RoleMail) GetStatusChoices(project *Project) []*dto.CommonDtoFieldChoic return []*dto.CommonDtoFieldChoice{ {Desc: "审核通过已发放", Value: consts.OpReviewStatus_Ok, Type: 2}, // type: 0:plain 1:primary 2:success 3:info 4:warning 5:danger {Desc: "待审核", Value: consts.OpReviewStatus_Pending, Type: 3}, + {Desc: "已发放", Value: consts.OpReviewStatus_DirectOk, Type: 2}, } } diff --git a/admin/apps/user/model/character.go b/admin/apps/user/model/character.go index d43eed8..641054c 100644 --- a/admin/apps/user/model/character.go +++ b/admin/apps/user/model/character.go @@ -19,7 +19,7 @@ type Permission struct { type Character struct { ID int `gorm:"primarykey" readonly:"true"` Name string `name:"角色名" desc:"区别一组用户的名字,例如qa、策划、运营" gorm:"type:varchar(255);unique" required:"true" uneditable:"true"` - WriteOpCheckCharacters []string `gorm:"type:varchar(255);" name:"操作审核员" desc:"不选表示敏感操作无需审核" choices:"GetCharChoices" multi_choice:"true"` + WriteOpCheckCharacters []string `gorm:"type:json;serializer:json" name:"操作审核员" desc:"不选表示敏感操作无需审核" type:"[]string" choices:"GetCharChoices" multi_choice:"true"` // 权限列表,格式就是 ["project:::", "sys:user:get", ...], // 例如项目3封禁功能的列表获取权限:"project:3:ban:list" Permissions []string `gorm:"type:json;serializer:json" name:"权限列表" type:"Permissions"` diff --git a/admin/internal/consts/consts.go b/admin/internal/consts/consts.go index 004d76d..06f8aa0 100644 --- a/admin/internal/consts/consts.go +++ b/admin/internal/consts/consts.go @@ -95,6 +95,7 @@ const ( ) const ( - OpReviewStatus_Ok = "reviewed" // 审核通过 - OpReviewStatus_Pending = "pending" // 待审核 + OpReviewStatus_Ok = "reviewed" // 审核通过 + OpReviewStatus_Pending = "pending" // 待审核 + OpReviewStatus_DirectOk = "dir_reviewed" // 无须审核直接通过 ) diff --git a/admin/uniugm.db b/admin/uniugm.db index 3a433d18dc711639ad2c5543953c5fce27db47d6..2ed1b393cf4424bf40590fa41d8930641dc4ef76 100644 GIT binary patch delta 13229 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 delta 1149 zcma)5U2GIp6u#%)+1Z_CcFt~XcaS1GZDXX+pV_|xjanBiNmENr7ZVAV?Phn|65DON zwD^Fg3z#$^Ca`SM8xtZ@qfx>`%SI+%LXaDmxwXj$QVv_L%(0_L=QHTU7c{O0X&RHgn(tF67P*Nz6eW@Z+;k z13`X%7Oq+gb8rY~&j5dS4t%hM^En8}_5HH`lFmkhC3x1|XB>)W%IxMqI9%UQ1~;ltLzZy~ZZla-&9;uZCq>D8q5u^T`usAyqPhf0 z(Mj++Iz>MoYs!(=s7yRZqix*N%)YTVf{o}T%5OHa1_#9w!G~B9k-wlJGY^c#se|cC zJUM(IZClB;EIbL|pSWzfOY{zI5}$q)&Xk?Pd$sQgw%~0swD<4^erfG8X~b19+=qcj z+UPUZ&o9#&FumA8@FP5qhj9o8@Gb1X`*;^G;7|A+7V!)G7*B{!;`7`- zN*e|7o5ml%PZi!YNq-P{p4+o4cno>|1RYk(KSH%7f@9i}2*06OOB(gT#ZRbYh)vQ7 zPN6P{b;$K=^#0m?uAKUZx>tFi^vHMRPLU%lTb*9^wc?;! z7r_^_E`dcft7|{AK&7}$@R4wYY!Ub! { listData(); }) +const curCharacter = userStore().userInfo.character + +console.log("当前用户角色:", curCharacter) + const dialogAddVisible = ref(false) const dialogEditVisible = ref(false) const dialogAddFormRef = ref(null) @@ -395,19 +400,41 @@ const handleDelete = (index, row) => { } +function itemBagSelectChange() { + console.log("选择礼包:", selectedItemBag.value) + let hasValidInput = false + if (selectedItemBag.value != null) { + selectedItemBag.value.forEach(bag => { + if (bag.name !== undefined && bag.name !== '') { + bag.items.forEach((bagItem) => { + if (typeof dialogObjectForm.value.Attach === typeof "") { + dialogObjectForm.value.Attach = []; + } + let d = {id: bagItem.item_id, num: bagItem.item_num, desc: bagItem.desc, item_type: bagItem.item_type}; + dialogObjectForm.value.Attach.push(d); + }) + console.log("添加礼包:", bag) + hasValidInput = true; + } + }) + } + + // if (!hasValidInput) { + // console.log("礼包:", selectedItemBag.value) + // ElMessage('请选择礼包!') + // } + + if (dialogAddVisible.value) { + dialogAddFormRef.value.validateField("Attach"); + } else if (dialogEditVisible.value) { + // console.log("删除道具,准备校验表单规则", rules.value) + // console.log("删除道具,准备校验表单规则", dialogEditFormRef.value) + dialogEditFormRef.value.validateField("Attach"); + } +} + function addItem(fieldDescInfo) { let hasValidInput = false; - if (selectedItemBag.value != null && selectedItemBag.value.name !== undefined && selectedItemBag.value.name !== '') { - selectedItemBag.value.items.forEach((bagItem) => { - if (typeof dialogObjectForm.value.Attach === typeof "") { - dialogObjectForm.value.Attach = []; - } - let d = {id: bagItem.item_id, num: bagItem.item_num, desc: bagItem.desc, item_type: bagItem.item_type}; - dialogObjectForm.value.Attach.push(d); - }) - console.log("添加礼包:", selectedItemBag.value) - hasValidInput = true; - } if (selectedItem.value !== null && selectedItem.value.value !== undefined && selectedItem.value.value !== '') { if (selectedItemNum.value <= 0) { ElMessage('请输入有效道具数量!') @@ -430,7 +457,6 @@ function addItem(fieldDescInfo) { } if (!hasValidInput) { console.log("道具:", selectedItem.value) - console.log("礼包:", selectedItemBag.value) ElMessage('请选择道具或者礼包!') } @@ -693,8 +719,21 @@ const handleGenRandAccount = () => {