mirror of
https://shylinux.com/x/enterprise
synced 2025-04-26 01:24:06 +08:00
opt some
This commit is contained in:
parent
060809dd84
commit
7f4a90210e
@ -2,32 +2,41 @@ package guanlixitong
|
||||
|
||||
import (
|
||||
"shylinux.com/x/ice"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
|
||||
"shylinux.com/x/community/src/gonganxitong"
|
||||
"shylinux.com/x/enterprise/src/guanlixitong/model"
|
||||
"shylinux.com/x/mysql-story/src/db"
|
||||
)
|
||||
|
||||
type Table struct {
|
||||
db.Table
|
||||
inputs string `name"inputs" role:"void"`
|
||||
list string `name:"list group_uid uid auto" role:"void"`
|
||||
gonganxitong.Table
|
||||
list string `name:"list group_uid uid auto" role:"void"`
|
||||
}
|
||||
|
||||
func (s Table) Init(m *ice.Message, arg ...string) {
|
||||
kit.If(m.Config(web.PORTAL) == ice.TRUE, func() { portal{}.Show(m) })
|
||||
}
|
||||
func (s Table) Inputs(m *ice.Message, arg ...string) {
|
||||
s.Table.Inputs(m, arg...)
|
||||
}
|
||||
func (s Table) List(m *ice.Message, arg ...string) *ice.Message {
|
||||
if len(arg) == 0 || len(arg) == 1 {
|
||||
if m.IsTech() {
|
||||
s.Table.List(m)
|
||||
switch arg[0] {
|
||||
case model.GROUP_TYPE:
|
||||
for k, v := range GroupTypeList {
|
||||
m.Push(arg[0], k).Push(model.NAME, v)
|
||||
}
|
||||
} else if len(arg) == 2 {
|
||||
s.Table.Select(m.FieldsSetDetail(), model.UID, arg[1])
|
||||
m.SortInt(arg[0]).DisplayInputKeyNameIconTitle()
|
||||
case model.USER_GROUP_ROLE:
|
||||
for k, v := range UserGroupRoleList {
|
||||
if k != UserGroupCreator && k != UserGroupVisitor {
|
||||
m.Push(arg[0], k).Push(model.NAME, v)
|
||||
}
|
||||
}
|
||||
m.SortInt(arg[0]).DisplayInputKeyNameIconTitle()
|
||||
default:
|
||||
s.Table.Inputs(m, arg...)
|
||||
}
|
||||
}
|
||||
func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message {
|
||||
m.RewriteAppend(func(value, key string, index int) string {
|
||||
kit.If(key == model.GROUP_TYPE, func() { value = GroupType(kit.Int(value)).String() })
|
||||
kit.If(key == model.USER_GROUP_ROLE, func() { value = UserGroupRole(kit.Int(value)).String() })
|
||||
return value
|
||||
})
|
||||
s.Table.RewriteAppend(m)
|
||||
return m
|
||||
}
|
||||
|
22
src/guanlixitong/groupUser.go
Normal file
22
src/guanlixitong/groupUser.go
Normal file
@ -0,0 +1,22 @@
|
||||
package guanlixitong
|
||||
|
||||
import (
|
||||
"shylinux.com/x/ice"
|
||||
|
||||
"shylinux.com/x/enterprise/src/guanlixitong/model"
|
||||
)
|
||||
|
||||
type groupUser struct {
|
||||
portal portal
|
||||
userGroup userGroup
|
||||
list string `name:"list group_uid uid auto" role:"void" help:"团队成员" icon:"https://img.icons8.com/officel/80/crowd.png"`
|
||||
}
|
||||
|
||||
func (s groupUser) Init(m *ice.Message, arg ...string) {
|
||||
s.portal.Show(m, model.ROLE, "creator,leader")
|
||||
}
|
||||
func (s groupUser) List(m *ice.Message, arg ...string) {
|
||||
m.Cmdy(s.userGroup, s.userGroup.User, arg).Display("")
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(groupUser{}) }
|
12
src/guanlixitong/groupUser.js
Normal file
12
src/guanlixitong/groupUser.js
Normal file
@ -0,0 +1,12 @@
|
||||
Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg) { if (msg.IsDetail()) { return msg.Dump(can) }
|
||||
can.page.Append(can, can._output, msg.Table(function(value) { value._style = [value.user_group_role]
|
||||
return can.onimport.itemcard(can, value, [
|
||||
{view: html.TITLE, list: [{text: value.user_name},
|
||||
{text: [can.user.transValue(can, value, "user_group_role"), "", aaa.ROLE]},
|
||||
]},
|
||||
{view: html.STATUS, list: [{text: value.uid.slice(0, 6)}, {text: can.base.TimeTrim(value.created_at)}]},
|
||||
])
|
||||
}))
|
||||
},
|
||||
})
|
@ -3,28 +3,31 @@ package model
|
||||
import "shylinux.com/x/mysql-story/src/db"
|
||||
|
||||
const (
|
||||
UID = "uid"
|
||||
NAME = "name"
|
||||
TYPE = "type"
|
||||
ROLE = "role"
|
||||
CREATED_AT = "created_at"
|
||||
USER_UID = "user_uid"
|
||||
GROUP_UID = "group_uid"
|
||||
GROUP_NAME = "group_name"
|
||||
COMPANY_UID = "company_uid"
|
||||
COMPANY_NAME = "company_name"
|
||||
CITY_NAME = "city_name"
|
||||
UID = "uid"
|
||||
NAME = "name"
|
||||
TYPE = "type"
|
||||
ROLE = "role"
|
||||
USER_UID = "user_uid"
|
||||
USER_GROUP_ROLE = "user_group_role"
|
||||
GROUP_UID = "group_uid"
|
||||
GROUP_NAME = "group_name"
|
||||
GROUP_TYPE = "group_type"
|
||||
COMPANY_UID = "company_uid"
|
||||
COMPANY_NAME = "company_name"
|
||||
CITY_UID = "city_uid"
|
||||
)
|
||||
|
||||
type UserGroup struct {
|
||||
db.Model
|
||||
db.ModelWithUID
|
||||
UserUID string `gorm:"type:char(32);index"`
|
||||
GroupUID string `gorm:"type:char(32);index"`
|
||||
Role uint8
|
||||
}
|
||||
type Group struct {
|
||||
db.ModelWithUID
|
||||
CompanyUID string `gorm:"type:char(32)"`
|
||||
Name string `gorm:"type:varchar(256)"`
|
||||
Type uint8
|
||||
}
|
||||
type Company struct {
|
||||
db.ModelWithUID
|
||||
|
@ -1 +0,0 @@
|
||||
$output { background-color:var(--plugin-bg-color); }
|
@ -1,95 +1,13 @@
|
||||
package guanlixitong
|
||||
|
||||
import (
|
||||
"shylinux.com/x/ice"
|
||||
"shylinux.com/x/icebergs/base/ctx"
|
||||
"shylinux.com/x/icebergs/base/mdb"
|
||||
"shylinux.com/x/icebergs/base/web"
|
||||
"shylinux.com/x/toolkits"
|
||||
|
||||
"shylinux.com/x/community/src/gonganxitong"
|
||||
"shylinux.com/x/enterprise/src/guanlixitong/model"
|
||||
)
|
||||
import "shylinux.com/x/community/src/gonganxitong"
|
||||
|
||||
type portal struct {
|
||||
gonganxitong.Portal
|
||||
city gonganxitong.City
|
||||
user gonganxitong.User
|
||||
userGroup userGroup
|
||||
group group
|
||||
company company
|
||||
list string `name:"list group_uid index uid auto" role:"void"`
|
||||
groupCreate string `name:"groupCreate city_name* company_name* name*" role:"void"`
|
||||
groupRemove string `name:"groupRemove group_uid*" role:"void"`
|
||||
placeCreate string `name:"placeCreate city_name* company_name* name*" role:"void"`
|
||||
}
|
||||
|
||||
func (s portal) Inputs(m *ice.Message, arg ...string) {
|
||||
s.group.Inputs(m, arg...)
|
||||
}
|
||||
func (s portal) List(m *ice.Message, arg ...string) {
|
||||
if m.Option("form") == "table" {
|
||||
s.Hash.List(m, arg...).SortInt(mdb.ORDER)
|
||||
return
|
||||
}
|
||||
if len(arg) == 0 {
|
||||
m.Cmdy(s.userGroup, m.Option(model.USER_UID)).PushAction(s.GroupRemove).Action(s.GroupCreate, s.ScanQRCode)
|
||||
kit.If(!m.IsErr() && m.Length() == 0, func() {
|
||||
m.EchoInfoButton(m.Trans("Please Create Your Group", "请创建团队"), s.GroupCreate, s.ScanQRCode)
|
||||
})
|
||||
} else if len(arg) == 2 {
|
||||
msg := m.Cmd(s.group, s.group.Select, model.UID, arg[0])
|
||||
m.Option(model.GROUP_NAME, msg.Append(model.NAME))
|
||||
m.Cmdy(ctx.COMMAND, arg[1]).Push(ctx.ARGS, arg[0])
|
||||
} else {
|
||||
s.Portal.List(m, arg...)
|
||||
}
|
||||
m.Display("").DisplayCSS("")
|
||||
}
|
||||
func (s portal) GroupCreate(m *ice.Message, arg ...string) {
|
||||
defer m.ToastProcess()()
|
||||
if s.city.FindOrCreateByName(m, arg...); m.IsErr() {
|
||||
return
|
||||
}
|
||||
if s.company.FindOrCreateByName(m, arg...); m.IsErr() {
|
||||
return
|
||||
}
|
||||
if m.Cmdy(s.group, s.group.Create, arg[2:]).IsErr() {
|
||||
return
|
||||
}
|
||||
args := kit.Simple(m.OptionSimple(model.USER_UID), model.GROUP_UID, m.Result())
|
||||
m.Cmdy(s.userGroup, s.userGroup.Create, args).ProcessRefresh()
|
||||
}
|
||||
func (s portal) GroupRemove(m *ice.Message, arg ...string) {
|
||||
defer m.ToastProcess()()
|
||||
args := m.OptionSimple(model.USER_UID, model.GROUP_UID)
|
||||
msg := m.Cmd(s.userGroup, s.userGroup.Select, args)
|
||||
if m.WarnNotFound(msg.Length() == 0, "group") {
|
||||
return
|
||||
}
|
||||
m.Cmdy(s.userGroup, s.userGroup.Delete, args, msg.AppendSimple(model.UID))
|
||||
m.Cmdy(s.group, s.group.Delete, model.UID, m.Option(model.GROUP_UID))
|
||||
m.ProcessRefresh()
|
||||
}
|
||||
func (s portal) ScanQRCode(m *ice.Message, arg ...string) {
|
||||
defer m.ToastProcess()()
|
||||
if m.Option(mdb.TYPE) == mdb.TEXT {
|
||||
args := kit.Simple(m.OptionSimple(model.USER_UID), model.GROUP_UID, m.Option(mdb.TEXT))
|
||||
m.Cmdy(s.userGroup, s.userGroup.Create, args, model.ROLE, UserGroupVisitor)
|
||||
}
|
||||
if m.Option(mdb.TYPE) == web.LINK {
|
||||
args := m.ParseURL(m.Option(mdb.TEXT))
|
||||
if len(args) > 1 && args[1] == m.Prefix("apply") {
|
||||
args := kit.Simple(m.OptionSimple(model.USER_UID), model.GROUP_UID, args[0])
|
||||
m.Cmdy(s.userGroup, s.userGroup.Create, args, model.ROLE, UserGroupVisitor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(portal{}) }
|
||||
|
||||
func (s portal) Show(m *ice.Message, arg ...string) {
|
||||
m.GoSleep("30ms", func() {
|
||||
cmd := m.GetCommand()
|
||||
m.Cmd(s, s.Create, mdb.NAME, cmd.Help, mdb.ICONS, cmd.Icon, ctx.INDEX, m.PrefixKey())
|
||||
})
|
||||
func init() {
|
||||
gonganxitong.PortalCmd(portal{Portal: gonganxitong.NewPortal(userGroup{}, group{}, company{})})
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
var UID = "uid", GROUP_UID = "group_uid", GROUP_NAME = "group_name"
|
||||
Volcanos(chat.ONIMPORT, {
|
||||
_init: function(can, msg) { can.user.isMobile && can.isCmdMode() && can.onappend.style(can, html.OUTPUT)
|
||||
debugger
|
||||
can.require([
|
||||
"usr/community/src/gonganxitong/portal.js", "usr/community/src/gonganxitong/portal.css?render=replace&index="+can.ConfIndex(),
|
||||
], function() {
|
||||
can.onimport.myPortal(can, msg, GROUP_UID, GROUP_NAME, "我的团队")
|
||||
})
|
||||
},
|
||||
myValue: function(can, value) {
|
||||
return [
|
||||
{view: html.TITLE, list: [{text: value.group_name}]},
|
||||
{view: html.STATUS, list: [{text: value.group_uid.slice(0, 8)}, {text: value.company_name}]},
|
||||
]
|
||||
},
|
||||
})
|
@ -1,30 +1,19 @@
|
||||
{
|
||||
"portal": "管理系统",
|
||||
"scanQRCode": "扫码添加",
|
||||
"groupCreate": "创建团队",
|
||||
"groupRemove": "解散团队",
|
||||
"qrcode": "团队码",
|
||||
"placeCreate": "创建团队",
|
||||
"placeRemove": "解散团队",
|
||||
"target": "目标计划",
|
||||
"icons": {
|
||||
"scanQRCode": "bi bi-qr-code-scan",
|
||||
"groupCreate": "bi bi-plus-square-dotted",
|
||||
"qrcode": "https://img.icons8.com/officel/80/qr-code.png",
|
||||
"target": "https://img.icons8.com/officel/80/goal--v1.png""
|
||||
},
|
||||
"style": {
|
||||
"groupRemove": "danger"
|
||||
"target": "https://img.icons8.com/officel/80/goal--v1.png"
|
||||
},
|
||||
"input": {
|
||||
"migrate": "迁移",
|
||||
"uid": "主键",
|
||||
"info": "信息",
|
||||
"open_id": "外键",
|
||||
"user_uid": "用户",
|
||||
"user_name": "用户名",
|
||||
"My Group": "我的团队",
|
||||
"user_group_role": "用户角色",
|
||||
"group_uid": "团队",
|
||||
"group_name": "团队名称",
|
||||
"company_uid": "公司",
|
||||
"company_name": "公司名称"
|
||||
"company_name": "公司名称",
|
||||
"city_name": "城市名称"
|
||||
},
|
||||
"value": {
|
||||
"group_type": {
|
||||
@ -32,6 +21,10 @@
|
||||
"icons": {
|
||||
"RD": "https://img.icons8.com/officel/80/code.png"
|
||||
}
|
||||
},
|
||||
"user_group_role": {
|
||||
"leader": "领导",
|
||||
"member": "组员"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,4 @@
|
||||
chapter "管理系统"
|
||||
|
||||
field web.code.mysql.client
|
||||
field web.code.mysql.query args `mysql guanlixitong`
|
||||
field web.code.db.database
|
||||
|
@ -1,26 +0,0 @@
|
||||
package guanlixitong
|
||||
|
||||
import (
|
||||
"shylinux.com/x/ice"
|
||||
kit "shylinux.com/x/toolkits"
|
||||
|
||||
"shylinux.com/x/enterprise/src/guanlixitong/model"
|
||||
)
|
||||
|
||||
type qrcode struct {
|
||||
portal portal
|
||||
userGroup userGroup
|
||||
list string `name:"list group_uid auto" role:"void"`
|
||||
}
|
||||
|
||||
func (s qrcode) Init(m *ice.Message, arg ...string) {
|
||||
s.portal.Show(m)
|
||||
}
|
||||
func (s qrcode) List(m *ice.Message, arg ...string) {
|
||||
msg := m.Cmd(s.userGroup, m.Option(model.USER_UID), arg[0])
|
||||
m.FieldsSetDetail()
|
||||
kit.For([]string{model.CITY_NAME, model.COMPANY_NAME, model.GROUP_NAME}, func(key string) { m.Push(key, msg.Append(key)) })
|
||||
m.EchoQRCode(s.portal.Link(m, arg[0], m.Prefix("apply")))
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(qrcode{}) }
|
@ -12,10 +12,24 @@ type userGroup struct {
|
||||
company company
|
||||
}
|
||||
|
||||
func (s userGroup) User(m *ice.Message, arg ...string) {
|
||||
s.Select(m, model.GROUP_UID, arg[0]).RenameAppend(model.ROLE, model.USER_GROUP_ROLE)
|
||||
s.SelectJoinUser(m)
|
||||
s.RewriteAppend(m)
|
||||
}
|
||||
func (s userGroup) List(m *ice.Message, arg ...string) {
|
||||
s.Tables(m, s.group, s.company).Fields(m,
|
||||
s.Key(s.group, model.CREATED_AT), model.COMPANY_NAME, model.GROUP_NAME, model.GROUP_UID, model.COMPANY_UID,
|
||||
).Orders(m, s.Desc(model.CREATED_AT)).Select(m, model.USER_UID, arg[0])
|
||||
s.Tables(m, s.group, s.company).FieldsWithCreatedAT(m, s,
|
||||
model.GROUP_NAME, model.GROUP_TYPE, model.USER_GROUP_ROLE,
|
||||
model.COMPANY_NAME,
|
||||
model.GROUP_UID, model.CITY_UID,
|
||||
)
|
||||
if len(arg) == 1 {
|
||||
s.Select(m, model.USER_UID, arg[0])
|
||||
} else if len(arg) == 2 {
|
||||
s.SelectDetail(m, model.USER_UID, arg[0], model.GROUP_UID, arg[1])
|
||||
}
|
||||
s.SelectJoinCity(m)
|
||||
s.RewriteAppend(m)
|
||||
}
|
||||
|
||||
func init() { ice.TeamCtxCmd(userGroup{}) }
|
||||
@ -24,16 +38,16 @@ type UserGroupRole int
|
||||
|
||||
const (
|
||||
UserGroupCreator UserGroupRole = iota
|
||||
UserGroupVisitor
|
||||
UserGroupLeader
|
||||
UserGroupMember
|
||||
UserGroupVisitor
|
||||
)
|
||||
|
||||
var UserGroupRoleList = map[UserGroupRole]string{
|
||||
UserGroupCreator: "creator",
|
||||
UserGroupVisitor: "visitor",
|
||||
UserGroupLeader: "leader",
|
||||
UserGroupMember: "member",
|
||||
UserGroupVisitor: "visitor",
|
||||
}
|
||||
|
||||
func (s UserGroupRole) String() string { return UserGroupRoleList[s] }
|
||||
|
Loading…
x
Reference in New Issue
Block a user