This commit is contained in:
IT 老营长 @云轩领航-创始人 2025-06-27 17:35:15 +08:00
parent de84c2cc36
commit 59151c09a4
10 changed files with 63 additions and 23 deletions

View File

@ -20,8 +20,9 @@ type grant struct {
}
func (s grant) List(m *ice.Message, arg ...string) {
if m.Option(ice.FROM_DAEMON) == "" {
if m.Option(ice.FROM_DAEMON) == "" || m.Option(ice.MSG_USERUID) == "" {
m.EchoQRCode(m.MergePodCmd("", m.PrefixKey(), ice.FROM_DAEMON, m.Option(ice.MSG_DAEMON)))
m.Echo("<div>请使用微信扫码授权登录</div>")
} else {
msg := s.spaceInfo(m)
m.Option(ice.MSG_USERUA, msg.Append(aaa.UA))
@ -30,6 +31,7 @@ func (s grant) List(m *ice.Message, arg ...string) {
m.Option(model.AGENT), m.Option(model.SYSTEM), msg.Append(aaa.IP),
kit.Format(web.PublicIP(m.Message, m.Option(ice.MSG_USERIP))),
), s.Confirm)
m.Option("display.style", "output")
}
kit.If(m.IsTech(), func() { m.Action(s.Header) })
}

View File

@ -3,7 +3,7 @@ $body.light { --plugin-bg-color:#f2f4f8; --output-bg-color:white; --notice-bg-co
body.light fieldset.web.team.portal>div.output>div.header { background-image:linear-gradient(#dbe7fe, var(--plugin-bg-color)); }
body.dark $output>div>div.list.mynotice>span:first-child { background-color:var(--hover-bg-color); color:yellow; white-space:pre; }
$action { width:100%; height:48px; position:absolute; top:0; z-index:1; display:none; align-items:center; }
$action div.item { margin-right:0; }
$action div.item { margin-right:0; margin-left:0 !important; }
$action div.item input[type=button] { background-color:transparent; color:var(--notice-bg-color); min-width:20px; padding:0 10px; }
$action div.item.danger input[type=button] { color:var(--danger-bg-color); }
$action div.item.button i { display:none; }
@ -28,7 +28,7 @@ $output>div.header img { height:100%; width:100%; object-fit:cover; }
$output>div.action>div.list { margin:0 10px; }
$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>div.title { font-weight:bold; border-left:var(--box-notice3); padding-left:10px; margin:10px 0; display:flex; align-items:center; }
$output>div>div.list>div.title { font-weight:bold; border-left:var(--box-notice3); padding-left:10px; margin-bottom:10px; display:flex; align-items:center; }
$output>div>div.list>div.title span:first-child { flex-grow:1; }
$output>div>div.list>div.title div.action { overflow:hidden; }
$output>div>div.list>div.title div.action div.item { margin-right:5px; }
@ -69,7 +69,7 @@ $output>div.action { background-color:var(--output-bg-color); }
$output div.item.card:not(:last-child) { margin-bottom:2px; }
$output div.item.card.sticky { position:sticky; top:0; z-index:2; }
$output div.item.card.loaded { position:sticky; top:0; z-index:2; }
body:not(.mobile) $output div.item.card>div.action { top:24px; }
// body:not(.mobile) $output div.item.card>div.action { top:24px; }
$output fieldset.story>div.output div.place_info div.item.card>div.action { top:12px; }
$output div.item.card div.title { font-size:var(--body-font-size); width:100%; display:flex; align-items:center; position:relative; }
$output div.item.card div.title span:first-child { word-break:break-all; }
@ -79,7 +79,7 @@ $output div.item.card div.title span.status { line-height:18px; }
$output div.item.card div.title span.price { color:var(--danger-bg-color); }
body.width1 $output div.item.card div.title span.price { margin-left:auto; }
$output div.item.card div.title span.score { background-color:var(--hover-bg-color); color:var(--danger-bg-color); padding:0 5px; }
$output div.item.card div.title span.time { color:gray; font-size:12px; position:absolute; right:0; }
$output div.item.card div.title span.time { color:gray; font-size:12px; }
body.width1 $output div.item.card div.title div.space { flex-grow:1; }
$output div.item.card div.title div.action input { margin-right:0; }
$output div.item.card div.action input { padding:0 10px; margin-left:0; margin-right:0; }
@ -141,7 +141,8 @@ $output div.item.title.meetList { border-left:var(--box-danger3); }
$output div.item.title.dealList { border-left:var(--box-danger3); }
$output div.item.title div.action div.item.notice input { background-color:var(--notice-bg-color); color:var(--notice-fg-color); }
$output fieldset.story>div.output { background-color:var(--plugin-bg-color); }
$output fieldset.story>div.output>div.tabs { flex-direction:column; height:unset; }
$output fieldset.story>div.output>div.tabs.multi { flex-direction:column; height:unset; }
$output fieldset.story>div.output>div.tabs { height:unset; }
$output fieldset.story>div.output>div.tabs { line-height:32px; background-color:var(--plugin-bg-color); display:flex; overflow:auto; position:sticky; top:0; z-index:2; }
$output fieldset.story>div.output>div.tabs div.tabs { height:32px; }
$output fieldset.story>div.output>div.tabs.wrap { height:unset; max-height:320px; flex-direction:column; }
@ -215,10 +216,13 @@ $output fieldset.story>div.output>div.code>input[type=button].danger { border:va
$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][name=cancel] { border:var(--box-border); background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
// $output fieldset.story.profile>div.output div.item.card div.action { top:18px; }
// body:not(.width1) $output fieldset.story>div.output div.item.card div.action { top:28px; right:10px; }
$output fieldset.story>div.output>div.code div.item.button.danger input[type=button] { background-color:var(--danger-bg-color); color:var(--danger-fg-color); }
$output fieldset.story>div.output>div.info>input[type=button] { box-shadow:var(--box-shadow); border:none; background-color:var(--notice-bg-color); color:var(--notice-fg-color); font-size:20px; height:48px; width:100%; max-width:320px; }
$output fieldset.story>div.output>div.info { padding:10px 20px; text-align:center; white-space:pre; }
$output>fieldset.story>div.output div.item.card>div.output { padding:10px; width:100%; }
body:not(.mobile) $output>fieldset.story>div.output div.item.card>div.output:hover { background-color:var(--hover-bg-color); }
$output>fieldset.story>div.output div.item.card>div.output div.output { padding:5px 0; white-space:pre-line; }
$output>fieldset.story>div.output div.item.card.loaded>div.output { background-color:var(--plugin-bg-color); }
$output fieldset.story.form>div.output>div.code>input[type=button] { font-size:18px; margin:10px; height:36px; }

View File

@ -134,7 +134,7 @@ func (s Portal) Run(m *ice.Message, arg ...string) {
if len(arg) > 0 && strings.HasSuffix(arg[0], ".portal") {
return
}
if kit.IndexOf(arg, mdb.INPUTS) == -1 && !strings.HasSuffix(arg[1], ".member") {
if kit.IndexOf(arg, mdb.INPUTS) == -1 && !strings.HasSuffix(kit.Select("", arg, 1), ".member") {
s.Place.RewriteAppend(m)
}
})

View File

@ -14,6 +14,7 @@ Volcanos(chat.ONIMPORT, {
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]]},
can.onimport.titleAction(can, value),
]},
can.onimport.shipView(can, {city_name: value.city_name, street_name: value._street, service_name: can.ConfHelp()+" "+(value.space_title||can.user.info.titles)}),
{view: html.STATUS, list: [value.auth_info||value._info]},
@ -75,10 +76,15 @@ Volcanos(chat.ONIMPORT, {
}
msg.Length() > 0? can.run({}, [uid], function(msg) { showIndex(can._index_msg = msg) }): can.run({}, [uid], function(msg) { can.onimport.myOrder(can, can._index_msg = msg, can.ui.myorder) })
} else { can.onappend.style(can, "public", can._output), can.Conf(mdb.ICONS, msg.Option("portal_icon"))
var _msg = can.request({}); if (msg.Option(PLACE_NAME)) { _msg.Push(kit.Dict(UID, "", msg.OptionSimple(
var _msg = can.request({});
can.user.trans(can, {credit: "服务名片", member: "成员列表"})
if (msg.Option(PLACE_NAME)) { _msg.Push(kit.Dict(UID, "", msg.OptionSimple(
PLACE_UID, PLACE_NAME, PLACE_TYPE, USER_PLACE_ROLE, STREET_NAME, CITY_NAME,
"member_status", "auth_status", "auth_name", "auth_info", "auth_avatar", "auth_background", "dashboard_uid", "space_title",
))) } can.onimport.myPlace(can, _msg, can.ui.myplace)
))) }
// _msg.PushButton("credit", "member", "setting")
_msg.PushButton("credit", "member")
can.onimport.myPlace(can, _msg, can.ui.myplace)
if (_msg.Length() == 0) { can.onimport.myOrder(can, msg, can.ui.myorder) } else { showIndex(can._index_msg = msg) }
msg.Echo([msg.Option(CITY_NAME), msg.Option(STREET_NAME), msg.Option(PLACE_NAME)].join(" "))
can.misc.isDebug(can) && can.onimport.qrcode(can, msg, can.sup.current.auth_avatar)
@ -150,7 +156,9 @@ Volcanos(chat.ONIMPORT, {
}
var cmd = value.index.split(".").pop()
return {view: [[html.ITEM, ctx.INDEX].concat(
value.type? [mdb.TYPE]: [], can.core.Split(value.type||""), value.role? [aaa.ROLE]: [], can.core.Split(value.role||""),
value.type? [mdb.TYPE]: [],
value.index,
can.core.Split(value.type||""), value.role? [aaa.ROLE]: [], can.core.Split(value.role||""),
value.auth, value.view,
)], style: {width: width}, list: [
can.onimport.imageView(can, value),
@ -239,6 +247,9 @@ Volcanos(chat.ONACTION, {
can.user.isMobile && can.page.style(can, can._root.Action._target, html.DISPLAY, "")
can.user.isMobile && can.onmotion.toggle(can, can._output, true)
},
credit: function(event, can, button) { can.onimport.myStory(can, {index: button, args: [can.sup.current._uid]}) },
member: function(event, can, button) { can.onimport.myStory(can, {index: button, args: [can.sup.current._uid]}) },
setting: function(event, can, button) { can.onimport.myStory(can, {index: button, args: [can.sup.current._uid]}) },
request: function(event, can) {
can.runAction(event, "request", [], function(msg) { if(msg.IsErr()) { return can.user.toastFailure(can, msg.Result()) }
WeixinJSBridge.invoke('getBrandWCPayRequest', msg.Table()[0], function(res) {
@ -256,13 +267,15 @@ Volcanos(chat.ONACTION, {
Volcanos(chat.ONEXPORT, {
place: function(can, value) { return can.onexport.session(can, PLACE_UID, value) },
value: function(can, value) { if (!value || !value._uid) { return } can.sup.current = value
can.onexport.index(can, can.sup.current)
can.onexport.index(can, can.sup.current, "", can.ui.myallow)
can.onexport.place(can, value._uid), can.onexport.hash(can, value._uid), can.onexport.title(can, value._name, can.ConfHelp())
can.onexport.place(can, value._uid),
// can.onexport.hash(can, value._uid),
// can.onexport.title(can, value._name, can.ConfHelp())
can.onimport.myOption(can.sup)
can.page.Select(can, can.ui._target, "div.item.card.uid-"+value._uid, function(target) {
can.onmotion.select(can, can.ui._target, html.DIV_ITEM, target)
can.onmotion.scrollIntoView(can, target)
})
can.onexport.index(can, can.sup.current), can.onexport.index(can, can.sup.current, "", can.ui.myallow)
var status = !value.member_status || value.member_status == "normal"
can.ui.myinit && can.onimport.myInit(can, can._index_msg, value, can.ui.myinit)
can.ui.mycount && can.onimport.myCount(can, value, can.ui.mycount)
@ -270,7 +283,6 @@ Volcanos(chat.ONEXPORT, {
can.ui.myallow && can.onmotion.toggle(can, can.ui.myallow, can.user.isTechOrRoot(can) || status && (value._role == "creator" || parseInt(value._role) > 0 || can.page.Select(can, can.ui.myallow, "div.item.index.role."+value._role).length > 0))
can.ui.myindex && can.onmotion.toggle(can, can.ui.myindex, status)
if (!can.onmotion.cache(can, function() { return value._uid }, can.ui.header) && value.auth_background) {}
can.onimport.myOption(can.sup)
},
index: function(can, value, role, _target) { role = role||value._role
can.ui.role && can.onmotion.toggle(can, can.ui.role, value._role == "creator")

View File

@ -1,6 +1,6 @@
{
"placeCreate": "创建", "placeRemove": "删除",
"credit": "用户名片", "member": "组织成员", "setting": "服务配置",
"credit": "服务名片", "member": "组织成员", "setting": "服务配置",
"qrcode": "场景码", "event": "事件流", "apply": "权限申请", "allow": "权限审批", "notice": "通知公告",
"market": "人民广场", "message": "消息待办", "recent": "最近访问", "service": "服务发现", "support": "客服支持",
"auth": "认证", "authCreate": "认证申请", "authCity": "城市认证", "authPersonal": "个人认证", "authService": "服务认证", "authCompany": "公司认证",

View File

@ -4,7 +4,10 @@ Volcanos(chat.ONIMPORT, {
if (can._stacks_root && can._stacks_root._stacks[[value.space,value.index, value.place_uid].join(",")]) { value._style.push("loaded") }
value.icons = can.misc.Resource(can, value.place_avatar||value.service_icon.split("?")[0], value.space)
return [
{view: html.TITLE, list: [value.place_name, can.onimport.authView(can, value), can.onimport.timeView(can, value)]},
{view: html.TITLE, list: [value.place_name, can.onimport.authView(can, value),
can.onimport.spaceView(can, value),
can.onimport.timeView(can, value),
]},
can.onimport.shipView(can, value),
]
}, function(event, value) { can.onaction._goback? can.onaction._goback(event, function() {

View File

@ -1,4 +1,6 @@
$output>div.item:not(.title) { border-radius:10px; margin:0 10px; }
$output>div.item:not(.title) {
// border-radius:10px;
margin:0 10px; }
$output>div.item { background-color:var(--output-bg-color); padding:10px; margin:10px; display:flex; align-items:center; }
$output>div.item span.name { flex-grow:1; }
$output>div.item span.outer { background-color:gray; border-radius:12px; padding:2px; height:24px; width:40px; display:inline-block; float:right; }
@ -6,5 +8,9 @@ $output>div.item span.inner { border-radius:10px; background-color:white; height
$output>div.item span.outer.on { background-color:var(--notice-bg-color); }
$output>div.item span.outer.on span.inner { float:right; }
$output>div.item.story i { width:40px; text-align:center; }
body:not(.mobile) $output>div.item:hover { background-color:var(--hover-bg-color); }
$output>div.item.title { margin-left:20px; }
$output>div.item.input input[type=text] { border:none; border-bottom:var(--box-border); text-align:right; flex-shrink:1; padding:0 20px; max-width:100px; }
$output>div.item.input input[type=text] { border:none; border-bottom:var(--box-border); text-align:right; flex-shrink:1; padding:0 20px; max-width:100px; }
$output>div.item.button { justify-content:center; margin:10px; }
$output>div.item.button.logout { height:48px; }
$output>div.item.button.logout input[type=button] { width:100%; max-width:240px; }

View File

@ -155,4 +155,5 @@ const (
SETTING_ALLOW_AUTO = "setting_allow_auto"
SETTING_RADIO = "radio"
SETTING_STORY = "story"
SETTING_BUTTON = "button"
)

View File

@ -1,16 +1,23 @@
Volcanos(chat.ONIMPORT, {
_init: function(can, msg) {
can.page.Append(can, can._output, msg.Table(function(value) {
if (value.type == "title") {
return {view: [[html.ITEM, html.TITLE], "", can.user.trans(can, value.name, value.help)]}
}
if (value.type == "title") { return {view: [[html.ITEM, html.TITLE], "", can.user.trans(can, value.name, value.help)]} }
return {view: [[html.ITEM, value.type, value.name]], list: [{text: [can.user.trans(can, value.name, value.help, "value.setting"), "", mdb.NAME]}, can.onimport[value.type](can, value)]}
}))
can.onappend.input(can, {type: html.BUTTON, name: "website", value: "进入官网", onclick: function() {
can.user.open("/")
}}, "", can._output)
can.onappend.input(can, {type: html.BUTTON, name: "logout", value: "退出登录", style: "danger", onclick: function() {
if (can.user.confirm("请确认退出登录")) { can.misc.CookieSessid(can, ""), location.reload() }
}}, "", can._output)
if (!can.misc.isDebug(can)) { return }
can.user.isTechOrRoot(can) && can.onimport._plugin(can, {index: "can.cookie"})
localStorage.length && can.onimport._plugin(can, {index: "can.localStorage"})
sessionStorage.length && can.onimport._plugin(can, {index: "can.sessionStorage"})
// can.onimport._plugin(can, {index: "can.runtime"})
can.page.Append(can, can._output, [{text: "debug"}])
},
_plugin: function(can, value) { value.width = can.ConfWidth()-20
can.onappend.plugin(can, value, function(sub) {
@ -43,4 +50,9 @@ Volcanos(chat.ONIMPORT, {
}
}}
},
})
Volcanos(chat.ONIMPORT, {
logout: function(event, can, button) {
can.user.logout(can)
},
})

View File

@ -2,5 +2,5 @@ $output>div>div.title { border-left:var(--box-notice3); padding-left:10px; margi
$output>div.from>div.title { border-left:var(--box-danger3); }
$output>div.head { margin-bottom:0; }
$output>div.list { height:unset !important; }
$output div.item.card div.title span.type { margin-left:auto; }
$output div.item.card div.title div.action { top:16px; }
body.width1 $output div.item.card div.title span.type { margin-left:auto; }
body.width1 $output div.item.card div.title div.action { top:16px; }