mirror of https://gitee.com/stylefeng/guns
Merge remote-tracking branch 'origin/master' into group2
# Conflicts: # src/main/java/cn/stylefeng/guns/modular/login/PositionViewController.javapull/65/head
commit
680c697d4b
|
@ -1,7 +1,7 @@
|
|||
package cn.stylefeng.guns.core.listener;
|
||||
|
||||
import cn.stylefeng.guns.core.consts.ProjectConstants;
|
||||
import cn.stylefeng.guns.modular.service.InitAdminService;
|
||||
import cn.stylefeng.guns.modular.index.service.InitAdminService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.boot.context.event.ApplicationReadyEvent;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
package cn.stylefeng.guns.modular.blackboard;
|
||||
|
||||
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
|
||||
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
||||
/**
|
||||
* 工作台和分析页界面渲染
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/29 21:29
|
||||
*/
|
||||
@Controller
|
||||
@Slf4j
|
||||
@ApiResource(name = "工作台和分析页面")
|
||||
public class BlackboardViewController {
|
||||
|
||||
/**
|
||||
* 工作台
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2018/12/24 22:43
|
||||
*/
|
||||
@GetResource(name = "工作台", path = "/blackboard/platform", requiredPermission = false)
|
||||
public String platform() {
|
||||
return "/modular/blackboard/board_platform.html";
|
||||
}
|
||||
|
||||
/**
|
||||
* 分析页面
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/29 21:27
|
||||
*/
|
||||
@GetResource(name = "分析页面", path = "/blackboard/analyse", requiredPermission = false)
|
||||
public String analyse() {
|
||||
return "/modular/blackboard/board_analyse.html";
|
||||
}
|
||||
|
||||
}
|
|
@ -1,68 +0,0 @@
|
|||
package cn.stylefeng.guns.modular.controller;
|
||||
|
||||
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
|
||||
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
|
||||
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleUserInfo;
|
||||
import cn.stylefeng.roses.kernel.file.FileOperatorApi;
|
||||
import cn.stylefeng.roses.kernel.menu.modular.service.SysMenuService;
|
||||
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
|
||||
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.layui.LayuiAppIndexMenus;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 首页相关的界面渲染
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/27 16:23
|
||||
*/
|
||||
@Controller
|
||||
@Slf4j
|
||||
@ApiResource(name = "首页相关的界面渲染")
|
||||
public class IndexViewController {
|
||||
|
||||
@Resource
|
||||
private SysMenuService sysMenuService;
|
||||
|
||||
@Resource
|
||||
private SysUserService sysUserService;
|
||||
|
||||
/**
|
||||
* 首页界面
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/13 17:19
|
||||
*/
|
||||
@GetResource(name = "首页界面", path = "/", requiredPermission = false, requiredLogin = false)
|
||||
public String indexView(Model model) {
|
||||
|
||||
// 当前用户已经登录,跳转到首页
|
||||
if (LoginContext.me().hasLogin()) {
|
||||
|
||||
LoginUser loginUser = LoginContext.me().getLoginUser();
|
||||
SimpleUserInfo simpleUserInfo = loginUser.getSimpleUserInfo();
|
||||
|
||||
// 渲染首页的菜单
|
||||
List<LayuiAppIndexMenus> layuiAppIndexMenus = sysMenuService.getLayuiIndexMenus();
|
||||
model.addAttribute("layuiAppIndexMenus", layuiAppIndexMenus);
|
||||
|
||||
// 获取首页的头像
|
||||
model.addAttribute("avatar", sysUserService.getUserAvatarUrl(simpleUserInfo.getAvatar()));
|
||||
|
||||
// 获取人员姓名
|
||||
model.addAttribute("name", simpleUserInfo.getRealName());
|
||||
|
||||
return "/index.html";
|
||||
}
|
||||
|
||||
// 当前用户没有登录,跳转到登录页面
|
||||
return "/login.html";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,142 @@
|
|||
package cn.stylefeng.guns.modular.index.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
|
||||
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
|
||||
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleRoleInfo;
|
||||
import cn.stylefeng.roses.kernel.auth.api.pojo.login.basic.SimpleUserInfo;
|
||||
import cn.stylefeng.roses.kernel.menu.modular.service.SysMenuService;
|
||||
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
|
||||
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
|
||||
import cn.stylefeng.roses.kernel.system.modular.organization.entity.HrOrganization;
|
||||
import cn.stylefeng.roses.kernel.system.modular.organization.service.HrOrganizationService;
|
||||
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService;
|
||||
import cn.stylefeng.roses.kernel.system.pojo.menu.layui.LayuiAppIndexMenus;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 首页相关的界面渲染
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/27 16:23
|
||||
*/
|
||||
@Controller
|
||||
@Slf4j
|
||||
@ApiResource(name = "首页相关的界面渲染")
|
||||
public class IndexViewController {
|
||||
|
||||
@Resource
|
||||
private SysMenuService sysMenuService;
|
||||
|
||||
@Resource
|
||||
private SysUserService sysUserService;
|
||||
|
||||
@Resource
|
||||
private HrOrganizationService hrOrganizationService;
|
||||
|
||||
/**
|
||||
* 首页界面
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/13 17:19
|
||||
*/
|
||||
@GetResource(name = "首页界面", path = "/", requiredLogin = false, requiredPermission = false)
|
||||
public String indexView(Model model) {
|
||||
|
||||
// 当前用户已经登录,跳转到首页
|
||||
if (LoginContext.me().hasLogin()) {
|
||||
|
||||
LoginUser loginUser = LoginContext.me().getLoginUser();
|
||||
SimpleUserInfo simpleUserInfo = loginUser.getSimpleUserInfo();
|
||||
|
||||
// 渲染首页的菜单
|
||||
List<LayuiAppIndexMenus> layuiAppIndexMenus = sysMenuService.getLayuiIndexMenus();
|
||||
model.addAttribute("layuiAppIndexMenus", layuiAppIndexMenus);
|
||||
|
||||
// 获取首页的头像
|
||||
model.addAttribute("avatar", sysUserService.getUserAvatarUrl(simpleUserInfo.getAvatar()));
|
||||
|
||||
// 获取人员姓名
|
||||
model.addAttribute("name", simpleUserInfo.getRealName());
|
||||
|
||||
return "/index.html";
|
||||
}
|
||||
|
||||
// 当前用户没有登录,跳转到登录页面
|
||||
return "/login.html";
|
||||
}
|
||||
|
||||
/**
|
||||
* 个人中心界面
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/29 21:53
|
||||
*/
|
||||
@GetResource(name = "个人中心界面", path = "/personal", requiredLogin = false)
|
||||
public String personal(Model model) {
|
||||
LoginUser loginUser = LoginContext.me().getLoginUser();
|
||||
|
||||
// 用户基本信息
|
||||
SimpleUserInfo simpleUserInfo = loginUser.getSimpleUserInfo();
|
||||
model.addAllAttributes(BeanUtil.beanToMap(simpleUserInfo));
|
||||
|
||||
// 角色名称
|
||||
List<SimpleRoleInfo> simpleRoleInfoList = loginUser.getSimpleRoleInfoList();
|
||||
if (ObjectUtil.isNotEmpty(simpleRoleInfoList)) {
|
||||
String roleName = simpleRoleInfoList.get(0).getRoleName();
|
||||
model.addAttribute("roleName", roleName);
|
||||
}
|
||||
|
||||
// 组织机构名称
|
||||
Long organizationId = loginUser.getOrganizationId();
|
||||
HrOrganization hrOrganization = hrOrganizationService.getById(organizationId);
|
||||
if (hrOrganization != null) {
|
||||
model.addAttribute("orgName", hrOrganization.getOrgName());
|
||||
}
|
||||
|
||||
// 渲染头像的url
|
||||
model.addAttribute("avatar", sysUserService.getUserAvatarUrl(simpleUserInfo.getAvatar()));
|
||||
|
||||
return "/modular/index/personal_info.html";
|
||||
}
|
||||
|
||||
/**
|
||||
* 锁屏界面
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/29 21:34
|
||||
*/
|
||||
@GetResource(name = "锁屏界面", path = "/lock", requiredPermission = false)
|
||||
public String lock() {
|
||||
return "/modular/index/lock_screen.html";
|
||||
}
|
||||
|
||||
/**
|
||||
* 主题切换界面
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/29 21:42
|
||||
*/
|
||||
@GetResource(name = "主题切换界面", path = "/theme", requiredPermission = false)
|
||||
public String theme() {
|
||||
return "/modular/index/theme.html";
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改密码界面
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/29 21:42
|
||||
*/
|
||||
@GetResource(name = "修改密码界面", path = "/changePassword", requiredPermission = false)
|
||||
public String changePassword() {
|
||||
return "/modular/index/change_password.html";
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package cn.stylefeng.guns.modular.service;
|
||||
package cn.stylefeng.guns.modular.index.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package cn.stylefeng.guns.modular.service;
|
||||
package cn.stylefeng.guns.modular.index.service;
|
||||
|
||||
import cn.stylefeng.guns.core.consts.ProjectConstants;
|
||||
import cn.stylefeng.roses.kernel.resource.modular.entity.SysResource;
|
|
@ -1,4 +1,4 @@
|
|||
package cn.stylefeng.guns.modular.controller;
|
||||
package cn.stylefeng.guns.modular.login;
|
||||
|
||||
import cn.stylefeng.roses.kernel.auth.api.AuthServiceApi;
|
||||
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
|
||||
|
@ -11,7 +11,6 @@ import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
|
|||
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
|
@ -19,7 +18,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
|||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 首页相关的界面渲染
|
||||
* 登录相关的界面渲染
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2020/12/27 16:23
|
||||
|
@ -67,7 +66,7 @@ public class LoginViewController {
|
|||
* @author majianguo
|
||||
* @date 2020/12/4 上午9:05
|
||||
*/
|
||||
@GetResource(name = "登出接口", path = "/logout", requiredPermission = false)
|
||||
@PostResource(name = "登出接口", path = "/logout", requiredPermission = false)
|
||||
@ResponseBody
|
||||
public ResponseData logoutPage() {
|
||||
authServiceApi.logout();
|
|
@ -95,15 +95,12 @@
|
|||
// 修改密码点击事件
|
||||
$('#setPsw').click(function () {
|
||||
|
||||
//获取多语言
|
||||
var langs = layui.data('system').lang;
|
||||
|
||||
admin.open({
|
||||
id: 'pswForm',
|
||||
type: 2,
|
||||
title: langs.MENU_CHANGE_PASSWORD,
|
||||
title: "修改密码",
|
||||
shade: 0,
|
||||
content: '${ctxPath}/system/user_chpwd'
|
||||
content: '${ctxPath}/changePassword'
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -29,16 +29,16 @@
|
|||
<a ew-event="fullScreen" title="全屏"><i class="layui-icon layui-icon-screen-full"></i></a>
|
||||
</li>
|
||||
<li class="layui-nav-item layui-hide-xs" lay-unselect>
|
||||
<a ew-event="lockScreen" title="锁屏" data-url="${ctxPath}/system/lock"><i class="layui-icon layui-icon-password"></i></a>
|
||||
<a ew-event="lockScreen" title="锁屏" data-url="${ctxPath}/lock"><i class="layui-icon layui-icon-password"></i></a>
|
||||
</li>
|
||||
<li class="layui-nav-item" lay-unselect>
|
||||
<a>
|
||||
<img src="${avatar!}" class="layui-nav-img">
|
||||
<cite>写死的用户</cite>
|
||||
<cite>${name!"用户"}</cite>
|
||||
</a>
|
||||
<dl class="layui-nav-child">
|
||||
<dd lay-unselect>
|
||||
<a ew-href="${ctxPath}/system/user_info">个人中心</a>
|
||||
<a ew-href="${ctxPath}/personal">个人中心</a>
|
||||
</dd>
|
||||
<dd lay-unselect>
|
||||
<a id="setPsw">修改密码</a>
|
||||
|
@ -52,7 +52,7 @@
|
|||
</dl>
|
||||
</li>
|
||||
<li class="layui-nav-item" lay-unselect>
|
||||
<a ew-event="theme" title="主题" data-url="${ctxPath}/system/theme"><i class="layui-icon layui-icon-more-vertical"></i></a>
|
||||
<a ew-event="theme" title="主题" data-url="${ctxPath}/theme"><i class="layui-icon layui-icon-more-vertical"></i></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
|
@ -1,21 +1,21 @@
|
|||
@layout("/layout/_container.html",{title:"修改密码",bg:"bg-white",js:["/assets/modular/frame/password.js"]}){
|
||||
@layout("/layout/_container.html", {title:"修改密码", bg:"bg-white", js:["/assets/modular/frame/password.js"]}){
|
||||
<div class="layui-form model-form" id="form-psw">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">${lang.get("FIELD_OLD_PASSWORD","旧密码")}:</label>
|
||||
<label class="layui-form-label">旧密码:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="password" name="oldPassword" placeholder="请输入原始密码" class="layui-input"
|
||||
lay-verType="tips" lay-verify="required" required/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">${lang.get("FIELD_NEW_PASSWORD","新密码")}:</label>
|
||||
<label class="layui-form-label">新密码:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="password" name="newPassword" placeholder="请输入新密码" class="layui-input"
|
||||
lay-verType="tips" lay-verify="required|psw" required/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">${lang.get("FIELD_RE_PASSWORD","确认密码")}:</label>
|
||||
<label class="layui-form-label">确认密码:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="password" name="repeatPassword" placeholder="请再次输入新密码" class="layui-input"
|
||||
lay-verType="tips" lay-verify="required|repsw" required/>
|
||||
|
@ -23,8 +23,8 @@
|
|||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block text-right">
|
||||
<button class="layui-btn" lay-filter="submit-psw" lay-submit>${lang.get("BTN_SAVE","保存")}</button>
|
||||
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">${lang.get("BTN_CANCEL","取消")}</button>
|
||||
<button class="layui-btn" lay-filter="submit-psw" lay-submit>保存</button>
|
||||
<button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -1,9 +1,9 @@
|
|||
@layout("/layout/_container.html",{title:"个人中心",css:["/assets/modular/frame/user_info.css"],js:["/assets/modular/frame/user_info.js"]}){
|
||||
@layout("/layout/_container.html", {title:"个人中心", css:["/assets/modular/frame/user_info.css"], js:["/assets/modular/frame/user_info.js"]}){
|
||||
<div class="layui-body-header">
|
||||
<span class="layui-body-header-title">${lang.get("MENU_PERSONAL_INFO","个人信息")}</span>
|
||||
<span class="layui-body-header-title">个人信息</span>
|
||||
<span class="layui-breadcrumb pull-right">
|
||||
<a href="${ctxPath}/system/console">${lang.get("MENU_INDEX","首页")}</a>
|
||||
<a><cite>${lang.get("MENU_PERSONAL_INFO","个人中心")}</cite></a>
|
||||
<a href="${ctxPath}/system/console">首页</a>
|
||||
<a><cite>个人中心</cite></a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
@ -18,18 +18,18 @@
|
|||
<div class="user-info-head" id="imgHead">
|
||||
<img id="avatarPreview" src="${avatar}"/>
|
||||
</div>
|
||||
<h2 style="padding-top: 20px;">${name}</h2>
|
||||
<p style="padding-top: 8px;">${roleName!} ${deptName!}</p>
|
||||
<h2 style="padding-top: 20px;">${realName!靓仔}</h2>
|
||||
<p style="padding-top: 8px;">${roleName!角色空} ${orgName!组织机构空}</p>
|
||||
</div>
|
||||
<div class="layui-text" style="padding-top: 30px;">
|
||||
<div class="info-list-item">
|
||||
<i class="layui-icon layui-icon-notice"></i>
|
||||
<p>${email!}</p>
|
||||
<p>${email!'sn93@qq.com'}</p>
|
||||
</div>
|
||||
|
||||
<div class="info-list-item">
|
||||
<i class="layui-icon layui-icon-cellphone"></i>
|
||||
<p>${phone!}</p>
|
||||
<p>${phone!18200000000}</p>
|
||||
</div>
|
||||
<div class="info-list-item">
|
||||
<i class="layui-icon layui-icon-location"></i>
|
||||
|
@ -52,46 +52,46 @@
|
|||
|
||||
<div class="layui-tab layui-tab-brief" lay-filter="userInfoTab">
|
||||
<ul class="layui-tab-title">
|
||||
<li class="layui-this">${lang.get("MENU_BASE_INFO","基本信息")}</li>
|
||||
<li>${lang.get("MENU_OTHER","其他")}</li>
|
||||
<li class="layui-this">基本信息</li>
|
||||
<li>其他</li>
|
||||
</ul>
|
||||
<div class="layui-tab-content">
|
||||
<div class="layui-form layui-tab-item layui-show" lay-filter="userInfoForm">
|
||||
<input type="hidden" name="userId"/>
|
||||
<div class="layui-form user-info-form" style="max-width: 400px;padding-top: 25px;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">${lang.get("FIELD_ACCOUNT","账号")}:</label>
|
||||
<label class="layui-form-label">账号:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="account" class="layui-input layui-disabled" lay-verify="required" disabled/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">${lang.get("FIELD_SEX","性别")}:</label>
|
||||
<label class="layui-form-label">性别:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="sex" value="M" title="男">
|
||||
<input type="radio" name="sex" value="F" title="女">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">${lang.get("FIELD_EMAIL","邮箱")}:<span style="color: red;">*</span></label>
|
||||
<label class="layui-form-label">邮箱:<span style="color: red;">*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="email" name="email" class="layui-input" lay-verify="required|email" required/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">${lang.get("FIELD_NAME","姓名")}:<span style="color: red;">*</span></label>
|
||||
<label class="layui-form-label">姓名:<span style="color: red;">*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" class="layui-input" lay-verify="required" required/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">${lang.get("FIELD_BIRTHDAY","生日")}:</label>
|
||||
<label class="layui-form-label">生日:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" id="birthday" name="birthday" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">${lang.get("FIELD_PHONE","电话")}:</label>
|
||||
<label class="layui-form-label">电话:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="phone" class="layui-input"/>
|
||||
</div>
|
||||
|
@ -99,7 +99,7 @@
|
|||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-filter="userInfoSubmit" lay-submit>
|
||||
${lang.get("BTN_UPDATE_INFO","更新基本信息")}
|
||||
更新基本信息
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
Loading…
Reference in New Issue