Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
592013abfd | |||
388b648a7a | |||
2662b68051 | |||
9e8c340277 | |||
3de26dcb69 | |||
b1345a0313 | |||
b62ec45b1d | |||
e5cc156f7e | |||
1f02345f88 | |||
f8eca1a0a1 | |||
12d4b0e24f | |||
8671bbd6f2 | |||
b39d8aa887 | |||
78dac8b525 | |||
54359bf597 | |||
9b6f6cbb6e |
12
go.mod
@ -3,15 +3,15 @@ module shylinux.com/x/community
|
|||||||
go 1.21
|
go 1.21
|
||||||
|
|
||||||
require (
|
require (
|
||||||
shylinux.com/x/enterprise v0.0.12
|
shylinux.com/x/enterprise v0.0.14
|
||||||
shylinux.com/x/golang-story v0.0.30
|
shylinux.com/x/golang-story v0.0.32
|
||||||
shylinux.com/x/mysql-story v0.6.30
|
shylinux.com/x/mysql-story v0.6.32
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
shylinux.com/x/ice v1.5.68
|
shylinux.com/x/ice v1.5.74
|
||||||
shylinux.com/x/icebergs v1.9.70
|
shylinux.com/x/icebergs v1.9.76
|
||||||
shylinux.com/x/toolkits v1.0.18
|
shylinux.com/x/toolkits v1.0.19
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
28
go.sum
@ -190,25 +190,25 @@ modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw
|
|||||||
modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c=
|
modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c=
|
||||||
modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
|
modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
|
||||||
modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE=
|
modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE=
|
||||||
shylinux.com/x/enterprise v0.0.12 h1:cmtQfqhxlikQMcRAH1zr/3MepVjBbRE113/jxRSVy+0=
|
shylinux.com/x/enterprise v0.0.14 h1:gxxAtMt4sLy8+HN10jJipZ6xa0it/rllZZGKwWILJ2Q=
|
||||||
shylinux.com/x/enterprise v0.0.12/go.mod h1:qJYxCoymj9PAwsV3Y74nEbmLBpw4n2kqwxT6pQQJWN4=
|
shylinux.com/x/enterprise v0.0.14/go.mod h1:RR4LfgQMgy8ckZuga6pEvEl9TxF3gbfHN+Mh3Jhk1GI=
|
||||||
shylinux.com/x/go-git/v5 v5.6.7 h1:WD5QSco7m3QooPCgdvQ6/GyGIFPun8C+hex5N41LYlk=
|
shylinux.com/x/go-git/v5 v5.6.7 h1:WD5QSco7m3QooPCgdvQ6/GyGIFPun8C+hex5N41LYlk=
|
||||||
shylinux.com/x/go-git/v5 v5.6.7/go.mod h1:Qb0lA+uIrofZg8NQerhYcJHgGWixFqvS6p3aJ/L5Nlk=
|
shylinux.com/x/go-git/v5 v5.6.7/go.mod h1:Qb0lA+uIrofZg8NQerhYcJHgGWixFqvS6p3aJ/L5Nlk=
|
||||||
shylinux.com/x/go-qrcode v0.0.3 h1:RMo+Vidbgq3HatLBj7DDXcTbTLFUwzis5K7TqBkD38U=
|
shylinux.com/x/go-qrcode v0.0.3 h1:RMo+Vidbgq3HatLBj7DDXcTbTLFUwzis5K7TqBkD38U=
|
||||||
shylinux.com/x/go-qrcode v0.0.3/go.mod h1:KAbtU+KwiiABMZ/CJ0zh9PI2AX82Uf9rRYcQ4ODm4po=
|
shylinux.com/x/go-qrcode v0.0.3/go.mod h1:KAbtU+KwiiABMZ/CJ0zh9PI2AX82Uf9rRYcQ4ODm4po=
|
||||||
shylinux.com/x/go-sql-mysql v0.0.2/go.mod h1:lHjRMZz5Lii6U+49fhkbCWgsnL+yux54SYJYWqASN8Y=
|
shylinux.com/x/go-sql-mysql v0.0.2/go.mod h1:lHjRMZz5Lii6U+49fhkbCWgsnL+yux54SYJYWqASN8Y=
|
||||||
shylinux.com/x/golang-story v0.0.30 h1:vMWLMkwAtaoV4/CMHRSQJRQHlDkyvjw+hVnftzRie+c=
|
shylinux.com/x/golang-story v0.0.32 h1:7xu28iREL2cuZzf80luJwI9BWptow+ME00L1lgyjmDI=
|
||||||
shylinux.com/x/golang-story v0.0.30/go.mod h1:j4hRh6ttV2gC2dq9zNYr2rr9NK/nVak81FUGRROB73U=
|
shylinux.com/x/golang-story v0.0.32/go.mod h1:NsI5fULu3q7o2b+VzZ5tiJ3+0pUTjE9DdQxa870htmw=
|
||||||
shylinux.com/x/ice v1.5.67/go.mod h1:9QsjawM54hgeDm3kUomZTJPdlsdiHIu8qMg3TzHkNpw=
|
shylinux.com/x/ice v1.5.73/go.mod h1:uGI73gYkk+FiJt5qmy/aYhoKRJ4wobcJk3WrPGh8Waw=
|
||||||
shylinux.com/x/ice v1.5.68 h1:oFUpwJS3ER6pAmdpHAyQrVdc4YozcHPuRn2UJmUtpFo=
|
shylinux.com/x/ice v1.5.74 h1:5hTPmchO79b1d2+/DwBDLiG2WkTL65G/hOEAcGJVeB8=
|
||||||
shylinux.com/x/ice v1.5.68/go.mod h1:LjHSkg3o+kT3k6lSFJVreez6qiI9ghpnr9Ql94k3+Iw=
|
shylinux.com/x/ice v1.5.74/go.mod h1:/XAib8Ha+z6jzLRs2Pig+qxDx4C8dT8Vfaq2InJ/lkU=
|
||||||
shylinux.com/x/icebergs v1.9.69/go.mod h1:+4bl7yJRMFtlTQRDLd+xh6b0hwXkqWaHLmx63Jeewwk=
|
shylinux.com/x/icebergs v1.9.75/go.mod h1:3Bdp3tjzw+hUKJF+kR8pfsrbjAf72DVZmCaE8/MPFtk=
|
||||||
shylinux.com/x/icebergs v1.9.70 h1:NyoMrTX1Dtf0HosB7GNAO8NODZabdcNw1ZZLSfbhUDw=
|
shylinux.com/x/icebergs v1.9.76 h1:SHOTbiO+jh09GEFzoo8t8kmR1BCu+zkNCpdfxPCLeu0=
|
||||||
shylinux.com/x/icebergs v1.9.70/go.mod h1:+4bl7yJRMFtlTQRDLd+xh6b0hwXkqWaHLmx63Jeewwk=
|
shylinux.com/x/icebergs v1.9.76/go.mod h1:3Bdp3tjzw+hUKJF+kR8pfsrbjAf72DVZmCaE8/MPFtk=
|
||||||
shylinux.com/x/mysql-story v0.6.30 h1:5skPvB+xHLgoTPzlQl3dkTe3qzetccErL3iH3s9j6wg=
|
shylinux.com/x/mysql-story v0.6.32 h1:Q274WFJ09ocnf8nhlQnKr02FMMdPYBLWqu2IjTVqGiM=
|
||||||
shylinux.com/x/mysql-story v0.6.30/go.mod h1:gZ4MoCfeFvOKxuMwHC2mQS0HlQLTw9OpbVl89Xkdsvk=
|
shylinux.com/x/mysql-story v0.6.32/go.mod h1:8HCeDUV6ghaIeJD1IEhSeSOfVC9wEI93y2G9QBLtJJY=
|
||||||
shylinux.com/x/toolkits v0.7.10/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
|
shylinux.com/x/toolkits v0.7.10/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
|
||||||
shylinux.com/x/toolkits v1.0.18 h1:jtQZhmvU10Ajegc87tU0cYFUBSviaODo5TsCXpYb2O4=
|
shylinux.com/x/toolkits v1.0.19 h1:Nrx0xYRc5ph1WS66EZ1hJUCe+2FdSWQ4QP6tBlguikQ=
|
||||||
shylinux.com/x/toolkits v1.0.18/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
|
shylinux.com/x/toolkits v1.0.19/go.mod h1:CHDJarGlDkg60kVsvMLYL/a5hAnRLEOShiEsMOuEp0Q=
|
||||||
shylinux.com/x/websocket v0.0.4 h1:AJpwblePoOpiE6C8NrvgNYpKTotXMLrDDX2chTvx44Q=
|
shylinux.com/x/websocket v0.0.4 h1:AJpwblePoOpiE6C8NrvgNYpKTotXMLrDDX2chTvx44Q=
|
||||||
shylinux.com/x/websocket v0.0.4/go.mod h1:3UGWkjTu3ie5NAZen7J+uLPBrO7DFeKloj6Jxo13Oiw=
|
shylinux.com/x/websocket v0.0.4/go.mod h1:3UGWkjTu3ie5NAZen7J+uLPBrO7DFeKloj6Jxo13Oiw=
|
||||||
|
11
src/document/index.shy
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
navmenu `
|
||||||
|
"{{ .Title }}" /
|
||||||
|
_
|
||||||
|
"下 载" download/
|
||||||
|
"文 档" started/
|
||||||
|
"开 发" development/
|
||||||
|
_
|
||||||
|
"应 用" "https://web.shylinux.com/s/20240724-community"
|
||||||
|
"源 码" "https://git.shylinux.com/web/community"
|
||||||
|
"社 区" "https://bbs.shylinux.com"
|
||||||
|
`
|
@ -19,8 +19,7 @@ type allow struct {
|
|||||||
|
|
||||||
func (s allow) Create(m *ice.Message, arg ...string) {
|
func (s allow) Create(m *ice.Message, arg ...string) {
|
||||||
s.Insert(m.Spawn(), arg...)
|
s.Insert(m.Spawn(), arg...)
|
||||||
s.GetCommandUID(m)
|
s.SendMessage(s.GetCommandUID(m), m.Option(model.FROM_USER_UID), "")
|
||||||
s.SendMessage(m, m.Option(model.FROM_USER_UID), "")
|
|
||||||
s.SendTemplate(m, "", "", m.Trans("please allow", "权限审批 请处理"))
|
s.SendTemplate(m, "", "", m.Trans("please allow", "权限审批 请处理"))
|
||||||
}
|
}
|
||||||
func (s allow) List(m *ice.Message, arg ...string) {
|
func (s allow) List(m *ice.Message, arg ...string) {
|
||||||
@ -30,13 +29,15 @@ func (s allow) List(m *ice.Message, arg ...string) {
|
|||||||
s.AS(s.Key(s, model.UID), model.ALLOW_UID), model.ALLOW_STATUS,
|
s.AS(s.Key(s, model.UID), model.ALLOW_UID), model.ALLOW_STATUS,
|
||||||
)
|
)
|
||||||
if len(arg) == 1 {
|
if len(arg) == 1 {
|
||||||
s.Select(m, s.Key(s, model.PLACE_UID), arg[0], s.Key(s, model.USER_UID), m.Option(model.USER_UID)).Action()
|
// s.Select(m, s.Key(s, model.PLACE_UID), arg[0], s.Key(s, model.USER_UID), m.Option(model.USER_UID)).Action()
|
||||||
|
s.Select(m, s.Key(s, model.PLACE_UID), arg[0]).Action()
|
||||||
if m.Length() == 0 {
|
if m.Length() == 0 {
|
||||||
m.Cmdy(s.Prefix(m, qrcode{}), qrcode{}.ApplyQRCode, arg[0]).SetAppend().Action()
|
m.Cmdy(s.Prefix(m, qrcode{}), qrcode{}.ApplyQRCode, arg[0]).SetAppend().Action()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else if len(arg) == 2 {
|
} else if len(arg) == 2 {
|
||||||
s.SelectDetail(m, s.Key(s, model.PLACE_UID), arg[0], s.Key(s, model.USER_UID), m.Option(model.USER_UID), s.Key(s.apply, model.UID), arg[1])
|
// s.SelectDetail(m, s.Key(s, model.PLACE_UID), arg[0], s.Key(s, model.USER_UID), m.Option(model.USER_UID), s.Key(s.apply, model.UID), arg[1])
|
||||||
|
s.SelectDetail(m, s.Key(s, model.PLACE_UID), arg[0], s.Key(s.apply, model.UID), arg[1])
|
||||||
m.Table(func(value ice.Maps) {
|
m.Table(func(value ice.Maps) {
|
||||||
if AllowStatus(kit.Int(value[model.ALLOW_STATUS])) != AllowCreate {
|
if AllowStatus(kit.Int(value[model.ALLOW_STATUS])) != AllowCreate {
|
||||||
s.DoneMessage(m)
|
s.DoneMessage(m)
|
||||||
@ -73,10 +74,15 @@ func (s allow) process(m *ice.Message, from, to AllowStatus, icon string, title
|
|||||||
s.DoneMessage(m)
|
s.DoneMessage(m)
|
||||||
}
|
}
|
||||||
func (s allow) changeStatus(m *ice.Message, from, to AllowStatus, arg ...string) *ice.Message {
|
func (s allow) changeStatus(m *ice.Message, from, to AllowStatus, arg ...string) *ice.Message {
|
||||||
msg := s.Select(m.Spawn(), model.UID, m.Option(model.ALLOW_UID), model.USER_UID, m.Option(model.USER_UID))
|
// msg := s.Select(m.Spawn(), model.UID, m.Option(model.ALLOW_UID), model.USER_UID, m.Option(model.USER_UID))
|
||||||
|
args := []string{model.UID, m.Option(model.ALLOW_UID), model.USER_UID, m.Option(model.USER_UID)}
|
||||||
|
if s.IsLeader(m) {
|
||||||
|
args = []string{model.UID, m.Option(model.ALLOW_UID)}
|
||||||
|
}
|
||||||
|
msg := s.Select(m.Spawn(), args...)
|
||||||
if !m.WarnNotFound(msg.Length() == 0, m.Option(model.ALLOW_UID)) {
|
if !m.WarnNotFound(msg.Length() == 0, m.Option(model.ALLOW_UID)) {
|
||||||
if status := AllowStatus(kit.Int(msg.Append(model.STATUS))); !m.WarnNotValid(status != from, status.String()) {
|
if status := AllowStatus(kit.Int(msg.Append(model.STATUS))); !m.WarnNotValid(status != from, status.String()) {
|
||||||
s.Update(m, kit.Dict(model.STATUS, to), model.UID, m.Option(model.ALLOW_UID), model.USER_UID, m.Option(model.USER_UID))
|
s.Update(m.Spawn(), kit.Dict(model.STATUS, to), args...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return msg
|
return msg
|
||||||
|
BIN
src/gonganxitong/allow.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
@ -59,6 +59,20 @@ func (s apply) List(m *ice.Message, arg ...string) {
|
|||||||
func (s apply) Cancel(m *ice.Message, arg ...string) {
|
func (s apply) Cancel(m *ice.Message, arg ...string) {
|
||||||
s.changeStatus(m, ApplyCreate, ApplyCancel)
|
s.changeStatus(m, ApplyCreate, ApplyCancel)
|
||||||
}
|
}
|
||||||
|
func (s apply) ApplyCreate(m *ice.Message, arg ...string) {
|
||||||
|
m.Option(model.UID, m.Cmdx("", s.Create, arg))
|
||||||
|
m.Cmdy("", s.Submit)
|
||||||
|
}
|
||||||
|
func (s Table) ApplyCreate(m *ice.Message, arg ...string) {
|
||||||
|
m.Cmdy(s.Prefix(m, apply{}), s.ApplyCreate, model.ROLE, "3")
|
||||||
|
}
|
||||||
|
func (s Table) ApplyCheck(m *ice.Message, arg ...string) {
|
||||||
|
if m.Cmd(s.Prefix(m, apply{}), arg[0]).Length() == 0 {
|
||||||
|
m.EchoInfoButton("请申请加入团队", s.ApplyCreate)
|
||||||
|
} else {
|
||||||
|
m.Echo("\n权限申请已提交\n请等待管理员审批\n然后刷新界面查看最新状态")
|
||||||
|
}
|
||||||
|
}
|
||||||
func (s apply) Submit(m *ice.Message, arg ...string) {
|
func (s apply) Submit(m *ice.Message, arg ...string) {
|
||||||
msg := s.changeStatus(m, ApplyCreate, ApplySubmit)
|
msg := s.changeStatus(m, ApplyCreate, ApplySubmit)
|
||||||
if m.WarnNotValid(msg.IsErr()) {
|
if m.WarnNotValid(msg.IsErr()) {
|
||||||
|
BIN
src/gonganxitong/apply.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
@ -45,18 +45,25 @@ type Table struct {
|
|||||||
checkRole string `name:"checkRole role"`
|
checkRole string `name:"checkRole role"`
|
||||||
inputs string `name:"inputs" role:"void"`
|
inputs string `name:"inputs" role:"void"`
|
||||||
list string `name:"list place_uid uid auto" role:"void"`
|
list string `name:"list place_uid uid auto" role:"void"`
|
||||||
marketInsert string `name:"marketInsert domain_uid* title* content" role:"leader"`
|
marketInsert string `name:"marketInsert domain_uid* title* content" style:"notice" role:"leader"`
|
||||||
|
pushPublic string `name:"pushPublic domain_uid* title* content" role:"leader"`
|
||||||
memberList string `name:"memberList" role:"void"`
|
memberList string `name:"memberList" role:"void"`
|
||||||
noticeList string `name:"noticeList" role:"void"`
|
noticeList string `name:"noticeList" role:"void"`
|
||||||
|
// applyCreate string `name:"applyCreate" role:"void"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s Table) LoadTrans(m *ice.Message, arg ...string) {
|
func (s Table) LoadTrans(m *ice.Message, arg ...string) {
|
||||||
|
// m.Option("_iconslib", "https://img.icons8.com/officel/80/")
|
||||||
p := kit.FileLine(1, 100)
|
p := kit.FileLine(1, 100)
|
||||||
if m.PrefixKey() != api.GONGANXITONG_PORTAL {
|
if m.PrefixKey() != api.GONGANXITONG_PORTAL {
|
||||||
ice.LoadTrans(m.Spawn(kit.Dict("_template", path.Join(path.Dir(p), "portal.json"))).Message, m.CommandKey(), m.GetCommand().Command)
|
ice.LoadTrans(m.Spawn(kit.Dict("_template", path.Join(path.Dir(p), "portal.json"))).Message, m.CommandKey(), m.GetCommand().Command)
|
||||||
}
|
}
|
||||||
h := ctx.GetCmdFile(m.Message, m.PrefixKey())
|
h := ctx.GetCmdFile(m.Message, m.PrefixKey())
|
||||||
kit.If(strings.HasPrefix(h, "/p/src/"), func() { h = strings.TrimPrefix(h, "/p/") })
|
kit.If(strings.HasPrefix(h, "/p/src/"), func() { h = strings.TrimPrefix(h, "/p/") })
|
||||||
|
nfs.Exists(m.Message, kit.ExtChange(h, "png"), func(p string) {
|
||||||
|
cmd := m.Target().Commands[m.CommandKey()]
|
||||||
|
cmd.Icon = m.Resource(p)
|
||||||
|
})
|
||||||
if path.Dir(h) != path.Dir(p) && m.CommandKey() != web.PORTAL {
|
if path.Dir(h) != path.Dir(p) && m.CommandKey() != web.PORTAL {
|
||||||
ice.LoadTrans(m.Spawn(kit.Dict("_template", path.Join(path.Dir(h), "portal.json"))).Message, m.CommandKey(), m.GetCommand().Command)
|
ice.LoadTrans(m.Spawn(kit.Dict("_template", path.Join(path.Dir(h), "portal.json"))).Message, m.CommandKey(), m.GetCommand().Command)
|
||||||
}
|
}
|
||||||
@ -86,6 +93,11 @@ func (s Table) Inputs(m *ice.Message, arg ...string) {
|
|||||||
s.Table.Inputs(m, arg...)
|
s.Table.Inputs(m, arg...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
func (s Table) InputsUID(m *ice.Message, arg []string, target ice.Any, args ...string) {
|
||||||
|
s.Fields(m, model.UID, model.TITLE)
|
||||||
|
m.Cmdy(target, s.Select, args).RenameAppend(model.UID, arg[0])
|
||||||
|
m.DisplayInputKeyNameIconTitle()
|
||||||
|
}
|
||||||
func (s Table) InputsList(m *ice.Message, list ice.Any, arg ...string) {
|
func (s Table) InputsList(m *ice.Message, list ice.Any, arg ...string) {
|
||||||
it := reflect.ValueOf(list).MapRange()
|
it := reflect.ValueOf(list).MapRange()
|
||||||
for it.Next() {
|
for it.Next() {
|
||||||
@ -119,6 +131,7 @@ func (s Table) InputsListValue(m *ice.Message, list ice.Any, key string) string
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
func (s Table) TransPrice(m *ice.Message, arg []string, field ...string) []string {
|
func (s Table) TransPrice(m *ice.Message, arg []string, field ...string) []string {
|
||||||
|
kit.If(len(field) == 0, func() { field = append(field, "price", "amount") })
|
||||||
for i := 0; i < len(arg)-1; i += 2 {
|
for i := 0; i < len(arg)-1; i += 2 {
|
||||||
if kit.IndexOf(field, arg[i]) > -1 {
|
if kit.IndexOf(field, arg[i]) > -1 {
|
||||||
arg[i+1] = kit.Format(kit.Int(kit.Float(arg[i+1]) * 100))
|
arg[i+1] = kit.Format(kit.Int(kit.Float(arg[i+1]) * 100))
|
||||||
@ -134,6 +147,7 @@ func (s Table) ValueModel(m *ice.Message, action ice.Any, arg ...string) *ice.Me
|
|||||||
return m.Options(arg).Cmdy(s.PrefixPortal(m), action, arg)
|
return m.Options(arg).Cmdy(s.PrefixPortal(m), action, arg)
|
||||||
}
|
}
|
||||||
func (s Table) ValueCreate(m *ice.Message, arg ...string) {
|
func (s Table) ValueCreate(m *ice.Message, arg ...string) {
|
||||||
|
s.TransPrice(m, arg)
|
||||||
s.ValueModel(m, s.ValueCreate, arg...)
|
s.ValueModel(m, s.ValueCreate, arg...)
|
||||||
s.RecordEventWithName(m, "")
|
s.RecordEventWithName(m, "")
|
||||||
s.UserPlaceInit(m)
|
s.UserPlaceInit(m)
|
||||||
@ -143,6 +157,7 @@ func (s Table) ValueRemove(m *ice.Message, arg ...string) {
|
|||||||
s.RecordEventWithName(m, "")
|
s.RecordEventWithName(m, "")
|
||||||
}
|
}
|
||||||
func (s Table) ValueModify(m *ice.Message, arg ...string) {
|
func (s Table) ValueModify(m *ice.Message, arg ...string) {
|
||||||
|
s.TransPrice(m, arg)
|
||||||
s.ValueModel(m, s.ValueModify, arg...)
|
s.ValueModel(m, s.ValueModify, arg...)
|
||||||
s.RecordEventWithName(m, "")
|
s.RecordEventWithName(m, "")
|
||||||
}
|
}
|
||||||
@ -153,16 +168,12 @@ func (s Table) ValueList(m *ice.Message, arg []string, fields ...ice.Any) *ice.M
|
|||||||
}
|
}
|
||||||
if s.ValueModel(m, s.ValueList, arg...); len(arg) == 1 {
|
if s.ValueModel(m, s.ValueList, arg...); len(arg) == 1 {
|
||||||
s.UserPlaceInit(m)
|
s.UserPlaceInit(m)
|
||||||
if s.IsLeader(m) {
|
if s.IsWorker(m) {
|
||||||
s.Button(m, "")
|
s.Button(m, "", s.Create)
|
||||||
} else {
|
|
||||||
if m.Length() == 0 {
|
|
||||||
m.Echo("没有数据")
|
|
||||||
}
|
|
||||||
m.Action()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return s.SelectJoinUser(m)
|
return m
|
||||||
|
// return s.SelectJoinUser(m)
|
||||||
}
|
}
|
||||||
func (s Table) Create(m *ice.Message, arg ...string) { s.ValueCreate(m, arg...) }
|
func (s Table) Create(m *ice.Message, arg ...string) { s.ValueCreate(m, arg...) }
|
||||||
func (s Table) Remove(m *ice.Message, arg ...string) { s.ValueRemove(m, arg...) }
|
func (s Table) Remove(m *ice.Message, arg ...string) { s.ValueRemove(m, arg...) }
|
||||||
@ -190,6 +201,9 @@ func (s Table) Select(m *ice.Message, arg ...string) *ice.Message {
|
|||||||
kit.If(m.Length() > 0, func() { s.UserPlaceInit(m) })
|
kit.If(m.Length() > 0, func() { s.UserPlaceInit(m) })
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
|
func (s Table) InsertIfNeed(m *ice.Message, arg ...string) {
|
||||||
|
kit.If(m.Cmd("", s.Select, arg).Length() == 0, func() { m.Cmd("", s.Insert, arg) })
|
||||||
|
}
|
||||||
func (s Table) InsertOrUpdate(m *ice.Message, arg []string, args ...string) {
|
func (s Table) InsertOrUpdate(m *ice.Message, arg []string, args ...string) {
|
||||||
if s.Select(m, args...).Length() > 0 {
|
if s.Select(m, args...).Length() > 0 {
|
||||||
s.Update(m, arg, args...)
|
s.Update(m, arg, args...)
|
||||||
@ -213,7 +227,7 @@ func (s Table) SelectJoinAuth(m *ice.Message, arg ...string) *ice.Message {
|
|||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
kit.If(len(arg) == 0, func() {
|
kit.If(len(arg) == 0, func() {
|
||||||
arg = append(arg, model.NAME, model.INFO, model.AUTH_TYPE, model.AUTH_STATUS, model.AVATAR, model.BACKGROUND, model.DASHBOARD_UID)
|
arg = append(arg, model.NAME, model.INFO, model.TYPE, model.STATUS, model.AVATAR, model.BACKGROUND, model.DASHBOARD_UID)
|
||||||
})
|
})
|
||||||
defer s.SaveBack(m, ice.MSG_USERPOD, ice.MSG_USERROLE)()
|
defer s.SaveBack(m, ice.MSG_USERPOD, ice.MSG_USERROLE)()
|
||||||
return s.SelectJoin(m, s.findSpaceCmd(m, api.RENZHENGSHOUQUAN_AUTH), arg...)
|
return s.SelectJoin(m, s.findSpaceCmd(m, api.RENZHENGSHOUQUAN_AUTH), arg...)
|
||||||
@ -298,7 +312,7 @@ func (s Table) UploadCreate(m *ice.Message, field, uid string, arg ...string) st
|
|||||||
}
|
}
|
||||||
func (s Table) ChangeStatus(m *ice.Message, place_uid, uid string, from, to int, arg ...string) *ice.Message {
|
func (s Table) ChangeStatus(m *ice.Message, place_uid, uid string, from, to int, arg ...string) *ice.Message {
|
||||||
msg := s.ValueList(m.Spawn(), []string{place_uid, uid}, model.STATUS)
|
msg := s.ValueList(m.Spawn(), []string{place_uid, uid}, model.STATUS)
|
||||||
if !m.WarnNotValid(msg.Length() == 0 || kit.Int(msg.Append(mdb.STATUS)) != int(from)) {
|
if !m.WarnNotValid(msg.Length() == 0 || from != kit.Int(msg.Append(mdb.STATUS)), kit.Format("%v != %v", from, kit.Int(msg.Append(mdb.STATUS)))) {
|
||||||
s.Update(m, kit.Dict(mdb.STATUS, to, arg), model.UID, uid)
|
s.Update(m, kit.Dict(mdb.STATUS, to, arg), model.UID, uid)
|
||||||
}
|
}
|
||||||
return m
|
return m
|
||||||
@ -313,6 +327,12 @@ func (s Table) IsVisitor(m *ice.Message) bool {
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
func (s Table) IsCreator(m *ice.Message) bool {
|
||||||
|
if role := kit.Int(m.Option(model.USER_ROLE)); role == 1 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
func (s Table) IsLeader(m *ice.Message) bool {
|
func (s Table) IsLeader(m *ice.Message) bool {
|
||||||
if role := kit.Int(m.Option(model.USER_ROLE)); role == 1 || role == 2 {
|
if role := kit.Int(m.Option(model.USER_ROLE)); role == 1 || role == 2 {
|
||||||
return true
|
return true
|
||||||
@ -345,7 +365,9 @@ func (s Table) RecordEventWithName(m *ice.Message, info string, arg ...string) {
|
|||||||
info = "✅ " + info
|
info = "✅ " + info
|
||||||
case "placeRemove", mdb.REMOVE:
|
case "placeRemove", mdb.REMOVE:
|
||||||
info = "❌ " + info
|
info = "❌ " + info
|
||||||
case "placeAuth":
|
case "placeAuth", mdb.MODIFY:
|
||||||
|
info = "🕑 " + info
|
||||||
|
default:
|
||||||
info = "🕑 " + info
|
info = "🕑 " + info
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -405,23 +427,30 @@ func (s Table) DashboardUpdate(m *ice.Message, arg ...string) {
|
|||||||
func (s Table) MarketInsert(m *ice.Message, arg ...string) {
|
func (s Table) MarketInsert(m *ice.Message, arg ...string) {
|
||||||
m.Cmdy(s.Prefix(m, Portal{}), s.MarketInsert, arg)
|
m.Cmdy(s.Prefix(m, Portal{}), s.MarketInsert, arg)
|
||||||
}
|
}
|
||||||
|
func (s Table) PushPublic(m *ice.Message, arg ...string) {
|
||||||
|
m.Cmdy(s.Prefix(m, Portal{}), s.PushPublic, arg)
|
||||||
|
}
|
||||||
func (s Table) ServiceList(m *ice.Message, arg ...string) *ice.Message {
|
func (s Table) ServiceList(m *ice.Message, arg ...string) *ice.Message {
|
||||||
return m.Cmd(s.Prefix(m, service{}), arg)
|
return m.Cmd(s.Prefix(m, service{}), arg)
|
||||||
}
|
}
|
||||||
func (s Table) GetCommandUID(m *ice.Message, arg ...string) {
|
func (s Table) GetCommandUID(m *ice.Message, arg ...string) *ice.Message {
|
||||||
m.Option(model.COMMAND_UID, CommandUID(m, kit.Select(m.PrefixKey(), arg, 0)))
|
m.Option(model.COMMAND_UID, CommandUID(m, kit.Select(m.PrefixKey(), arg, 0)))
|
||||||
|
return m
|
||||||
}
|
}
|
||||||
func (s Table) SendMessage(m *ice.Message, from, to string, arg ...string) {
|
func (s Table) SendMessage(m *ice.Message, from, to string, arg ...string) {
|
||||||
if m.IsErr() {
|
if m.IsErr() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
kit.If(len(arg) == 0, func() { arg = append(arg, m.Option(model.PLACE_UID), kit.Select(m.Option(model.UID), m.Result())) })
|
||||||
m.Spawn(ice.Maps{db.DB: ""}).Cmd(s.Prefix(m, message{}), s.Create,
|
m.Spawn(ice.Maps{db.DB: ""}).Cmd(s.Prefix(m, message{}), s.Create,
|
||||||
model.FROM_USER_UID, kit.Select(m.Option(model.USER_UID), from), model.TO_USER_UID, kit.Select(m.Option(model.USER_UID), to),
|
model.FROM_USER_UID, kit.Select(m.Option(model.USER_UID), from), model.TO_USER_UID, kit.Select(m.Option(model.USER_UID), to),
|
||||||
m.OptionSimple(model.COMMAND_UID), model.ARGS, kit.Join(arg),
|
m.OptionSimple(model.COMMAND_UID), model.ARGS, kit.Join(arg), m.OptionSimple(model.TITLE, model.CONTENT),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
func (s Table) DoneMessage(m *ice.Message, arg ...string) {
|
func (s Table) DoneMessage(m *ice.Message, arg ...string) {
|
||||||
|
m.Info("what %v", m.Option("message_uid"))
|
||||||
if m.Option(model.MESSAGE_UID) != "" {
|
if m.Option(model.MESSAGE_UID) != "" {
|
||||||
|
m.Info("what %v", m.Option("message_uid"))
|
||||||
m.Spawn(ice.Maps{db.DB: ""}).Cmd(s.Prefix(m, message{}), message{}.Done, kit.Dict(model.UID, m.Option(model.MESSAGE_UID)))
|
m.Spawn(ice.Maps{db.DB: ""}).Cmd(s.Prefix(m, message{}), message{}.Done, kit.Dict(model.UID, m.Option(model.MESSAGE_UID)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -467,7 +496,8 @@ func (s Table) Display(m *ice.Message, file string) *ice.Message {
|
|||||||
}
|
}
|
||||||
if m.Template(file) == "" {
|
if m.Template(file) == "" {
|
||||||
if m.CommandKey() == web.PORTAL {
|
if m.CommandKey() == web.PORTAL {
|
||||||
file = m.Resource(path.Join(base, "portal.js"))
|
// file = m.Resource(path.Join(base, "portal.js"))
|
||||||
|
file = m.Resource(path.Join(sub, "portal.js"))
|
||||||
} else {
|
} else {
|
||||||
file = m.Resource(path.Join(base, "common.js"))
|
file = m.Resource(path.Join(base, "common.js"))
|
||||||
}
|
}
|
||||||
@ -565,12 +595,19 @@ func PortalCmd(portal ice.Any) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
cmd.RawHand = path.Join(path.Dir(h), name+".go")
|
cmd.RawHand = path.Join(path.Dir(h), name+".go")
|
||||||
|
what := kit.FileLine(1, 100)
|
||||||
|
// cmd.Icon = path.Join(path.Dir(what), name) + ".png"
|
||||||
|
nfs.Exists(ice.Pulse, path.Join(path.Dir(what), name)+".png", func(p string) {
|
||||||
|
cmd.Icon = "/p/src/gonganxitong/" + name + ".png?pod=20240724-community"
|
||||||
|
// ice.Pulse.Resource(p)
|
||||||
|
})
|
||||||
cmd.Actions[ice.CTX_INIT].Hand = icebergs.MergeHand(func(m *icebergs.Message, arg ...string) {
|
cmd.Actions[ice.CTX_INIT].Hand = icebergs.MergeHand(func(m *icebergs.Message, arg ...string) {
|
||||||
m.Design(mdb.LIST, "", kit.JoinWord(table.Keys(table.Place, model.UID), model.UID, ice.AUTO))
|
m.Design(mdb.LIST, "", kit.JoinWord(table.Keys(table.Place, model.UID), model.UID, ice.AUTO))
|
||||||
mdb.Config(m, db.DOMAIN, kit.PathName(1))
|
mdb.Config(m, db.DOMAIN, kit.PathName(1))
|
||||||
}, cmd.Actions[ice.CTX_INIT].Hand)
|
}, cmd.Actions[ice.CTX_INIT].Hand)
|
||||||
}
|
}
|
||||||
cmd("portal", portal)
|
cmd("portal", portal)
|
||||||
|
|
||||||
cmd("goodslist", goodslist{Table: table})
|
cmd("goodslist", goodslist{Table: table})
|
||||||
cmd("quotalist", quotalist{Table: table})
|
cmd("quotalist", quotalist{Table: table})
|
||||||
cmd("spendlist", spendlist{Table: table})
|
cmd("spendlist", spendlist{Table: table})
|
||||||
@ -579,6 +616,7 @@ func PortalCmd(portal ice.Any) {
|
|||||||
cmd("document", document{Table: table})
|
cmd("document", document{Table: table})
|
||||||
cmd("contract", contract{Table: table})
|
cmd("contract", contract{Table: table})
|
||||||
cmd("photo", photo{Table: table})
|
cmd("photo", photo{Table: table})
|
||||||
|
|
||||||
cmd("credit", credit{Tables: tables})
|
cmd("credit", credit{Tables: tables})
|
||||||
cmd("member", member{Tables: tables})
|
cmd("member", member{Tables: tables})
|
||||||
cmd("setting", setting{Table: table})
|
cmd("setting", setting{Table: table})
|
||||||
|
@ -25,7 +25,7 @@ func (s credit) List(m *ice.Message, arg ...string) {
|
|||||||
m.ProcessField(api.RENZHENGSHOUQUAN_PROFILE, msg.Append(model.AUTH_UID))
|
m.ProcessField(api.RENZHENGSHOUQUAN_PROFILE, msg.Append(model.AUTH_UID))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !s.IsWorker(m) {
|
if !s.IsLeader(m) {
|
||||||
m.Echo("本服务暂未申请认证")
|
m.Echo("本服务暂未申请认证")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
BIN
src/gonganxitong/credit.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
src/gonganxitong/event.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
src/gonganxitong/market.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
@ -2,6 +2,7 @@ package gonganxitong
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"shylinux.com/x/ice"
|
"shylinux.com/x/ice"
|
||||||
|
"shylinux.com/x/icebergs/base/web/html"
|
||||||
kit "shylinux.com/x/toolkits"
|
kit "shylinux.com/x/toolkits"
|
||||||
|
|
||||||
"shylinux.com/x/community/src/gonganxitong/model"
|
"shylinux.com/x/community/src/gonganxitong/model"
|
||||||
@ -15,25 +16,43 @@ type member struct {
|
|||||||
remove string `name:"remove" role:"void"`
|
remove string `name:"remove" role:"void"`
|
||||||
enable string `name:"enable" role:"void"`
|
enable string `name:"enable" role:"void"`
|
||||||
disable string `name:"disable" role:"void"`
|
disable string `name:"disable" role:"void"`
|
||||||
|
promote string `name:"promote" role:"void"`
|
||||||
|
demote string `name:"demote" role:"void"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s member) Remove(m *ice.Message, arg ...string) {
|
func (s member) Remove(m *ice.Message, arg ...string) {
|
||||||
if s.IsLeader(m) {
|
if s.IsLeader(m) {
|
||||||
m.Cmdy(s.UserPlace, s.Delete, s.option(m))
|
m.Cmdy(s.UserPlace, s.Delete, s.option(m, model.ROLE, kit.Format(UserPlaceTenant), model.STATUS, kit.Format(MemberDisabled)))
|
||||||
}
|
s.recordEvent(m, "❌", m.Trans("remove member", "删除成员"), html.DANGER)
|
||||||
}
|
|
||||||
func (s member) Enable(m *ice.Message, arg ...string) {
|
|
||||||
if s.IsLeader(m) {
|
|
||||||
m.Cmdy(s.UserPlace, s.UpdateField, model.STATUS, MemberNormal, s.option(m))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (s member) Disable(m *ice.Message, arg ...string) {
|
func (s member) Disable(m *ice.Message, arg ...string) {
|
||||||
if s.IsLeader(m) {
|
if s.IsLeader(m) {
|
||||||
m.Cmdy(s.UserPlace, s.UpdateField, model.STATUS, MemberDisabled, s.option(m))
|
m.Cmdy(s.UserPlace, s.UpdateField, model.STATUS, MemberDisabled, s.option(m, model.ROLE, kit.Format(UserPlaceTenant)))
|
||||||
|
s.recordEvent(m, "❌", m.Trans("disable member", "禁用成员"), html.DANGER)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func (s member) Demote(m *ice.Message, arg ...string) {
|
||||||
|
if s.IsCreator(m) {
|
||||||
|
m.Cmdy(s.UserPlace, s.UpdateField, model.ROLE, kit.Format(UserPlaceTenant), s.option(m))
|
||||||
|
s.recordEvent(m, "❌", m.Trans("demote worker", "降级成为工作人员"), html.DANGER)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func (s member) Promote(m *ice.Message, arg ...string) {
|
||||||
|
if s.IsCreator(m) {
|
||||||
|
m.Cmdy(s.UserPlace, s.UpdateField, model.ROLE, kit.Format(UserPlaceLandlord), s.option(m))
|
||||||
|
s.recordEvent(m, "✅", m.Trans("promote leader", "升级成为管理人员"), html.NOTICE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func (s member) Enable(m *ice.Message, arg ...string) {
|
||||||
|
if s.IsLeader(m) {
|
||||||
|
m.Cmdy(s.UserPlace, s.UpdateField, model.STATUS, MemberNormal, s.option(m, model.ROLE, kit.Format(UserPlaceTenant)))
|
||||||
|
s.recordEvent(m, "✅", m.Trans("enable member", "启用成员"), html.NOTICE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (s member) List(m *ice.Message, arg ...string) {
|
func (s member) List(m *ice.Message, arg ...string) {
|
||||||
user_uid, isLeader := m.Option(model.USER_UID), s.IsLeader(m)
|
USER_PLACE_ROLE := s.Keys(s.UserPlace, model.ROLE)
|
||||||
|
user_uid, isLeader, isCreator := m.Option(model.USER_UID), s.IsLeader(m), s.IsCreator(m)
|
||||||
s.FieldsWithCreatedAT(m, s.UserPlace, model.USER_UID, s.Keys(s.UserPlace, model.ROLE), s.AS(s.Key(s.UserPlace, model.STATUS), model.MEMBER_STATUS))
|
s.FieldsWithCreatedAT(m, s.UserPlace, model.USER_UID, s.Keys(s.UserPlace, model.ROLE), s.AS(s.Key(s.UserPlace, model.STATUS), model.MEMBER_STATUS))
|
||||||
if len(arg) == 1 {
|
if len(arg) == 1 {
|
||||||
m.Cmdy(s.UserPlace, s.Select, s.Keys(s.Place, model.UID), arg[0]).Action()
|
m.Cmdy(s.UserPlace, s.Select, s.Keys(s.Place, model.UID), arg[0]).Action()
|
||||||
@ -42,6 +61,7 @@ func (s member) List(m *ice.Message, arg ...string) {
|
|||||||
} else {
|
} else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
defer m.Sort(kit.Fields(model.MEMBER_STATUS, USER_PLACE_ROLE, model.CREATED_AT))
|
||||||
m.Table(func(value ice.Maps) {
|
m.Table(func(value ice.Maps) {
|
||||||
if !m.FieldsIsDetail() {
|
if !m.FieldsIsDetail() {
|
||||||
if user_uid == value[model.USER_UID] {
|
if user_uid == value[model.USER_UID] {
|
||||||
@ -50,19 +70,33 @@ func (s member) List(m *ice.Message, arg ...string) {
|
|||||||
m.Push("who", "")
|
m.Push("who", "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if isLeader {
|
button := []ice.Any{}
|
||||||
if user_uid == value[model.USER_UID] {
|
if MemberStatus(kit.Int(value[model.MEMBER_STATUS])) == MemberNormal {
|
||||||
m.PushButton()
|
if isCreator {
|
||||||
} else {
|
switch kit.Int(value[USER_PLACE_ROLE]) {
|
||||||
if MemberStatus(kit.Int(value[model.MEMBER_STATUS])) == MemberNormal {
|
case 2:
|
||||||
m.PushButton(s.Disable)
|
button = append(button, s.Demote)
|
||||||
} else {
|
case 3:
|
||||||
m.PushButton(s.Enable, s.Remove)
|
button = append(button, s.Promote)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if isLeader {
|
||||||
|
switch kit.Int(value[USER_PLACE_ROLE]) {
|
||||||
|
case 3:
|
||||||
|
button = append(button, s.Disable)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
m.PushButton()
|
if isCreator {
|
||||||
|
button = append(button, s.Enable, s.Remove)
|
||||||
|
} else if isLeader {
|
||||||
|
switch kit.Int(value[USER_PLACE_ROLE]) {
|
||||||
|
case 3:
|
||||||
|
button = append(button, s.Enable, s.Remove)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
m.PushButton(button...)
|
||||||
})
|
})
|
||||||
s.SelectJoinUser(m, model.NAME, model.INFO, model.AVATAR, model.AUTH_UID)
|
s.SelectJoinUser(m, model.NAME, model.INFO, model.AVATAR, model.AUTH_UID)
|
||||||
s.SelectJoinAuth(m)
|
s.SelectJoinAuth(m)
|
||||||
@ -72,7 +106,10 @@ func (s member) List(m *ice.Message, arg ...string) {
|
|||||||
func init() { ice.TeamCtxCmd(member{Tables: newTables()}) }
|
func init() { ice.TeamCtxCmd(member{Tables: newTables()}) }
|
||||||
|
|
||||||
func (s member) option(m *ice.Message, arg ...string) []string {
|
func (s member) option(m *ice.Message, arg ...string) []string {
|
||||||
return m.OptionSimple(s.Keys(s.Place, model.UID), model.UID)
|
return kit.Simple(m.OptionSimple(s.Keys(s.Place, model.UID), model.UID), arg)
|
||||||
|
}
|
||||||
|
func (s member) recordEvent(m *ice.Message, icon, title, style string, arg ...string) {
|
||||||
|
s.RecordEvent(m, kit.JoinWord(icon, title, kit.Cut(m.Option(model.UID), 6), s.TransRole(m, "", style), m.Option(model.USER_NAME)), m.Option(model.UID))
|
||||||
}
|
}
|
||||||
|
|
||||||
type MemberStatus int
|
type MemberStatus int
|
||||||
|
BIN
src/gonganxitong/member.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
@ -35,6 +35,7 @@ func (s message) List(m *ice.Message, arg ...string) {
|
|||||||
model.FROM_USER_UID, model.COMMAND_NAME, model.MESSAGE_STATUS, model.SCORE,
|
model.FROM_USER_UID, model.COMMAND_NAME, model.MESSAGE_STATUS, model.SCORE,
|
||||||
model.PLACE_UID, model.SERVICE_NAME,
|
model.PLACE_UID, model.SERVICE_NAME,
|
||||||
s.AS(model.NODENAME, model.SPACE), s.Key(s.command, model.INDEX), model.ARGS,
|
s.AS(model.NODENAME, model.SPACE), s.Key(s.command, model.INDEX), model.ARGS,
|
||||||
|
model.TITLE, model.CONTENT,
|
||||||
)
|
)
|
||||||
if len(arg) < 2 {
|
if len(arg) < 2 {
|
||||||
args := []string{model.TO_USER_UID, m.Option(model.USER_UID)}
|
args := []string{model.TO_USER_UID, m.Option(model.USER_UID)}
|
||||||
|
@ -5,10 +5,15 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
can.onimport.myView(can, msg, function(value) { var args = can.core.Split(value.args)
|
can.onimport.myView(can, msg, function(value) { var args = can.core.Split(value.args)
|
||||||
value.icons = value.user_avatar||value.icons; if (value.score > 0) { value._style = ["sticky"] }
|
value.icons = value.user_avatar||value.icons; if (value.score > 0) { value._style = ["sticky"] }
|
||||||
return [
|
return [
|
||||||
{view: html.TITLE, list: [value.place_name, value.command_name, value.detail||(args[1]||"").slice(0, 6), can.onimport.textView(can, value)]},
|
{view: html.TITLE, list: [
|
||||||
{view: html.STATUS, list: [value.city_name, value.street_name, value.service_name]},
|
value.command_name, value.title, can.onimport.textView(can, value),
|
||||||
{view: html.STATUS, list: [can.onimport.timeView(can, value), value.user_name]},
|
]},
|
||||||
value.info && {view: html.OUTPUT, list: [value.info]},
|
{view: html.STATUS, list: [
|
||||||
|
value.detail||(args[1]||"").slice(0, 6),
|
||||||
|
can.onimport.timeView(can, value), value.user_name,
|
||||||
|
]},
|
||||||
|
{view: html.STATUS, list: [value.city_name, value.street_name, value.place_name, value.service_name]},
|
||||||
|
{view: html.OUTPUT, list: [value.content]},
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
BIN
src/gonganxitong/message.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
@ -163,6 +163,19 @@ type Goodslist struct {
|
|||||||
Amount int `gorm:"default:0"`
|
Amount int `gorm:"default:0"`
|
||||||
ExpireTime db.Time
|
ExpireTime db.Time
|
||||||
}
|
}
|
||||||
|
type Paymentlist struct {
|
||||||
|
db.ModelWithUID
|
||||||
|
PlaceUID string `gorm:"type:char(32);index"`
|
||||||
|
UserUID string `gorm:"type:char(32)"`
|
||||||
|
GoodslistUID string `gorm:"type:char(32)"`
|
||||||
|
VendorUID string `gorm:"type:char(32)"`
|
||||||
|
Vendor string `gorm:"type:varchar(128)"`
|
||||||
|
Title string `gorm:"type:varchar(128)"`
|
||||||
|
Content string `gorm:"type:varchar(128)"`
|
||||||
|
Amount int32 `gorm:"default:0"`
|
||||||
|
Status uint8 `gorm:"default:0"`
|
||||||
|
Type uint8 `gorm:"default:0"`
|
||||||
|
}
|
||||||
type Quotalist struct {
|
type Quotalist struct {
|
||||||
db.ModelWithUID
|
db.ModelWithUID
|
||||||
PlaceUID string `gorm:"type:char(32);index"`
|
PlaceUID string `gorm:"type:char(32);index"`
|
||||||
@ -184,19 +197,6 @@ type Spendlist struct {
|
|||||||
Count int `gorm:"default:0"`
|
Count int `gorm:"default:0"`
|
||||||
ExpireTime db.Time
|
ExpireTime db.Time
|
||||||
}
|
}
|
||||||
type Paymentlist struct {
|
|
||||||
db.ModelWithUID
|
|
||||||
PlaceUID string `gorm:"type:char(32);index"`
|
|
||||||
UserUID string `gorm:"type:char(32)"`
|
|
||||||
GoodslistUID string `gorm:"type:char(32)"`
|
|
||||||
VendorUID string `gorm:"type:char(32)"`
|
|
||||||
Vendor string `gorm:"type:varchar(128)"`
|
|
||||||
Title string `gorm:"type:varchar(128)"`
|
|
||||||
Content string `gorm:"type:varchar(128)"`
|
|
||||||
Amount int32 `gorm:"default:0"`
|
|
||||||
Status uint8 `gorm:"default:0"`
|
|
||||||
Type uint8 `gorm:"default:0"`
|
|
||||||
}
|
|
||||||
type Meeting struct {
|
type Meeting struct {
|
||||||
db.ModelWithUID
|
db.ModelWithUID
|
||||||
PlaceUID string `gorm:"type:char(32);index"`
|
PlaceUID string `gorm:"type:char(32);index"`
|
||||||
@ -225,6 +225,7 @@ type Photo struct {
|
|||||||
Vendor string `gorm:"type:varchar(128)"`
|
Vendor string `gorm:"type:varchar(128)"`
|
||||||
ExpireTime db.Time
|
ExpireTime db.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
type Setting struct {
|
type Setting struct {
|
||||||
db.ModelWithUID
|
db.ModelWithUID
|
||||||
PlaceUID string `gorm:"type:char(32);index"`
|
PlaceUID string `gorm:"type:char(32);index"`
|
||||||
@ -232,7 +233,6 @@ type Setting struct {
|
|||||||
Name string `gorm:"type:varchar(64)"`
|
Name string `gorm:"type:varchar(64)"`
|
||||||
Value string `gorm:"type:varchar(255)"`
|
Value string `gorm:"type:varchar(255)"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Apply struct {
|
type Apply struct {
|
||||||
db.ModelWithUID
|
db.ModelWithUID
|
||||||
PlaceUID string `gorm:"type:char(32);index:idx_place"`
|
PlaceUID string `gorm:"type:char(32);index:idx_place"`
|
||||||
@ -260,6 +260,7 @@ type Notice struct {
|
|||||||
PlaceUID string `gorm:"type:char(32);index"`
|
PlaceUID string `gorm:"type:char(32);index"`
|
||||||
UserUID string `gorm:"type:char(32)"`
|
UserUID string `gorm:"type:char(32)"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Domain struct {
|
type Domain struct {
|
||||||
db.ModelNameInfo
|
db.ModelNameInfo
|
||||||
}
|
}
|
||||||
@ -302,10 +303,10 @@ type Command struct {
|
|||||||
Icon string `gorm:"type:varchar(128)"`
|
Icon string `gorm:"type:varchar(128)"`
|
||||||
}
|
}
|
||||||
type Message struct {
|
type Message struct {
|
||||||
db.ModelWithUID
|
db.ModelContent
|
||||||
PlaceUID string `gorm:"type:char(32)"`
|
|
||||||
FromUserUID string `gorm:"type:char(32)"`
|
FromUserUID string `gorm:"type:char(32)"`
|
||||||
ToUserUID string `gorm:"type:char(32);index"`
|
ToUserUID string `gorm:"type:char(32);index"`
|
||||||
|
PlaceUID string `gorm:"type:char(32)"`
|
||||||
CommandUID string `gorm:"type:char(32)"`
|
CommandUID string `gorm:"type:char(32)"`
|
||||||
Args string `gorm:"type:varchar(128)"`
|
Args string `gorm:"type:varchar(128)"`
|
||||||
Status uint `gorm:"default:0"`
|
Status uint `gorm:"default:0"`
|
||||||
@ -344,9 +345,9 @@ type Support struct {
|
|||||||
func init() {
|
func init() {
|
||||||
db.CmdModels("",
|
db.CmdModels("",
|
||||||
&Sess{}, &User{}, &UserPlace{}, &Place{}, &Street{}, &City{},
|
&Sess{}, &User{}, &UserPlace{}, &Place{}, &Street{}, &City{},
|
||||||
&Paymentlist{}, &Meeting{}, &Document{}, &Contract{}, &Photo{}, &Setting{},
|
&Goodslist{}, &Paymentlist{}, &Quotalist{}, &Spendlist{},
|
||||||
&Goodslist{}, &Quotalist{}, &Spendlist{},
|
&Meeting{}, &Document{}, &Contract{}, &Photo{},
|
||||||
&Apply{}, &Allow{}, &Event{}, &Notice{},
|
&Setting{}, &Apply{}, &Allow{}, &Event{}, &Notice{},
|
||||||
&Domain{}, &Market{}, &Thumb{}, &Comment{}, &Favor{},
|
&Domain{}, &Market{}, &Thumb{}, &Comment{}, &Favor{},
|
||||||
&Command{}, &Message{}, &Recent{}, &Service{}, &Support{},
|
&Command{}, &Message{}, &Recent{}, &Service{}, &Support{},
|
||||||
)
|
)
|
||||||
|
@ -41,8 +41,9 @@ func (s notice) List(m *ice.Message, arg ...string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
kit.If(s.IsLeader(m), func() {
|
kit.If(s.IsLeader(m), func() {
|
||||||
m.PushAction(s.Remove)
|
if m.PushAction(s.Remove); m.Length() == 0 {
|
||||||
s.Button(m, "")
|
s.Button(m, "")
|
||||||
|
}
|
||||||
}, func() {
|
}, func() {
|
||||||
m.Action()
|
m.Action()
|
||||||
})
|
})
|
||||||
|
BIN
src/gonganxitong/notice.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
src/gonganxitong/portal-header.png
Normal file
After Width: | Height: | Size: 243 KiB |
@ -1,12 +1,13 @@
|
|||||||
body.dark { --plugin-bg-color:#0d1117; --output-bg-color:#171a22; }
|
$body:not(.mobile) { background-color:var(--notice-bg-color); }
|
||||||
body.width1.light { --plugin-bg-color:#f4f5f9; --output-bg-color:#fefefd; }
|
$body.dark { --plugin-bg-color:#0d1117; --output-bg-color:#171a22; }
|
||||||
body.width1.light { --plugin-bg-color:#f4f5f9; --output-bg-color:white; }
|
$body.width1.light { --plugin-bg-color:#f4f5f9; --output-bg-color:#fefefd; }
|
||||||
body.width1.light { --plugin-bg-color:#f3f3f4; --output-bg-color:white; --notice-bg-color:#006fff; }
|
$body.width1.light { --plugin-bg-color:#f4f5f9; --output-bg-color:white; }
|
||||||
body.width1 fieldset.Action div.input.float { position:static; }
|
$body.width1.light { --plugin-bg-color:#f3f3f4; --output-bg-color:white; --notice-bg-color:#006fff; }
|
||||||
body.width1 fieldset.Action div.input.float table { width:100%; }
|
$body.width1 fieldset.Action div.input.float { position:static; }
|
||||||
body.width1 div.upload.float div.action { display:flex; }
|
$body.width1 fieldset.Action div.input.float table { width:100%; }
|
||||||
body.width1 div.upload.float div.action div.item.upload { flex-grow:1; }
|
$body.width1 div.upload.float div.action { display:flex; }
|
||||||
body.width1 div.upload.float div.action div.item.upload input { width:100%; }
|
$body.width1 div.upload.float div.action div.item.upload { flex-grow:1; }
|
||||||
|
$body.width1 div.upload.float div.action div.item.upload input { width:100%; }
|
||||||
$action { background-color:transparent; position:absolute; top:0; width:100%; z-index:1; }
|
$action { background-color:transparent; position:absolute; top:0; width:100%; z-index:1; }
|
||||||
$action div.item { margin-left:10px; margin-right:0; padding:0; height:48px; align-items:center; }
|
$action div.item { margin-left:10px; margin-right:0; padding:0; height:48px; align-items:center; }
|
||||||
$action div.item.button input { border:none; background-color:var(--plugin-bg-color); color:var(--notice-bg-color); min-width:60px; display:unset; }
|
$action div.item.button input { border:none; background-color:var(--plugin-bg-color); color:var(--notice-bg-color); min-width:60px; display:unset; }
|
||||||
@ -15,32 +16,47 @@ $action div.item.button span { display:none; }
|
|||||||
$action div.item.button i { display:none; }
|
$action div.item.button i { display:none; }
|
||||||
$output div.title div.action div.item.notice input { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
$output div.title div.action div.item.notice input { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
||||||
$output { background-color:var(--plugin-bg-color); }
|
$output { background-color:var(--plugin-bg-color); }
|
||||||
$output>div.header { background-image:linear-gradient(var(--notice-bg-color), var(--plugin-bg-color)); height:300px; width:100%; position:absolute; left:0; }
|
$output>div.header { background-image:linear-gradient(var(--notice-bg-color), var(--plugin-bg-color)); height:240px; width:100%; position:absolute; left:0; }
|
||||||
|
body.light $output>div.header { background-image:url("/p/src/gonganxitong/portal-header.png?pod=20240724-community"); }
|
||||||
$output>div.header img { height:100%; width:100%; object-fit:cover; }
|
$output>div.header img { height:100%; width:100%; object-fit:cover; }
|
||||||
$output div.output>div.code { font-size:16px; position:relative; }
|
|
||||||
$output table.content.detail thead { display:none; }
|
|
||||||
$output div.output>div.code img.avatar { border-radius:10px; height:64px !important; width:64px !important; object-fit:cover; position:absolute; top:153px; left:calc(50% - 32px); }
|
|
||||||
body.width6 $output>div.output>div.code img.avatar { top:183px; }
|
|
||||||
$output>div.action>div.list { margin:0 10px; }
|
$output>div.action>div.list { margin:0 10px; }
|
||||||
$output>div>div.code { margin-bottom:240px; display:flex; flex-direction:column; align-items:center; }
|
$output div.output>div.code { font-size:16px; position:relative; }
|
||||||
|
$output div.output>div.code img.avatar {
|
||||||
|
border-radius:10px; object-fit:cover; --qrcode-icon-height:48px;
|
||||||
|
height:var(--qrcode-icon-height) !important; width:var(--qrcode-icon-height) !important;
|
||||||
|
position:absolute; top:calc(50% - var(--qrcode-icon-height) / 2 - 16px); left:calc(50% - var(--qrcode-icon-height) / 2);
|
||||||
|
}
|
||||||
|
$output>div>div.code { margin-bottom:20px; display:flex; flex-direction:column; align-items:center; }
|
||||||
$output>div>div.list { border-radius:10px; background-color:var(--output-bg-color); padding:10px; margin:10px; }
|
$output>div>div.list { border-radius:10px; background-color:var(--output-bg-color); padding:10px; margin:10px; }
|
||||||
$output>div>div.list.myplace>div.output { padding:0 10px; max-height:320px; }
|
$output>div>div.list.myplace>div.output { padding:0 10px; max-height:320px; }
|
||||||
|
$output>div>div.list.myplace>div.output>div.item>div.output div.title span.type { line-height:18px; }
|
||||||
|
$output>div>div.list.myplace>div.output>div.item>div.output div.title span.role { line-height:18px; }
|
||||||
|
$output>div>div.list.myplace>div.output>div.item>div.output div.title { margin-bottom:5px; }
|
||||||
$output>div>div.list.mynotice { cursor:pointer; }
|
$output>div>div.list.mynotice { cursor:pointer; }
|
||||||
$output>div>div.list.mynotice:not(.hide) { display:flex; align-items:center; }
|
$output>div>div.list.mynotice:not(.hide) { display:flex; align-items:center; }
|
||||||
$output>div>div.list.mynotice>span.title { flex-grow:1; margin:0 5px; }
|
$output>div>div.list.mynotice>span.title { flex-grow:1; margin:0 5px; }
|
||||||
|
$output>div>div.list.mynotice>span:not(.title) { white-space:pre; }
|
||||||
$output>div>div.list.mynotice>span:first-child { background-color:var(--hover-bg-color); color:var(--notice-bg-color); padding:0 5px; margin-right:5px; }
|
$output>div>div.list.mynotice>span:first-child { background-color:var(--hover-bg-color); color:var(--notice-bg-color); padding:0 5px; margin-right:5px; }
|
||||||
$output>div>div.list.mynotice>span:last-child { color:gray; }
|
$output>div>div.list.mynotice>span:last-child { color:gray; }
|
||||||
$output>div>div.list>div.title { font-weight:bold; display:flex; align-items:center; }
|
$output>div>div.list.mylist>fieldset>div.output { max-height:none !important; }
|
||||||
|
$output>div>div.list>div.title {
|
||||||
|
font-weight:bold; display:flex; align-items:center;
|
||||||
|
border-left:var(--box-notice3); padding-left:10px;
|
||||||
|
}
|
||||||
|
$output>div>div.list.myallow>div.title {
|
||||||
|
border-left:var(--box-danger3); padding-left:10px;
|
||||||
|
}
|
||||||
|
$output>div>div.list.myorder>div.title {
|
||||||
|
border-left:var(--box-danger3); padding-left:10px;
|
||||||
|
}
|
||||||
$output>div>div.list>div.title span:first-child { flex-grow:1; }
|
$output>div>div.list>div.title span:first-child { flex-grow:1; }
|
||||||
$output>div>div.list>div.title div.action div.item.filter input:focus { width:320px; transition:width 0.5s; }
|
$output>div>div.list>div.title div.action div.item.filter input:focus { width:320px; transition:width 0.5s; }
|
||||||
body.width1 $output>div>div.list>div.title div.action div.item.filter input:focus { width:200px; transition:width 0.5s; }
|
|
||||||
$output>div>div.list>div.title div.action div.item.filter input { transition:width 0.8s; }
|
$output>div>div.list>div.title div.action div.item.filter input { transition:width 0.8s; }
|
||||||
$output>div>div.list>div.title div.action { overflow:hidden; }
|
$output>div>div.list>div.title div.action { overflow:hidden; }
|
||||||
$output>div>div.list>div.title div.action div.item { margin-right:5px; }
|
$output>div>div.list>div.title div.action div.item { margin-right:5px; }
|
||||||
$output>div>div.list>div.title div.action div.item.button.icons input { display:none; }
|
$output>div>div.list>div.title div.action div.item.button.icons input { display:none; }
|
||||||
$output>div>div.list>div.role:not(.hide) { display:flex; align-items:center; justify-content:space-around; }
|
$output>div>div.list>div.role:not(.hide) { display:flex; align-items:center; justify-content:space-around; }
|
||||||
$output>div>div.list>div.role span { padding:5px; cursor:pointer; white-space:pre; }
|
$output>div>div.list>div.role span { padding:5px; cursor:pointer; white-space:pre; }
|
||||||
body:not(.mobile) $output>div>div.list>div.role span:hover { background-color:var(--hover-bg-color); }
|
|
||||||
$output>div>div.list>div.role span:not(.select) { color:gray; }
|
$output>div>div.list>div.role span:not(.select) { color:gray; }
|
||||||
$output>div>div.list>div.role span.select { border-bottom:var(--box-notice); }
|
$output>div>div.list>div.role span.select { border-bottom:var(--box-notice); }
|
||||||
$output>div>div.list>div.role span.creator.select { border-bottom:var(--box-danger); }
|
$output>div>div.list>div.role span.creator.select { border-bottom:var(--box-danger); }
|
||||||
@ -53,48 +69,61 @@ $output>div>div.list>div.output>div.item.index img { height:36px; width:36px; ob
|
|||||||
$output>div>div.list>div.output>div.item.index span { font-size:12px; white-space:pre; max-width:80px; }
|
$output>div>div.list>div.output>div.item.index span { font-size:12px; white-space:pre; max-width:80px; }
|
||||||
$output>div>div.list div.code { text-align:center; }
|
$output>div>div.list div.code { text-align:center; }
|
||||||
$output>div>div.list div.code input { background-color:var(--notice-bg-color); color:var(--notice-fg-color); font-size:18px; margin:auto; min-width:200px; display:block; margin-top:10px; }
|
$output>div>div.list div.code input { background-color:var(--notice-bg-color); color:var(--notice-fg-color); font-size:18px; margin:auto; min-width:200px; display:block; margin-top:10px; }
|
||||||
// $output>div>div.list fieldset.story>div.output { background-color:var(--output-bg-color); }
|
|
||||||
$output div.head>img { height:200px; width:100%; object-fit:cover; }
|
$output div.head>img { height:200px; width:100%; object-fit:cover; }
|
||||||
$output div.head div.item.card img { border-radius:25px; }
|
$output div.head div.item.card img { border-radius:25px; }
|
||||||
$output div.head>div.item.card div.title div.item.button i { display:none; }
|
$output div.head>div.item.card div.title div.item.button i { display:none; }
|
||||||
$output div.tabs { height:32px; display:flex; position:unset; }
|
$output div.tabs { height:32px; display:flex; position:unset; }
|
||||||
$output div.tabs span { padding:5px 10px; }
|
$output div.tabs span { padding:5px 10px; }
|
||||||
body:not(.mobile) $output div.tabs span:hover { background-color:var(--hover-bg-color); }
|
|
||||||
$output div.tabs span.select { background-color:var(--output-bg-color); color:var(--hover-fg-color); }
|
$output div.tabs span.select { background-color:var(--output-bg-color); color:var(--hover-fg-color); }
|
||||||
$output div.item.card:not(:last-child) { margin-bottom:2px; }
|
$output div.item.card:not(:last-child) { margin-bottom:2px; }
|
||||||
body:not(.width1) $output div.item.card { flex-direction:row-reverse; }
|
|
||||||
body:not(.width1) $output div.item.card>div.action { position:static; flex-shrink:0; }
|
|
||||||
body:not(.width1) $output div.item.card>div.output { flex-grow:1; }
|
|
||||||
$output div.item.card>div.output>div { width:100%; width:calc(100% - 53px); overflow:hidden; }
|
$output div.item.card>div.output>div { width:100%; width:calc(100% - 53px); overflow:hidden; }
|
||||||
$output div.item.card div.title { margin-bottom:5px; width:100%; display:flex; align-items:center; position:relative; }
|
$output div.item.card div.title { width:100%; display:flex; position:relative; }
|
||||||
$output div.item.card div.title span:first-child { word-break:break-all; }
|
$output div.item.card div.title span.type { line-height:22px; }
|
||||||
$output div.item.card div.title span.auth { font-size:14px; }
|
$output div.item.card div.title span.status { line-height:22px; }
|
||||||
|
$output div.item.card div.title span.price { margin-left:auto; }
|
||||||
|
$output div.item.card div.title span.auth { font-size:14px; padding:3px; }
|
||||||
$output div.item.card div.title span.time { position:absolute; right:0; font-size:12px; color:gray; }
|
$output div.item.card div.title span.time { position:absolute; right:0; font-size:12px; color:gray; }
|
||||||
|
$output div.item.card div.title span:first-child { word-break:break-all; }
|
||||||
|
$output fieldset.story>div.item.card div.title span { line-height:26px; }
|
||||||
|
// $output div.item.card>div.output>div.container>div.title span { line-height:26px; }
|
||||||
|
$output div.item.title { border-left:var(--box-notice3); margin-left:10px; padding:10px; background-color:var(--output-bg-color); }
|
||||||
|
$output div.item.title.dealList { border-left:var(--box-danger3); }
|
||||||
|
$body div.inputs>div.input.float>div.action { display:flex; }
|
||||||
|
|
||||||
$output div.item.card div.title div.action input { margin-right:0; }
|
$output div.item.card div.title div.action input { margin-right:0; }
|
||||||
$output div.item.card div.status span { word-break:break-all; }
|
$output div.item.card div.status span { word-break:break-all; }
|
||||||
$output div.item.card img { border-radius:5px; padding:0; margin:0; margin-right:10px; height:48px; width:48px; min-width:48px; object-fit:cover; }
|
$output div.item.card img { border-radius:5px; padding:0; margin:0; margin-right:10px; height:48px; width:48px; min-width:48px; object-fit:cover; }
|
||||||
$output div.item.card div.container img { margin-right:0; height:100%; width:100%; }
|
$output div.item.card div.container img { margin-right:0; height:100%; width:100%; }
|
||||||
|
$output div.item.card div.container>div.action { position:relative; float:right; }
|
||||||
|
body:not(.mobile) $output div.item.card div.container>div.action { display:none; }
|
||||||
|
body.mobile $output div.item.card div.container>div.title>span.status { margin-left:auto; }
|
||||||
$output div.item.card.sticky>div.output { background-color:var(--plugin-bg-color); color:var(--notice-bg-color); }
|
$output div.item.card.sticky>div.output { background-color:var(--plugin-bg-color); color:var(--notice-bg-color); }
|
||||||
$action div.item.notice input[type=button] { border:var(--box-notice); color:var(--notice-bg-color); }
|
$action div.item.notice input[type=button] { border:var(--box-notice); color:var(--notice-bg-color); }
|
||||||
body:not(.mobile) $action div.item.notice input[type=button]:hover { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
|
||||||
$action div.item.danger input[type=button] { border:var(--box-danger); color:var(--danger-bg-color); }
|
$action div.item.danger input[type=button] { border:var(--box-danger); color:var(--danger-bg-color); }
|
||||||
$output input.notice[type=button]:not(:hover) { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
$output input.notice[type=button]:hover { border:var(--box-notice); background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
||||||
|
// $output input.notice[type=button]:not(:hover) { border:var(--box-notice); background-color:transparent; color:var(--notice-bg-color); }
|
||||||
|
$output input.notice[type=button]:not(:hover) { background-color:transparent; color:var(--notice-bg-color); }
|
||||||
$output input.danger[type=button]:not(:hover) { color:var(--danger-bg-color); }
|
$output input.danger[type=button]:not(:hover) { color:var(--danger-bg-color); }
|
||||||
|
$output input.danger[type=button]:hover { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
|
||||||
$output input[type=button][name=submit] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
$output input[type=button][name=submit] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
||||||
$output span.type { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); padding:2px 8px; }
|
$output span.type { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); font-size:var(--status-font-size); line-height:22px; padding:2px 8px; }
|
||||||
$output span.role { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); padding:2px 8px; }
|
$output span.role { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); font-size:var(--status-font-size); line-height:22px; padding:2px 8px; }
|
||||||
$output span.status { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); padding:2px 8px; }
|
$output span.level { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); font-size:var(--status-font-size); line-height:22px; padding:2px 8px; }
|
||||||
|
$output span.status { border:none; border-radius:5px; background-color:var(--hover-bg-color); color:var(--notice-bg-color); font-size:var(--status-font-size); line-height:22px; padding:2px 8px; }
|
||||||
$output span.type.danger { color:var(--danger-bg-color); }
|
$output span.type.danger { color:var(--danger-bg-color); }
|
||||||
$output span.role.danger { color:var(--danger-bg-color); }
|
$output span.role.danger { color:var(--danger-bg-color); }
|
||||||
|
$output span.level.danger { color:var(--danger-bg-color); }
|
||||||
$output span.status.danger { color:var(--danger-bg-color); }
|
$output span.status.danger { color:var(--danger-bg-color); }
|
||||||
$output table.content { background-color:var(--output-bg-color); }
|
$output table.content { background-color:var(--output-bg-color); }
|
||||||
$output table.content td.action input.icons { display:unset; }
|
$output table.content td.action input.icons { display:unset; }
|
||||||
$output table.content td.action i { display:none; }
|
$output table.content td.action i { display:none; }
|
||||||
|
$output table.content.detail thead { display:none; }
|
||||||
$output table.content.detail td.action input { padding:0 10px; min-width:60px; }
|
$output table.content.detail td.action input { padding:0 10px; min-width:60px; }
|
||||||
// $output table.content.detail td.action input { padding:0 20px; min-width:80px; }
|
|
||||||
$output table.content.detail tr.action input.icons { display:unset; }
|
$output table.content.detail tr.action input.icons { display:unset; }
|
||||||
$output table.content.detail tr.action i { display:none; }
|
$output table.content.detail tr.action i { display:none; }
|
||||||
$output table.content.detail tr.uid { display:none; }
|
$output table.content.detail tr.uid { display:none; }
|
||||||
|
$output table.content.detail input { border:none; }
|
||||||
|
$output>div.output>div.code { padding:10px; }
|
||||||
$output>fieldset.story { margin-top:48px; }
|
$output>fieldset.story { margin-top:48px; }
|
||||||
$output fieldset.story { box-shadow:none; }
|
$output fieldset.story { box-shadow:none; }
|
||||||
$output fieldset.story>legend { display:none; }
|
$output fieldset.story>legend { display:none; }
|
||||||
@ -102,16 +131,16 @@ $output fieldset.story>form.option { display:none; }
|
|||||||
$output fieldset.story>div.action { display:none; }
|
$output fieldset.story>div.action { display:none; }
|
||||||
$output fieldset.story>div.status { display:none; }
|
$output fieldset.story>div.status { display:none; }
|
||||||
$output fieldset.story>div.output { background-color:var(--plugin-bg-color); }
|
$output fieldset.story>div.output { background-color:var(--plugin-bg-color); }
|
||||||
|
$output fieldset.story>div.output div.code { padding:0; }
|
||||||
$output fieldset.story>div.output table.content td { box-shadow:none; }
|
$output fieldset.story>div.output table.content td { box-shadow:none; }
|
||||||
$output fieldset.story>div.output table.content td img { max-width:100%; }
|
$output fieldset.story>div.output table.content td img { max-width:100%; }
|
||||||
|
$output fieldset.story>div.output table.content tr.icon td img { max-height:128px; max-width:128px; }
|
||||||
$output fieldset.story>div.output table.content tr.user_avatar td img { max-height:128px; max-width:128px; }
|
$output fieldset.story>div.output table.content tr.user_avatar td img { max-height:128px; max-width:128px; }
|
||||||
$output fieldset.story>div.output table.content tr.auth_avatar td img { max-height:128px; max-width:128px; }
|
$output fieldset.story>div.output table.content tr.auth_avatar td img { max-height:128px; max-width:128px; }
|
||||||
$output fieldset.story>div.output>div.code { text-align:center; }
|
$output fieldset.story>div.output>div.code { text-align:center; }
|
||||||
$output fieldset.story>div.output>div.code { display:flex; flex-direction:column; row-gap:10px; }
|
$output fieldset.story>div.output>div.code { display:flex; flex-direction:column; row-gap:10px; margin-top:20px; }
|
||||||
$output fieldset.story>div.output>div.code>img { display:block; margin:auto; width:100%; max-width:390px; }
|
$output fieldset.story>div.output>div.code>img { display:block; margin:auto; width:100%; max-width:320px; }
|
||||||
// $output fieldset.story>div.output>div.code>input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); margin-right:10px; float:right; }
|
|
||||||
$output fieldset.story>div.output>div.code>input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); float:right; }
|
$output fieldset.story>div.output>div.code>input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); float:right; }
|
||||||
body:not(.mobile) $output fieldset.story>div.output>div.code>input[type=button]:hover { border:var(--box-notice); background-color:transparent; color:var(--notice-bg-color); }
|
|
||||||
$output fieldset.story>div.output>div.code>input[type=button].danger { border:var(--box-danger); background-color:transparent; color:var(--danger-bg-color); }
|
$output fieldset.story>div.output>div.code>input[type=button].danger { border:var(--box-danger); background-color:transparent; color:var(--danger-bg-color); }
|
||||||
$output fieldset.story>div.output>div.code div.item.button { margin-top:20px; }
|
$output fieldset.story>div.output>div.code div.item.button { margin-top:20px; }
|
||||||
$output fieldset.story>div.output>div.code div.item.button input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); font-size:18px; min-width:240px; height:36px; }
|
$output fieldset.story>div.output>div.code div.item.button input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); font-size:18px; min-width:240px; height:36px; }
|
||||||
@ -122,7 +151,7 @@ $output>fieldset.story>div.output div.item.card>div.output div.output { padding:
|
|||||||
$output fieldset.story.form>div.output>div.code>input[type=button] { font-size:18px; margin:10px; height:36px; }
|
$output fieldset.story.form>div.output>div.code>input[type=button] { font-size:18px; margin:10px; height:36px; }
|
||||||
$output>fieldset.story.web.team.renzhengshouquan.profile { margin-top:0; }
|
$output>fieldset.story.web.team.renzhengshouquan.profile { margin-top:0; }
|
||||||
$output>fieldset.story.web.team.credit { margin-top:0; }
|
$output>fieldset.story.web.team.credit { margin-top:0; }
|
||||||
$output>fieldset.story.web.team.credit>div.output>div.code { margin-top:32px; }
|
$output>fieldset.story.web.team.credit>div.output>div.code { margin-top:64px; }
|
||||||
$output>fieldset.message div.tabs span.select { border-top:var(--box-border); }
|
$output>fieldset.message div.tabs span.select { border-top:var(--box-border); }
|
||||||
$output>fieldset.message div.tabs span.create.select { border-top:var(--box-danger); }
|
$output>fieldset.message div.tabs span.create.select { border-top:var(--box-danger); }
|
||||||
$output>fieldset.message div.tabs span.read.select { border-top:var(--box-notice); }
|
$output>fieldset.message div.tabs span.read.select { border-top:var(--box-notice); }
|
||||||
@ -136,22 +165,29 @@ $output>fieldset.market>div.output>div.list div.item.card div.status>span.userna
|
|||||||
$output>fieldset.market>div.output>div.list div.item.card div.status>span.time { float:right; }
|
$output>fieldset.market>div.output>div.list div.item.card div.status>span.time { float:right; }
|
||||||
$output>fieldset.market>div.output>div.list div.item.card div.output div.action { color:gray; font-size:14px; width:100%; max-width:100%; display:flex; justify-content:space-around; position:relative; }
|
$output>fieldset.market>div.output>div.list div.item.card div.output div.action { color:gray; font-size:14px; width:100%; max-width:100%; display:flex; justify-content:space-around; position:relative; }
|
||||||
$output>fieldset.market>div.output>div.list div.item.card div.output div.action i { margin-right:5px; }
|
$output>fieldset.market>div.output>div.list div.item.card div.output div.action i { margin-right:5px; }
|
||||||
// $output>fieldset.market>div.output>div.list div.item.card div.output div.output { padding:10px 0; }
|
|
||||||
$output>fieldset.market>div.output>div.list div.item.card div.output div.action div.item.done { color:var(--notice-bg-color); }
|
$output>fieldset.market>div.output>div.list div.item.card div.output div.action div.item.done { color:var(--notice-bg-color); }
|
||||||
$output.background>div.output { padding-top:120px; }
|
$output.background>div.output { padding-top:80px; }
|
||||||
$output.public>div>div.list:not(.mylist)>div.title { display:none; }
|
$output.public>div>div.list:not(.mylist)>div.title { display:none; }
|
||||||
$output.public>div>div.list.myplace>div.output { padding:0; }
|
$output.public>div>div.list.myplace>div.output { padding:0; }
|
||||||
$output.public>div>div.list.myplace div.item.card div.output { padding:0; }
|
$output.public>div>div.list.myplace div.item.card div.output { padding:0; }
|
||||||
|
body.dark $output>div>div.list.mynotice>span:first-child { background-color:var(--hover-bg-color); color:yellow; white-space:pre; }
|
||||||
|
body.width1 fieldset.panel.Action>div.output { background-color:var(--plugin-bg-color); }
|
||||||
|
body.width1 div.input.float { margin:0; width:100% !important; max-width:100% !important; }
|
||||||
|
body.width1 div.input.float input[name=submit] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
||||||
|
body.width1 $output img.qrcode { width:100%; margin:0; }
|
||||||
|
body.width1 $output>div>div.list>div.title div.action div.item.filter input:focus { width:200px; transition:width 0.5s; }
|
||||||
|
body.width6 $output>div.output>div.code img.avatar { top:183px; }
|
||||||
|
body:not(.width1) $output div.item.card { flex-direction:row-reverse; }
|
||||||
|
body:not(.width1) $output div.item.card>div.action { position:static; flex-shrink:0; }
|
||||||
|
body:not(.width1) $output div.item.card>div.output { flex-grow:1; }
|
||||||
|
body:not(.width1) $output div.item.card div.title div.action { display:none; }
|
||||||
|
body:not(.mobile) $output>fieldset.story>div.output div.item.card:not(:hover) { background-color:var(--output-bg-color); }
|
||||||
|
body:not(.mobile) $output div.tabs span:hover { background-color:var(--hover-bg-color); }
|
||||||
|
body:not(.mobile) $output>div>div.list>div.role span:hover { background-color:var(--hover-bg-color); }
|
||||||
|
body:not(.mobile) $output fieldset.story>div.output>div.code>input[type=button]:hover { border:var(--box-notice); background-color:transparent; color:var(--notice-bg-color); }
|
||||||
|
body:not(.mobile) $action div.item.notice input[type=button]:hover { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
||||||
|
body.en $output>fieldset table.content td:first-child { max-width:190px; min-width:100px; width:unset;}
|
||||||
|
body.en $output>fieldset table.content td { padding: 10px 5px; }
|
||||||
fieldset.web.team.storage.file div.item.card div.title span:first-child { flex-grow:1; }
|
fieldset.web.team.storage.file div.item.card div.title span:first-child { flex-grow:1; }
|
||||||
fieldset.web.team.renzhengshouquan.profile>div.output div.code { margin-top:60px; margin-bottom:240px; }
|
fieldset.web.team.renzhengshouquan.profile>div.output div.code { margin-top:60px; margin-bottom:240px; }
|
||||||
body.dark $output>div>div.list.mynotice>span:first-child { background-color:var(--hover-bg-color); color:yellow; white-space:pre; }
|
|
||||||
body.width1 $output img.qrcode { width:100%; margin:0; }
|
|
||||||
body.width1 div.input.float { margin:0; width:100% !important; max-width:100% !important; }
|
|
||||||
// body.width1 div.input.float { position:absolute; top:0 !important; }
|
|
||||||
body.width1 div.input.float input[name=submit] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
|
|
||||||
body.width1 fieldset.panel.Action>div.output { background-color:var(--plugin-bg-color); }
|
|
||||||
body:not(.mobile) $output>fieldset.story>div.output div.item.card:not(:hover) { background-color:var(--output-bg-color); }
|
|
||||||
body:not(.width1) $output div.item.card div.title div.action { display:none; }
|
|
||||||
body.en $output>fieldset table.content td:first-child { max-width:180px; width:unset;}
|
|
||||||
$fieldset { box-shadow:none; }
|
$fieldset { box-shadow:none; }
|
||||||
$output>div.output>div.code { padding:10px; }
|
|
||||||
|
@ -16,6 +16,7 @@ import (
|
|||||||
"shylinux.com/x/mysql-story/src/db"
|
"shylinux.com/x/mysql-story/src/db"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// "member": "https://img.icons8.com/officel/80/person-at-home.png",
|
||||||
type Portal struct {
|
type Portal struct {
|
||||||
ice.Hash
|
ice.Hash
|
||||||
Table
|
Table
|
||||||
@ -30,7 +31,8 @@ type Portal struct {
|
|||||||
field string `data:"time,icons,name,index,order,enable,type,auth,role,view,init,portal"`
|
field string `data:"time,icons,name,index,order,enable,type,auth,role,view,init,portal"`
|
||||||
create string `name:"create index name icons"`
|
create string `name:"create index name icons"`
|
||||||
list string `name:"list place_uid index uid auto" role:"void"`
|
list string `name:"list place_uid index uid auto" role:"void"`
|
||||||
placeCreate string `name:"placeCreate city_name* street_name* place_name* place_type:select address" icon:"bi bi-plus-square-dotted" role:"void"`
|
placeCreate string `name:"placeCreate city_name* street_name* place_name* place_type:select address" icon:"bi bi-plus-circle" role:"void"`
|
||||||
|
// placeCreate string `name:"placeCreate city_name* street_name* place_name* place_type:select address" icon:"bi bi-plus-square" role:"void"`
|
||||||
placeRemove string `name:"placeRemove" role:"void"`
|
placeRemove string `name:"placeRemove" role:"void"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,7 +98,10 @@ func (s Portal) Run(m *ice.Message, arg ...string) {
|
|||||||
role = action.Role
|
role = action.Role
|
||||||
} else {
|
} else {
|
||||||
m.Option(s.Keys(s.Place, model.UID), arg[1])
|
m.Option(s.Keys(s.Place, model.UID), arg[1])
|
||||||
|
defer s.SelectJoinUser(m)
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
defer s.SelectJoinUser(m)
|
||||||
}
|
}
|
||||||
if action, ok := cmd.Actions["beforeAction"]; ok {
|
if action, ok := cmd.Actions["beforeAction"]; ok {
|
||||||
action.Hand(m.Message, arg[1:]...)
|
action.Hand(m.Message, arg[1:]...)
|
||||||
@ -126,7 +131,7 @@ func (s Portal) List(m *ice.Message, arg ...string) {
|
|||||||
s.Hash.List(m, kit.Slice(arg, 1)...).PushAction(mdb.DETAIL, s.Hash.Remove).Action().SortInt(mdb.ORDER)
|
s.Hash.List(m, kit.Slice(arg, 1)...).PushAction(mdb.DETAIL, s.Hash.Remove).Action().SortInt(mdb.ORDER)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if m.Option(model.USER_UID) == "" || m.Cmd(s.user, s.Table.Select, model.UID, m.Option(model.USER_UID)).Length() == 0 {
|
if m.Option(model.USER_UID) == "" {
|
||||||
if msg := m.Cmd(s.user, s.Table.Select, model.OPEN_ID, m.Option(ice.MSG_USERNAME)); msg.Length() == 0 {
|
if msg := m.Cmd(s.user, s.Table.Select, model.OPEN_ID, m.Option(ice.MSG_USERNAME)); msg.Length() == 0 {
|
||||||
msg := m.Cmd(s.user, s.Table.Create, m.Option(ice.MSG_USERNAME), "", m.OptionDefault(ice.MSG_USERNICK, m.Option(ice.MSG_USERNAME)))
|
msg := m.Cmd(s.user, s.Table.Create, m.Option(ice.MSG_USERNAME), "", m.OptionDefault(ice.MSG_USERNICK, m.Option(ice.MSG_USERNAME)))
|
||||||
m.ProcessCookie(model.USER_UID, msg.Result())
|
m.ProcessCookie(model.USER_UID, msg.Result())
|
||||||
@ -135,6 +140,9 @@ func (s Portal) List(m *ice.Message, arg ...string) {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if m.Cmd(s.user, s.Table.Select, model.UID, m.Option(model.USER_UID)).Length() == 0 {
|
||||||
|
m.Cmd(s.user, s.Table.Insert, model.UID, m.Option(model.USER_UID), model.OPEN_ID, m.Option(ice.MSG_USERNAME), model.NAME, m.OptionDefault(ice.MSG_USERNICK, m.Option(ice.MSG_USERNAME)))
|
||||||
|
}
|
||||||
m.Option(model.SERVICE_UID, ServiceUID(m))
|
m.Option(model.SERVICE_UID, ServiceUID(m))
|
||||||
if len(arg) == 0 {
|
if len(arg) == 0 {
|
||||||
m.Cmdy(m.PrefixKey(), s.PlaceList, m.Option(model.USER_UID)).PushAction(s.PlaceRemove).Action(s.PlaceCreate)
|
m.Cmdy(m.PrefixKey(), s.PlaceList, m.Option(model.USER_UID)).PushAction(s.PlaceRemove).Action(s.PlaceCreate)
|
||||||
@ -148,6 +156,10 @@ func (s Portal) List(m *ice.Message, arg ...string) {
|
|||||||
s.Hash.List(m).SortInt(mdb.ORDER)
|
s.Hash.List(m).SortInt(mdb.ORDER)
|
||||||
}
|
}
|
||||||
s.Place.RewriteAppend(m)
|
s.Place.RewriteAppend(m)
|
||||||
|
if true {
|
||||||
|
p := kit.ExtChange(m.Resource(ctx.GetCmdFile(m.Message, m.PrefixKey())), "js")
|
||||||
|
defer func() { m.Option(ice.MSG_DISPLAY, p+","+m.Option(ice.MSG_DISPLAY)) }()
|
||||||
|
}
|
||||||
s.DisplayBase(m, "").DisplayCSS("")
|
s.DisplayBase(m, "").DisplayCSS("")
|
||||||
}
|
}
|
||||||
func (s Portal) PlaceListOption(m *ice.Message, arg ...string) *ice.Message {
|
func (s Portal) PlaceListOption(m *ice.Message, arg ...string) *ice.Message {
|
||||||
@ -344,6 +356,11 @@ func (s Portal) MarketInsert(m *ice.Message, arg ...string) {
|
|||||||
m.Option(ctx.ARGS, kit.Join([]string{m.Option(model.PLACE_UID), m.Option(model.UID)}))
|
m.Option(ctx.ARGS, kit.Join([]string{m.Option(model.PLACE_UID), m.Option(model.UID)}))
|
||||||
m.Cmdy(s.Prefix(m, market{}), s.Create, arg)
|
m.Cmdy(s.Prefix(m, market{}), s.Create, arg)
|
||||||
}
|
}
|
||||||
|
func (s Portal) PushPublic(m *ice.Message, arg ...string) {
|
||||||
|
m.Option(model.PLACE_UID, m.Option(s.Keys(s.Place, model.UID)))
|
||||||
|
m.Option(ctx.ARGS, kit.Join([]string{m.Option(model.PLACE_UID), m.Option(model.UID)}))
|
||||||
|
m.Cmdy(s.Prefix(m, market{}), s.Create, arg)
|
||||||
|
}
|
||||||
func (s Portal) DashboardCreate(m *ice.Message, name string, arg ...string) func() {
|
func (s Portal) DashboardCreate(m *ice.Message, name string, arg ...string) func() {
|
||||||
defer s.SaveBack(m, ice.MSG_USERPOD)()
|
defer s.SaveBack(m, ice.MSG_USERPOD)()
|
||||||
kit.If(name == "", func() { name = m.Option(s.Keys(s.Place, model.NAME)) })
|
kit.If(name == "", func() { name = m.Option(s.Keys(s.Place, model.NAME)) })
|
||||||
|
@ -2,6 +2,25 @@ var UID = "uid", PLACE_UID = "place_uid", PLACE_NAME = "place_name", PLACE_TYPE
|
|||||||
var USER_UID = "user_uid", USER_ROLE = "user_role", AUTH_UID = "auth_uid", AUTH_TYPE = "auth_type"
|
var USER_UID = "user_uid", USER_ROLE = "user_role", AUTH_UID = "auth_uid", AUTH_TYPE = "auth_type"
|
||||||
Volcanos(chat.ONIMPORT, {
|
Volcanos(chat.ONIMPORT, {
|
||||||
_init: function(can, msg) { can.onappend.style(can, html.OUTPUT), can.onimport.myPortal(can, msg) },
|
_init: function(can, msg) { can.onappend.style(can, html.OUTPUT), can.onimport.myPortal(can, msg) },
|
||||||
|
otherList: function(can, msg, action) { if (!msg.IsDetail()) { return } typeof action == "string" && (action = [action])
|
||||||
|
can.core.Next(action, function(action, next) {
|
||||||
|
can.run(can.request({}, {uid: msg.Append(UID)}), action, function(msg) { if (msg.Length() == 0) { return next() }
|
||||||
|
can.page.Append(can, can._output, [{view: [[html.ITEM, html.TITLE, action], "", can.user.trans(can, action)]}])
|
||||||
|
can.onappend.plugin(can, {index: can.ConfIndex()}, function(sub) { can.onimport.myField(can, sub)
|
||||||
|
sub.run = function(event, cmds, cb) { if (!cmds || cmds.length == 0) { cb(msg) } }, next()
|
||||||
|
sub.onexport.output = function(_sub, msg) {
|
||||||
|
_sub.onaction.carddetail = function(event, _sub, value) {
|
||||||
|
can.onimport.myStory(can, {index: msg.Option("_command"), args: [msg.Option("place_uid"), value.uid]})
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
qrcode: function(can, msg, avatar, target) { target = target||can.ui.output, can.onappend.board(can, msg, target)
|
||||||
|
can.page.Append(can, can.page.SelectOne(can, target, "div.code"), [{img: can.misc.Resource(can, avatar||can.ConfIcons()||can.user.info.favicon), className: "avatar"}])
|
||||||
|
},
|
||||||
myValue: function(can, value) { return [
|
myValue: function(can, value) { return [
|
||||||
{view: html.TITLE, list: [value.auth_name||value._name, can.onimport.authView(can, value),
|
{view: html.TITLE, list: [value.auth_name||value._name, can.onimport.authView(can, value),
|
||||||
{text: [value.__type, "", [mdb.TYPE, value._type, value._type_style]]}, value._role != "visitor" && {text: [value.__role, "", [aaa.ROLE, value._role, value._role_style]]},
|
{text: [value.__type, "", [mdb.TYPE, value._type, value._type_style]]}, value._role != "visitor" && {text: [value.__role, "", [aaa.ROLE, value._role, value._role_style]]},
|
||||||
@ -21,9 +40,6 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
myTitle: function(can, name, help, target) {
|
myTitle: function(can, name, help, target) {
|
||||||
can.page.Appends(can, target||can.ui.list, [{view: html.TITLE, list: [{text: can.user.trans(can, name, help)}]}])
|
can.page.Appends(can, target||can.ui.list, [{view: html.TITLE, list: [{text: can.user.trans(can, name, help)}]}])
|
||||||
},
|
},
|
||||||
qrcode: function(can, msg, avatar, target) { target = target||can.ui.output, can.onappend.board(can, msg, target)
|
|
||||||
can.page.Append(can, can.page.SelectOne(can, target, "div.code"), [{img: can.misc.Resource(can, avatar||can.ConfIcons()||can.user.info.favicon), className: "avatar"}])
|
|
||||||
},
|
|
||||||
myPortal: function(can, msg) { can.sup.current = {}
|
myPortal: function(can, msg) { can.sup.current = {}
|
||||||
can.page.tagis(document.body, "body.width1") && (can.user.isMobile = true, can.sup.user.isMobile = true)
|
can.page.tagis(document.body, "body.width1") && (can.user.isMobile = true, can.sup.user.isMobile = true)
|
||||||
can.onmotion.delay(can, function() {
|
can.onmotion.delay(can, function() {
|
||||||
@ -115,11 +131,12 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
can.runAction({}, "noticeList", [value._uid], function(msg) {
|
can.runAction({}, "noticeList", [value._uid], function(msg) {
|
||||||
if (msg.Length() == 0) { value._notice_hide = true; return can.onmotion.hidden(can, target) } can.onmotion.toggle(can, target, true)
|
if (msg.Length() == 0) { value._notice_hide = true; return can.onmotion.hidden(can, target) } can.onmotion.toggle(can, target, true)
|
||||||
can.page.Append(can, target, [
|
can.page.Append(can, target, [
|
||||||
{text: " [ 公告 ] "}, {text: can.base.TimeTrim(msg.Append("created_at"))}, {text: " "}, {text: [msg.Append("title"), "", "title"]}, {text: "更多 >"},
|
{text: can.user.trans(can, "[ notice ]", " [ 公告 ] ")}, {text: can.base.TimeTrim(msg.Append("created_at"))}, {text: " "},
|
||||||
|
{text: [msg.Append("title"), "", "title"]}, {text: can.user.trans(can, "more >", "更多 >")},
|
||||||
])
|
])
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
myList: function(can, msg, target) { var width = (can.ConfWidth()-40)/parseInt((can.ConfWidth()-40)/80);
|
myList: function(can, msg, target) { var width = (can.ConfWidth()-40)/parseInt((can.ConfWidth()-40)/60);
|
||||||
(can.page.tagis(document.body, "body.width1") || can.user.isMobile && !can.user.isLandscape()) && (width = (can.ConfWidth()-40)/5)
|
(can.page.tagis(document.body, "body.width1") || can.user.isMobile && !can.user.isLandscape()) && (width = (can.ConfWidth()-40)/5)
|
||||||
can.page.Append(can, target, msg.Table(function(value) { if (value.enable == ice.FALSE) { return }
|
can.page.Append(can, target, msg.Table(function(value) { if (value.enable == ice.FALSE) { return }
|
||||||
if ((value.portal || value.public) && can.page.tagis(can._output, "div.output.public")) {
|
if ((value.portal || value.public) && can.page.tagis(can._output, "div.output.public")) {
|
||||||
@ -148,8 +165,7 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
var _msg = can.request(); msg.Table(function(value) { if (min < value.order && value.order < max) { _msg.Push(value) } })
|
var _msg = can.request(); msg.Table(function(value) { if (min < value.order && value.order < max) { _msg.Push(value) } })
|
||||||
var output = can.page.Append(can, target, [html.OUTPUT])._target; can.onimport.myList(can, _msg, output)
|
var output = can.page.Append(can, target, [html.OUTPUT])._target; can.onimport.myList(can, _msg, output)
|
||||||
},
|
},
|
||||||
myIndex: function(can, msg, target) {
|
myIndex: function(can, msg, target) { can.onimport.myTitle(can, "My Index", "我的应用", target)
|
||||||
can.onimport.myTitle(can, "My Index", "我的应用", target)
|
|
||||||
var list = ["visitor", "creator", "landlord", "teacher", "leader", "boss", "tenant", "student", "worker", "custom", "admin", "parent", "server"]
|
var list = ["visitor", "creator", "landlord", "teacher", "leader", "boss", "tenant", "student", "worker", "custom", "admin", "parent", "server"]
|
||||||
var _list = can.Conf("_trans.value."+can.Conf("_user_place_role"))
|
var _list = can.Conf("_trans.value."+can.Conf("_user_place_role"))
|
||||||
can.core.Item(_list, function(key) { list.indexOf(key) == -1 && list.push(key) })
|
can.core.Item(_list, function(key) { list.indexOf(key) == -1 && list.push(key) })
|
||||||
@ -178,15 +194,12 @@ Volcanos(chat.ONIMPORT, {
|
|||||||
})
|
})
|
||||||
Volcanos(chat.ONACTION, {
|
Volcanos(chat.ONACTION, {
|
||||||
beforeInputs: function(event, can, button, sub) {
|
beforeInputs: function(event, can, button, sub) {
|
||||||
// can.user.isMobile && can._fields.appendChild(sub._target)
|
|
||||||
// can.user.isMobile && can.onmotion.hidden(can, can._output)
|
|
||||||
|
|
||||||
can.user.isMobile && can.page.style(can, sub._target, html.LEFT, (can.page.width()-sub._target.offsetWidth)/2, html.TOP, 0)
|
can.user.isMobile && can.page.style(can, sub._target, html.LEFT, (can.page.width()-sub._target.offsetWidth)/2, html.TOP, 0)
|
||||||
can.user.isMobile && can.page.style(can, sub._target, html.MAX_HEIGHT, can.page.height())
|
can.user.isMobile && can.page.style(can, sub._target, html.MAX_HEIGHT, can.page.height())
|
||||||
can.user.isMobile && can._root.Inputs && can._root.Inputs.appendChild(sub._target)
|
can.user.isMobile && can._root.Inputs && can._root.Inputs.appendChild(sub._target)
|
||||||
can.user.isMobile && can.page.style(can, can._root.Action._output, html.VISIBILITY, html.HIDDEN)
|
can.user.isMobile && can.page.style(can, can._root.Action._output, html.VISIBILITY, html.HIDDEN)
|
||||||
|
|
||||||
sub.Option("city_name", "深圳市")
|
sub.Option("city_name", "深圳市")
|
||||||
|
if (!can.misc.isDebug(can)) { return }
|
||||||
sub.Option("street_name", "粤海街道")
|
sub.Option("street_name", "粤海街道")
|
||||||
sub.Option("school_name", "深圳中学")
|
sub.Option("school_name", "深圳中学")
|
||||||
sub.Option("company_name", "云轩领航")
|
sub.Option("company_name", "云轩领航")
|
||||||
|
@ -9,32 +9,21 @@
|
|||||||
"cancel": "取消", "submit": "提交", "finish": "完成", "reject": "驳回", "approve": "通过",
|
"cancel": "取消", "submit": "提交", "finish": "完成", "reject": "驳回", "approve": "通过",
|
||||||
"read": "已读", "done": "完成", "sticky": "置顶", "unSticky": "取消置顶",
|
"read": "已读", "done": "完成", "sticky": "置顶", "unSticky": "取消置顶",
|
||||||
"autogen": "生成", "compile": "编译", "oauth": "授权", "project": "项目",
|
"autogen": "生成", "compile": "编译", "oauth": "授权", "project": "项目",
|
||||||
"marketInsert": "推广", "commentCreate": "评论", "applyQRCode": "邀请码",
|
"marketInsert": "推广",
|
||||||
|
"pushPublic": "推广",
|
||||||
|
"applyCreate": "申请权限",
|
||||||
|
"commentCreate": "评论", "applyQRCode": "邀请码",
|
||||||
"user": "用户信息", "city": "城市信息", "street": "街道信息", "school": "学校信息", "company": "公司信息",
|
"user": "用户信息", "city": "城市信息", "street": "街道信息", "school": "学校信息", "company": "公司信息",
|
||||||
"auth": "认证", "authCreate": "认证申请", "authCity": "城市认证", "authPersonal": "个人认证", "authService": "服务认证", "authCompany": "公司认证",
|
"auth": "认证", "authCreate": "认证申请", "authCity": "城市认证", "authPersonal": "个人认证", "authService": "服务认证", "authCompany": "公司认证",
|
||||||
"config": "配置", "code": "编程", "data": "数据", "cache": "缓存",
|
"config": "配置", "code": "编程", "data": "数据", "cache": "缓存",
|
||||||
|
"promote": "升级", "demote": "降级",
|
||||||
"icons": {
|
"icons": {
|
||||||
"goodslist": "https://img.icons8.com/officel/80/online-store.png",
|
"goodslist": "https://img.icons8.com/officel/80/online-store.png",
|
||||||
"paymentlist": "https://img.icons8.com/officel/80/online-payment-with-a-credit-card.png",
|
"paymentlist": "https://img.icons8.com/officel/80/online-payment-with-a-credit-card.png",
|
||||||
"meeting": "https://img.icons8.com/officel/80/video-conference.png",
|
"meeting": "https://img.icons8.com/officel/80/video-conference.png",
|
||||||
"document": "https://img.icons8.com/officel/50/documents.png",
|
"document": "https://img.icons8.com/officel/80/documents.png",
|
||||||
"contract": "https://img.icons8.com/officel/80/agreement.png",
|
"contract": "https://img.icons8.com/officel/80/agreement.png",
|
||||||
"photo": "https://img.icons8.com/officel/50/ios-photos.png",
|
"photo": "https://img.icons8.com/officel/80/ios-photos.png"
|
||||||
"credit": "https://img.icons8.com/officel/80/passport.png",
|
|
||||||
"member": "https://img.icons8.com/officel/80/person-at-home.png",
|
|
||||||
"setting": "https://img.icons8.com/officel/80/settings--v1.png",
|
|
||||||
"qrcode": "https://img.icons8.com/officel/80/qr-code.png",
|
|
||||||
"event": "https://img.icons8.com/officel/80/property-with-timer.png",
|
|
||||||
"apply": "https://img.icons8.com/officel/80/edit-property.png",
|
|
||||||
"allow": "https://img.icons8.com/officel/80/receipt-approved.png",
|
|
||||||
"email": "https://img.icons8.com/officel/80/reading-confirmation.png",
|
|
||||||
"notice": "https://img.icons8.com/officel/80/commercial.png",
|
|
||||||
"domain": "https://img.icons8.com/officel/80/categorize.png",
|
|
||||||
"market": "https://img.icons8.com/officel/80/square.png",
|
|
||||||
"message": "https://img.icons8.com/officel/80/test-partial-passed.png",
|
|
||||||
"recent": "https://img.icons8.com/officel/80/multiple-smartphones.png",
|
|
||||||
"service": "https://img.icons8.com/officel/80/activity-grid.png",
|
|
||||||
"support": "https://img.icons8.com/officel/80/customer-support.png"
|
|
||||||
},
|
},
|
||||||
"style": {
|
"style": {
|
||||||
"reject": "danger",
|
"reject": "danger",
|
||||||
|
BIN
src/gonganxitong/qrcode.png
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
src/gonganxitong/recent.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
@ -69,10 +69,8 @@ func (s service) Autogen(m *ice.Message, arg ...string) {
|
|||||||
cmd := func(arg ...string) { m.Cmd(web.SPACE, m.Option(web.DREAM), arg) }
|
cmd := func(arg ...string) { m.Cmd(web.SPACE, m.Option(web.DREAM), arg) }
|
||||||
if m.Option(web.DREAM) != "" {
|
if m.Option(web.DREAM) != "" {
|
||||||
option := func(ctx, mod string) { cmd(code.AUTOGEN, code.IMPORT, mod, ctx, nfs.SRC_OPTION_GO) }
|
option := func(ctx, mod string) { cmd(code.AUTOGEN, code.IMPORT, mod, ctx, nfs.SRC_OPTION_GO) }
|
||||||
option("shylinux.com/x/mysql-story", "db/mysql")
|
option("shylinux.com/x/ice", "devops")
|
||||||
option("shylinux.com/x/mysql-story", "db/sqlite")
|
option("shylinux.com/x/ice", "portal")
|
||||||
option("shylinux.com/x/community", "gonganxitong")
|
|
||||||
option("shylinux.com/x/community", "renzhengshouquan")
|
|
||||||
demo := func(p string) { cmd(nfs.SAVE, p, m.Cmdx(nfs.CAT, p)) }
|
demo := func(p string) { cmd(nfs.SAVE, p, m.Cmdx(nfs.CAT, p)) }
|
||||||
demo("src/template/web.code.autogen/demo.go")
|
demo("src/template/web.code.autogen/demo.go")
|
||||||
demo("src/template/web.code.go/demo.go")
|
demo("src/template/web.code.go/demo.go")
|
||||||
|
BIN
src/gonganxitong/service.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
src/gonganxitong/setting.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
src/gonganxitong/support.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
@ -7,6 +7,7 @@ refer `
|
|||||||
refer `
|
refer `
|
||||||
GORM https://gorm.io/docs/indexes.html
|
GORM https://gorm.io/docs/indexes.html
|
||||||
ICON https://igoutu.cn/icons/officel
|
ICON https://igoutu.cn/icons/officel
|
||||||
|
ICON https://igoutu.cn/icons/set/%E7%95%8C%E9%9D%A2%E8%AE%BE%E8%AE%A1--style-officel
|
||||||
公众号 https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token=494166701
|
公众号 https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token=494166701
|
||||||
`
|
`
|
||||||
field web.code.mysql.client
|
field web.code.mysql.client
|
||||||
|
@ -2,9 +2,5 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
_ "shylinux.com/x/ice/devops"
|
_ "shylinux.com/x/ice/devops"
|
||||||
_ "shylinux.com/x/mysql-story/src/db/mysql"
|
_ "shylinux.com/x/ice/portal"
|
||||||
_ "shylinux.com/x/mysql-story/src/db/sqlite"
|
|
||||||
|
|
||||||
_ "shylinux.com/x/community/src/renzhengshouquan"
|
|
||||||
_ "shylinux.com/x/community/src/renzhengshouquan/external"
|
|
||||||
)
|
)
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
package weixinpayment
|
package weixinpayment
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"crypto/x509"
|
|
||||||
"net/http"
|
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -16,8 +13,6 @@ import (
|
|||||||
"shylinux.com/x/community/src/renzhengshouquan/external/weixinpayment/model"
|
"shylinux.com/x/community/src/renzhengshouquan/external/weixinpayment/model"
|
||||||
|
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/core"
|
"github.com/wechatpay-apiv3/wechatpay-go/core"
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/core/auth/verifiers"
|
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/core/notify"
|
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/core/option"
|
"github.com/wechatpay-apiv3/wechatpay-go/core/option"
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/services/payments/jsapi"
|
"github.com/wechatpay-apiv3/wechatpay-go/services/payments/jsapi"
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/utils"
|
"github.com/wechatpay-apiv3/wechatpay-go/utils"
|
||||||
@ -67,7 +62,6 @@ func (s weixinpayment) Response(m *ice.Message, arg ...string) {
|
|||||||
resp, result, err := svc.QueryOrderByOutTradeNo(m, jsapi.QueryOrderByOutTradeNoRequest{
|
resp, result, err := svc.QueryOrderByOutTradeNo(m, jsapi.QueryOrderByOutTradeNoRequest{
|
||||||
Mchid: core.String(msg.Append(model.MCH_ID)),
|
Mchid: core.String(msg.Append(model.MCH_ID)),
|
||||||
OutTradeNo: core.String(arg[1]),
|
OutTradeNo: core.String(arg[1]),
|
||||||
// OutTradeNo: core.String("027581e07da12f52dac052d7a8ef7659"),
|
|
||||||
})
|
})
|
||||||
m.Info("weixinpayment %s %s %#v", kit.Format(resp), kit.Format(result), err)
|
m.Info("weixinpayment %s %s %#v", kit.Format(resp), kit.Format(result), err)
|
||||||
if err, ok := err.(*core.APIError); ok {
|
if err, ok := err.(*core.APIError); ok {
|
||||||
@ -77,33 +71,6 @@ func (s weixinpayment) Response(m *ice.Message, arg ...string) {
|
|||||||
if m.Warn(*resp.TradeState != "SUCCESS") {
|
if m.Warn(*resp.TradeState != "SUCCESS") {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
return
|
|
||||||
|
|
||||||
request, err := http.NewRequest(http.MethodPost, m.MergePodCmd("", m.PrefixKey()), bytes.NewBufferString(m.Option("request.data")))
|
|
||||||
if m.Warn(err) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
kit.For([]string{
|
|
||||||
"Wechatpay-Serial",
|
|
||||||
"Wechatpay-Signature",
|
|
||||||
"Wechatpay-Nonce",
|
|
||||||
"Wechatpay-Timestamp",
|
|
||||||
"Wechatpay-Signature-Type",
|
|
||||||
}, func(k string) { request.Header.Set(k, m.Option(k)) })
|
|
||||||
content := make(map[string]interface{})
|
|
||||||
|
|
||||||
mchAPIv3Key := msg.Append(model.API_KEY)
|
|
||||||
wechatPayCert, err := utils.LoadCertificate(msg.Append(model.CERT_FILE))
|
|
||||||
if m.Warn(err) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
certificateVisitor := core.NewCertificateMapWithList([]*x509.Certificate{wechatPayCert})
|
|
||||||
handler := notify.NewNotifyHandler(mchAPIv3Key, verifiers.NewSHA256WithRSAVerifier(certificateVisitor))
|
|
||||||
notifyReq, err := handler.ParseNotifyRequest(m, request, &content)
|
|
||||||
if m.Warn(err) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
m.Echo(notifyReq.Summary)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { ice.TeamCtxCmd(weixinpayment{}) }
|
func init() { ice.TeamCtxCmd(weixinpayment{}) }
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
$output>div>div.title { padding:10px; }
|
$output>div>div.title { border-left:var(--box-notice3); padding:10px; margin-left:10px; }
|
||||||
|
$output>div.from>div.title { border-left:var(--box-danger3); }
|
||||||
$output>div.head { margin-bottom:0; }
|
$output>div.head { margin-bottom:0; }
|
@ -37,10 +37,10 @@ func (s profile) List(m *ice.Message, arg ...string) {
|
|||||||
name := m.Append(model.NAME)
|
name := m.Append(model.NAME)
|
||||||
switch AuthType(kit.Int(m.Append(model.AUTH_TYPE))) {
|
switch AuthType(kit.Int(m.Append(model.AUTH_TYPE))) {
|
||||||
case AuthService:
|
case AuthService:
|
||||||
name = kit.JoinWord(m.Append(model.CITY_NAME), m.Append(model.STREET_NAME), m.Append(model.PLACE_NAME))
|
|
||||||
kit.If(s.IsWorker(m), func() { m.PushAction(s.Modify, s.Enter) }, func() { m.PushAction() })
|
kit.If(s.IsWorker(m), func() { m.PushAction(s.Modify, s.Enter) }, func() { m.PushAction() })
|
||||||
s.SelectJoinRecent(m, "")
|
s.SelectJoinRecent(m, "")
|
||||||
s.SelectJoinService(m)
|
s.SelectJoinService(m)
|
||||||
|
name = kit.JoinWord(m.Append(model.CITY_NAME), m.Append(model.STREET_NAME), m.Append(model.PLACE_NAME))
|
||||||
case AuthCompany:
|
case AuthCompany:
|
||||||
kit.If(s.IsWorker(m), func() { m.PushAction(s.Modify, s.Enter) }, func() { m.PushAction() })
|
kit.If(s.IsWorker(m), func() { m.PushAction(s.Modify, s.Enter) }, func() { m.PushAction() })
|
||||||
case AuthPersonal:
|
case AuthPersonal:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"1246961a1d880252ead389142acd037b": {
|
"1246961a1d880252ead389142acd037b": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
|
"icons": "/p/src/gonganxitong/setting.png",
|
||||||
"index": "web.team.gonganxitong.setting",
|
"index": "web.team.gonganxitong.setting",
|
||||||
"name": "服务配置",
|
"name": "服务配置",
|
||||||
"order": "103",
|
"order": "103",
|
||||||
@ -11,7 +11,7 @@
|
|||||||
},
|
},
|
||||||
"153c93456004ec2ca692d3bac2223167": {
|
"153c93456004ec2ca692d3bac2223167": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
|
"icons": "/p/src/gonganxitong/service.png",
|
||||||
"index": "web.team.gonganxitong.service",
|
"index": "web.team.gonganxitong.service",
|
||||||
"name": "服务发现",
|
"name": "服务发现",
|
||||||
"order": "904",
|
"order": "904",
|
||||||
@ -21,7 +21,7 @@
|
|||||||
"22574299a657140d473f0216b8d83710": {
|
"22574299a657140d473f0216b8d83710": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
"icons": "https://img.icons8.com/officel/50/documents.png",
|
"icons": "https://img.icons8.com/officel/80/documents.png",
|
||||||
"index": "web.team.gonganxitong.document",
|
"index": "web.team.gonganxitong.document",
|
||||||
"name": "在线文档",
|
"name": "在线文档",
|
||||||
"order": "94",
|
"order": "94",
|
||||||
@ -31,7 +31,7 @@
|
|||||||
},
|
},
|
||||||
"27c6988eeb07c78cbb49aa15c577cfa4": {
|
"27c6988eeb07c78cbb49aa15c577cfa4": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/edit-property.png",
|
"icons": "/p/src/gonganxitong/apply.png",
|
||||||
"index": "web.team.gonganxitong.apply",
|
"index": "web.team.gonganxitong.apply",
|
||||||
"name": "权限申请",
|
"name": "权限申请",
|
||||||
"order": "502",
|
"order": "502",
|
||||||
@ -53,7 +53,7 @@
|
|||||||
},
|
},
|
||||||
"3971882ea4f32c86386ad04b39d3e3d4": {
|
"3971882ea4f32c86386ad04b39d3e3d4": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/square.png",
|
"icons": "/p/src/gonganxitong/market.png",
|
||||||
"index": "web.team.gonganxitong.market",
|
"index": "web.team.gonganxitong.market",
|
||||||
"name": "人民广场",
|
"name": "人民广场",
|
||||||
"order": "901",
|
"order": "901",
|
||||||
@ -74,7 +74,7 @@
|
|||||||
"882a999b4a72a9866d9e4eef110d335a": {
|
"882a999b4a72a9866d9e4eef110d335a": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
|
"icons": "https://img.icons8.com/officel/80/ios-photos.png",
|
||||||
"index": "web.team.gonganxitong.photo",
|
"index": "web.team.gonganxitong.photo",
|
||||||
"name": "在线相册",
|
"name": "在线相册",
|
||||||
"order": "96",
|
"order": "96",
|
||||||
@ -84,7 +84,7 @@
|
|||||||
},
|
},
|
||||||
"8ce4dfb877e04e3be5144253fdd5d8ff": {
|
"8ce4dfb877e04e3be5144253fdd5d8ff": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
|
"icons": "/p/src/gonganxitong/allow.png",
|
||||||
"index": "web.team.gonganxitong.allow",
|
"index": "web.team.gonganxitong.allow",
|
||||||
"name": "权限审批",
|
"name": "权限审批",
|
||||||
"order": "503",
|
"order": "503",
|
||||||
@ -94,7 +94,7 @@
|
|||||||
},
|
},
|
||||||
"a53e36dcca735ef90b649fec546f520e": {
|
"a53e36dcca735ef90b649fec546f520e": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/passport.png",
|
"icons": "/p/src/gonganxitong/credit.png",
|
||||||
"index": "web.team.gonganxitong.credit",
|
"index": "web.team.gonganxitong.credit",
|
||||||
"name": "用户名片",
|
"name": "用户名片",
|
||||||
"order": "101",
|
"order": "101",
|
||||||
@ -103,7 +103,7 @@
|
|||||||
},
|
},
|
||||||
"a89a7c09e326295aaa7e7ea3d66fb28a": {
|
"a89a7c09e326295aaa7e7ea3d66fb28a": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/customer-support.png",
|
"icons": "/p/src/gonganxitong/support.png",
|
||||||
"index": "web.team.gonganxitong.support",
|
"index": "web.team.gonganxitong.support",
|
||||||
"name": "客服支持",
|
"name": "客服支持",
|
||||||
"order": "905",
|
"order": "905",
|
||||||
@ -128,7 +128,7 @@
|
|||||||
},
|
},
|
||||||
"bdec92d5849b2a60a8811cff494f2391": {
|
"bdec92d5849b2a60a8811cff494f2391": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
|
"icons": "/p/src/gonganxitong/event.png",
|
||||||
"index": "web.team.gonganxitong.event",
|
"index": "web.team.gonganxitong.event",
|
||||||
"name": "事件流",
|
"name": "事件流",
|
||||||
"order": "504",
|
"order": "504",
|
||||||
@ -138,7 +138,7 @@
|
|||||||
},
|
},
|
||||||
"be08ca65be90feca325df128a06e440f": {
|
"be08ca65be90feca325df128a06e440f": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
|
"icons": "/p/src/gonganxitong/recent.png",
|
||||||
"index": "web.team.gonganxitong.recent",
|
"index": "web.team.gonganxitong.recent",
|
||||||
"name": "最近访问",
|
"name": "最近访问",
|
||||||
"order": "903",
|
"order": "903",
|
||||||
@ -147,7 +147,7 @@
|
|||||||
},
|
},
|
||||||
"c1526ecd405021d6d47798c066bf70c0": {
|
"c1526ecd405021d6d47798c066bf70c0": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/commercial.png",
|
"icons": "/p/src/gonganxitong/notice.png",
|
||||||
"index": "web.team.gonganxitong.notice",
|
"index": "web.team.gonganxitong.notice",
|
||||||
"name": "通知公告",
|
"name": "通知公告",
|
||||||
"order": "505",
|
"order": "505",
|
||||||
@ -187,7 +187,7 @@
|
|||||||
},
|
},
|
||||||
"e2117b53c036a72fe7e4885449488a6f": {
|
"e2117b53c036a72fe7e4885449488a6f": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/qr-code.png",
|
"icons": "/p/src/gonganxitong/qrcode.png",
|
||||||
"index": "web.team.gonganxitong.qrcode",
|
"index": "web.team.gonganxitong.qrcode",
|
||||||
"name": "场景码",
|
"name": "场景码",
|
||||||
"order": "501",
|
"order": "501",
|
||||||
@ -208,7 +208,7 @@
|
|||||||
},
|
},
|
||||||
"f28c03b5bdbbe92ebc89dabca5e7d4de": {
|
"f28c03b5bdbbe92ebc89dabca5e7d4de": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
|
"icons": "/p/src/gonganxitong/member.png",
|
||||||
"index": "web.team.gonganxitong.member",
|
"index": "web.team.gonganxitong.member",
|
||||||
"name": "组织成员",
|
"name": "组织成员",
|
||||||
"order": "102",
|
"order": "102",
|
||||||
@ -218,7 +218,7 @@
|
|||||||
},
|
},
|
||||||
"fd1884bbeb1f1a83f4e12f857bfe5b15": {
|
"fd1884bbeb1f1a83f4e12f857bfe5b15": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
|
"icons": "/p/src/gonganxitong/message.png",
|
||||||
"index": "web.team.gonganxitong.message",
|
"index": "web.team.gonganxitong.message",
|
||||||
"name": "消息待办",
|
"name": "消息待办",
|
||||||
"order": "902",
|
"order": "902",
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
},
|
},
|
||||||
"030e2a53ca3561a0d0d123c133a88b59": {
|
"030e2a53ca3561a0d0d123c133a88b59": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/qr-code.png",
|
"icons": "/p/src/gonganxitong/qrcode.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.qrcode",
|
"index": "web.team.guanlixitong.qrcode",
|
||||||
"name": "场景码",
|
"name": "场景码",
|
||||||
"order": "1",
|
"order": "1",
|
||||||
@ -25,7 +25,7 @@
|
|||||||
},
|
},
|
||||||
"0521e637b051a0e175a6070eded1bcef": {
|
"0521e637b051a0e175a6070eded1bcef": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
|
"icons": "/p/src/gonganxitong/setting.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.setting",
|
"index": "web.team.guanlixitong.setting",
|
||||||
"name": "服务配置",
|
"name": "服务配置",
|
||||||
"order": "102",
|
"order": "102",
|
||||||
@ -35,7 +35,7 @@
|
|||||||
},
|
},
|
||||||
"057616b7366e1930ef4e4a921fe45f1f": {
|
"057616b7366e1930ef4e4a921fe45f1f": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
|
"icons": "/p/src/gonganxitong/service.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.service",
|
"index": "web.team.guanlixitong.service",
|
||||||
"name": "服务发现",
|
"name": "服务发现",
|
||||||
"order": "100",
|
"order": "100",
|
||||||
@ -61,7 +61,7 @@
|
|||||||
},
|
},
|
||||||
"2fd80c581b69c9f67420e793804dbd9f": {
|
"2fd80c581b69c9f67420e793804dbd9f": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/passport.png",
|
"icons": "/p/src/gonganxitong/credit.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.credit",
|
"index": "web.team.guanlixitong.credit",
|
||||||
"name": "用户名片",
|
"name": "用户名片",
|
||||||
"order": "102",
|
"order": "102",
|
||||||
@ -70,7 +70,7 @@
|
|||||||
},
|
},
|
||||||
"30bfa47cab4cd689901fd2e1b87eb235": {
|
"30bfa47cab4cd689901fd2e1b87eb235": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
|
"icons": "/p/src/gonganxitong/allow.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.allow",
|
"index": "web.team.guanlixitong.allow",
|
||||||
"name": "权限审批",
|
"name": "权限审批",
|
||||||
"order": "4",
|
"order": "4",
|
||||||
@ -86,9 +86,16 @@
|
|||||||
"time": "2024-11-08 14:04:38.597"
|
"time": "2024-11-08 14:04:38.597"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"45a953c0d57edbfcece5f53e62d04bd3": {
|
||||||
|
"meta": {
|
||||||
|
"icons": "/p/usr/local/work/20240724-enterprise/src/guanlixitong/src/gonganxitong/spendlist.png",
|
||||||
|
"index": "web.team.guanlixitong.spendlist",
|
||||||
|
"time": "2025-04-19 08:28:11.730"
|
||||||
|
}
|
||||||
|
},
|
||||||
"5695d50b28872804a01d7c923ee91cd1": {
|
"5695d50b28872804a01d7c923ee91cd1": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
|
"icons": "/p/src/gonganxitong/member.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.member",
|
"index": "web.team.guanlixitong.member",
|
||||||
"name": "团队成员",
|
"name": "团队成员",
|
||||||
"order": "5",
|
"order": "5",
|
||||||
@ -104,7 +111,7 @@
|
|||||||
},
|
},
|
||||||
"78d29149539be88d7561b8e17bd65882": {
|
"78d29149539be88d7561b8e17bd65882": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/square.png",
|
"icons": "/p/src/gonganxitong/market.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.market",
|
"index": "web.team.guanlixitong.market",
|
||||||
"name": "人民广场",
|
"name": "人民广场",
|
||||||
"order": "100",
|
"order": "100",
|
||||||
@ -124,7 +131,7 @@
|
|||||||
},
|
},
|
||||||
"809b63c1819fc3ac1452e3b71889aec5": {
|
"809b63c1819fc3ac1452e3b71889aec5": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/commercial.png",
|
"icons": "/p/src/gonganxitong/notice.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.notice",
|
"index": "web.team.guanlixitong.notice",
|
||||||
"name": "通知公告",
|
"name": "通知公告",
|
||||||
"order": "70",
|
"order": "70",
|
||||||
@ -135,7 +142,7 @@
|
|||||||
"8548d5ce3faee7bd508d2fb53d57f35b": {
|
"8548d5ce3faee7bd508d2fb53d57f35b": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
|
"icons": "https://img.icons8.com/officel/80/ios-photos.png",
|
||||||
"index": "web.team.guanlixitong.photo",
|
"index": "web.team.guanlixitong.photo",
|
||||||
"name": "在线相册",
|
"name": "在线相册",
|
||||||
"order": "95",
|
"order": "95",
|
||||||
@ -145,7 +152,7 @@
|
|||||||
},
|
},
|
||||||
"9c18032c5bc252f2986e1b20e7e77db7": {
|
"9c18032c5bc252f2986e1b20e7e77db7": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
|
"icons": "/p/src/gonganxitong/event.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.event",
|
"index": "web.team.guanlixitong.event",
|
||||||
"name": "事件流",
|
"name": "事件流",
|
||||||
"order": "2",
|
"order": "2",
|
||||||
@ -155,7 +162,7 @@
|
|||||||
},
|
},
|
||||||
"9fffbe375e2d2a1a8e6cb1f341e35b55": {
|
"9fffbe375e2d2a1a8e6cb1f341e35b55": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
|
"icons": "/p/src/gonganxitong/recent.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.recent",
|
"index": "web.team.guanlixitong.recent",
|
||||||
"name": "最近访问",
|
"name": "最近访问",
|
||||||
"order": "100",
|
"order": "100",
|
||||||
@ -170,6 +177,13 @@
|
|||||||
"time": "2024-08-07 08:09:16.533"
|
"time": "2024-08-07 08:09:16.533"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"a59e847a365ef89dd35e250e9b663ac3": {
|
||||||
|
"meta": {
|
||||||
|
"icons": "/p/usr/local/work/20240724-enterprise/src/guanlixitong/src/gonganxitong/quotalist.png",
|
||||||
|
"index": "web.team.guanlixitong.quotalist",
|
||||||
|
"time": "2025-04-19 08:28:11.714"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ace6350cd663c693ddf47e81625c8a7a": {
|
"ace6350cd663c693ddf47e81625c8a7a": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/meeting.png",
|
"icons": "https://img.icons8.com/officel/80/meeting.png",
|
||||||
@ -202,7 +216,7 @@
|
|||||||
},
|
},
|
||||||
"c27ad1df8aa9059d6018fb5add5ee546": {
|
"c27ad1df8aa9059d6018fb5add5ee546": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/customer-support.png",
|
"icons": "/p/src/gonganxitong/support.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.support",
|
"index": "web.team.guanlixitong.support",
|
||||||
"name": "客服支持",
|
"name": "客服支持",
|
||||||
"order": "100",
|
"order": "100",
|
||||||
@ -219,7 +233,7 @@
|
|||||||
},
|
},
|
||||||
"c36d47e2611b0d1e7a14088bc3293d04": {
|
"c36d47e2611b0d1e7a14088bc3293d04": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/edit-property.png",
|
"icons": "/p/src/gonganxitong/apply.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.apply",
|
"index": "web.team.guanlixitong.apply",
|
||||||
"name": "权限申请",
|
"name": "权限申请",
|
||||||
"order": "3",
|
"order": "3",
|
||||||
@ -240,7 +254,7 @@
|
|||||||
},
|
},
|
||||||
"d25f3f88261ead2a0079415a26aa6853": {
|
"d25f3f88261ead2a0079415a26aa6853": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
|
"icons": "/p/src/gonganxitong/message.png?pod=20240724-community",
|
||||||
"index": "web.team.guanlixitong.message",
|
"index": "web.team.guanlixitong.message",
|
||||||
"name": "消息待办",
|
"name": "消息待办",
|
||||||
"order": "100",
|
"order": "100",
|
||||||
@ -261,7 +275,7 @@
|
|||||||
"e595a0bbefbcfaa89f45dd875cc6fe0b": {
|
"e595a0bbefbcfaa89f45dd875cc6fe0b": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
"icons": "https://img.icons8.com/officel/50/documents.png",
|
"icons": "https://img.icons8.com/officel/80/documents.png",
|
||||||
"index": "web.team.guanlixitong.document",
|
"index": "web.team.guanlixitong.document",
|
||||||
"name": "在线文档",
|
"name": "在线文档",
|
||||||
"order": "93",
|
"order": "93",
|
||||||
|
@ -1,4 +1,11 @@
|
|||||||
{
|
{
|
||||||
|
"1e158e9083bfe07ac5a35353fdcdf62e": {
|
||||||
|
"meta": {
|
||||||
|
"icons": "/p/src/huodongzuzhi/src/gonganxitong/spendlist.png",
|
||||||
|
"index": "web.team.huodongzuzhi.spendlist",
|
||||||
|
"time": "2025-04-19 08:28:11.641"
|
||||||
|
}
|
||||||
|
},
|
||||||
"2c5f42d846b438a22e62b19617ebf511": {
|
"2c5f42d846b438a22e62b19617ebf511": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
@ -12,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
"3229a1bc7aa326822c4f4f267e038185": {
|
"3229a1bc7aa326822c4f4f267e038185": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
|
"icons": "/p/src/gonganxitong/member.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.member",
|
"index": "web.team.huodongzuzhi.member",
|
||||||
"name": "组织成员",
|
"name": "组织成员",
|
||||||
"order": "102",
|
"order": "102",
|
||||||
@ -20,6 +27,13 @@
|
|||||||
"time": "2024-08-25 12:53:13.205"
|
"time": "2024-08-25 12:53:13.205"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"3745803fab1393312d3e1d2e589e1e9f": {
|
||||||
|
"meta": {
|
||||||
|
"icons": "/p/src/huodongzuzhi/src/gonganxitong/quotalist.png",
|
||||||
|
"index": "web.team.huodongzuzhi.quotalist",
|
||||||
|
"time": "2025-04-19 08:28:11.635"
|
||||||
|
}
|
||||||
|
},
|
||||||
"3e9e80db9ae3768b7a44774c7afa5f65": {
|
"3e9e80db9ae3768b7a44774c7afa5f65": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
@ -34,7 +48,7 @@
|
|||||||
"49432b349d456f4108dcfa7d28435bac": {
|
"49432b349d456f4108dcfa7d28435bac": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
"icons": "https://img.icons8.com/officel/50/documents.png",
|
"icons": "https://img.icons8.com/officel/80/documents.png",
|
||||||
"index": "web.team.huodongzuzhi.document",
|
"index": "web.team.huodongzuzhi.document",
|
||||||
"name": "在线文档",
|
"name": "在线文档",
|
||||||
"order": "93",
|
"order": "93",
|
||||||
@ -44,7 +58,7 @@
|
|||||||
},
|
},
|
||||||
"595eb34d7ebe62e160c02ed5b127d637": {
|
"595eb34d7ebe62e160c02ed5b127d637": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
|
"icons": "/p/src/gonganxitong/message.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.message",
|
"index": "web.team.huodongzuzhi.message",
|
||||||
"name": "消息待办",
|
"name": "消息待办",
|
||||||
"order": "902",
|
"order": "902",
|
||||||
@ -53,7 +67,7 @@
|
|||||||
},
|
},
|
||||||
"780939d4c095806dba8711d8753cbdf7": {
|
"780939d4c095806dba8711d8753cbdf7": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/customer-support.png",
|
"icons": "/p/src/gonganxitong/support.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.support",
|
"index": "web.team.huodongzuzhi.support",
|
||||||
"name": "客服支持",
|
"name": "客服支持",
|
||||||
"order": "905",
|
"order": "905",
|
||||||
@ -62,7 +76,7 @@
|
|||||||
},
|
},
|
||||||
"7a02092e26efa3eb324259a5d28bc8f3": {
|
"7a02092e26efa3eb324259a5d28bc8f3": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/passport.png",
|
"icons": "/p/src/gonganxitong/credit.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.credit",
|
"index": "web.team.huodongzuzhi.credit",
|
||||||
"name": "用户名片",
|
"name": "用户名片",
|
||||||
"order": "101",
|
"order": "101",
|
||||||
@ -71,7 +85,7 @@
|
|||||||
},
|
},
|
||||||
"7a7da5c5e42a9aa1d88109fa8620d465": {
|
"7a7da5c5e42a9aa1d88109fa8620d465": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
|
"icons": "/p/src/gonganxitong/event.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.event",
|
"index": "web.team.huodongzuzhi.event",
|
||||||
"name": "事件流",
|
"name": "事件流",
|
||||||
"order": "504",
|
"order": "504",
|
||||||
@ -81,7 +95,7 @@
|
|||||||
},
|
},
|
||||||
"94996b048561b144e2a47ff6cc2a9e5c": {
|
"94996b048561b144e2a47ff6cc2a9e5c": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
|
"icons": "/p/src/gonganxitong/service.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.service",
|
"index": "web.team.huodongzuzhi.service",
|
||||||
"name": "服务发现",
|
"name": "服务发现",
|
||||||
"order": "904",
|
"order": "904",
|
||||||
@ -99,7 +113,7 @@
|
|||||||
},
|
},
|
||||||
"aa74e6bf51d1d1abab57fdb03b08c5c2": {
|
"aa74e6bf51d1d1abab57fdb03b08c5c2": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/square.png",
|
"icons": "/p/src/gonganxitong/market.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.market",
|
"index": "web.team.huodongzuzhi.market",
|
||||||
"name": "人民广场",
|
"name": "人民广场",
|
||||||
"order": "901",
|
"order": "901",
|
||||||
@ -108,7 +122,7 @@
|
|||||||
},
|
},
|
||||||
"baec1db59218f2da9d560fa719c6a12f": {
|
"baec1db59218f2da9d560fa719c6a12f": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/edit-property.png",
|
"icons": "/p/src/gonganxitong/apply.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.apply",
|
"index": "web.team.huodongzuzhi.apply",
|
||||||
"name": "权限申请",
|
"name": "权限申请",
|
||||||
"order": "502",
|
"order": "502",
|
||||||
@ -118,7 +132,7 @@
|
|||||||
},
|
},
|
||||||
"c3fbb2049e914eda48f3f7d32c207679": {
|
"c3fbb2049e914eda48f3f7d32c207679": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/qr-code.png",
|
"icons": "/p/src/gonganxitong/qrcode.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.qrcode",
|
"index": "web.team.huodongzuzhi.qrcode",
|
||||||
"name": "场景码",
|
"name": "场景码",
|
||||||
"order": "501",
|
"order": "501",
|
||||||
@ -128,7 +142,7 @@
|
|||||||
},
|
},
|
||||||
"dae66500cd381d400f15cd4c9efc05b1": {
|
"dae66500cd381d400f15cd4c9efc05b1": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
|
"icons": "/p/src/gonganxitong/allow.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.allow",
|
"index": "web.team.huodongzuzhi.allow",
|
||||||
"name": "权限审批",
|
"name": "权限审批",
|
||||||
"order": "503",
|
"order": "503",
|
||||||
@ -150,7 +164,7 @@
|
|||||||
"e5ce14fa8331355abad8cc68c25c74a4": {
|
"e5ce14fa8331355abad8cc68c25c74a4": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
|
"icons": "https://img.icons8.com/officel/80/ios-photos.png",
|
||||||
"index": "web.team.huodongzuzhi.photo",
|
"index": "web.team.huodongzuzhi.photo",
|
||||||
"name": "在线相册",
|
"name": "在线相册",
|
||||||
"order": "95",
|
"order": "95",
|
||||||
@ -171,7 +185,7 @@
|
|||||||
},
|
},
|
||||||
"ee364ed77eb0383868d48260f8b5aeb2": {
|
"ee364ed77eb0383868d48260f8b5aeb2": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/commercial.png",
|
"icons": "/p/src/gonganxitong/notice.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.notice",
|
"index": "web.team.huodongzuzhi.notice",
|
||||||
"name": "通知公告",
|
"name": "通知公告",
|
||||||
"order": "505",
|
"order": "505",
|
||||||
@ -181,7 +195,7 @@
|
|||||||
},
|
},
|
||||||
"f77a8f8d7dfe49f8e82ecd8d0b99f233": {
|
"f77a8f8d7dfe49f8e82ecd8d0b99f233": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
|
"icons": "/p/src/gonganxitong/recent.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.recent",
|
"index": "web.team.huodongzuzhi.recent",
|
||||||
"name": "最近访问",
|
"name": "最近访问",
|
||||||
"order": "903",
|
"order": "903",
|
||||||
@ -190,7 +204,7 @@
|
|||||||
},
|
},
|
||||||
"f78dbbb843f056f5db196c342f1184bc": {
|
"f78dbbb843f056f5db196c342f1184bc": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
|
"icons": "/p/src/gonganxitong/setting.png?pod=20240724-community",
|
||||||
"index": "web.team.huodongzuzhi.setting",
|
"index": "web.team.huodongzuzhi.setting",
|
||||||
"name": "服务配置",
|
"name": "服务配置",
|
||||||
"order": "103",
|
"order": "103",
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
"enable": "false",
|
"enable": "false",
|
||||||
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
|
"icons": "https://img.icons8.com/officel/80/ios-photos.png",
|
||||||
"index": "web.team.renzhengshouquan.photo",
|
"index": "web.team.renzhengshouquan.photo",
|
||||||
"name": "在线相册",
|
"name": "在线相册",
|
||||||
"order": "96",
|
"order": "96",
|
||||||
@ -13,7 +13,7 @@
|
|||||||
},
|
},
|
||||||
"0d7f068029dbf7f9f0d307070cc3a79b": {
|
"0d7f068029dbf7f9f0d307070cc3a79b": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
|
"icons": "/p/src/gonganxitong/allow.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.allow",
|
"index": "web.team.renzhengshouquan.allow",
|
||||||
"name": "权限审批",
|
"name": "权限审批",
|
||||||
"order": "503",
|
"order": "503",
|
||||||
@ -25,7 +25,7 @@
|
|||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
"enable": "false",
|
"enable": "false",
|
||||||
"icons": "https://img.icons8.com/officel/50/documents.png",
|
"icons": "https://img.icons8.com/officel/80/documents.png",
|
||||||
"index": "web.team.renzhengshouquan.document",
|
"index": "web.team.renzhengshouquan.document",
|
||||||
"name": "在线文档",
|
"name": "在线文档",
|
||||||
"order": "95",
|
"order": "95",
|
||||||
@ -45,6 +45,13 @@
|
|||||||
"time": "2024-11-25 18:11:44.121"
|
"time": "2024-11-25 18:11:44.121"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"1d5fb457d3223d26afd076c38d7daf66": {
|
||||||
|
"meta": {
|
||||||
|
"icons": "/p/src/renzhengshouquan/src/gonganxitong/quotalist.png",
|
||||||
|
"index": "web.team.renzhengshouquan.quotalist",
|
||||||
|
"time": "2025-04-19 08:28:11.519"
|
||||||
|
}
|
||||||
|
},
|
||||||
"1d7c44014bc23b3db4551534359c95c4": {
|
"1d7c44014bc23b3db4551534359c95c4": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/video-conference.png",
|
"icons": "https://img.icons8.com/officel/80/video-conference.png",
|
||||||
@ -56,6 +63,13 @@
|
|||||||
"type": "company,school,street"
|
"type": "company,school,street"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"21887f37ce8dabe4c52648ea096f8e4d": {
|
||||||
|
"meta": {
|
||||||
|
"icons": "/p/src/renzhengshouquan/src/gonganxitong/spendlist.png",
|
||||||
|
"index": "web.team.renzhengshouquan.spendlist",
|
||||||
|
"time": "2025-04-19 08:28:11.518"
|
||||||
|
}
|
||||||
|
},
|
||||||
"2a065e0a48b909ae79fbb3dd750e1eb5": {
|
"2a065e0a48b909ae79fbb3dd750e1eb5": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/id-verified.png",
|
"icons": "https://img.icons8.com/officel/80/id-verified.png",
|
||||||
@ -69,7 +83,7 @@
|
|||||||
},
|
},
|
||||||
"456d3a031a140d43f54690ea7203628d": {
|
"456d3a031a140d43f54690ea7203628d": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
|
"icons": "/p/src/gonganxitong/event.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.event",
|
"index": "web.team.renzhengshouquan.event",
|
||||||
"name": "事件流",
|
"name": "事件流",
|
||||||
"order": "504",
|
"order": "504",
|
||||||
@ -91,7 +105,7 @@
|
|||||||
"4cac9ca99ccb8db395f703434647f5f3": {
|
"4cac9ca99ccb8db395f703434647f5f3": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"enable": "false",
|
"enable": "false",
|
||||||
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
|
"icons": "/p/src/gonganxitong/setting.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.setting",
|
"index": "web.team.renzhengshouquan.setting",
|
||||||
"name": "服务配置",
|
"name": "服务配置",
|
||||||
"order": "103",
|
"order": "103",
|
||||||
@ -113,7 +127,7 @@
|
|||||||
},
|
},
|
||||||
"52fb3a7d85d879b638cc246850b236f6": {
|
"52fb3a7d85d879b638cc246850b236f6": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/qr-code.png",
|
"icons": "/p/src/gonganxitong/qrcode.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.qrcode",
|
"index": "web.team.renzhengshouquan.qrcode",
|
||||||
"name": "场景码",
|
"name": "场景码",
|
||||||
"order": "501",
|
"order": "501",
|
||||||
@ -148,7 +162,7 @@
|
|||||||
},
|
},
|
||||||
"732373815fa26c85ad04dd57ca57db39": {
|
"732373815fa26c85ad04dd57ca57db39": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/edit-property.png",
|
"icons": "/p/src/gonganxitong/apply.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.apply",
|
"index": "web.team.renzhengshouquan.apply",
|
||||||
"name": "权限申请",
|
"name": "权限申请",
|
||||||
"order": "502",
|
"order": "502",
|
||||||
@ -214,7 +228,7 @@
|
|||||||
},
|
},
|
||||||
"9e52a4f0a1a8d35c14b40d14b0d9cff1": {
|
"9e52a4f0a1a8d35c14b40d14b0d9cff1": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
|
"icons": "/p/src/gonganxitong/message.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.message",
|
"index": "web.team.renzhengshouquan.message",
|
||||||
"name": "消息待办",
|
"name": "消息待办",
|
||||||
"order": "902",
|
"order": "902",
|
||||||
@ -223,7 +237,7 @@
|
|||||||
},
|
},
|
||||||
"a040dfa713a6fa9533b3184244dbbb74": {
|
"a040dfa713a6fa9533b3184244dbbb74": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/customer-support.png",
|
"icons": "/p/src/gonganxitong/support.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.support",
|
"index": "web.team.renzhengshouquan.support",
|
||||||
"name": "客服支持",
|
"name": "客服支持",
|
||||||
"order": "905",
|
"order": "905",
|
||||||
@ -262,7 +276,7 @@
|
|||||||
"bfecb55b11fe68186270fe1b4b8de8cf": {
|
"bfecb55b11fe68186270fe1b4b8de8cf": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"enable": "false",
|
"enable": "false",
|
||||||
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
|
"icons": "/p/src/gonganxitong/member.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.member",
|
"index": "web.team.renzhengshouquan.member",
|
||||||
"name": "组织成员",
|
"name": "组织成员",
|
||||||
"order": "102",
|
"order": "102",
|
||||||
@ -284,7 +298,7 @@
|
|||||||
},
|
},
|
||||||
"d9f55b517f4b2579693523ed3b5bd088": {
|
"d9f55b517f4b2579693523ed3b5bd088": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/square.png",
|
"icons": "/p/src/gonganxitong/market.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.market",
|
"index": "web.team.renzhengshouquan.market",
|
||||||
"name": "人民广场",
|
"name": "人民广场",
|
||||||
"order": "901",
|
"order": "901",
|
||||||
@ -305,7 +319,7 @@
|
|||||||
},
|
},
|
||||||
"e038450591f3c8e7babc0c21b1c6fa6d": {
|
"e038450591f3c8e7babc0c21b1c6fa6d": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
|
"icons": "/p/src/gonganxitong/recent.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.recent",
|
"index": "web.team.renzhengshouquan.recent",
|
||||||
"name": "最近访问",
|
"name": "最近访问",
|
||||||
"order": "903",
|
"order": "903",
|
||||||
@ -314,7 +328,7 @@
|
|||||||
},
|
},
|
||||||
"ecfb11fad5b4bdf21384e2e1ff571598": {
|
"ecfb11fad5b4bdf21384e2e1ff571598": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/commercial.png",
|
"icons": "/p/src/gonganxitong/notice.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.notice",
|
"index": "web.team.renzhengshouquan.notice",
|
||||||
"name": "通知公告",
|
"name": "通知公告",
|
||||||
"order": "505",
|
"order": "505",
|
||||||
@ -325,7 +339,7 @@
|
|||||||
"f669e15e1c1c9da2bd3ea0c58abc0bd3": {
|
"f669e15e1c1c9da2bd3ea0c58abc0bd3": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"enable": "false",
|
"enable": "false",
|
||||||
"icons": "https://img.icons8.com/officel/80/passport.png",
|
"icons": "/p/src/gonganxitong/credit.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.credit",
|
"index": "web.team.renzhengshouquan.credit",
|
||||||
"name": "用户名片",
|
"name": "用户名片",
|
||||||
"order": "101",
|
"order": "101",
|
||||||
@ -334,7 +348,7 @@
|
|||||||
},
|
},
|
||||||
"f6b093d122ff3cec363b00093e0a6f19": {
|
"f6b093d122ff3cec363b00093e0a6f19": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
|
"icons": "/p/src/gonganxitong/service.png?pod=20240724-community",
|
||||||
"index": "web.team.renzhengshouquan.service",
|
"index": "web.team.renzhengshouquan.service",
|
||||||
"name": "服务发现",
|
"name": "服务发现",
|
||||||
"order": "904",
|
"order": "904",
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
},
|
},
|
||||||
"2ed70cba7eb6d3cf5fbe712c63da87a7": {
|
"2ed70cba7eb6d3cf5fbe712c63da87a7": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/square.png",
|
"icons": "/p/src/gonganxitong/market.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.market",
|
"index": "web.team.yuehaoxitong.market",
|
||||||
"name": "人民广场",
|
"name": "人民广场",
|
||||||
"order": "901",
|
"order": "901",
|
||||||
@ -41,7 +41,7 @@
|
|||||||
},
|
},
|
||||||
"2f55ab55e536839d2f400ed50832bfb9": {
|
"2f55ab55e536839d2f400ed50832bfb9": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/passport.png",
|
"icons": "/p/src/gonganxitong/credit.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.credit",
|
"index": "web.team.yuehaoxitong.credit",
|
||||||
"name": "用户名片",
|
"name": "用户名片",
|
||||||
"order": "101",
|
"order": "101",
|
||||||
@ -61,7 +61,7 @@
|
|||||||
},
|
},
|
||||||
"377f3c0dae9dbf423a8e188bfd245b7a": {
|
"377f3c0dae9dbf423a8e188bfd245b7a": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/multiple-smartphones.png",
|
"icons": "/p/src/gonganxitong/recent.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.recent",
|
"index": "web.team.yuehaoxitong.recent",
|
||||||
"name": "最近访问",
|
"name": "最近访问",
|
||||||
"order": "903",
|
"order": "903",
|
||||||
@ -70,7 +70,7 @@
|
|||||||
},
|
},
|
||||||
"3b6da44aaf19fdb06c84fe352569359f": {
|
"3b6da44aaf19fdb06c84fe352569359f": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/qr-code.png",
|
"icons": "/p/src/gonganxitong/qrcode.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.qrcode",
|
"index": "web.team.yuehaoxitong.qrcode",
|
||||||
"name": "场景码",
|
"name": "场景码",
|
||||||
"order": "501",
|
"order": "501",
|
||||||
@ -80,7 +80,7 @@
|
|||||||
},
|
},
|
||||||
"46f2ba39a0620f04aab46a999c359a2b": {
|
"46f2ba39a0620f04aab46a999c359a2b": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/receipt-approved.png",
|
"icons": "/p/src/gonganxitong/allow.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.allow",
|
"index": "web.team.yuehaoxitong.allow",
|
||||||
"name": "权限审批",
|
"name": "权限审批",
|
||||||
"order": "503",
|
"order": "503",
|
||||||
@ -90,7 +90,7 @@
|
|||||||
},
|
},
|
||||||
"55ef7eaaa62b19b296b633c1c550f756": {
|
"55ef7eaaa62b19b296b633c1c550f756": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/settings--v1.png",
|
"icons": "/p/src/gonganxitong/setting.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.setting",
|
"index": "web.team.yuehaoxitong.setting",
|
||||||
"name": "服务配置",
|
"name": "服务配置",
|
||||||
"order": "103",
|
"order": "103",
|
||||||
@ -129,6 +129,13 @@
|
|||||||
"time": "2024-08-11 09:30:00.538"
|
"time": "2024-08-11 09:30:00.538"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"79934714b27083087d2ea771e19192d3": {
|
||||||
|
"meta": {
|
||||||
|
"icons": "/p/src/yuehaoxitong/src/gonganxitong/spendlist.png",
|
||||||
|
"index": "web.team.yuehaoxitong.spendlist",
|
||||||
|
"time": "2025-04-19 08:28:11.381"
|
||||||
|
}
|
||||||
|
},
|
||||||
"8d3a66184c4da374081216d6c4d491b5": {
|
"8d3a66184c4da374081216d6c4d491b5": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
@ -142,7 +149,7 @@
|
|||||||
},
|
},
|
||||||
"98d6d53a44113b33a82c4e914cb23489": {
|
"98d6d53a44113b33a82c4e914cb23489": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/test-partial-passed.png",
|
"icons": "/p/src/gonganxitong/message.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.message",
|
"index": "web.team.yuehaoxitong.message",
|
||||||
"name": "消息待办",
|
"name": "消息待办",
|
||||||
"order": "902",
|
"order": "902",
|
||||||
@ -152,7 +159,7 @@
|
|||||||
"a3d526b8fc09121a7186775cca6d9026": {
|
"a3d526b8fc09121a7186775cca6d9026": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
"icons": "https://img.icons8.com/officel/50/ios-photos.png",
|
"icons": "https://img.icons8.com/officel/80/ios-photos.png",
|
||||||
"index": "web.team.yuehaoxitong.photo",
|
"index": "web.team.yuehaoxitong.photo",
|
||||||
"name": "在线相册",
|
"name": "在线相册",
|
||||||
"order": "95",
|
"order": "95",
|
||||||
@ -162,7 +169,7 @@
|
|||||||
},
|
},
|
||||||
"a56cb18131ff45616849e4555e29d35d": {
|
"a56cb18131ff45616849e4555e29d35d": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/edit-property.png",
|
"icons": "/p/src/gonganxitong/apply.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.apply",
|
"index": "web.team.yuehaoxitong.apply",
|
||||||
"name": "权限申请",
|
"name": "权限申请",
|
||||||
"order": "502",
|
"order": "502",
|
||||||
@ -182,7 +189,7 @@
|
|||||||
},
|
},
|
||||||
"b66f57a7a84d982b1b3a74ac3bdc045c": {
|
"b66f57a7a84d982b1b3a74ac3bdc045c": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/commercial.png",
|
"icons": "/p/src/gonganxitong/notice.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.notice",
|
"index": "web.team.yuehaoxitong.notice",
|
||||||
"name": "通知公告",
|
"name": "通知公告",
|
||||||
"order": "505",
|
"order": "505",
|
||||||
@ -192,7 +199,7 @@
|
|||||||
},
|
},
|
||||||
"b811b4ed8b1b372958bbb4bb1b2709b8": {
|
"b811b4ed8b1b372958bbb4bb1b2709b8": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/customer-support.png",
|
"icons": "/p/src/gonganxitong/support.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.support",
|
"index": "web.team.yuehaoxitong.support",
|
||||||
"name": "客服支持",
|
"name": "客服支持",
|
||||||
"order": "905",
|
"order": "905",
|
||||||
@ -222,7 +229,7 @@
|
|||||||
},
|
},
|
||||||
"c14a5a400c933fe799ed10b069990865": {
|
"c14a5a400c933fe799ed10b069990865": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/person-at-home.png",
|
"icons": "/p/src/gonganxitong/member.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.member",
|
"index": "web.team.yuehaoxitong.member",
|
||||||
"name": "组织成员",
|
"name": "组织成员",
|
||||||
"order": "102",
|
"order": "102",
|
||||||
@ -230,10 +237,17 @@
|
|||||||
"time": "2024-08-12 08:56:10.816"
|
"time": "2024-08-12 08:56:10.816"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"ca139b34295fc6d13d97430764cf3334": {
|
||||||
|
"meta": {
|
||||||
|
"icons": "/p/src/yuehaoxitong/src/gonganxitong/quotalist.png",
|
||||||
|
"index": "web.team.yuehaoxitong.quotalist",
|
||||||
|
"time": "2025-04-19 08:28:11.483"
|
||||||
|
}
|
||||||
|
},
|
||||||
"cb5d53223069ec8d9914ec30ca84ec4a": {
|
"cb5d53223069ec8d9914ec30ca84ec4a": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"auth": "issued",
|
"auth": "issued",
|
||||||
"icons": "https://img.icons8.com/officel/50/documents.png",
|
"icons": "https://img.icons8.com/officel/80/documents.png",
|
||||||
"index": "web.team.yuehaoxitong.document",
|
"index": "web.team.yuehaoxitong.document",
|
||||||
"name": "在线文档",
|
"name": "在线文档",
|
||||||
"order": "93",
|
"order": "93",
|
||||||
@ -243,7 +257,7 @@
|
|||||||
},
|
},
|
||||||
"d1e03d214890c9a4b9557d3f6a36c7e9": {
|
"d1e03d214890c9a4b9557d3f6a36c7e9": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/activity-grid.png",
|
"icons": "/p/src/gonganxitong/service.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.service",
|
"index": "web.team.yuehaoxitong.service",
|
||||||
"name": "服务发现",
|
"name": "服务发现",
|
||||||
"order": "904",
|
"order": "904",
|
||||||
@ -261,7 +275,7 @@
|
|||||||
},
|
},
|
||||||
"fa4365d6c914365e4b047c9266e9a02f": {
|
"fa4365d6c914365e4b047c9266e9a02f": {
|
||||||
"meta": {
|
"meta": {
|
||||||
"icons": "https://img.icons8.com/officel/80/property-with-timer.png",
|
"icons": "/p/src/gonganxitong/event.png?pod=20240724-community",
|
||||||
"index": "web.team.yuehaoxitong.event",
|
"index": "web.team.yuehaoxitong.event",
|
||||||
"name": "事件流",
|
"name": "事件流",
|
||||||
"order": "504",
|
"order": "504",
|
||||||
|