diff --git a/src/gonganxitong/allow.go b/src/gonganxitong/allow.go index b02c41d..6d82128 100644 --- a/src/gonganxitong/allow.go +++ b/src/gonganxitong/allow.go @@ -21,6 +21,7 @@ type allow struct { func (s allow) Create(m *ice.Message, arg ...string) { s.Table.Create(m, arg...) + s.SendMessage(m, m.Option(model.FROM_USER_UID), m.Option(model.USER_UID)) s.sendTemplate(m, m.Trans("role order create", "权限审批 请处理")) } func (s allow) List(m *ice.Message, arg ...string) { @@ -54,6 +55,7 @@ func (s allow) Reject(m *ice.Message, arg ...string) { m.Cmdy(m.Prefix("apply"), s.apply.Reject, m.Option(model.UID)).ProcessRefresh() s.RecordEvent(m, kit.JoinWord("❌", m.Trans("order rejected", "审批驳回"), s.TransRole(m), m.Option(model.USER_NAME)), m.Option(model.UID)) s.sendTemplate(m, m.Trans("role order rejected", "权限审批 已驳回")) + s.DoneMessage(m) } func (s allow) Approve(m *ice.Message, arg ...string) { defer m.ToastProcess()() @@ -63,6 +65,7 @@ func (s allow) Approve(m *ice.Message, arg ...string) { m.Cmdy(m.Prefix("apply"), s.apply.Approve, m.Option(model.UID)).ProcessRefresh() s.RecordEvent(m, "", kit.JoinWord("✅", m.Trans("order approved", "审批通过"), s.TransRole(m), m.Option(model.USER_NAME)), m.Option(model.UID)) s.sendTemplate(m, m.Trans("role order approved", "权限审批 已通过")) + s.DoneMessage(m) } func init() { ice.TeamCtxCmd(allow{Table: newTable()}) } diff --git a/src/gonganxitong/apply.go b/src/gonganxitong/apply.go index 3d83e97..8119d70 100644 --- a/src/gonganxitong/apply.go +++ b/src/gonganxitong/apply.go @@ -33,6 +33,7 @@ func (s apply) Create(m *ice.Message, arg ...string) { arg = kit.TransArgKeys(arg, PLACE_UID, model.PLACE_UID) arg = kit.TransArgKeys(arg, USER_PLACE_ROLE, model.ROLE) s.Table.Create(m, kit.Simple(model.PLACE_UID, m.Option(PLACE_UID), arg, m.OptionSimple(model.USER_UID), model.TABLES, PLACE_UID, model.STATUS, ApplyCreate)...) + m.ProcessRewrite(model.UID, m.Result()) } func (s apply) List(m *ice.Message, arg ...string) { s.Tables(m, s.user).FieldsWithCreatedAT(m, s, model.USER_AVATAR, model.USER_NAME, @@ -44,7 +45,8 @@ func (s apply) List(m *ice.Message, arg ...string) { kit.If(m.Length() == 0, func() { m.EchoInfoButton("", s.Create) }) } else if len(arg) == 2 { s.Table.SelectDetail(m, model.USER_UID, m.Option(model.USER_UID), model.PLACE_UID, arg[0], s.Key(s, model.UID), arg[1]) - if ApplyStatus(kit.Int(m.Append(model.APPLY_STATUS))) == ApplySubmit { + switch ApplyStatus(kit.Int(m.Append(model.APPLY_STATUS))) { + case ApplySubmit: m.EchoQRCode(Portal{}.Link(m, arg[0], ice.GetTypeKey(allow{}), arg[1])) } } else { @@ -79,8 +81,10 @@ func (s apply) Submit(m *ice.Message, arg ...string) { if m.WarnNotFound(msg.Length() == 0, role.String()) { return } + m.Option(model.FROM_USER_UID, m.Option(model.USER_UID)) m.Cmd(allow{}, s.Create, msg.AppendSimple(model.USER_UID), model.APPLY_UID, m.Option(model.UID), model.STATUS, OrderCreate) s.RecordEvent(m, "", kit.Format("🕑 %s"+m.Trans(" apply submit", "权限申请提交"), s.TransRole(m)), m.Option(model.UID)) + s.SendMessage(m, msg.Append(model.USER_UID), m.Option(model.USER_UID)) } func (s apply) Reject(m *ice.Message, arg ...string) { msg := s.changeStatus(m, ApplySubmit, ApplyRejected) diff --git a/src/gonganxitong/common.go b/src/gonganxitong/common.go index b1d906b..bbbcff9 100644 --- a/src/gonganxitong/common.go +++ b/src/gonganxitong/common.go @@ -129,6 +129,8 @@ func (s Table) RewriteAppend(m *ice.Message, arg ...string) *ice.Message { value = ApplyStatus(kit.Int(value)).String() case model.ALLOW_STATUS: value = OrderStatus(kit.Int(value)).String() + case model.MESSAGE_STATUS: + value = MessageStatus(kit.Int(value)).String() } return value }) @@ -170,13 +172,17 @@ func (s Table) RecordEventWithName(m *ice.Message, place_uid, info string, arg . } func (s Table) AddRecent(m *ice.Message, arg ...string) { cmd := m.GetCommand() - m.Cmd(recent{}, s.Create, mdb.NAME, cmd.Help, mdb.ICON, m.Resource(kit.Select(ice.Info.NodeIcon, cmd.Icon)), web.SPACE, m.Option(ice.MSG_USERPOD), ctx.INDEX, m.PrefixKey(), ctx.ARGS, kit.Join(arg)) + m.Cmd(recent{}, s.Create, mdb.NAME, cmd.Help+" "+ice.Info.Title(), mdb.ICON, m.Resource(kit.Select(ice.Info.NodeIcon, cmd.Icon)), web.SPACE, m.Option(ice.MSG_USERPOD), ctx.INDEX, m.PrefixKey(), ctx.ARGS, kit.Join(arg)) } -func (s Table) SendMessage(m *ice.Message, place_name, to_user_uid string, arg ...string) { +func (s Table) SendMessage(m *ice.Message, from_user_uid, to_user_uid string, arg ...string) { cmd := m.GetCommand() - m.Cmd(message{}, s.Create, model.TO_USER_UID, to_user_uid, model.PLACE_NAME, place_name, + kit.If(len(arg) == 0, func() { arg = append(arg, m.Option(s.Keys(s.Place, model.UID)), m.Option(model.UID)) }) + m.Spawn(ice.Maps{db.DB: ""}).Cmd(message{}, s.Create, model.FROM_USER_UID, from_user_uid, model.TO_USER_UID, to_user_uid, model.PLACE_NAME, m.Option("_place_name"), mdb.NAME, cmd.Help, mdb.ICON, cmd.Icon, web.SPACE, m.Option(ice.MSG_USERPOD), ctx.INDEX, m.PrefixKey(), ctx.ARGS, kit.Join(arg)) } +func (s Table) DoneMessage(m *ice.Message, arg ...string) { + m.Spawn(ice.Maps{db.DB: ""}).Cmd(message{}, message{}.Done, kit.Dict(model.UID, m.Option(model.MESSAGE_UID))) +} func (s Table) SendTemplate(m *ice.Message, from, user_uid, title string, arg ...string) { if m.IsErr() { return @@ -261,7 +267,7 @@ func PortalCmd(portal ice.Any) { cmd("apply", apply{Table: table}) cmd("allow", allow{Table: table}) cmd("member", placeUser{Tables: Tables{Table: table}}) - cmd("message", message{}) + cmd("message", Message{}) cmd("recent", recent{}) cmd("service", service{Table: table}) cmd("support", support{}) diff --git a/src/gonganxitong/message.go b/src/gonganxitong/message.go index 833197b..1bf53ea 100644 --- a/src/gonganxitong/message.go +++ b/src/gonganxitong/message.go @@ -2,23 +2,35 @@ package gonganxitong import ( "shylinux.com/x/ice" + "shylinux.com/x/icebergs/base/ctx" + "shylinux.com/x/icebergs/base/web/html" kit "shylinux.com/x/toolkits" "shylinux.com/x/community/src/gonganxitong/model" ) -type message struct { +type Message struct { Table - order string `data:"100"` - read string `name:"read" role:"void"` - done string `name:"done" role:"void"` + order string `data:"100"` + domain string `data:"gonganxitong"` + read string `name:"read" role:"void"` + done string `name:"done" role:"void"` } -func (s message) Create(m *ice.Message, arg ...string) { - s.Table.Create(m, kit.Simple(arg, model.FROM_USER_UID, m.Option(model.USER_UID))...) +func (s Message) Create(m *ice.Message, arg ...string) { + s.Table.Create(m, kit.Simple(arg)...) } -func (s message) List(m *ice.Message, arg ...string) { - s.Select(m, model.TO_USER_UID, m.Option(model.USER_UID)).Table(func(value ice.Maps) { +func (s Message) List(m *ice.Message, arg ...string) { + if len(arg) < 2 { + s.Select(m, model.TO_USER_UID, m.Option(model.USER_UID)) + } else if len(arg) == 2 { + msg := s.SelectDetail(m.Spawn(), model.TO_USER_UID, m.Option(model.USER_UID), model.UID, arg[1]) + m.ProcessField(msg.Append(ctx.INDEX), kit.Split(msg.Append(ctx.ARGS))) + m.Push(ctx.STYLE, html.OUTPUT) + } else { + return + } + m.Table(func(value ice.Maps) { switch MessageStatus(kit.Int(value[model.STATUS])) { case MessageCreate: m.PushButton(s.Read, s.Done) @@ -28,14 +40,18 @@ func (s message) List(m *ice.Message, arg ...string) { m.PushButton() } }).Action() + m.RenameAppend(model.FROM_USER_UID, model.USER_UID, model.STATUS, model.MESSAGE_STATUS) + s.SelectJoinUser(m) } -func (s message) Read(m *ice.Message, arg ...string) { - s.Table.Update(m, kit.Dict(model.STATUS, MessageRead), m.OptionSimple(model.TO_USER_UID, model.UID)...) +func (s Message) Read(m *ice.Message, arg ...string) { + s.Table.Update(m, kit.Dict(model.STATUS, MessageRead), kit.Simple(model.TO_USER_UID, m.Option(model.USER_UID), m.OptionSimple(model.UID))...) } -func (s message) Done(m *ice.Message, arg ...string) { - s.Table.Update(m, kit.Dict(model.STATUS, MessageDone), m.OptionSimple(model.TO_USER_UID, model.UID)...) +func (s Message) Done(m *ice.Message, arg ...string) { + s.Table.Update(m, kit.Dict(model.STATUS, MessageDone), kit.Simple(model.TO_USER_UID, m.Option(model.USER_UID), m.OptionSimple(model.UID))...) } +type message struct{ Message } + func init() { ice.TeamCtxCmd(message{}) } type MessageStatus int diff --git a/src/gonganxitong/message.js b/src/gonganxitong/message.js index 862d553..326914c 100644 --- a/src/gonganxitong/message.js +++ b/src/gonganxitong/message.js @@ -1,9 +1,24 @@ Volcanos(chat.ONIMPORT, { - _init: function(can, msg) { can.onimport.shareTitle(can, msg) - can.onimport.itemcards(can, msg, function(value) { return [ - {view: html.TITLE, list: [value.name]}, - {view: html.STATUS, list: [value.uid.slice(0, 6), can.base.TimeTrim(value.created_at), value.user_name]}, - {view: html.OUTPUT, list: [value.info]}, - ] }, function(event, value) { can.onimport.float(can, value) }) + _init: function(can, msg) { + if (msg.IsDetail()) { var value = msg.TableDetail() + msg.Option("_share_title", value.place_name+" "+value.name) + } + can.onimport.itemcards(can, msg, function(value) { + value.icons = value.user_avatar||value.icon; return [ + {view: html.TITLE, list: [value.place_name, value.name, value.message_status != "done" && can.onimport.textView(can, value, "message_status", mdb.STATUS)]}, + {view: html.STATUS, list: [value.uid.slice(0, 6), can.base.TimeTrim(value.created_at), value.user_name]}, + {view: html.OUTPUT, list: [value.info]}, + ] + }, function(event, value) { + var args = can.core.Split(value.args)[1] + can.onexport.title(can, [value.place_name, value.name, args.slice(0, 6)].join(" ")) + can.Option("uid", value.uid), can.Update(event) + }) + /* + , function(event, value) { can.onimport.float(can, value, function(sub) { var run = sub.run + sub.run = function(event, cmds, cb) { run(can.request(event, {message_uid: value.uid}), cmds, cb) } + can.run(can.request({}, value), [ctx.ACTION, "read"], function() {}) + }) }) + */ }, }) \ No newline at end of file diff --git a/src/gonganxitong/model/model.go b/src/gonganxitong/model/model.go index 75f444f..e055e35 100644 --- a/src/gonganxitong/model/model.go +++ b/src/gonganxitong/model/model.go @@ -34,6 +34,10 @@ const ( APPLY_STATUS = "apply_status" ALLOW_UID = "allow_uid" ALLOW_STATUS = "allow_status" + MESSAGE_UID = "message_uid" + SERVICE_TYPE = "service_type" + MESSAGE_STATUS = "message_status" + SERVICE_STATUS = "service_status" FROM_USER_UID = "from_user_uid" TO_USER_UID = "to_user_uid" BEGIN_TIME = "begin_time" diff --git a/src/gonganxitong/portal.css b/src/gonganxitong/portal.css index 70f0661..7c65596 100644 --- a/src/gonganxitong/portal.css +++ b/src/gonganxitong/portal.css @@ -19,6 +19,10 @@ $output>div.action div.item.button input { border:none; color:var(--notice-bg-co $output>div.action div.item.button input:hover { background-color:var(--hover-bg-color); } $output>div.action div.item.button span { display:none; } $output>div.action div.item.button i { display:none; } +$output input[type=button][name=submit] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); padding:0 20px; } +$output input[type=button][name=cancel] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); padding:0 20px; } +$output input[type=button][name=reject] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); padding:0 20px; } +$output input[type=button][name=approve] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); padding:0 20px; } $output span.type { border:var(--box-notice); color:var(--notice-bg-color); padding:0 3px; } $output span.role { border:var(--box-notice); color:var(--notice-bg-color); padding:0 3px; } $output span.type.danger { border:var(--box-danger); color:var(--danger-bg-color); } @@ -31,7 +35,7 @@ $output table.content td.action i { display:none; } $output fieldset.form>div.output>div.code>input[type=button] { font-size:18px; margin:10px; height:36px; } $output fieldset>div.output>div.code>input[type=button] { background-color:var(--notice-bg-color); color:var(--notice-fg-color); margin-right:10px; min-width:80px; float:right; } $output fieldset>div.output>div.code>input[type=button].danger { background-color:var(--danger-bg-color); color:var(--danger-fg-color); } -$output fieldset>div.output>div.code>input[type=button][name=cancel] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); } +$output fieldset>div.output>div.code>input[type=button][name=cancel] { border:var(--box-border); background-color:var(--danger-bg-color); color:var(--danger-fg-color); } $output fieldset.story fieldset.story { position:absolute; top:0; } $output fieldset.story { box-shadow:none; } $output fieldset.story>div.output { background-color:var(--plugin-bg-color); } diff --git a/src/gonganxitong/portal.go b/src/gonganxitong/portal.go index bf1284e..0f90d14 100644 --- a/src/gonganxitong/portal.go +++ b/src/gonganxitong/portal.go @@ -12,8 +12,8 @@ import ( ) type Portal struct { - Table ice.Hash + Table user user city city export string `data:"true"` @@ -38,8 +38,12 @@ func (s Portal) BeforeMigrate(m *ice.Message, arg ...string) { } func (s Portal) AfterMigrate(m *ice.Message, arg ...string) { cmd := m.GetCommand() + name := kit.Select("", kit.Split(m.PrefixKey(), "."), -2) + if !m.Exists("src/" + name) { + return + } m.GoSleep("30ms", func() { - m.Cmdy(service{}, s.Table.Update, ctx.INDEX, m.PrefixKey(), mdb.NAME, cmd.Help, mdb.ICON, m.Resource(kit.Select(ice.Info.NodeIcon, cmd.Icon))) + m.Cmdy(service{}, s.Table.Update, ctx.INDEX, m.PrefixKey(), mdb.NAME, cmd.Help+" "+ice.Info.Title(), mdb.ICON, m.Resource(kit.Select(ice.Info.NodeIcon, cmd.Icon))) }) } func (s Portal) Inputs(m *ice.Message, arg ...string) { @@ -52,7 +56,7 @@ func (s Portal) Run(m *ice.Message, arg ...string) { if action, ok := cmd.Actions[arg[2]]; ok { sub, role = arg[2], action.Role } - } else { + } else if len(arg) > 1 { if action, ok := cmd.Actions[arg[1]]; ok { sub, role = arg[1], action.Role } diff --git a/src/gonganxitong/portal.js b/src/gonganxitong/portal.js index b6116de..c1c9067 100644 --- a/src/gonganxitong/portal.js +++ b/src/gonganxitong/portal.js @@ -7,7 +7,9 @@ Volcanos(chat.ONIMPORT, { can.onimport.myPortal(can, msg) }, layout: function(can) { - can.ui.action && can.onmotion.delay(can, function() { can.page.style(can, can.ui.output, html.HEIGHT, can.ConfHeight() - can.ui.action.offsetHeight) }) + can.ui.action && can.ui.output && can.onmotion.delay(can, function() { + can.page.style(can, can.ui.output, html.HEIGHT, can.ConfHeight() - can.ui.action.offsetHeight) + }) }, myValue: function(can, value) { return [ @@ -21,7 +23,7 @@ Volcanos(chat.ONIMPORT, { var PLACE_UID = msg.Option("_place_uid"), PLACE_NAME = msg.Option("_place_name"), PLACE_TYPE = msg.Option("_place_type") var USER_PLACE_ROLE = msg.Option("_user_place_role"), STREET_NAME = msg.Option("_street_name") can.isCmdMode() && (can.db.hash = can.misc.SearchHash(can)), can.db.hash[0] && can.onexport.session(can, PLACE_UID, can.db.hash[0]) - if (can.Option(PLACE_UID) == "") { + if (can.Option(ctx.INDEX) == "") { if (can.db.hash.length > 1 && can.db.hash[0]) { return can.Option(PLACE_UID, can.db.hash[0]), can.Option(ctx.INDEX, can.db.hash[1]), can.Update() } can.ui = can.page.Append(can, can._output, [ {view: html.OUTPUT, list: ["myplace.list", "myindex.list"]}, @@ -32,12 +34,15 @@ Volcanos(chat.ONIMPORT, { {view: html.ACTION, _init: function(target) { msg.Option(ice.MSG_ACTION) && can.onappend._action(can, msg.Option(ice.MSG_ACTION), target) }} ]}]) var uid = can.onimport.myPlace(can, msg, can.ui.myplace, PLACE_UID, PLACE_NAME, PLACE_TYPE) - msg.Length() > 0 && can.run({}, [uid], function(msg) { + msg.Length() > 0? can.run({}, [uid], function(msg) { can.page.Append(can, can.ui.myindex, [{view: html.TITLE, list: [{text: can.user.trans(can, "My Index", "我的应用")}]}]) can.onimport.myIndex(can, msg, can.ui.myindex, PLACE_UID, USER_PLACE_ROLE), can.onimport.selectIndex(can, can.sup.current) can.page.Append(can, can.ui.myorder, [{view: html.TITLE, list: [{text: can.user.trans(can, "My Order", "我的系统")}]}]) can.onimport.myOrder(can, msg, can.ui.myorder, PLACE_UID, USER_PLACE_ROLE) - }), can.ui.place_count = msg.Length() + }): can.run({}, [uid], function(msg) { + can.page.Append(can, can.ui.myorder, [{view: html.TITLE, list: [{text: can.user.trans(can, "My Order", "我的系统")}]}]) + can.onimport.myOrder(can, msg, can.ui.myorder, PLACE_UID, USER_PLACE_ROLE) + }) , can.ui.place_count = msg.Length() } else { can.onimport.myData(can, msg, can._output, PLACE_UID, PLACE_NAME) } @@ -45,7 +50,7 @@ Volcanos(chat.ONIMPORT, { myPlace: function(can, msg, target, PLACE_UID, PLACE_NAME, PLACE_TYPE) { var place_uid var USER_PLACE_ROLE = msg.Option("_user_place_role"), STREET_NAME = msg.Option("_street_name") can.ui._target = can.page.Append(can, target||can._output, [html.OUTPUT])._target - can.page.Append(can, can.ui._target, msg.Table(function(value) { + msg.Length() > 0 && can.page.Append(can, can.ui._target, msg.Table(function(value) { place_uid = place_uid||value[PLACE_UID], value[PLACE_UID] == can.onexport.session(can, PLACE_UID) && (place_uid = value[PLACE_UID]) place_uid == value[PLACE_UID] && (can.sup.current = value, can.onexport.title(can, value[PLACE_NAME])) value._uid = value[PLACE_UID], value._name = value[PLACE_NAME], value._street = value[STREET_NAME] @@ -59,7 +64,7 @@ Volcanos(chat.ONIMPORT, { }) })), can.sup.current && can.onexport.value(can, can.sup.current, PLACE_UID, PLACE_NAME) can.page.Append(can, target, [{view: html.ACTION, _init: function(target) { can.onappend._action(can, msg.Option(ice.MSG_ACTION), target) }}]) - return place_uid + return place_uid||"" }, myList: function(can, msg, target, PLACE_UID, USER_PLACE_ROLE) { var width = (can.ConfWidth()-40)/parseInt((can.ConfWidth()-40)/100), height = width+20; can.user.isMobile && !can.user.isLandscape() && (width = (can.ConfWidth()-40)/4, height = width+20) @@ -85,12 +90,12 @@ Volcanos(chat.ONIMPORT, { var _msg = can.request(); msg.Table(function(value) { if (value.order < 99) { _msg.Push(value) } }) var output = can.page.Append(can, target, [html.OUTPUT])._target can.onimport.myList(can, _msg, output, PLACE_UID, USER_PLACE_ROLE) - can.onmotion.delay(can, function() { can.page.style(can, can.ui.output, html.HEIGHT, can.ConfHeight() - can.ui.action.offsetHeight) }) }, myOrder: function(can, msg, target, PLACE_UID, USER_PLACE_ROLE) { var _msg = can.request(); msg.Table(function(value) { if (value.order > 99) { _msg.Push(value) } }) var output = can.page.Append(can, target, [html.OUTPUT])._target can.onimport.myList(can, _msg, output, PLACE_UID, USER_PLACE_ROLE) + can.onimport.layout(can) }, selectIndex: function(can, value, role) { role = role||value._role can.ui.role && can.onmotion.toggle(can, can.ui.role, value._role == "creator") @@ -117,6 +122,11 @@ Volcanos(chat.ONIMPORT, { }) can.onexport.title(can, sub.Conf(PLACE_NAME, msg.Option(PLACE_NAME)), value.help) sub.onexport.title = function(sub) { can.onexport.title.apply(can.onexport, [can].concat(can.core.List(arguments).slice(1))) } + var run = sub.run + sub.run = function(event, cmds, cb) { + can.request(event, {_place_name: sub.Conf(PLACE_NAME)}) + run(event, cmds, cb) + } sub.onexport._output = function(_sub, msg) { can.core.Item(can.onimport, function(key, value) { _sub.onimport[key] = _sub.onimport[key]||value }) can.core.Item(can.onexport, function(key, value) { _sub.onexport[key] = _sub.onexport[key]||value }) @@ -133,7 +143,8 @@ Volcanos(chat.ONIMPORT, { can.onexport.hash(can, place_uid||can.Option(PLACE_UID), index||can.Option(ctx.INDEX), uid), can.Update() } _sub.onexport.title = function(_sub, title) { - title? can.onexport.title(can, sub.Conf(PLACE_NAME), title): + // title? can.onexport.title(can, sub.Conf(PLACE_NAME), title): + title? can.onexport.title(can, title): can.onexport.title(can, sub.Conf(PLACE_NAME), sub.ConfHelp(), msg.Option("_share_title")||"") } can.onexport.hash(can, can.Option(PLACE_UID), value.index, sub.Option(UID)) @@ -141,7 +152,8 @@ Volcanos(chat.ONIMPORT, { can.user.agent.init(can, msg.Option("_share_content"), msg.Option("_share_icons")||value.icons) can.page.Appends(can, ui.action, list), msg.Option(ice.MSG_ACTION) && can.onappend._action(sub, msg.Option(ice.MSG_ACTION), ui.action, null, true) back = function() { can.page.ClassList.add(can, can._fields, "_back") - if (_sub.onaction._back) { return _sub.onaction._back(_sub) } + if (_sub.onaction._back) { _sub.onaction._back(_sub) } + can.Update() } _sub.onaction._back = function() { if (sub.Option(UID)) { @@ -176,35 +188,28 @@ Volcanos(chat.ONIMPORT, { sub.onexport.title = function(can, title) { can.user.title(can.core.List(arguments).slice(1).join(" ")) } }, action._output) }, - float: function(can, value) { value.style = html.OUTPUT - can.onappend.plugin(can, value, function(sub) { - sub.onexport.output = function(_sub, msg) { - can.onexport.title(can, sub.ConfHelp()+" "+msg.Option("_share_title")) - } - var _back = can.onaction._back - can.onaction._back = function() { can.onaction._back = _back, can.page.Remove(can, sub._target) - can.onexport.title(can) - } + float: function(can, value, cb) { value.style = html.OUTPUT + can.onappend.plugin(can, value, function(sub) { var _back = can.onaction._back + can.onaction._back = function() { can.onaction._back = _back, can.page.Remove(can, sub._target), can.onexport.title(can) } can.onaction._refresh = function() { sub.Update(), can.onmotion.delay(can, function() { can.user.toastSuccess(can, "refresh") }, 300) } + sub.onexport.output = function(_sub, msg) { can.onexport.title(can, sub.ConfHelp()+" "+msg.Option("_share_title")) + sub.onimport.size(sub, window.innerHeight-html.ACTION_HEIGHT, window.innerWidth, false) + } + cb && cb(sub) }) }, typeStyle: function(can, value, key) { return can.Conf("_trans.value."+key+".style."+value[key])||"" }, roleStyle: function(can, value, key) { return can.Conf("_trans.value."+key+".style."+value[key])||"" }, textView: function(can, value, key, type) { return value[key] && {text: [can.user.transValue(can, value, key), "", [type, value[key], can.Conf("_trans.value."+key+".style."+value[key])||""]]} }, - shareTitle: function(can, msg, title, content) { - if (msg.IsDetail()) { var value = msg.TableDetail() - msg.Option("_share_title", (value[title]||value.name||value.uid).slice(0, 6)), msg.Option("_share_content", value[content]||value.info) - } }, - }) - Volcanos(chat.ONEXPORT, { - value: function(can, value, PLACE_UID, PLACE_NAME) { - can.page.Select(can, can.ui._target, "div.item.card.uid-"+value._uid, function(item) { can.onmotion.select(can, can.ui._target, html.DIV_ITEM, item) }) - can.sup.current = value, can.onimport.selectIndex(can, can.sup.current), can.onexport.title(can, value[PLACE_NAME], can.ConfHelp()) - can.onexport.session(can, PLACE_UID, value[PLACE_UID]), can.onexport.hash(can, value[PLACE_UID]), can.user.agent.init(can) - }, - share_title: function(can, msg, title, role) { - msg.Option("_share_icons", msg.Append("user_avatar")) - msg.Option("_share_content", can.user.transValue(can, msg, role)+" "+msg.Append("user_name")) - }, - }) - \ No newline at end of file +}) +Volcanos(chat.ONEXPORT, { + value: function(can, value, PLACE_UID, PLACE_NAME) { + can.page.Select(can, can.ui._target, "div.item.card.uid-"+value._uid, function(item) { can.onmotion.select(can, can.ui._target, html.DIV_ITEM, item) }) + can.sup.current = value, can.onimport.selectIndex(can, can.sup.current), can.onexport.title(can, value[PLACE_NAME], can.ConfHelp()) + can.onexport.session(can, PLACE_UID, value[PLACE_UID]), can.onexport.hash(can, value[PLACE_UID]), can.user.agent.init(can) + }, + share_title: function(can, msg, title, role) { + msg.Option("_share_icons", msg.Append("user_avatar")) + msg.Option("_share_content", can.user.transValue(can, msg, role)+" "+msg.Append("user_name")) + }, +}) diff --git a/src/gonganxitong/portal.json b/src/gonganxitong/portal.json index 2c681ed..a34650e 100644 --- a/src/gonganxitong/portal.json +++ b/src/gonganxitong/portal.json @@ -32,7 +32,9 @@ "place_name": "场景名称", "place_type": "场景类型", "place_address": "场景地址", + "message_status": "消息状态", "street_name": "街道名称", + "company_name": "公司名称", "city_name": "城市名称", "apply_status": "申请状态", "allow_status": "审批状态", @@ -77,6 +79,17 @@ "landlord": "danger" } }, + "message_status": { + "create": "未读", + "read": "待办", + "done": "完成" + }, + "service_type": { + "worker": "空间" + }, + "service_status": { + "online": "在线" + }, "place_type": { "house": "住宅", "hotel": "宾馆", diff --git a/src/gonganxitong/recent.js b/src/gonganxitong/recent.js index 2e64053..f393b7c 100644 --- a/src/gonganxitong/recent.js +++ b/src/gonganxitong/recent.js @@ -3,7 +3,7 @@ Volcanos(chat.ONIMPORT, { can.onimport.itemcards(can, msg, function(value) { var args = can.core.Split(value.args) var sub = can._root.Action._plugins[[value.space, value.index, args[0]].join(".")] return [ - {view: html.TITLE, list: [args[1]||value.name, sub? {text: ["load", "", mdb.STATUS]}: ""]}, + {view: html.TITLE, list: [[args[1], value.name].join(" "), sub? {text: ["load", "", mdb.STATUS]}: ""]}, {view: html.STATUS, list: [value.uid.slice(0, 6), can.base.TimeTrim(value.created_at)]}, {view: html.STATUS, list: [value.space]}, {view: html.STATUS, list: [value.index]}, diff --git a/src/gonganxitong/service.go b/src/gonganxitong/service.go index 2c93ec3..4201d4f 100644 --- a/src/gonganxitong/service.go +++ b/src/gonganxitong/service.go @@ -99,6 +99,7 @@ func (s service) List(m *ice.Message, arg ...string) { m.PushAction(s.Open).Action() } m.Sort("status,updated_at", []string{web.ONLINE}, ice.STR_R).Display("") + m.RenameAppend("nodetype", model.SERVICE_TYPE, mdb.STATUS, model.SERVICE_STATUS) } func (s service) Open(m *ice.Message, arg ...string) { m.ProcessOpen(web.S(m.Option(tcp.NODENAME)) + web.C(m.Option(ctx.INDEX))) diff --git a/src/gonganxitong/service.js b/src/gonganxitong/service.js index 0dc426c..7f1ce54 100644 --- a/src/gonganxitong/service.js +++ b/src/gonganxitong/service.js @@ -1,7 +1,7 @@ Volcanos(chat.ONIMPORT, { _init: function(can, msg) { can.onimport.itemcards(can, msg, function(value) { return [ - {view: html.TITLE, list: [value.name, can.onimport.textView(can, value, "nodetype", mdb.TYPE), can.onimport.textView(can, value, "status", mdb.STATUS)]}, + {view: html.TITLE, list: [value.name, can.onimport.textView(can, value, "service_type", mdb.TYPE), can.onimport.textView(can, value, "service_status", mdb.STATUS)]}, {view: html.STATUS, list: [value.uid.slice(0, 6), can.base.TimeTrim(value.updated_at)]}, {view: html.STATUS, list: [value.index]}, {view: html.STATUS, list: [value.module, value.version]},