diff --git a/internal/rpc/rpc_client.go b/internal/rpc/rpc_client.go index 5e29ff0e..920b9df5 100644 --- a/internal/rpc/rpc_client.go +++ b/internal/rpc/rpc_client.go @@ -380,6 +380,18 @@ func (this *RPCClient) UserBillRPC() pb.UserBillServiceClient { return pb.NewUserBillServiceClient(this.pickConn()) } +func (this *RPCClient) UserAccountRPC() pb.UserAccountServiceClient { + return pb.NewUserAccountServiceClient(this.pickConn()) +} + +func (this *RPCClient) UserAccountLogRPC() pb.UserAccountLogServiceClient { + return pb.NewUserAccountLogServiceClient(this.pickConn()) +} + +func (this *RPCClient) UserAccountDailyStatRPC() pb.UserAccountDailyStatServiceClient { + return pb.NewUserAccountDailyStatServiceClient(this.pickConn()) +} + func (this *RPCClient) UserAccessKeyRPC() pb.UserAccessKeyServiceClient { return pb.NewUserAccessKeyServiceClient(this.pickConn()) } diff --git a/internal/web/helpers/user_must_auth.go b/internal/web/helpers/user_must_auth.go index d3291e0b..93f50bc0 100644 --- a/internal/web/helpers/user_must_auth.go +++ b/internal/web/helpers/user_must_auth.go @@ -12,6 +12,7 @@ import ( "github.com/iwind/TeaGo/maps" "net" "net/http" + "net/url" "reflect" "strings" ) @@ -368,12 +369,31 @@ func (this *userMustAuth) modules(actionPtr actions.ActionWrapper, adminId int64 "icon": "users", }, { - "code": "finance", - "module": configloaders.AdminModuleCodeFinance, - "name": "财务管理", - "icon": "yen sign", - "isOn": teaconst.IsPlus, - "subItems": []maps.Map{}, + "code": "finance", + "module": configloaders.AdminModuleCodeFinance, + "name": "财务管理", + "icon": "yen sign", + "isOn": teaconst.IsPlus, + "subItems": []maps.Map{ + { + "name": "用户账户", + "url": "/finance/accounts", + "code": "accounts", + "isOn": teaconst.IsPlus, + }, + { + "name": "操作记录", + "url": "/finance/logs", + "code": "logs", + "isOn": teaconst.IsPlus, + }, + { + "name": "收支报表", + "url": "/finance/income", + "code": "income", + "isOn": teaconst.IsPlus, + }, + }, }, { "code": "plans", @@ -443,5 +463,5 @@ func (this *userMustAuth) modules(actionPtr actions.ActionWrapper, adminId int64 // 跳转到登录页 func (this *userMustAuth) login(action *actions.ActionObject) { - action.RedirectURL("/") + action.RedirectURL("/?from=" + url.QueryEscape(action.Request.RequestURI)) } diff --git a/web/public/js/components/finance/finance-user-selector.js b/web/public/js/components/finance/finance-user-selector.js new file mode 100644 index 00000000..50f83323 --- /dev/null +++ b/web/public/js/components/finance/finance-user-selector.js @@ -0,0 +1,33 @@ +Vue.component("finance-user-selector", { + mounted: function () { + let that = this + + Tea.action("/finance/users/options") + .post() + .success(function (resp) { + that.users = resp.data.users + }) + }, + props: ["v-user-id"], + data: function () { + let userId = this.vUserId + if (userId == null) { + userId = 0 + } + return { + users: [], + userId: userId + } + }, + watch: { + userId: function (v) { + this.$emit("change", v) + } + }, + template: `