Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gk
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
micro_app
gk
Commits
c9015f69
Commit
c9015f69
authored
Jun 23, 2025
by
daniel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(gk): 赛包+发票
parent
042cd241
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
1923 additions
and
2 deletions
+1923
-2
ResourcesController.java
...m/dlbridge/jadp/plugins/cmpt/web/ResourcesController.java
+1
-0
ServiceSettingController.java
...ridge/jadp/plugins/cmpt/web/ServiceSettingController.java
+1
-0
BagDeliveryController.java
...adp/plugins/partner/controller/BagDeliveryController.java
+18
-0
InvoiceController.java
...ge/jadp/plugins/partner/controller/InvoiceController.java
+16
-0
bag.jsp
src/main/webapp/WEB-INF/views/cmpt/bag.jsp
+614
-0
invoice.jsp
src/main/webapp/WEB-INF/views/cmpt/invoice.jsp
+767
-0
outter-link.jsp
src/main/webapp/WEB-INF/views/cmpt/outter-link.jsp
+1
-1
menu.jsp
src/main/webapp/WEB-INF/views/common/menu.jsp
+15
-1
base.css
src/main/webapp/static/css/base.css
+490
-0
No files found.
src/main/java/com/dlbridge/jadp/plugins/cmpt/web/ResourcesController.java
View file @
c9015f69
...
...
@@ -75,6 +75,7 @@ public class ResourcesController {
obj
.
put
(
"scene"
,
"raceId="
+
cmptid
);
// 修改为小程序页面路径 by 2025-06-12
obj
.
put
(
"page"
,
"pages/race/raceHome"
);
obj
.
put
(
"width"
,
"1280"
);
String
partnerId
=
cmptService
.
getPartnerId
(
cmptid
);
String
url
=
"https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="
;
try
{
...
...
src/main/java/com/dlbridge/jadp/plugins/cmpt/web/ServiceSettingController.java
View file @
c9015f69
...
...
@@ -40,6 +40,7 @@ public class ServiceSettingController {
@RequestMapping
(
value
=
"/page/{id}"
,
method
=
RequestMethod
.
GET
)
@PageView
public
ModelAndView
page
(
@PathVariable
(
"id"
)
String
id
,
ModelAndView
mv
)
{
mv
.
setViewName
(
"cmpt/detail"
);
RichText
richText
=
richTextService
.
getById
(
id
);
...
...
src/main/java/com/dlbridge/jadp/plugins/partner/controller/BagDeliveryController.java
View file @
c9015f69
package
com
.
dlbridge
.
jadp
.
plugins
.
partner
.
controller
;
import
com.dlbridge.jadp.common.interceptor.PageView
;
import
com.dlbridge.jadp.job.CountJob
;
import
com.dlbridge.jadp.plugins.cmpt.bean.Banner
;
import
com.dlbridge.jadp.plugins.cmpt.dao.model.Cmpt
;
import
com.dlbridge.jadp.plugins.cmpt.service.CmptService
;
import
com.dlbridge.jadp.plugins.cmpt.utils.Page
;
import
com.dlbridge.jadp.plugins.partner.bean.BagDelivery
;
import
com.dlbridge.jadp.plugins.partner.bean.BagParam
;
...
...
@@ -8,6 +13,7 @@ import com.neusoft.www.utils.web.Result;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.servlet.ModelAndView
;
import
springfox.documentation.annotations.ApiIgnore
;
import
javax.annotation.Resource
;
import
java.util.List
;
...
...
@@ -19,6 +25,18 @@ public class BagDeliveryController {
@Resource
private
BagDeliveryService
bagDeliveryService
;
@Resource
private
CmptService
cmptService
;
@RequestMapping
(
"index/{cmptId}"
)
@PageView
public
ModelAndView
index
(
@PathVariable
(
"cmptId"
)
Integer
cmptId
,
ModelAndView
mv
)
{
Cmpt
cmpt
=
cmptService
.
queryCmptBycmptId
(
cmptId
);
mv
.
addObject
(
"cmpt"
,
cmpt
);
mv
.
setViewName
(
"cmpt/bag"
);
return
mv
;
}
/**
* 赛包邮寄申请列表
* @param page 分页参数
...
...
src/main/java/com/dlbridge/jadp/plugins/partner/controller/InvoiceController.java
View file @
c9015f69
package
com
.
dlbridge
.
jadp
.
plugins
.
partner
.
controller
;
import
com.dlbridge.jadp.common.interceptor.PageView
;
import
com.dlbridge.jadp.plugins.cmpt.dao.model.Cmpt
;
import
com.dlbridge.jadp.plugins.cmpt.service.CmptService
;
import
com.dlbridge.jadp.plugins.cmpt.utils.Page
;
import
com.dlbridge.jadp.plugins.partner.bean.Invoice
;
import
com.dlbridge.jadp.plugins.partner.bean.BagParam
;
...
...
@@ -9,6 +12,7 @@ import com.neusoft.www.utils.web.Result;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.servlet.ModelAndView
;
import
springfox.documentation.annotations.ApiIgnore
;
import
javax.annotation.Resource
;
...
...
@@ -21,6 +25,18 @@ public class InvoiceController {
@Resource
private
InvoiceService
invoiceService
;
@Resource
private
CmptService
cmptService
;
@RequestMapping
(
"index/{cmptId}"
)
@PageView
public
ModelAndView
index
(
@PathVariable
(
"cmptId"
)
Integer
cmptId
,
ModelAndView
mv
)
{
Cmpt
cmpt
=
cmptService
.
queryCmptBycmptId
(
cmptId
);
mv
.
addObject
(
"cmpt"
,
cmpt
);
mv
.
setViewName
(
"cmpt/invoice"
);
return
mv
;
}
/**
* 赛包邮寄申请列表
* @param page 分页参数
...
...
src/main/webapp/WEB-INF/views/cmpt/bag.jsp
0 → 100644
View file @
c9015f69
<%@ page
language=
"java"
contentType=
"text/html; charset=utf-8"
pageEncoding=
"utf-8"
%>
<%@ include
file=
"/WEB-INF/views/include/taglib.jsp"
%>
<%@ taglib
prefix=
"fn"
uri=
"http://java.sun.com/jsp/jstl/functions"
%>
<%@ taglib
prefix=
"c"
uri=
"http://java.sun.com/jsp/jstl/core"
%>
<%@ taglib
prefix=
"fmt"
uri=
"http://java.sun.com/jsp/jstl/fmt"
%>
<!doctype html>
<html>
<head>
<title>
赛包邮寄
</title>
<!-- Bootstrap CSS-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/vendor/bootstrap/css/bootstrap.min.css"
>
<!-- Font Awesome CSS-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/vendor/font-awesome/css/font-awesome.min.css"
>
<!-- Fontastic Custom icon font-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/fontastic.css"
>
<!-- Google fonts - Poppins -->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/font-css.css"
>
<!-- theme stylesheet-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/style.default.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
id=
"theme-stylesheet"
>
<!-- Custom stylesheet - for your changes-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/custom.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/juery-ui-1.12.css"
>
<!-- Favicon-->
<link
rel=
"shortcut icon"
href=
"https://img.geexek.com/files/home/favicon.ico"
>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/custom.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/main.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/cmpt/setting.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/leaflet/css/leaflet.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
/>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/leaflet/css/leaflet_label.css"
/>
<!-- Bootstrap CSS-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/css/base.css"
>
<script
src=
"${ctxStatic}/My97DatePicker/WdatePicker.js"
type=
"text/javascript"
></script>
<script
src=
"${ctxStatic}/newdermon/vendor/jquery/jquery.min.js"
></script>
<script
type=
"text/javascript"
charset=
"utf-8"
src=
"${ctxStatic}/layer/layer.js"
></script>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/layer/skin/layer.css"
>
<link
rel=
"stylesheet"
href=
"/static/cmpt/score.css?
<%=
System
.
currentTimeMillis
()
%>
"
>
<style>
.layui-layer-title
{
color
:
white
;
}
.layui-layer-btn
{
color
:
white
;
}
.action
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
space-around
;
}
.dialog
{
width
:
40vw
;
max-height
:
80vh
;
height
:
auto
;
z-index
:
99
;
display
:
flex
;
flex-direction
:
column
;
left
:
50%
;
transform
:
translateX
(
-50%
);
margin-left
:
0
;
padding
:
20px
;
border-radius
:
10px
;
}
.dialog
input
{
width
:
100%
!important
;
}
.action
div
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
center
;
user-select
:
none
;
}
.submit
{
display
:
inline-block
;
width
:
120px
;
height
:
45px
;
text-align
:
center
;
line-height
:
45px
;
color
:
white
;
background
:
#ce3939
;
border-radius
:
4px
;
letter-spacing
:
1px
;
cursor
:
pointer
;
font-size
:
16px
;
}
.cancel
{
width
:
120px
;
height
:
45px
;
background
:
#949494
;
border-radius
:
4px
;
font-size
:
16px
;
color
:
#FFFFFF
;
line-height
:
45px
;
text-align
:
center
;
margin-right
:
20px
;
}
.input
{
width
:
100%
;
height
:
40px
!important
;
line-height
:
40px
!important
;
border
:
2px
solid
#F4F4F4
;
border-radius
:
4px
;
margin-right
:
30px
;
margin-left
:
0px
;
padding-left
:
12px
;
background
:
rgba
(
247
,
247
,
247
,
1
);
border-radius
:
4px
;
border
:
1px
solid
rgba
(
229
,
229
,
229
,
1
);
}
.title
{
font-size
:
24px
;
font-weight
:
500
;
color
:
rgba
(
51
,
51
,
51
,
1
);
}
.form-label
{
font-size
:
15px
;
color
:
rgb
(
92
,
91
,
91
);
width
:
auto
;
}
.form-item
{
display
:
flex
;
flex-direction
:
column
;
/* height: 90px; */
padding
:
5px
0
;
}
.section
{
display
:
flex
;
background
:
rgba
(
255
,
255
,
255
,
1
);
border-radius
:
4px
;
flex-direction
:
column
;
}
.tip
{
font-size
:
16px
;
color
:
rgba
(
51
,
51
,
51
,
1
);
position
:
absolute
;
right
:
45px
;
top
:
10px
;
}
.form-action
{
display
:
flex
;
justify-content
:
flex-end
;
margin
:
0
20px
;
padding-top
:
10px
;
}
label
{
/* width: auto; */
/* width: 200px; */
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
}
.label-box
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
}
.dialog
label
input
{
width
:
20px
!important
;
height
:
20px
!important
;
margin
:
0
10px
!important
;
}
.cover
{
width
:
100%
;
height
:
100px
;
background
:
rgba
(
247
,
247
,
247
,
1
);
border-radius
:
4px
;
border
:
1px
solid
rgba
(
238
,
238
,
238
,
1
);
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
.cover-img
{
width
:
300px
;
cursor
:
pointer
;
background-repeat
:
no-repeat
;
background-position
:
center
;
background-size
:
cover
;
height
:
300px
;
}
.icon-cover
{
width
:
34px
;
height
:
34px
;
background-image
:
url("/static/images/icon_cover.png")
;
background-size
:
100%
;
background-repeat
:
no-repeat
;
}
.section
{
width
:
100%
!important
;
display
:
flex
;
flex-direction
:
column
;
}
.rule-field
tbody
tr
td
:first-child
{
padding-left
:
5px
!important
;
height
:
auto
!important
;
}
tbody
tr
td
{
font-size
:
15px
!important
;
padding
:
5px
;
}
input
[
type
=
checkbox
]
::before
{
border
:
none
!important
;
background
:
none
!important
;
}
input
[
type
=
checkbox
]
:checked::before
{
border
:
none
!important
;
background
:
none
!important
;
}
input
[
type
=
checkbox
]
{
top
:
0
;
left
:
0
;
}
</style>
</head>
<body>
<jsp:include
page=
"../common/header.jsp"
></jsp:include>
<div
class=
"page-content d-flex align-items-stretch main-body"
>
<jsp:include
page=
"../common/menu.jsp"
></jsp:include>
<div
class=
"rght"
id=
"module"
>
<div
class=
"section"
>
<div
class=
"flex flex-row items-center justify-between"
>
<h3
class=
"title"
>
赛包邮寄
</h3>
<div
class=
"btn-toolbar flex justify-between"
role=
"toolbar"
aria-label=
"Toolbar with button groups"
>
<div
class=
"btn-group"
role=
"group"
aria-label=
"First group"
>
<button
:class=
"[index==statusIndex?'btn-danger':'btn-default']"
@
click=
"changeStatus(index)"
type=
"button"
v-for=
"(statusOpt,index) in statusOptions"
:key=
"index"
class=
"btn btn-sm"
>
{{statusOpt.name}}
</button>
</div>
</div>
</div>
</div>
<div
style=
"margin-top: -10px;margin-bottom: 50px"
>
<table
style=
"width: 100%"
class=
"rule-field"
>
<colgroup>
<col
style=
"width:25%;"
>
<col
style=
"width:25%;"
>
<col
style=
"width:25%;"
>
<col
style=
"width:10%;"
>
<col
style=
"width:15%;"
>
</colgroup>
<thead>
<tr>
<th
style=
"text-align: left"
>
选手
</th>
<th
style=
"text-align: left"
>
地址
</th>
<th
style=
"text-align: left"
>
物流
</th>
<th
style=
"text-align: left"
>
状态
</th>
<th
style=
"text-align: center"
>
操作
</th>
</tr>
</thead>
<tbody>
<tr
v-for=
"item in list"
:data-id=
"item.id"
>
<td>
<div
class=
"flex flex-col"
>
<span
class=
"lh-1.2"
>
姓名: {{item.name}}
</span>
<span
class=
"lh-1.2"
>
参赛号:{{item.markNo}}
</span>
<span
class=
"lh-1.2"
>
手机号:{{item.phone}}
</span>
<span
v-if=
"item.remark"
class=
"lh-1.2"
>
备注:{{item.remark}}
</span>
</div>
</td>
<td
class=
"name"
style=
"text-align: left;"
>
<span
class=
"lh-1.2"
>
{{item.province}}/{{item.city}}/{{item.area}}/{{item.location}}
</span>
</td>
<td
class=
"name"
style=
"text-align: left;"
>
<div
class=
"flex flex-col"
>
<span
class=
"lh-1.2"
class=
"lh-1.2"
>
物流单号 {{item.deliveryNo}}
</span>
<span
class=
"lh-1.2"
>
物流公司 {{ item.expressCompany }}
</span>
</div>
</td>
<td
style=
"text-align: left;"
>
<span
class=
"lh-1.2"
>
{{statusEnum[item.status]}}
</span>
</td>
<td
style=
"text-align: center"
>
<div
class=
"action"
>
<div
class=
"opt edit.opt"
@
click=
"showEdit(item)"
>
<span
class=
"icon-edit"
></span>
<span
class=
"edit"
>
编辑
</span>
</div>
<div
class=
"opt del"
@
click=
"delBag(item)"
>
<span
class=
"icon-del"
></span>
<span
class=
"del"
>
删除
</span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div
class=
"dialog"
v-show=
"dialog"
>
<div>
<span
class=
"title"
style=
"margin-bottom: 10px; color: #CE3939"
>
{{title}}
</span>
</div>
<div
style=
"display: flex;flex-direction: column;flex:1;overflow-y: auto;"
>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
姓名
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"bag.name"
placeholder=
"请输入收件人姓名"
/>
</div>
</div>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
手机号
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"bag.phone"
placeholder=
"请输入收件人手机号"
/>
</div>
</div>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
快递单号
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"bag.deliveryNo"
placeholder=
"请输入快递单号"
/>
</div>
</div>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
快递公司
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"bag.expressCompany"
placeholder=
"请输入快递公司"
/>
</div>
</div>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
省份
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"bag.province"
placeholder=
"请输入省份"
/>
</div>
</div>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
城市
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"bag.city"
placeholder=
"请输入城市"
/>
</div>
</div>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
详细地址
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"bag.area"
placeholder=
"请输入详细地址"
/>
</div>
</div>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
备注
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"bag.remark"
placeholder=
"请输入备注信息"
/>
</div>
</div>
<!-- 状态 (status) -->
<div
class=
"form-item"
>
<span
class=
"form-label"
>
状态
</span>
<div
class=
"label-box"
>
<label>
<input
type=
"radio"
v-model=
"bag.status"
value=
"1"
>
提交
</label>
<label>
<input
type=
"radio"
v-model=
"bag.status"
value=
"2"
>
待处理
</label>
</div>
</div>
</div>
<div
class=
"form-action"
>
<span
@
click=
"cancel"
class=
"cancel cursor-pointer"
>
取消
</span>
<span
@
click=
"submit"
class=
"submit"
>
保存
</span>
</div>
</div>
<div
v-show=
"dialog"
style=
"position: fixed;height: 100%;width: 100%;background: black;z-index: 10;opacity: 0.5;top:0px;left:0px"
>
</div>
</div>
<script
src=
"${ctxStatic}/vue/vue.js"
></script>
<script>
const
uploadUrl
=
'/api-common/v1/upload?folder='
+
'gk/module'
+
'&cmptId='
+
getCId
()
var
app
=
new
Vue
({
el
:
'#module'
,
data
:
{
list
:
[],
dialog
:
false
,
title
:
'赛包邮寄'
,
statusIndex
:
0
,
statusOptions
:
[
{
name
:
"全部"
,
value
:
''
},
{
name
:
"提交"
,
value
:
1
},
{
name
:
"待处理"
,
value
:
2
}
],
statusEnum
:
{
1
:
"提交"
,
2
:
"待处理"
,
},
bag
:
{
"id"
:
null
,
"remarks"
:
null
,
"cmptId"
:
getCId
(),
"name"
:
""
,
"markNo"
:
""
,
"phone"
:
""
,
"area"
:
""
,
"province"
:
""
,
"city"
:
""
,
"location"
:
""
,
"deliveryNo"
:
""
,
"expressCompany"
:
""
,
"status"
:
1
,
"remark"
:
""
},
statusType
:
{
0
:
'关闭'
,
1
:
'开启'
}
},
methods
:
{
changeStatus
(
index
)
{
this
.
statusIndex
=
index
;
this
.
fetchData
()
},
changePage
(
page
)
{
this
.
page
=
page
this
.
fetchData
()
},
next
()
{
this
.
page
+=
1
this
.
fetchData
()
},
preview
()
{
this
.
page
-=
1
this
.
fetchData
()
},
// 重置表单
resetForm
()
{
this
.
bag
=
{
"id"
:
null
,
"remarks"
:
null
,
"cmptId"
:
getCId
(),
"name"
:
""
,
"markNo"
:
""
,
"phone"
:
""
,
"area"
:
""
,
"province"
:
""
,
"city"
:
""
,
"location"
:
""
,
"deliveryNo"
:
""
,
"expressCompany"
:
""
,
"status"
:
1
,
"remark"
:
""
};
},
// 编辑
showEdit
(
detail
)
{
this
.
bag
=
{
...
detail
};
this
.
dialog
=
true
;
},
// 删除
delBag
(
data
)
{
layer
.
confirm
(
"确认要删除吗?"
,
function
()
{
$
.
ajax
({
url
:
'/gk/bag/delete?id='
+
data
.
id
,
type
:
'get'
,
contentType
:
'application/json'
,
beforeSend
:
()
=>
{
layer
.
load
()
},
success
:
()
=>
{
layer
.
msg
(
'删除成功!'
);
},
complete
:
()
=>
{
layer
.
closeAll
()
app
.
fetchData
();
}
});
});
},
// 保存
submit
()
{
const
bag
=
{
...
this
.
bag
}
const
url
=
"/gk/bag/update"
$
.
ajax
({
url
,
data
:
JSON
.
stringify
(
bag
),
// 将 data 转换为 JSON 字符串
type
:
'post'
,
contentType
:
'application/json'
,
beforeSend
:
()
=>
{
layer
.
load
()
},
success
:
(
res
)
=>
{
layer
.
msg
(
res
.
code
==
1
?
'保存成功!'
:
res
.
msg
);
this
.
dialog
=
false
;
this
.
fetchData
();
},
complete
:
()
=>
{
layer
.
closeAll
()
}
})
},
// 返回
cancel
()
{
this
.
dialog
=
false
;
},
// 查询所有
fetchData
()
{
if
(
!
getCId
())
return
const
url
=
'/gk/bag/delivery/list?status='
+
this
.
statusOptions
[
this
.
statusIndex
].
value
+
'&cmptId='
+
getCId
()
$
.
ajax
({
type
:
'GET'
,
contentType
:
'application/json'
,
url
,
beforeSend
:
()
=>
{
layer
.
load
()
},
complete
:
()
=>
{
layer
.
closeAll
()
},
success
:
(
data
)
=>
{
this
.
list
=
data
.
content
}
})
},
}
});
app
.
fetchData
();
</script>
</body>
</html>
\ No newline at end of file
src/main/webapp/WEB-INF/views/cmpt/invoice.jsp
0 → 100644
View file @
c9015f69
<%@ page
language=
"java"
contentType=
"text/html; charset=utf-8"
pageEncoding=
"utf-8"
%>
<%@ include
file=
"/WEB-INF/views/include/taglib.jsp"
%>
<%@ taglib
prefix=
"fn"
uri=
"http://java.sun.com/jsp/jstl/functions"
%>
<%@ taglib
prefix=
"c"
uri=
"http://java.sun.com/jsp/jstl/core"
%>
<%@ taglib
prefix=
"fmt"
uri=
"http://java.sun.com/jsp/jstl/fmt"
%>
<!doctype html>
<html>
<head>
<title>
发票管理
</title>
<!-- Bootstrap CSS-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/vendor/bootstrap/css/bootstrap.min.css"
>
<!-- Font Awesome CSS-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/vendor/font-awesome/css/font-awesome.min.css"
>
<!-- Fontastic Custom icon font-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/fontastic.css"
>
<!-- Google fonts - Poppins -->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/font-css.css"
>
<!-- theme stylesheet-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/style.default.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
id=
"theme-stylesheet"
>
<!-- Custom stylesheet - for your changes-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/custom.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/juery-ui-1.12.css"
>
<!-- Favicon-->
<link
rel=
"shortcut icon"
href=
"https://img.geexek.com/files/home/favicon.ico"
>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/custom.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/newdermon/css/main.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/cmpt/setting.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/leaflet/css/leaflet.css?v=
<%=
System
.
currentTimeMillis
()
%>
"
/>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/leaflet/css/leaflet_label.css"
/>
<!-- Bootstrap CSS-->
<link
rel=
"stylesheet"
href=
"${ctxStatic}/css/base.css"
>
<script
src=
"${ctxStatic}/My97DatePicker/WdatePicker.js"
type=
"text/javascript"
></script>
<script
src=
"${ctxStatic}/newdermon/vendor/jquery/jquery.min.js"
></script>
<script
type=
"text/javascript"
charset=
"utf-8"
src=
"${ctxStatic}/layer/layer.js"
></script>
<link
rel=
"stylesheet"
href=
"${ctxStatic}/layer/skin/layer.css"
>
<link
rel=
"stylesheet"
href=
"/static/cmpt/score.css?
<%=
System
.
currentTimeMillis
()
%>
"
>
<style>
.layui-layer-title
{
color
:
white
;
}
.layui-layer-btn
{
color
:
white
;
}
.action
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
space-around
;
}
.dialog
{
width
:
40vw
;
max-height
:
80vh
;
height
:
auto
;
z-index
:
99
;
display
:
flex
;
flex-direction
:
column
;
left
:
50%
;
transform
:
translateX
(
-50%
);
margin-left
:
0
;
padding
:
20px
;
border-radius
:
10px
;
}
.dialog
input
{
width
:
100%
!important
;
}
.action
div
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
center
;
user-select
:
none
;
}
.submit
{
display
:
inline-block
;
width
:
120px
;
height
:
45px
;
text-align
:
center
;
line-height
:
45px
;
color
:
white
;
background
:
#ce3939
;
border-radius
:
4px
;
letter-spacing
:
1px
;
cursor
:
pointer
;
font-size
:
16px
;
}
.cancel
{
width
:
120px
;
height
:
45px
;
background
:
#949494
;
border-radius
:
4px
;
font-size
:
16px
;
color
:
#FFFFFF
;
line-height
:
45px
;
text-align
:
center
;
margin-right
:
20px
;
}
.input
{
width
:
100%
;
height
:
40px
!important
;
line-height
:
40px
!important
;
border
:
2px
solid
#F4F4F4
;
border-radius
:
4px
;
margin-right
:
30px
;
margin-left
:
0px
;
padding-left
:
12px
;
background
:
rgba
(
247
,
247
,
247
,
1
);
border-radius
:
4px
;
border
:
1px
solid
rgba
(
229
,
229
,
229
,
1
);
}
.title
{
font-size
:
24px
;
font-weight
:
500
;
color
:
rgba
(
51
,
51
,
51
,
1
);
}
.form-label
{
font-size
:
15px
;
color
:
rgb
(
92
,
91
,
91
);
width
:
auto
;
}
.form-item
{
display
:
flex
;
flex-direction
:
column
;
/* height: 90px; */
padding
:
5px
0
;
}
.section
{
display
:
flex
;
background
:
rgba
(
255
,
255
,
255
,
1
);
border-radius
:
4px
;
flex-direction
:
column
;
}
.tip
{
font-size
:
16px
;
color
:
rgba
(
51
,
51
,
51
,
1
);
position
:
absolute
;
right
:
45px
;
top
:
10px
;
}
.form-action
{
display
:
flex
;
justify-content
:
flex-end
;
margin
:
0
20px
;
padding-top
:
10px
;
}
label
{
/* width: auto; */
/* width: 200px; */
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
}
.label-box
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
}
.dialog
label
input
{
width
:
20px
!important
;
height
:
20px
!important
;
margin
:
0
10px
!important
;
}
.cover
{
width
:
100%
;
height
:
100px
;
background
:
rgba
(
247
,
247
,
247
,
1
);
border-radius
:
4px
;
border
:
1px
solid
rgba
(
238
,
238
,
238
,
1
);
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
.cover-img
{
width
:
300px
;
cursor
:
pointer
;
background-repeat
:
no-repeat
;
background-position
:
center
;
background-size
:
cover
;
height
:
300px
;
}
.icon-cover
{
width
:
34px
;
height
:
34px
;
background-image
:
url("/static/images/icon_cover.png")
;
background-size
:
100%
;
background-repeat
:
no-repeat
;
}
.section
{
width
:
100%
!important
;
display
:
flex
;
flex-direction
:
column
;
}
.rule-field
tbody
tr
td
:first-child
{
padding-left
:
5px
!important
;
height
:
auto
!important
;
}
tbody
tr
td
{
font-size
:
15px
!important
;
padding
:
5px
;
}
input
[
type
=
checkbox
]
::before
{
border
:
none
!important
;
background
:
none
!important
;
}
input
[
type
=
checkbox
]
:checked::before
{
border
:
none
!important
;
background
:
none
!important
;
}
input
[
type
=
checkbox
]
{
top
:
0
;
left
:
0
;
}
</style>
</head>
<body>
<jsp:include
page=
"../common/header.jsp"
></jsp:include>
<div
class=
"page-content d-flex align-items-stretch main-body"
>
<jsp:include
page=
"../common/menu.jsp"
></jsp:include>
<div
class=
"rght"
id=
"module"
>
<div
class=
"section"
>
<div
class=
"flex flex-row items-center justify-between"
>
<h3
class=
"title"
>
发票管理
</h3>
<div
class=
"flex flex-row items-center"
>
<div
class=
"btn-toolbar flex justify-between"
role=
"toolbar"
aria-label=
"Toolbar with button groups"
>
<div
class=
"btn-group"
role=
"group"
aria-label=
"First group"
>
<button
:class=
"[index==statusIndex?'btn-danger':'btn-default']"
@
click=
"changeStatus(index)"
type=
"button"
v-for=
"(statusOpt,index) in statusOptions"
:key=
"index"
class=
"btn btn-sm"
>
{{statusOpt.name}}
</button>
</div>
</div>
<div
class=
"btn-toolbar ml-2 flex justify-between"
role=
"toolbar"
aria-label=
"Toolbar with button groups"
>
<div
class=
"btn-group"
role=
"group"
aria-label=
"First group"
>
<button
:class=
"[index==invoiceTypeIndex?'btn-danger':'btn-default']"
@
click=
"changeInvoice(index)"
type=
"button"
v-for=
"(item,index) in invoiceTypes"
:key=
"index"
class=
"btn btn-sm"
>
{{item.name}}
</button>
</div>
</div>
<div
class=
"btn-toolbar ml-2 flex justify-between"
role=
"toolbar"
aria-label=
"Toolbar with button groups"
>
<div
class=
"btn-group"
role=
"group"
aria-label=
"First group"
>
<button
:class=
"[index==paperTypeIndex?'btn-danger':'btn-default']"
@
click=
"changePaper(index)"
type=
"button"
v-for=
"(item,index) in paperTypes"
:key=
"index"
class=
"btn btn-sm"
>
{{item.name}}
</button>
</div>
</div>
</div>
</div>
</div>
<div
style=
"margin-top: -10px;margin-bottom: 50px"
>
<table
style=
"width: 100%"
class=
"rule-field"
>
<colgroup>
<col
style=
"width:25%;"
>
<col
style=
"width:25%;"
>
<col
style=
"width:25%;"
>
<col
style=
"width:10%;"
>
<col
style=
"width:15%;"
>
</colgroup>
<thead>
<tr>
<th
style=
"text-align: left;padding-left:5px;"
>
选手
</th>
<th
style=
"text-align: left"
>
发票信息
</th>
<th
style=
"text-align: left"
>
公司信息
</th>
<th
style=
"text-align: left"
>
物流
</th>
<th
style=
"text-align: center"
>
操作
</th>
</tr>
</thead>
<tbody>
<tr
v-for=
"item in list"
:data-id=
"item.id"
>
<td>
<div
class=
"flex flex-col"
>
<span
class=
"lh-1.2"
>
姓名: {{item.receiverName}}
</span>
<span
class=
"lh-1.2"
>
参赛号:{{item.markNo}}
</span>
<span
class=
"lh-1.2"
>
手机号:{{item.receiverPhone}}
</span>
<span
class=
"lh-1.2"
>
收货地址:{{item.receiverAddress}}
</span>
</div>
</td>
<td
class=
"name"
style=
"text-align: left;"
>
<div
class=
"flex flex-col"
>
<span
class=
"lh-1.2"
>
发票金额:{{item.invoiceMoney}}
</span>
<span
class=
"lh-1.2"
>
发票类型:{{invoiceEnum[item.invoiceType]}}
</span>
<span
class=
"lh-1.2"
>
发票状态:{{statusEnum[item.status]}}
</span>
<span
class=
"lh-1.2"
>
发票内容:{{item.invoiceContent}}
</span>
<span
class=
"lh-1.2"
>
开票方式:{{paperEnum[item.invoicePaper]}}
</span>
</div>
</td>
<td
style=
"text-align: left;"
>
<div
class=
"flex flex-col"
>
<span
class=
"lh-1.2"
>
发票抬头:{{item.invoiceTitle}}
</span>
<span
class=
"lh-1.2"
>
纳税人识别号:{{item.taxPayerId}}
</span>
<span
class=
"lh-1.2"
>
开户行:{{item.taxBank}}
</span>
<span
class=
"lh-1.2"
>
开户行账号:{{item.taxBankAccount}}
</span>
</div>
</td>
<td
class=
"name"
style=
"text-align: left;"
>
<div
class=
"flex flex-col"
>
<span
class=
"lh-1.2"
>
物流单号 {{item.shippingNo}}
</span>
</div>
</td>
<td
style=
"text-align: center"
>
<div
class=
"action"
>
<div
class=
"opt edit.opt"
@
click=
"showEdit(item)"
>
<span
class=
"icon-edit"
></span>
<span
class=
"edit"
>
编辑
</span>
</div>
<div
class=
"opt del"
@
click=
"delinvoice(item)"
>
<span
class=
"icon-del"
></span>
<span
class=
"del"
>
删除
</span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div
class=
"dialog"
v-show=
"dialog"
style=
"width:40vw;height: 80vh; z-index: 99;display: flex;flex-direction: column;left: 50%;
transform: translateX(-50%);margin-left:0;"
>
<div>
<span
class=
"title"
style=
"margin-bottom: 10px; color: #CE3939"
>
{{title}}
</span>
</div>
<div
style=
"display: flex;flex-direction: column;flex:1;overflow-y: auto;"
>
<!-- 发票类型 -->
<div
class=
"form-item"
>
<span
class=
"form-label"
>
发票类型
</span>
<div
class=
"label-box"
>
<label>
<input
type=
"radio"
v-model=
"invoice.invoiceType"
value=
"1"
>
普通发票
</label>
<label>
<input
type=
"radio"
v-model=
"invoice.invoiceType"
value=
"2"
>
增值税专票
</label>
</div>
</div>
<!-- 开票方式 -->
<div
class=
"form-item"
>
<span
class=
"form-label"
>
开票方式
</span>
<div
class=
"label-box"
>
<label>
<input
type=
"radio"
v-model=
"invoice.paperInvoice"
value=
"0"
>
电子发票
</label>
<label>
<input
type=
"radio"
v-model=
"invoice.paperInvoice"
value=
"1"
>
纸质发票
</label>
</div>
</div>
<!-- 开票金额 -->
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
开票金额
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"invoice.amount"
placeholder=
"请输入开票金额"
>
</div>
</div>
<!-- 开票抬头 -->
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
开票抬头
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"invoice.header"
placeholder=
"请输入开票抬头"
>
</div>
</div>
<!-- 增值税专票特有字段 -->
<div
v-if=
"invoice.invoiceType == '2'"
>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
纳税人识别号
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"invoice.taxPayerId"
placeholder=
"请输入纳税人识别号"
>
</div>
</div>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
开户行
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"invoice.taxBank"
placeholder=
"请输入开户行"
>
</div>
</div>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
开户行账号
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"invoice.taxBankAccount"
placeholder=
"请输入开户行账号"
>
</div>
</div>
</div>
<!-- 电子发票邮箱 -->
<div
class=
"form-item"
v-if=
"invoice.paperInvoice == '0'"
>
<div>
<span
class=
"form-label"
>
电子发票邮箱
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"invoice.email"
placeholder=
"请输入接收电子发票的邮箱"
>
</div>
</div>
<!-- 纸质发票收件信息 -->
<div
v-if=
"invoice.paperInvoice == '1'"
>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
收件人姓名
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"invoice.receiverName"
placeholder=
"请输入收件人姓名"
>
</div>
</div>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
收件人电话
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"invoice.receiverPhone"
placeholder=
"请输入收件人电话"
>
</div>
</div>
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
收件地址
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"invoice.receiverAddress"
placeholder=
"请输入收件地址"
>
</div>
</div>
</div>
<!-- 备注 -->
<div
class=
"form-item"
>
<div>
<span
class=
"form-label"
>
备注
</span>
</div>
<div>
<input
class=
"input"
type=
"text"
v-model=
"invoice.remark"
placeholder=
"请输入备注信息"
>
</div>
</div>
</div>
<div
class=
"form-action"
>
<span
@
click=
"cancel"
class=
"cancel"
>
取消
</span>
<span
@
click=
"submit"
class=
"submit"
>
保存
</span>
</div>
</div>
<div
v-show=
"dialog"
style=
"position: fixed;height: 100%;width: 100%;background: black;z-index: 10;opacity: 0.5;top:0px;left:0px"
>
</div>
</div>
<script
src=
"${ctxStatic}/vue/vue.js"
></script>
<script>
const
uploadUrl
=
'/api-common/v1/upload?folder='
+
'gk/module'
+
'&cmptId='
+
getCId
()
var
app
=
new
Vue
({
el
:
'#module'
,
data
:
{
list
:
[],
dialog
:
false
,
title
:
'发票管理'
,
// 发票方式
invoiceTypeIndex
:
0
,
invoiceTypes
:
[
{
name
:
"全部"
,
value
:
''
},
{
name
:
"普通发票"
,
value
:
1
},
{
name
:
"增值税发票"
,
value
:
2
}
],
// 发票方式
paperTypeIndex
:
0
,
paperTypes
:
[
{
name
:
"全部"
,
value
:
''
},
{
name
:
"电子发票"
,
value
:
1
},
{
name
:
"纸质发票"
,
value
:
2
}
],
statusIndex
:
0
,
statusOptions
:
[
{
name
:
"全部"
,
value
:
''
},
{
name
:
"提交"
,
value
:
1
},
{
name
:
"拒绝"
,
value
:
2
},
{
name
:
"已开票"
,
value
:
3
}
],
statusEnum
:
{
1
:
"提交"
,
2
:
"待处理"
,
},
invoiceEnum
:
{
1
:
"普通发票"
,
2
:
"增值税专票"
,
},
paperEnum
:
{
0
:
"电子发票"
,
1
:
"纸质发票"
,
},
invoice
:
{
cmptId
:
getCId
(),
invoiceType
:
'1'
,
// 1:普通发票 2:增值税专票
paperInvoice
:
'0'
,
// 0:电子发票 1:纸质发票
amount
:
null
,
header
:
null
,
taxPayerId
:
null
,
taxBank
:
null
,
taxBankAccount
:
null
,
email
:
null
,
receiverName
:
null
,
receiverPhone
:
null
,
receiverAddress
:
null
,
remark
:
null
,
status
:
1
// 1:提交
},
statusType
:
{
0
:
'关闭'
,
1
:
'开启'
}
},
methods
:
{
changeStatus
(
index
)
{
this
.
statusIndex
=
index
;
this
.
fetchData
()
},
changeInvoice
(
index
)
{
this
.
invoiceTypeIndex
=
index
;
this
.
fetchData
()
},
changePaper
(
index
)
{
this
.
paperTypeIndex
=
index
;
this
.
fetchData
()
},
changePage
(
page
)
{
this
.
page
=
page
this
.
fetchData
()
},
next
()
{
this
.
page
+=
1
this
.
fetchData
()
},
preview
()
{
this
.
page
-=
1
this
.
fetchData
()
},
// 重置表单
resetForm
()
{
this
.
invoice
=
{
cmptId
:
getCId
(),
invoiceType
:
'1'
,
// 1:普通发票 2:增值税专票
paperInvoice
:
'0'
,
// 0:电子发票 1:纸质发票
amount
:
null
,
header
:
null
,
taxPayerId
:
null
,
taxBank
:
null
,
taxBankAccount
:
null
,
email
:
null
,
receiverName
:
null
,
receiverPhone
:
null
,
receiverAddress
:
null
,
remark
:
null
,
status
:
1
// 1:提交
};
},
// 编辑
showEdit
(
detail
)
{
this
.
invoice
=
{
...
detail
};
this
.
dialog
=
true
;
},
// 删除
delinvoice
(
data
)
{
layer
.
confirm
(
"确认要删除吗?"
,
function
()
{
$
.
ajax
({
url
:
'/gk/invoice/delete?id='
+
data
.
id
,
type
:
'get'
,
contentType
:
'application/json'
,
beforeSend
:
()
=>
{
layer
.
load
()
},
success
:
()
=>
{
layer
.
msg
(
'删除成功!'
);
},
complete
:
()
=>
{
layer
.
closeAll
()
app
.
fetchData
();
}
});
});
},
// 保存
submit
()
{
const
invoice
=
{
...
this
.
invoice
}
const
url
=
"/gk/invoice/update"
$
.
ajax
({
url
,
data
:
JSON
.
stringify
(
invoice
),
// 将 data 转换为 JSON 字符串
type
:
'post'
,
contentType
:
'application/json'
,
beforeSend
:
()
=>
{
layer
.
load
()
},
success
:
(
res
)
=>
{
layer
.
msg
(
res
.
code
==
1
?
'保存成功!'
:
res
.
msg
);
this
.
dialog
=
false
;
this
.
fetchData
();
},
complete
:
()
=>
{
layer
.
closeAll
()
}
})
},
// 返回
cancel
()
{
this
.
dialog
=
false
;
},
// 查询所有
fetchData
()
{
if
(
!
getCId
())
return
const
url
=
'/gk/invoice/list?status='
+
this
.
statusOptions
[
this
.
statusIndex
].
value
+
'&cmptId='
+
getCId
()
+
'&invoiceType='
+
this
.
invoiceTypes
[
this
.
invoiceTypeIndex
].
value
+
'&paperInvoice='
+
this
.
paperTypes
[
this
.
paperTypeIndex
].
value
$
.
ajax
({
type
:
'GET'
,
contentType
:
'application/json'
,
url
,
beforeSend
:
()
=>
{
layer
.
load
()
},
complete
:
()
=>
{
layer
.
closeAll
()
},
success
:
(
data
)
=>
{
this
.
list
=
data
.
content
}
})
},
}
});
app
.
fetchData
();
</script>
</body>
</html>
\ No newline at end of file
src/main/webapp/WEB-INF/views/cmpt/outter-link.jsp
View file @
c9015f69
...
...
@@ -656,7 +656,7 @@
return
;
}
// 文档
if
(
file
.
type
&&
!
[
'.docx'
,
'.xlsx'
,
'.pptx'
].
includes
(
file
.
name
.
slice
(
file
.
name
.
lastIndexOf
(
'.'
)))
&&
this
.
letter
.
openType
==
5
)
{
if
(
file
.
type
&&
!
[
'.docx'
,
'.xlsx'
,
'.pptx'
,
'.pdf'
].
includes
(
file
.
name
.
slice
(
file
.
name
.
lastIndexOf
(
'.'
)))
&&
this
.
letter
.
openType
==
5
)
{
layer
.
msg
(
'请上传文档'
,
{
icon
:
5
})
return
;
}
...
...
src/main/webapp/WEB-INF/views/common/menu.jsp
View file @
c9015f69
...
...
@@ -348,6 +348,20 @@
<span
class=
"menu-txt"
>
轮播图管理
</span>
</a>
</li>
<li
class=
"bag menu-sub-item"
>
<a
href=
"/gk/bag/index/${cmpt.cmptId}?uId=${uId}&cId=${cId}×tamp=${timestamp}&sign=${sign}"
>
<span
class=
"left-arrow"
></span>
<span
class=
"menu-txt"
>
赛包邮寄
</span>
</a>
</li>
<li
class=
"invoice menu-sub-item"
>
<a
href=
"/gk/invoice/index/${cmpt.cmptId}?uId=${uId}&cId=${cId}×tamp=${timestamp}&sign=${sign}"
>
<span
class=
"left-arrow"
></span>
<span
class=
"menu-txt"
>
发票管理
</span>
</a>
</li>
</ul>
</li>
</ul>
...
...
@@ -410,7 +424,7 @@
var
classes
=
[
'cmptSetting'
,
'nameList'
,
'manual'
,
'contact'
,
'manage'
,
'route'
,
'road'
,
'equip'
,
'photo'
,
'news'
,
'cert'
,
'data'
,
'banner'
,
'score'
,
'auto'
,
'scan'
,
'review'
,
'customer'
,
'rule'
,
'outter-link'
,
'sure-letter'
,
'rankSetting'
,
'service'
,
"module"
,
"swiper"
];
'outter-link'
,
'sure-letter'
,
'rankSetting'
,
'service'
,
"module"
,
"swiper"
,
"bag"
,
"invoice"
];
let
url
=
document
.
location
.
href
;
var
done
=
false
;
for
(
var
i
in
classes
)
{
...
...
src/main/webapp/static/css/base.css
0 → 100644
View file @
c9015f69
/* Flex 布局相关 */
.flex
{
display
:
flex
;
}
.flex-col
{
flex-direction
:
column
;
}
.flex-row
{
flex-direction
:
row
;
}
.justify-start
{
justify-content
:
flex-start
;
}
.justify-end
{
justify-content
:
flex-end
;
}
.justify-center
{
justify-content
:
center
;
}
.justify-between
{
justify-content
:
space-between
;
}
.justify-around
{
justify-content
:
space-around
;
}
.items-start
{
align-items
:
flex-start
;
}
.items-end
{
align-items
:
flex-end
;
}
.items-center
{
align-items
:
center
;
}
.items-baseline
{
align-items
:
baseline
;
}
.items-stretch
{
align-items
:
stretch
;
}
.flex-wrap
{
flex-wrap
:
wrap
;
}
.flex-nowrap
{
flex-wrap
:
nowrap
;
}
.flex-1
{
flex
:
1
1
0%
;
}
/* Margin 相关 */
.m-0
{
margin
:
0
;
}
.m-1
{
margin
:
0.25rem
;
}
.m-2
{
margin
:
0.5rem
;
}
.m-3
{
margin
:
1rem
;
}
.m-4
{
margin
:
1.5rem
;
}
.m-5
{
margin
:
3rem
;
}
.mt-0
{
margin-top
:
0
;
}
.mt-1
{
margin-top
:
0.25rem
;
}
.mt-2
{
margin-top
:
0.5rem
;
}
.mt-3
{
margin-top
:
1rem
;
}
.mt-4
{
margin-top
:
1.5rem
;
}
.mt-5
{
margin-top
:
3rem
;
}
/* 其他方向margin (mr, mb, ml) 和 padding (p, pt, pr, pb, pl) 同理 */
/* 这里省略类似代码,实际使用时建议补全 */
/* Padding 相关 */
.p-0
{
padding
:
0
;
}
.p-1
{
padding
:
0.25rem
;
}
.p-2
{
padding
:
0.5rem
;
}
.p-3
{
padding
:
1rem
;
}
.p-4
{
padding
:
1.5rem
;
}
.p-5
{
padding
:
3rem
;
}
/* 文本相关 */
.text-left
{
text-align
:
left
;
}
.text-center
{
text-align
:
center
;
}
.text-right
{
text-align
:
right
;
}
.text-uppercase
{
text-transform
:
uppercase
;
}
.text-lowercase
{
text-transform
:
lowercase
;
}
.text-capitalize
{
text-transform
:
capitalize
;
}
.font-bold
{
font-weight
:
bold
;
}
.font-normal
{
font-weight
:
normal
;
}
/* 宽度相关 */
.w-full
{
width
:
100%
;
}
.w-auto
{
width
:
auto
;
}
.w-1
\
/
2
{
width
:
50%
;
}
.w-1
\
/
3
{
width
:
33.333333%
;
}
.w-2
\
/
3
{
width
:
66.666667%
;
}
/* 显示相关 */
.block
{
display
:
block
;
}
.inline-block
{
display
:
inline-block
;
}
.inline
{
display
:
inline
;
}
.hidden
{
display
:
none
;
}
/* 间距相关 - 基于rem单位 */
.gap-0
{
gap
:
0
;
}
.gap-1
{
gap
:
0.25rem
;
}
.gap-2
{
gap
:
0.5rem
;
}
.gap-3
{
gap
:
1rem
;
}
.gap-4
{
gap
:
1.5rem
;
}
.gap-5
{
gap
:
3rem
;
}
/* 行间距 (row-gap) */
.row-gap-0
{
row-gap
:
0
;
}
.row-gap-1
{
row-gap
:
0.25rem
;
}
.row-gap-2
{
row-gap
:
0.5rem
;
}
.row-gap-3
{
row-gap
:
1rem
;
}
.row-gap-4
{
row-gap
:
1.5rem
;
}
.row-gap-5
{
row-gap
:
3rem
;
}
/* 列间距 (column-gap) */
.column-gap-0
{
column-gap
:
0
;
}
.column-gap-1
{
column-gap
:
0.25rem
;
}
.column-gap-2
{
column-gap
:
0.5rem
;
}
.column-gap-3
{
column-gap
:
1rem
;
}
.column-gap-4
{
column-gap
:
1.5rem
;
}
.column-gap-5
{
column-gap
:
3rem
;
}
/* 行高相关 */
.lh-1
{
line-height
:
1
;
}
.lh-1
\
.2
{
line-height
:
1.2
;
}
.lh-1
\
.4
{
line-height
:
1.4
;
}
.lh-1
\
.5
{
line-height
:
1.5
;
}
.lh-1
\
.6
{
line-height
:
1.6
;
}
.lh-1
\
.8
{
line-height
:
1.8
;
}
.lh-2
{
line-height
:
2
;
}
/* 固定值行高 */
.lh-16
{
line-height
:
16px
;
}
.lh-20
{
line-height
:
20px
;
}
.lh-24
{
line-height
:
24px
;
}
.lh-28
{
line-height
:
28px
;
}
.lh-32
{
line-height
:
32px
;
}
.lh-40
{
line-height
:
40px
;
}
.lh-48
{
line-height
:
48px
;
}
/* 指针相关 */
.cursor-auto
{
cursor
:
auto
;
}
.cursor-default
{
cursor
:
default
;
}
.cursor-pointer
{
cursor
:
pointer
;
}
.cursor-wait
{
cursor
:
wait
;
}
.cursor-text
{
cursor
:
text
;
}
.cursor-move
{
cursor
:
move
;
}
.cursor-help
{
cursor
:
help
;
}
.cursor-not-allowed
{
cursor
:
not-allowed
;
}
.cursor-none
{
cursor
:
none
;
}
.cursor-context-menu
{
cursor
:
context-menu
;
}
.cursor-progress
{
cursor
:
progress
;
}
.cursor-cell
{
cursor
:
cell
;
}
.cursor-crosshair
{
cursor
:
crosshair
;
}
.cursor-vertical-text
{
cursor
:
vertical-text
;
}
.cursor-alias
{
cursor
:
alias
;
}
.cursor-copy
{
cursor
:
copy
;
}
.cursor-no-drop
{
cursor
:
no-drop
;
}
.cursor-grab
{
cursor
:
grab
;
}
.cursor-grabbing
{
cursor
:
grabbing
;
}
.cursor-all-scroll
{
cursor
:
all-scroll
;
}
.cursor-col-resize
{
cursor
:
col-resize
;
}
.cursor-row-resize
{
cursor
:
row-resize
;
}
.cursor-n-resize
{
cursor
:
n-resize
;
}
.cursor-e-resize
{
cursor
:
e-resize
;
}
.cursor-s-resize
{
cursor
:
s-resize
;
}
.cursor-w-resize
{
cursor
:
w-resize
;
}
.cursor-ne-resize
{
cursor
:
ne-resize
;
}
.cursor-nw-resize
{
cursor
:
nw-resize
;
}
.cursor-se-resize
{
cursor
:
se-resize
;
}
.cursor-sw-resize
{
cursor
:
sw-resize
;
}
.cursor-ew-resize
{
cursor
:
ew-resize
;
}
.cursor-ns-resize
{
cursor
:
ns-resize
;
}
.cursor-nesw-resize
{
cursor
:
nesw-resize
;
}
.cursor-nwse-resize
{
cursor
:
nwse-resize
;
}
.cursor-zoom-in
{
cursor
:
zoom-in
;
}
.cursor-zoom-out
{
cursor
:
zoom-out
;
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment