move some css to less, remove unneeded css from pages, remove page footer for some page
Signed-off-by: Puqns67 <me@puqns67.icu>
This commit is contained in:
parent
906fccf619
commit
fc5707c285
@ -8,8 +8,8 @@ import org.springframework.web.bind.annotation.RequestParam
|
|||||||
import org.springframework.web.servlet.mvc.support.RedirectAttributes
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes
|
||||||
import team8.fruitable.controller.util.error
|
import team8.fruitable.controller.util.error
|
||||||
import team8.fruitable.datebase.entity.Item
|
import team8.fruitable.datebase.entity.Item
|
||||||
import team8.fruitable.datebase.entity.User
|
|
||||||
import team8.fruitable.datebase.entity.Order
|
import team8.fruitable.datebase.entity.Order
|
||||||
|
import team8.fruitable.datebase.entity.User
|
||||||
import team8.fruitable.datebase.repository.*
|
import team8.fruitable.datebase.repository.*
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
|
@ -38,9 +38,9 @@ class User(private val accountRepository: AccountRepository) {
|
|||||||
@RequestParam("is_admin", required = false) isAdmin: Boolean?,
|
@RequestParam("is_admin", required = false) isAdmin: Boolean?,
|
||||||
@RequestParam("redirect", required = false) redirect: String?
|
@RequestParam("redirect", required = false) redirect: String?
|
||||||
): String {
|
): String {
|
||||||
if (!this.hasAdminPermissions(token)) return error(attributes, "创建用户", "账户无权限")
|
if (!this.hasAdminPermissions(token)) return error(attributes, "创建账户", "账户无权限")
|
||||||
if (name.isBlank()) return error(attributes, "创建用户", "用户名不能为空", "/editor?use=user")
|
if (name.isBlank()) return error(attributes, "创建账户", "账户名不能为空", "/editor?use=user")
|
||||||
if (password.isBlank()) return error(attributes, "创建用户", "密码不能为空", "/editor?use=user")
|
if (password.isBlank()) return error(attributes, "创建账户", "密码不能为空", "/editor?use=user")
|
||||||
accountRepository.save(User(name, password, age, gender, phone, email, address, isAdmin))
|
accountRepository.save(User(name, password, age, gender, phone, email, address, isAdmin))
|
||||||
redirect?.let { return "redirect:/${it}" }
|
redirect?.let { return "redirect:/${it}" }
|
||||||
return "redirect:/editor?use=user"
|
return "redirect:/editor?use=user"
|
||||||
@ -62,10 +62,10 @@ class User(private val accountRepository: AccountRepository) {
|
|||||||
@RequestParam("is_admin", required = false) isAdmin: Boolean?,
|
@RequestParam("is_admin", required = false) isAdmin: Boolean?,
|
||||||
@RequestParam("redirect", required = false) redirect: String?
|
@RequestParam("redirect", required = false) redirect: String?
|
||||||
): String {
|
): String {
|
||||||
val currentUser = this.getCurrentUser(token) ?: return error(attributes, "更新用户", "账户未登录")
|
val currentUser = this.getCurrentUser(token) ?: return error(attributes, "更新账户", "账户未登录")
|
||||||
if (!this.hasAdminPermissions(currentUser)) return error(attributes, "更新用户", "账户无权限")
|
if (!this.hasAdminPermissions(currentUser)) return error(attributes, "更新账户", "账户无权限")
|
||||||
val user = accountRepository.findById(id).orElse(null) ?: return error(
|
val user = accountRepository.findById(id).orElse(null) ?: return error(
|
||||||
attributes, "更新用户", "未找到此用户", "/editor?use=user"
|
attributes, "更新账户", "未找到此账户", "/editor?use=user"
|
||||||
)
|
)
|
||||||
user.update(name, password, age, gender, phone, email, address, isAdmin)
|
user.update(name, password, age, gender, phone, email, address, isAdmin)
|
||||||
accountRepository.save(user)
|
accountRepository.save(user)
|
||||||
@ -86,11 +86,11 @@ class User(private val accountRepository: AccountRepository) {
|
|||||||
@PathVariable("id") id: Long,
|
@PathVariable("id") id: Long,
|
||||||
@RequestParam("redirect", required = false) redirect: String?
|
@RequestParam("redirect", required = false) redirect: String?
|
||||||
): String {
|
): String {
|
||||||
val currentUser = this.getCurrentUser(token) ?: return error(attributes, "禁用用户", "账户未登录")
|
val currentUser = this.getCurrentUser(token) ?: return error(attributes, "禁用账户", "账户未登录")
|
||||||
if (!this.hasAdminPermissions(currentUser)) return error(attributes, "禁用用户", "账户无权限")
|
if (!this.hasAdminPermissions(currentUser)) return error(attributes, "禁用账户", "账户无权限")
|
||||||
if (currentUser.id == id) return error(attributes, "禁用用户", "无法删除当前使用的账户", "/editor?use=user")
|
if (currentUser.id == id) return error(attributes, "禁用账户", "无法删除当前使用的账户", "/editor?use=user")
|
||||||
val user = accountRepository.findById(id).orElse(null) ?: return error(
|
val user = accountRepository.findById(id).orElse(null) ?: return error(
|
||||||
attributes, "禁用用户", "未找到此用户", "/editor?use=user"
|
attributes, "禁用账户", "未找到此账户", "/editor?use=user"
|
||||||
)
|
)
|
||||||
user.revoke()
|
user.revoke()
|
||||||
accountRepository.delete(user)
|
accountRepository.delete(user)
|
||||||
|
@ -31,10 +31,6 @@ class Editor(
|
|||||||
return user?.isAdmin ?: false
|
return user?.isAdmin ?: false
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun hasAdminPermissions(token: String?): Boolean {
|
|
||||||
return this.hasAdminPermissions(this.getCurrentUser(token))
|
|
||||||
}
|
|
||||||
|
|
||||||
private final val editorTabs: Array<Pair<String, String>> = arrayOf(
|
private final val editorTabs: Array<Pair<String, String>> = arrayOf(
|
||||||
"user" to "用户",
|
"user" to "用户",
|
||||||
"item" to "商品"
|
"item" to "商品"
|
||||||
@ -109,7 +105,7 @@ class Editor(
|
|||||||
when (action) {
|
when (action) {
|
||||||
"creating" -> model["isCreating"] = true
|
"creating" -> model["isCreating"] = true
|
||||||
"updating" -> model["isUpdating"] = true
|
"updating" -> model["isUpdating"] = true
|
||||||
"deleting" -> model["isDeleting"] = true
|
"revoking" -> model["isRevoking"] = true
|
||||||
else -> model["isNothing"] = true
|
else -> model["isNothing"] = true
|
||||||
}
|
}
|
||||||
if (action == "updating" || action == "deleting") {
|
if (action == "updating" || action == "deleting") {
|
||||||
|
0
src/main/resources/static/styles/cart.less
Normal file
0
src/main/resources/static/styles/cart.less
Normal file
@ -1,44 +0,0 @@
|
|||||||
#Footer {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
height: 150px;
|
|
||||||
width: 100%;
|
|
||||||
border-top: 2px solid #3bfeff;
|
|
||||||
background-image: linear-gradient(#489dff, #355ae8, #702CF5);
|
|
||||||
}
|
|
||||||
|
|
||||||
#Footer[pined] {
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Footer div {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Footer .Infos {
|
|
||||||
flex: 1 0;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: space-evenly;
|
|
||||||
align-items: flex-start;
|
|
||||||
padding: 10px 50px 10px 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Footer .Infos .Icon {
|
|
||||||
height: 80px;
|
|
||||||
width: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Footer .Contents {
|
|
||||||
flex-direction: column;
|
|
||||||
padding-left: 15px;
|
|
||||||
font-size: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Footer .Links {
|
|
||||||
flex: 1 0;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: space-evenly;
|
|
||||||
align-items: flex-end;
|
|
||||||
padding: 10px 50px 10px 50px;
|
|
||||||
}
|
|
44
src/main/resources/static/styles/footer.less
Normal file
44
src/main/resources/static/styles/footer.less
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
#Footer {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
height: 150px;
|
||||||
|
width: 100%;
|
||||||
|
border-top: 2px solid #3bfeff;
|
||||||
|
background-image: linear-gradient(#489dff, #355ae8, #702CF5);
|
||||||
|
|
||||||
|
&[pined] {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
div {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Infos {
|
||||||
|
flex: 1 0;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
align-items: flex-start;
|
||||||
|
padding: 10px 50px 10px 50px;
|
||||||
|
|
||||||
|
.Icon {
|
||||||
|
height: 80px;
|
||||||
|
width: 80px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.Contents {
|
||||||
|
flex-direction: column;
|
||||||
|
padding-left: 15px;
|
||||||
|
font-size: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Links {
|
||||||
|
flex: 1 0;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
align-items: flex-end;
|
||||||
|
padding: 10px 50px 10px 50px;
|
||||||
|
}
|
||||||
|
}
|
@ -1,131 +0,0 @@
|
|||||||
@font-face {
|
|
||||||
font-family: "SmileySans";
|
|
||||||
src: url("../fonts/SmileySans-Oblique.otf.woff2") format("woff2");
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes BackgroundBlur {
|
|
||||||
from {
|
|
||||||
border-radius: 0px;
|
|
||||||
background-color: rgba(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
border-radius: 8px;
|
|
||||||
background-color: rgba(0, 0, 0, 0.25);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes BackgroundUnblur {
|
|
||||||
from {
|
|
||||||
border-radius: 8px;
|
|
||||||
background-color: rgba(0, 0, 0, 0.25);
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
border-radius: 0px;
|
|
||||||
background-color: rgba(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
body[headerPined] {
|
|
||||||
padding-top: 58px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header {
|
|
||||||
display: flex;
|
|
||||||
height: 56px;
|
|
||||||
width: 100%;
|
|
||||||
flex-direction: row;
|
|
||||||
border-bottom: 2px solid #3bfeff;
|
|
||||||
background-image: linear-gradient(#355ae8, #489dff);
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header[pined] {
|
|
||||||
position: fixed;
|
|
||||||
top: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .List {
|
|
||||||
flex: 0 0 auto;
|
|
||||||
padding-left: 5px;
|
|
||||||
padding-right: 5px;
|
|
||||||
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-around;
|
|
||||||
align-items: center;
|
|
||||||
color: wheat;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .List .Text {
|
|
||||||
padding: 3px;
|
|
||||||
animation-duration: 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .List .Text[blured] {
|
|
||||||
border-radius: 8px;
|
|
||||||
background-color: rgba(0, 0, 0, 0.25);
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .Blank {
|
|
||||||
flex: 1 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .Title {
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-right: 15px;
|
|
||||||
font-size: 32px;
|
|
||||||
font-family: "SmileySans";
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .Link .Text {
|
|
||||||
font-size: 22px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .Link[this] {
|
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .Button .Text {
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .SearchBar {
|
|
||||||
flex-grow: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .SearchBar .InputBar {
|
|
||||||
flex-grow: 1;
|
|
||||||
|
|
||||||
height: 30px;
|
|
||||||
border: 2px solid #3bfeff;
|
|
||||||
border-radius: 15px;
|
|
||||||
background-image: linear-gradient(#489dff, #355ae8);
|
|
||||||
padding-left: 10px;
|
|
||||||
padding-right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .Clock {
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .PinHeader .PIN {
|
|
||||||
padding: 10px;
|
|
||||||
height: 25px;
|
|
||||||
width: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .PinHeader .PIN {
|
|
||||||
animation-duration: 0.3s;
|
|
||||||
animation-name: BackgroundUnblur;
|
|
||||||
|
|
||||||
border-radius: 0px;
|
|
||||||
background-color: rgba(0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
#Header .PinHeader .PIN[checked] {
|
|
||||||
animation-duration: 0.3s;
|
|
||||||
animation-name: BackgroundBlur;
|
|
||||||
|
|
||||||
border-radius: 8px;
|
|
||||||
background-color: rgba(0, 0, 0, 0.25);
|
|
||||||
}
|
|
126
src/main/resources/static/styles/header.less
Normal file
126
src/main/resources/static/styles/header.less
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: "SmileySans";
|
||||||
|
src: url("../fonts/SmileySans-Oblique.otf.woff2") format("woff2");
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes BackgroundBlur {
|
||||||
|
from {
|
||||||
|
border-radius: 0;
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes BackgroundUnBlur {
|
||||||
|
from {
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
border-radius: 0;
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body[headerPined] {
|
||||||
|
padding-top: 58px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#Header {
|
||||||
|
display: flex;
|
||||||
|
height: 56px;
|
||||||
|
width: 100%;
|
||||||
|
flex-direction: row;
|
||||||
|
border-bottom: 2px solid #3bfeff;
|
||||||
|
background-image: linear-gradient(#355ae8, #489dff);
|
||||||
|
|
||||||
|
&[pined] {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .List {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
padding-left: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
color: wheat;
|
||||||
|
|
||||||
|
> .Text {
|
||||||
|
padding: 3px;
|
||||||
|
animation-duration: 0.3s;
|
||||||
|
|
||||||
|
&[blured] {
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> .Blank {
|
||||||
|
flex: 1 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .Title {
|
||||||
|
padding-left: 15px;
|
||||||
|
padding-right: 15px;
|
||||||
|
font-size: 32px;
|
||||||
|
font-family: "SmileySans", sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .Link {
|
||||||
|
&[this] {
|
||||||
|
background-color: rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
> .Text {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> .Button > .Text {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .SearchBar {
|
||||||
|
flex-grow: 1;
|
||||||
|
|
||||||
|
.InputBar {
|
||||||
|
flex-grow: 1;
|
||||||
|
|
||||||
|
height: 30px;
|
||||||
|
border: 2px solid #3bfeff;
|
||||||
|
border-radius: 15px;
|
||||||
|
background-image: linear-gradient(#489dff, #355ae8);
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
> .Clock {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.PinHeader .PIN {
|
||||||
|
padding: 10px;
|
||||||
|
height: 25px;
|
||||||
|
width: 25px;
|
||||||
|
|
||||||
|
animation-duration: 0.3s;
|
||||||
|
animation-name: BackgroundUnBlur;
|
||||||
|
border-radius: 0;
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
|
||||||
|
&[checked] {
|
||||||
|
animation-name: BackgroundBlur;
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -59,7 +59,7 @@ div {
|
|||||||
|
|
||||||
.ContentHeader .RollingBanner .Infos .Title {
|
.ContentHeader .RollingBanner .Infos .Title {
|
||||||
flex: 2 1;
|
flex: 2 1;
|
||||||
font-family: "Normal";
|
font-family: "Normal", system-ui;
|
||||||
color: rgba(21, 255, 172, 0.8);
|
color: rgba(21, 255, 172, 0.8);
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@ -75,10 +75,9 @@ div {
|
|||||||
.ContentHeader .RollingBanner .Infos .Selecter .Button {
|
.ContentHeader .RollingBanner .Infos .Selecter .Button {
|
||||||
flex: 1 1;
|
flex: 1 1;
|
||||||
width: 22px;
|
width: 22px;
|
||||||
background-color: rgba(0, 60, 130, 0.8);
|
background: rgba(0, 60, 130, 0.8);
|
||||||
background: unset;
|
|
||||||
border: unset;
|
border: unset;
|
||||||
font-family: "Normal";
|
font-family: "Normal", system-ui;
|
||||||
color: rgba(0, 225, 145, 0.8);
|
color: rgba(0, 225, 145, 0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,7 +126,7 @@ div {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: start;
|
align-items: start;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-family: "Normal";
|
font-family: "Normal", system-ui;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: rgba(21, 255, 172, 0.8);
|
color: rgba(21, 255, 172, 0.8);
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
@ -174,7 +173,7 @@ div {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.Items .ItemSection .Item .Descriptions span {
|
.Items .ItemSection .Item .Descriptions span {
|
||||||
font-family: "Normal";
|
font-family: "Normal", system-ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Items .ItemSection .Item .Descriptions .TitlePrices {
|
.Items .ItemSection .Item .Descriptions .TitlePrices {
|
||||||
@ -199,14 +198,8 @@ div {
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.Items
|
.Items .ItemSection .Item .Descriptions .TitlePrices .Prices .Price[has_vip_price] {
|
||||||
.ItemSection
|
color: grey;
|
||||||
.Item
|
|
||||||
.Descriptions
|
|
||||||
.TitlePrices
|
|
||||||
.Prices
|
|
||||||
.Price[has_vip_price] {
|
|
||||||
color: gray;
|
|
||||||
font-weight: lighter;
|
font-weight: lighter;
|
||||||
font-style: italic;
|
font-style: italic;
|
||||||
text-decoration: line-through;
|
text-decoration: line-through;
|
||||||
|
@ -115,6 +115,20 @@ div {
|
|||||||
background-color: darkgreen;
|
background-color: darkgreen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&[revoked] {
|
||||||
|
> .Price {
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .Options {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
> .Buttons > .Button {
|
||||||
|
background-color: gray;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,65 +0,0 @@
|
|||||||
@keyframes loading-zoom-in {
|
|
||||||
0% {
|
|
||||||
transform: scale(0);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes loading-move {
|
|
||||||
0% {
|
|
||||||
transform: translate(0, 0);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: translate(24px, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes loading-zoom-out {
|
|
||||||
0% {
|
|
||||||
transform: scale(1);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: scale(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.Loading {
|
|
||||||
display: inline-block;
|
|
||||||
position: relative;
|
|
||||||
width: 62px;
|
|
||||||
height: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Loading div {
|
|
||||||
position: absolute;
|
|
||||||
top: 1px;
|
|
||||||
width: 13px;
|
|
||||||
height: 13px;
|
|
||||||
border-radius: 50%;
|
|
||||||
background: #3bfeff;
|
|
||||||
border: 1px solid black;
|
|
||||||
animation-duration: 0.6s;
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Loading div:nth-child(1) {
|
|
||||||
left: 0px;
|
|
||||||
animation-name: loading-zoom-in;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Loading div:nth-child(2) {
|
|
||||||
left: 0px;
|
|
||||||
animation-name: loading-move;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Loading div:nth-child(3) {
|
|
||||||
left: 24px;
|
|
||||||
animation-name: loading-move;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Loading div:nth-child(4) {
|
|
||||||
left: 48px;
|
|
||||||
animation-name: loading-zoom-out;
|
|
||||||
}
|
|
65
src/main/resources/static/styles/loading.less
Normal file
65
src/main/resources/static/styles/loading.less
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
@keyframes loading-zoom-in {
|
||||||
|
0% {
|
||||||
|
transform: scale(0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes loading-move {
|
||||||
|
0% {
|
||||||
|
transform: translate(0, 0);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: translate(24px, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes loading-zoom-out {
|
||||||
|
0% {
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
transform: scale(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.Loading {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
width: 62px;
|
||||||
|
height: 15px;
|
||||||
|
|
||||||
|
> div {
|
||||||
|
position: absolute;
|
||||||
|
top: 1px;
|
||||||
|
width: 13px;
|
||||||
|
height: 13px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: #3bfeff;
|
||||||
|
border: 1px solid black;
|
||||||
|
animation-duration: 0.6s;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
|
||||||
|
&:nth-child(1) {
|
||||||
|
left: 0;
|
||||||
|
animation-name: loading-zoom-in;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
left: 0;
|
||||||
|
animation-name: loading-move;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(3) {
|
||||||
|
left: 24px;
|
||||||
|
animation-name: loading-move;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(4) {
|
||||||
|
left: 48px;
|
||||||
|
animation-name: loading-zoom-out;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -8,10 +8,9 @@
|
|||||||
<script type="text/javascript" src="/scripts/top.js"></script>
|
<script type="text/javascript" src="/scripts/top.js"></script>
|
||||||
<script type="text/javascript" src="/scripts/footer.js"></script>
|
<script type="text/javascript" src="/scripts/footer.js"></script>
|
||||||
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/header.css">
|
<link type="text/css" rel="stylesheet/less" href="/styles/header.less">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/footer.css">
|
|
||||||
<link type="text/css" rel="stylesheet/less" href="/styles/form.less">
|
<link type="text/css" rel="stylesheet/less" href="/styles/form.less">
|
||||||
<!-- 页面特定的样式表 -->
|
<!-- 页面特定的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/user.css">
|
<link type="text/css" rel="stylesheet" href="/styles/user.css">
|
||||||
@ -97,7 +96,5 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{>footer}}
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="zh-Hans">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>编辑 - 在线果蔬商城</title>
|
||||||
|
<script type="text/javascript" src="/scripts/header.js"></script>
|
||||||
|
<script type="text/javascript" src="/scripts/clock.js"></script>
|
||||||
|
<script type="text/javascript" src="/scripts/top.js"></script>
|
||||||
|
<script type="text/javascript" src="/scripts/footer.js"></script>
|
||||||
|
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
||||||
|
<!-- 页面公共的样式表 -->
|
||||||
|
<link type="text/css" rel="stylesheet/less" href="/styles/header.less">
|
||||||
|
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
||||||
|
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
||||||
|
<link type="text/css" rel="stylesheet/less" href="/styles/form.less">
|
||||||
|
<!-- 页面特定的样式表 -->
|
||||||
|
<link type="text/css" rel="stylesheet/less" href="/styles/edit.less">
|
||||||
|
<!-- 外部小组件 -->
|
||||||
|
<script src="/scripts/lib/less.min.js"></script>
|
||||||
|
<script src="/scripts/lib/anime.min.js"></script>
|
||||||
|
<script async src="/scripts/lib/explosion.min.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
{{>header}}
|
||||||
|
|
||||||
|
<!-- 页面内容 -->
|
||||||
|
<div id="Contents">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -9,10 +9,9 @@
|
|||||||
<script type="text/javascript" src="/scripts/footer.js"></script>
|
<script type="text/javascript" src="/scripts/footer.js"></script>
|
||||||
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
||||||
<!-- 页面公共的样式表 -->
|
<!-- 页面公共的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/header.css">
|
<link type="text/css" rel="stylesheet/less" href="/styles/header.less">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/footer.css">
|
|
||||||
<link type="text/css" rel="stylesheet/less" href="/styles/form.less">
|
<link type="text/css" rel="stylesheet/less" href="/styles/form.less">
|
||||||
<!-- 页面特定的样式表 -->
|
<!-- 页面特定的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet/less" href="/styles/edit.less">
|
<link type="text/css" rel="stylesheet/less" href="/styles/edit.less">
|
||||||
@ -33,9 +32,9 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
Array.from(document.getElementsByClassName("remove")).forEach((v) => {
|
Array.from(document.getElementsByClassName("revoke")).forEach((v) => {
|
||||||
v.addEventListener("click", function () {
|
v.addEventListener("click", function () {
|
||||||
window.location.replace(`/editor?use={{using}}&action=deleting&target=${getID(this)}`);
|
window.location.replace(`/editor?use={{using}}&action=revoking&target=${getID(this)}`);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -97,7 +96,5 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{>footer}}
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
<td>{{tagPretty}}</td>
|
<td>{{tagPretty}}</td>
|
||||||
<td>
|
<td>
|
||||||
<button class="update">编辑</button>
|
<button class="update">编辑</button>
|
||||||
<button class="remove">删除</button>
|
<button class="revoke">撤销</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{/data}}
|
{{/data}}
|
||||||
@ -123,10 +123,10 @@
|
|||||||
</form>
|
</form>
|
||||||
{{/isUpdating}}
|
{{/isUpdating}}
|
||||||
|
|
||||||
{{#isDeleting}}
|
{{#isRevoking}}
|
||||||
<form class="TabForm" action="/action/edit/item/delete/{{target.id}}" method="post">
|
<form class="TabForm" action="/action/edit/item/delete/{{target.id}}" method="post">
|
||||||
<h2>确定要删除商品 {{target.name}} 吗?</h2>
|
<h2>确定要删除商品 {{target.name}} 吗?</h2>
|
||||||
<button class="TabButton" type="submit">删除</button>
|
<button class="TabButton" type="submit">删除</button>
|
||||||
</form>
|
</form>
|
||||||
{{/isDeleting}}
|
{{/isRevoking}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<td>{{#isAdmin}}是{{/isAdmin}}{{^isAdmin}}否{{/isAdmin}}</td>
|
<td>{{#isAdmin}}是{{/isAdmin}}{{^isAdmin}}否{{/isAdmin}}</td>
|
||||||
<td>
|
<td>
|
||||||
<button class="update">编辑</button>
|
<button class="update">编辑</button>
|
||||||
<button class="remove">删除</button>
|
<button class="revoke">禁用</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{/data}}
|
{{/data}}
|
||||||
@ -184,10 +184,10 @@
|
|||||||
</form>
|
</form>
|
||||||
{{/isUpdating}}
|
{{/isUpdating}}
|
||||||
|
|
||||||
{{#isDeleting}}
|
{{#isRevoking}}
|
||||||
<form class="TabForm" action="/action/edit/user/delete/{{target.id}}" method="post">
|
<form class="TabForm" action="/action/edit/user/delete/{{target.id}}" method="post">
|
||||||
<h2>确定要删除用户 {{target.name}} 吗?</h2>
|
<h2>确定要删除用户 {{target.name}} 吗?</h2>
|
||||||
<button class="TabButton" type="submit">删除</button>
|
<button class="TabButton" type="submit">删除</button>
|
||||||
</form>
|
</form>
|
||||||
{{/isDeleting}}
|
{{/isRevoking}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -11,11 +11,11 @@
|
|||||||
<script type="module" src="/scripts/index.js"></script>
|
<script type="module" src="/scripts/index.js"></script>
|
||||||
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
||||||
<!-- 页面公共的样式表 -->
|
<!-- 页面公共的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/header.css">
|
<link type="text/css" rel="stylesheet" href="/styles/header.less">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/footer.css">
|
<link type="text/css" rel="stylesheet" href="/styles/footer.less">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/loading.css">
|
<link type="text/css" rel="stylesheet" href="/styles/loading.less">
|
||||||
<!-- 页面特定的样式表 -->
|
<!-- 页面特定的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/error.css">
|
<link type="text/css" rel="stylesheet" href="/styles/error.css">
|
||||||
<!-- 外部小组件 -->
|
<!-- 外部小组件 -->
|
||||||
@ -40,7 +40,5 @@
|
|||||||
{{/redirect}}
|
{{/redirect}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{>footer}}
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -8,8 +8,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="Links">
|
<div class="Links">
|
||||||
<div class="Title"></div>
|
<a href="https://git.puqns67.icu/Puqns67/fruitable">Git Repo</a>
|
||||||
<div class="Contents"></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -17,5 +16,6 @@
|
|||||||
<div id="Floater">
|
<div id="Floater">
|
||||||
<!-- 回到顶层 -->
|
<!-- 回到顶层 -->
|
||||||
<div class="TOP"></div>
|
<div class="TOP"></div>
|
||||||
<canvas class="fireworks" style="position: fixed; left: 0; top: 0; z-index: 1; pointer-events: none;"></canvas>
|
<!-- 暂时关闭点击特效 -->
|
||||||
|
<!--<canvas class="fireworks" style="position: fixed; left: 0; top: 0; z-index: 1; pointer-events: none;"></canvas>-->
|
||||||
</div>
|
</div>
|
||||||
|
@ -11,14 +11,15 @@
|
|||||||
<script type="module" src="/scripts/index.js"></script>
|
<script type="module" src="/scripts/index.js"></script>
|
||||||
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
||||||
<!-- 页面公共的样式表 -->
|
<!-- 页面公共的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/header.css">
|
<link type="text/css" rel="stylesheet/less" href="/styles/header.less">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/footer.css">
|
<link type="text/css" rel="stylesheet/less" href="/styles/footer.less">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/loading.css">
|
<link type="text/css" rel="stylesheet/less" href="/styles/loading.less">
|
||||||
<!-- 页面特定的样式表 -->
|
<!-- 页面特定的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/index.css">
|
<link type="text/css" rel="stylesheet" href="/styles/index.css">
|
||||||
<!-- 外部小组件 -->
|
<!-- 外部小组件 -->
|
||||||
|
<script src="/scripts/lib/less.min.js"></script>
|
||||||
<script src="/scripts/lib/anime.min.js"></script>
|
<script src="/scripts/lib/anime.min.js"></script>
|
||||||
<script async src="/scripts/lib/explosion.min.js"></script>
|
<script async src="/scripts/lib/explosion.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
@ -10,10 +10,9 @@
|
|||||||
<script type="text/javascript" src="/scripts/item.js"></script>
|
<script type="text/javascript" src="/scripts/item.js"></script>
|
||||||
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
||||||
<!-- 页面公共的样式表 -->
|
<!-- 页面公共的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/header.css">
|
<link type="text/css" rel="stylesheet/less" href="/styles/header.less">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/footer.css">
|
|
||||||
<!-- 页面特定的样式表 -->
|
<!-- 页面特定的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet/less" href="/styles/item.less">
|
<link type="text/css" rel="stylesheet/less" href="/styles/item.less">
|
||||||
<!-- 外部小组件 -->
|
<!-- 外部小组件 -->
|
||||||
@ -28,13 +27,20 @@
|
|||||||
|
|
||||||
<!-- 页面内容 -->
|
<!-- 页面内容 -->
|
||||||
<div id="Contents">
|
<div id="Contents">
|
||||||
<form class="Item">
|
<form class="Item" {{#item.isRevoked}}revoked{{/item.isRevoked}}>
|
||||||
<div class="Picture">
|
<div class="Picture">
|
||||||
<img alt="商品图片" src="{{itemPicture}}"/>
|
<img alt="商品图片" src="{{itemPicture}}"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="Infos">
|
<div class="Infos">
|
||||||
<span class="Title">{{item.name}}</span>
|
<span class="Title">{{item.name}}</span>
|
||||||
<div class="Price">{{item.price}}</div>
|
<div class="Price">
|
||||||
|
{{#item.isRevoked}}
|
||||||
|
暂无报价
|
||||||
|
{{/item.isRevoked}}
|
||||||
|
{{^item.isRevoked}}
|
||||||
|
{{item.price}}
|
||||||
|
{{/item.isRevoked}}
|
||||||
|
</div>
|
||||||
{{#item.description}}
|
{{#item.description}}
|
||||||
<span class="Description">{{item.description}}</span>
|
<span class="Description">{{item.description}}</span>
|
||||||
{{/item.description}}
|
{{/item.description}}
|
||||||
@ -66,7 +72,5 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{>footer}}
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -10,10 +10,10 @@
|
|||||||
<script type="text/javascript" src="/scripts/item.js"></script>
|
<script type="text/javascript" src="/scripts/item.js"></script>
|
||||||
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
||||||
<!-- 页面公共的样式表 -->
|
<!-- 页面公共的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/header.css">
|
<link type="text/css" rel="stylesheet/less" href="/styles/header.less">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/footer.css">
|
<link type="text/css" rel="stylesheet/less" href="/styles/footer.less">
|
||||||
<!-- 页面特定的样式表 -->
|
<!-- 页面特定的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet/less" href="/styles/item.less">
|
<link type="text/css" rel="stylesheet/less" href="/styles/item.less">
|
||||||
<!-- 外部小组件 -->
|
<!-- 外部小组件 -->
|
||||||
|
@ -11,11 +11,9 @@
|
|||||||
<script type="module" src="/scripts/index.js"></script>
|
<script type="module" src="/scripts/index.js"></script>
|
||||||
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
||||||
<!-- 页面公共的样式表 -->
|
<!-- 页面公共的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/header.css">
|
<link type="text/css" rel="stylesheet/less" href="/styles/header.less">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/footer.css">
|
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/loading.css">
|
|
||||||
<link type="text/css" rel="stylesheet/less" href="/styles/form.less">
|
<link type="text/css" rel="stylesheet/less" href="/styles/form.less">
|
||||||
<!-- 页面特定的样式表 -->
|
<!-- 页面特定的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/user.css">
|
<link type="text/css" rel="stylesheet" href="/styles/user.css">
|
||||||
@ -57,7 +55,5 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{>footer}}
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -11,11 +11,9 @@
|
|||||||
<script type="module" src="/scripts/index.js"></script>
|
<script type="module" src="/scripts/index.js"></script>
|
||||||
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
<link type="image/x-icon" rel="icon" href="/images/favicon.ico">
|
||||||
<!-- 页面公共的样式表 -->
|
<!-- 页面公共的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/header.css">
|
<link type="text/css" rel="stylesheet/less" href="/styles/header.less">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
<link type="text/css" rel="stylesheet" href="/styles/clock.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
<link type="text/css" rel="stylesheet" href="/styles/top.css">
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/footer.css">
|
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/loading.css">
|
|
||||||
<link type="text/css" rel="stylesheet/less" href="/styles/form.less">
|
<link type="text/css" rel="stylesheet/less" href="/styles/form.less">
|
||||||
<!-- 页面特定的样式表 -->
|
<!-- 页面特定的样式表 -->
|
||||||
<link type="text/css" rel="stylesheet" href="/styles/user.css">
|
<link type="text/css" rel="stylesheet" href="/styles/user.css">
|
||||||
@ -93,7 +91,5 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{>footer}}
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user