Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
projecttwo
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
wangtao
projecttwo
Commits
f00549db
Commit
f00549db
authored
May 23, 2025
by
wangtao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
业务板块api接口
parent
7e1a11d2
Changes
36
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
12117 additions
and
512 deletions
+12117
-512
AdminBase.php
app/admin/controller/AdminBase.php
+41
-32
Withdrawal.php
app/admin/controller/caiwu/Withdrawal.php
+53
-0
Cert.php
app/admin/controller/cert/Cert.php
+1
-1
Course.php
app/admin/controller/course/Course.php
+18
-4
Payment.php
app/admin/controller/order/Payment.php
+89
-0
edit.html
app/admin/view/advert/edit.html
+1
-1
index.html
app/admin/view/advert/index.html
+2
-2
edit.html
app/admin/view/advert_cate/edit.html
+1
-1
index.html
app/admin/view/advert_cate/index.html
+2
-2
index.html
app/admin/view/article/index.html
+2
-2
index.html
app/admin/view/article_category/index.html
+2
-2
index.html
app/admin/view/caiwu/withdrawal/index.html
+30
-0
edit.html
app/admin/view/cert/cert/edit.html
+1
-1
index.html
app/admin/view/cert/cert/index.html
+1
-2
edit.html
app/admin/view/cert/cert_category/edit.html
+1
-1
index.html
app/admin/view/cert/cert_category/index.html
+1
-2
index.html
app/admin/view/cert/cert_order/index.html
+1
-1
edit.html
app/admin/view/cert/cert_tag/edit.html
+1
-1
index.html
app/admin/view/cert/cert_tag/index.html
+2
-2
detail.html
app/admin/view/course/course/detail.html
+2
-2
index.html
app/admin/view/course/course/index.html
+23
-3
index.html
app/admin/view/course/course_category/index.html
+2
-2
index.html
app/admin/view/course/course_work/index.html
+2
-2
main.html
app/admin/view/index/main.html
+0
-170
main2.html
app/admin/view/index/main2.html
+50
-260
index.html
app/admin/view/order/payment/index.html
+155
-0
index.html
app/admin/view/project/project/index.html
+1
-2
edit.html
app/admin/view/project/project_category/edit.html
+1
-1
index.html
app/admin/view/project/project_category/index.html
+1
-2
index.html
app/admin/view/users/business/index.html
+1
-2
index.html
app/admin/view/users/school/index.html
+1
-2
index.html
app/admin/view/users/user/index.html
+1
-3
PhpOffice.php
app/event/PhpOffice.php
+72
-2
Payment.php
app/model/Payment.php
+77
-0
admin.css
public/static/admin/admin.css
+2699
-1
layui.css
public/static/layui/css/layui.css
+8779
-1
No files found.
app/admin/controller/AdminBase.php
View file @
f00549db
...
...
@@ -7,11 +7,13 @@
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace
app\admin\controller
;
use
app\BaseController
;
use
app\model\system\SystemRoles
as
Roles
;
use
app\model\system\SystemManager
as
Manager
;
use
think\facade\Db
;
/**
*【后台控制器抽象基类】
...
...
@@ -45,7 +47,9 @@ abstract class AdminBase extends BaseController
/**
* 覆盖无需业务
*/
protected
function
__home
(){}
protected
function
__home
()
{
}
/**
* 后台控制器验证初始化
...
...
@@ -59,7 +63,7 @@ abstract class AdminBase extends BaseController
//载入权限菜单
$this
->
loadMenusRoles
();
//构组路由: 控制器 + 方法 + (参数action的传值)
$this
->
routeUri
=
strtolower
(
$this
->
request
->
ADDON_APP
.
$this
->
request
->
controller
()
.
"/"
.
$this
->
request
->
action
()
.
((
$action
=
$this
->
request
->
get
(
'action'
))
?
'/'
.
$action
:
''
));
$this
->
routeUri
=
strtolower
(
$this
->
request
->
ADDON_APP
.
$this
->
request
->
controller
()
.
"/"
.
$this
->
request
->
action
()
.
((
$action
=
$this
->
request
->
get
(
'action'
))
?
'/'
.
$action
:
''
));
//验证权限
$this
->
isPower
();
}
...
...
@@ -69,11 +73,11 @@ abstract class AdminBase extends BaseController
*/
private
function
isLogin
()
{
if
(
is_null
(
$this
->
manUser
=
session
(
VT_MANAGER
)))
{
$url
=
$this
->
appMap
.
'/login/index'
;
if
(
$this
->
request
->
isAjax
())
{
$this
->
exitMsg
(
'您还未登录或已过期,请先登录!'
,
401
,[
'url'
=>
$url
]);
}
else
{
if
(
is_null
(
$this
->
manUser
=
session
(
VT_MANAGER
)))
{
$url
=
$this
->
appMap
.
'/login/index'
;
if
(
$this
->
request
->
isAjax
())
{
$this
->
exitMsg
(
'您还未登录或已过期,请先登录!'
,
401
,
[
'url'
=>
$url
]);
}
else
{
$this
->
redirect
(
$url
);
}
}
...
...
@@ -85,23 +89,23 @@ abstract class AdminBase extends BaseController
private
function
loadMenusRoles
()
{
$us
=
Manager
::
one
(
"username = '
{
$this
->
manUser
[
'username'
]
}
' AND state > 0"
);
if
(
$us
&&
$this
->
manUser
[
'password'
]
==
$us
[
'password'
]
&&
$this
->
manUser
[
'passsalt'
]
==
$us
[
'passsalt'
])
{
if
(
$us
&&
$this
->
manUser
[
'password'
]
==
$us
[
'password'
]
&&
$this
->
manUser
[
'passsalt'
]
==
$us
[
'passsalt'
])
{
//禁止同帐号同时异地登录处理
if
(
in_array
(
vconfig
(
'ip_login'
,
0
),[
2
,
3
])
&&
$us
[
'loginip'
]
!=
$this
->
request
->
ip
())
{
if
(
in_array
(
vconfig
(
'ip_login'
,
0
),
[
2
,
3
])
&&
$us
[
'loginip'
]
!=
$this
->
request
->
ip
())
{
session
(
null
);
$url
=
$this
->
appMap
.
'/login/index'
;
$this
->
exitMsg
(
'您的帐号已在其他终端登录!'
,
$this
->
request
->
isAjax
()
?
401
:
303
,[
'url'
=>
$url
]);
$url
=
$this
->
appMap
.
'/login/index'
;
$this
->
exitMsg
(
'您的帐号已在其他终端登录!'
,
$this
->
request
->
isAjax
()
?
401
:
303
,
[
'url'
=>
$url
]);
}
$us
=
$us
->
toArray
();
$us
[
'role_menuid'
]
=
''
;
$us
[
'role_name'
]
=
'超级管理员'
;
$us
[
'uid'
]
=
$this
->
manUser
[
'uid'
];
//非超级管理员载入角色权限['roleid'=>角色ID,'role_name'=>+角色名,'role_menuid'=>+拥有的菜单ID串'actions'=>+权限记录集]
$this
->
manUser
=
$us
[
'userid'
]
>
1
?
array_merge
(
$us
,
Roles
::
cache
(
$us
[
'roleid'
]))
:
$us
;
}
else
{
$this
->
manUser
=
$us
[
'userid'
]
>
1
?
array_merge
(
$us
,
Roles
::
cache
(
$us
[
'roleid'
]))
:
$us
;
}
else
{
session
(
null
);
$url
=
$this
->
appMap
.
'/login/index'
;
$this
->
exitMsg
(
'您还未登录或已过期,请先登录!'
,
$this
->
request
->
isAjax
()
?
401
:
303
,[
'url'
=>
$url
]);
$url
=
$this
->
appMap
.
'/login/index'
;
$this
->
exitMsg
(
'您还未登录或已过期,请先登录!'
,
$this
->
request
->
isAjax
()
?
401
:
303
,
[
'url'
=>
$url
]);
}
}
...
...
@@ -110,24 +114,24 @@ abstract class AdminBase extends BaseController
*/
private
function
isPower
()
{
if
(
$this
->
manUser
[
'userid'
]
>
1
&&
!
in_array
(
$this
->
routeUri
,
$this
->
manUser
[
'actions'
]))
{
$this
->
exitMsg
(
'抱歉,您没有该项权限请联系管理员!'
,
$this
->
request
->
isAjax
()
?
401
:
400
);
if
(
$this
->
manUser
[
'userid'
]
>
1
&&
!
in_array
(
$this
->
routeUri
,
$this
->
manUser
[
'actions'
]))
{
$this
->
exitMsg
(
'抱歉,您没有该项权限请联系管理员!'
,
$this
->
request
->
isAjax
()
?
401
:
400
);
}
}
/**
* 日志/在线处理
* @access protected
* @param
sting $tip
提示
* @param
sting $tip
提示
*/
protected
function
logon
(
string
$tip
=
''
)
{
//操作日志
if
(
vconfig
(
'admin_log'
,
0
))
{
\app\model\system\SystemManagerLog
::
add
([
'url'
=>
$this
->
routeUri
.
(
$tip
?
' '
.
$tip
:
''
),
'username'
=>
$this
->
manUser
[
'username'
],
'ip'
=>
$this
->
request
->
ip
()]);
if
(
vconfig
(
'admin_log'
,
0
))
{
\app\model\system\SystemManagerLog
::
add
([
'url'
=>
$this
->
routeUri
.
(
$tip
?
' '
.
$tip
:
''
),
'username'
=>
$this
->
manUser
[
'username'
],
'ip'
=>
$this
->
request
->
ip
()]);
}
//在线统计 【online_on = 0:关闭全部 1:开启后台 2:开启会员 3:开启全部】
if
(
in_array
(
vconfig
(
'online_on'
,
0
),[
1
,
3
]))
{
if
(
in_array
(
vconfig
(
'online_on'
,
0
),
[
1
,
3
]))
{
\app\model\system\SystemOnline
::
recod
(
$this
->
manUser
,
$this
->
routeUri
,
0
);
}
}
...
...
@@ -140,24 +144,29 @@ abstract class AdminBase extends BaseController
*/
protected
function
getRoleExt
()
{
if
(
$this
->
manUser
[
'userid'
]
==
1
)
return
0
;
if
(
$this
->
manUser
[
'userid'
]
==
1
)
return
0
;
$d
=
explode
(
'/'
,
$this
->
routeUri
);
if
(
isset
(
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/*'
]))
{
return
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/*'
];
}
elseif
(
isset
(
$d
[
1
])
&&
isset
(
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/'
.
$d
[
1
]
.
'/*'
]))
{
return
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/'
.
$d
[
1
]
.
'/*'
];
}
elseif
(
isset
(
$d
[
1
])
&&
isset
(
$d
[
2
])
&&
isset
(
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/'
.
$d
[
1
]
.
'/'
.
$d
[
2
]
.
'/*'
]))
{
return
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/'
.
$d
[
1
]
.
'/'
.
$d
[
2
]
.
'/*'
];
}
else
{
if
(
isset
(
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/*'
]))
{
return
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/*'
];
}
elseif
(
isset
(
$d
[
1
])
&&
isset
(
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/'
.
$d
[
1
]
.
'/*'
]))
{
return
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/'
.
$d
[
1
]
.
'/*'
];
}
elseif
(
isset
(
$d
[
1
])
&&
isset
(
$d
[
2
])
&&
isset
(
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/'
.
$d
[
1
]
.
'/'
.
$d
[
2
]
.
'/*'
]))
{
return
$this
->
manUser
[
'role_ext'
][
$d
[
0
]
.
'/'
.
$d
[
1
]
.
'/'
.
$d
[
2
]
.
'/*'
];
}
else
{
return
$this
->
manUser
[
'role_ext'
][
$this
->
routeUri
]
??
0
;
}
}
public
function
downloadfile
(
$fileid
)
public
function
downloadfile
(
$fileid
,
$excel
=
0
)
{
$fileinfo
=
get_upload_file
(
$fileid
,
'info'
);
return
download
(
'.'
.
$fileinfo
[
'fileurl'
],
$fileinfo
[
'filename'
],
true
);
if
(
$excel
==
1
)
{
$fileinfo
=
Db
::
name
(
'excel_down'
)
->
where
([
'id'
=>
$fileid
])
->
find
();
}
else
{
$fileinfo
=
get_upload_file
(
$fileid
,
'info'
);
}
$fileurl
=
strstr
(
$fileinfo
[
'fileurl'
],
'/static'
);
return
download
(
'.'
.
$fileurl
,
$fileinfo
[
'filename'
])
->
force
(
true
);
}
}
\ No newline at end of file
app/admin/controller/caiwu/Withdrawal.php
View file @
f00549db
...
...
@@ -11,6 +11,7 @@
namespace
app\admin\controller\caiwu
;
use
app\admin\controller\AdminBase
;
use
app\event\PhpOffice
;
use
think\App
;
use
think\facade\Db
;
use
app\model\project\UserWithdrawal
;
...
...
@@ -163,6 +164,58 @@ class Withdrawal extends AdminBase
return
$this
->
returnMsg
(
$e
->
getMessage
());
}
}
//导出excel
public
function
excelwithdrawal
()
{
$post
=
input
();
$map
=
[];
$hasmap
=
[];
if
(
isset
(
$post
[
'kw'
])
&&
!
empty
(
$post
[
'kw'
]))
{
$map
[]
=
[
'sn'
,
'like'
,
'%'
.
$post
[
'kw'
]
.
'%'
];
}
if
(
isset
(
$post
[
'sh_status'
])
&&
$post
[
'sh_status'
]
>
-
1
)
{
$map
[]
=
[
'sh_status'
,
'='
,
$post
[
'sh_status'
]];
}
if
(
isset
(
$post
[
'dk_status'
])
&&
$post
[
'dk_status'
]
>
-
1
)
{
$map
[]
=
[
'dk_status'
,
'='
,
$post
[
'dk_status'
]];
}
if
(
isset
(
$post
[
'user'
])
&&
!
empty
(
$post
[
'user'
]))
{
$hasmap
[]
=
[
'username|mobile'
,
'like'
,
'%'
.
$post
[
'user'
]
.
'%'
];
}
if
(
isset
(
$post
[
'ids'
])
&&
$post
[
'ids'
])
{
$map
[]
=
[
'user_withdrawal.id'
,
'in'
,
$post
[
'ids'
]];
}
try
{
$list
=
$this
->
withdrawal
->
where
(
$map
)
->
hasWhere
(
'getuserdata'
,
$hasmap
)
->
with
([
'getuserdata'
])
->
append
([
'sh_status_text'
,
'dk_status_text'
])
->
order
(
'createtime desc'
)
->
select
()
->
toArray
();
if
(
empty
(
$list
))
{
throw
new
\Exception
(
'没有数据'
);
}
$exceldata
[]
=
[
'提现单号'
,
'用户名'
,
'用户手机'
,
'提现金额'
,
'提现手续费'
,
'实际到账金额'
,
'提现账号'
,
'审核状态'
,
'打款状态'
,
'提现时间'
,
'打款时间'
];
foreach
(
$list
as
$k
=>
$v
)
{
$exceldata
[]
=
[
$v
[
'sn'
],
$v
[
'getuserdata'
][
'username'
],
$v
[
'getuserdata'
][
'mobile'
],
$v
[
'tx_money'
],
$v
[
'tx_commission'
],
$v
[
'tx_sj_money'
],
$v
[
'account'
],
$v
[
'sh_status_text'
],
$v
[
'dk_status_text'
],
$v
[
'createtime'
],
$v
[
'dk_time'
]
?
date
(
'Y-m-d H:i:s'
,
$v
[
'dk_time'
])
:
''
,
];
}
$excelid
=
PhpOffice
::
exportexcel
(
$exceldata
,
'提现导出'
);
$data
[
'url'
]
=
'/admin/caiwu.withdrawal/downloadfile?excel=1&fileid='
.
$excelid
;
return
$this
->
returnMsg
(
'success'
,
1
,
$data
);
}
catch
(
\Exception
$e
)
{
return
$this
->
returnMsg
(
$e
->
getMessage
());
}
}
}
\ No newline at end of file
app/admin/controller/cert/Cert.php
View file @
f00549db
...
...
@@ -69,7 +69,7 @@ class Cert extends AdminBase
if
(
$result
){
return
$this
->
returnMsg
(
'修改成功'
,
1
);
}
else
{
return
$this
->
returnMsg
(
'修改
成功
'
);
return
$this
->
returnMsg
(
'修改
失败
'
);
}
}
...
...
app/admin/controller/course/Course.php
View file @
f00549db
...
...
@@ -51,6 +51,10 @@ class Course extends AdminBase
if
(
isset
(
$post
[
'cate_id'
])
&&
!
empty
(
$post
[
'cate_id'
]))
{
$map
[]
=
[
'cate_id'
,
'='
,
$post
[
'cate_id'
]];
}
if
(
isset
(
$post
[
'status'
])
&&
$post
[
'status'
]
>
-
1
)
{
$map
[]
=
[
'status'
,
'='
,
$post
[
'status'
]];
}
$list
=
$this
->
course
->
where
(
$map
)
->
append
([
'thumbpath'
,
'cate_name'
,
'teacher_name'
,
'status_text'
,
'tag_title'
,
'user_info'
,
'is_sell_text'
])
->
order
(
'createtime desc'
)
->
paginate
(
$post
[
'limit'
]);
return
$this
->
returnMsg
(
$list
);
...
...
@@ -66,8 +70,16 @@ class Course extends AdminBase
{
$post
=
input
();
$this
->
course
->
update
([
$post
[
'af'
]
=>
$post
[
'av'
]],
[[
'id'
,
'='
,
$post
[
'id'
]]]);
return
$this
->
returnMsg
(
'修改成功'
);
$result
=
$this
->
course
->
update
([
$post
[
'af'
]
=>
$post
[
'av'
]],
[[
'id'
,
'='
,
$post
[
'id'
]]]);
if
(
$post
[
'av'
]
==
'is_sell'
){
$course_id
=
$post
[
'id'
];
event
(
'Course'
,
[
'course_id'
=>
$course_id
,
'tasktype'
=>
'course'
,
'action'
=>
'shcourseupdate'
]);
}
if
(
$result
){
return
$this
->
returnMsg
(
'修改成功'
,
1
);
}
else
{
return
$this
->
returnMsg
(
'修改失败'
);
}
}
...
...
@@ -76,8 +88,10 @@ class Course extends AdminBase
$post
=
input
();
$ids
=
is_array
(
$post
[
'id'
])
?
implode
(
','
,
$post
[
'id'
])
:
$post
[
'id'
];
if
(
$this
->
course
->
where
(
"id IN("
.
$ids
.
")"
)
->
update
([
'is_del'
=>
1
]))
{
$course_id_arr
=
$this
->
course
->
where
(
"id IN("
.
$ids
.
")"
)
->
column
(
'id'
);
$course_id_arr
=
array_unique
(
$course_id_arr
);
// $course_id_arr = $this->course->where("id IN(" . $ids . ")")->column('id');
// $course_id_arr = array_unique($course_id_arr);
$course_id_arr
=
explode
(
','
,
$ids
);
foreach
(
$course_id_arr
as
$course_id
)
{
event
(
'Course'
,
[
'course_id'
=>
$course_id
,
'tasktype'
=>
'course'
,
'action'
=>
'shcourseupdate'
]);
}
...
...
app/admin/controller/order/Payment.php
0 → 100644
View file @
f00549db
<?php
/**
* ===========================================================================
* Veitool 快捷开发框架系统
* Author: Niaho 26843818@qq.com
* Copyright (c)2019-2025 www.veitool.com All rights reserved.
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace
app\admin\controller\order
;
use
app\admin\controller\AdminBase
;
use
think\App
;
use
think\facade\Db
;
use
app\model\Payment
as
PaymentModel
;
/**
* 后台主控制器
*/
class
Payment
extends
AdminBase
{
protected
$payment
;
public
function
__construct
(
App
$app
)
{
parent
::
__construct
(
$app
);
$this
->
payment
=
new
PaymentModel
();
}
// 列表
public
function
index
(
string
$do
=
''
)
{
$limit
=
10
;
if
(
$do
==
'json'
)
{
$post
=
input
();
$post
[
'limit'
]
=
isset
(
$post
[
'limit'
])
?
$post
[
'limit'
]
:
$limit
;
$map
=
[];
$hasmap
=
[];
if
(
isset
(
$post
[
'kw'
])
&&
!
empty
(
$post
[
'kw'
]))
{
$map
[]
=
[
'order_no'
,
'like'
,
'%'
.
$post
[
'kw'
]
.
'%'
];
}
if
(
isset
(
$post
[
'user'
])
&&
!
empty
(
$post
[
'user'
]))
{
$hasmap
[]
=
[
'username|mobile'
,
'like'
,
'%'
.
$post
[
'user'
]
.
'%'
];
}
if
(
isset
(
$post
[
'pay_status'
])
&&
$post
[
'pay_status'
]
>
-
1
)
{
$map
[]
=
[
'pay_status'
,
'='
,
$post
[
'pay_status'
]];
}
$list
=
$this
->
payment
->
where
(
$map
)
->
hasWhere
(
'getuserdata'
,
$hasmap
)
->
with
([
'getuserdata'
])
->
append
([
'pay_status_text'
,
'pay_method_text'
,
'pay_time_text'
,
'order_name'
])
->
order
(
'createtime desc'
)
->
paginate
(
$post
[
'limit'
]);
return
$this
->
returnMsg
(
$list
);
}
$this
->
assign
(
'limit'
,
$limit
);
return
$this
->
fetch
(
''
,
''
,
false
);
}
//快速编辑
public
function
editup
()
{
$post
=
input
();
$result
=
$this
->
payment
->
update
([
$post
[
'af'
]
=>
$post
[
'av'
]],
[[
'id'
,
'='
,
$post
[
'id'
]]]);
if
(
$result
)
{
return
$this
->
returnMsg
(
'修改成功'
,
1
);
}
else
{
return
$this
->
returnMsg
(
'修改失败'
);
}
}
public
function
del
()
{
$post
=
input
();
$ids
=
is_array
(
$post
[
'id'
])
?
implode
(
','
,
$post
[
'id'
])
:
$post
[
'id'
];
if
(
$this
->
payment
->
where
(
"id IN("
.
$ids
.
")"
)
->
update
([
'is_del'
=>
1
]))
{
return
$this
->
returnMsg
(
"删除成功"
,
1
);
}
else
{
return
$this
->
returnMsg
(
"删除失败"
);
}
}
}
\ No newline at end of file
app/admin/view/advert/edit.html
View file @
f00549db
{extend name="base/header" /}
{block name="body"}
<div
style=
"margin: 0px
1
0px"
>
<div
style=
"margin: 0px
30px 0px
0px"
>
<form
class=
"layui-form "
style=
"margin-top: 20px;"
id=
"fjfrom"
>
<div
class=
"layui-form-item"
>
...
...
app/admin/view/advert/index.html
View file @
f00549db
...
...
@@ -132,10 +132,10 @@
}
layer
.
open
({
type
:
2
,
area
:
[
'900px'
,
'90
0px
'
],
area
:
[
'900px'
,
'90
%
'
],
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
//
fixed: false, //不固定
content
:
'/admin/advert/edit?id='
+
id
+
'&type='
+
type
,
yes
:
function
(
index
,
layero
){
var
data
=
window
[
"layui-layer-iframe"
+
index
].
callbackdata
();
...
...
app/admin/view/advert_cate/edit.html
View file @
f00549db
{extend name="base/header" /}
{block name="body"}
<div
style=
"margin: 0px
10px
"
>
<div
style=
"margin: 0px
30px 0px 0px;
"
>
<form
class=
"layui-form "
style=
"margin-top: 20px;"
id=
"fjfrom"
>
...
...
app/admin/view/advert_cate/index.html
View file @
f00549db
...
...
@@ -118,10 +118,10 @@
}
layer
.
open
({
type
:
2
,
area
:
[
'
900px'
,
'900px
'
],
area
:
[
'
600px'
,
'70%
'
],
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
//
fixed: false, //不固定
content
:
'/admin/advert_cate/edit?id='
+
id
+
'&type='
+
type
,
yes
:
function
(
index
,
layero
){
var
data
=
window
[
"layui-layer-iframe"
+
index
].
callbackdata
();
...
...
app/admin/view/article/index.html
View file @
f00549db
...
...
@@ -164,10 +164,10 @@
}
layer
.
open
({
type
:
2
,
area
:
[
'900px'
,
'90
0px
'
],
area
:
[
'900px'
,
'90
%
'
],
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
//
fixed: false, //不固定
content
:
'/admin/article/edit?id='
+
id
+
'&type='
+
type
,
yes
:
function
(
index
,
layero
){
var
data
=
window
[
"layui-layer-iframe"
+
index
].
callbackdata
();
...
...
app/admin/view/article_category/index.html
View file @
f00549db
...
...
@@ -104,10 +104,10 @@
}
layer
.
open
({
type
:
2
,
area
:
[
'
900px'
,
'900px
'
],
area
:
[
'
700px'
,
'90%
'
],
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
//
fixed: false, //不固定
content
:
app_root
+
'edit?id='
+
id
,
yes
:
function
(
index
,
layero
){
var
data
=
window
[
"layui-layer-iframe"
+
index
].
callbackdata
();
...
...
app/admin/view/caiwu/withdrawal/index.html
View file @
f00549db
...
...
@@ -39,6 +39,7 @@
<div
class=
"layui-inline"
>
<div
class=
"layui-btn-group"
>
<button
class=
"layui-btn"
lay-submit
lay-filter=
"search-withdrawal"
><i
class=
"layui-icon layui-icon-search"
></i>
搜索
</button>
<button
class=
"layui-btn"
lay-submit
lay-filter=
"excel-withdrawal"
><i
class=
"layui-icon layui-icon-download-circle"
></i>
导出
</button>
<a
class=
"layui-btn"
lay-submit
lay-filter=
"search-withdrawal-all"
onclick=
"$('#withdrawal-groupid').val('')"
><i
class=
"layui-icon layui-icon-light"
></i>
全部
</a>
...
...
@@ -106,6 +107,7 @@
page
:
true
,
limit
:{
$limit
},
height
:
'full-341'
,
// toolbar: 'default', //开启工具栏,此处显示默认图标,可以自定义模板,详见文档
url
:
app_root
+
"index?&do=json"
,
// css: 'td .layui-table-cell{height:80px;line-height:80px;padding:0 5px;}',
cols
:
[[
...
...
@@ -138,6 +140,34 @@
},
'post'
,{
headersToken
:
true
});
});
form
.
on
(
'submit(excel-withdrawal)'
,
function
(
data
){
var
checkStatus
=
table
.
checkStatus
(
'withdrawal'
);
var
checkRows
=
checkStatus
.
data
;
var
ids
=
checkRows
.
map
(
function
(
d
){
return
d
.
id
;});
var
field
=
data
.
field
;
// 获得表单字段
field
.
ids
=
ids
;
layer
.
load
();
$
.
ajax
({
method
:
"post"
,
url
:
app_root
+
'/excelwithdrawal'
,
data
:
field
,
dataType
:
"json"
,
success
:
function
(
res
){
layer
.
closeAll
();
if
(
res
.
code
===
1
)
{
window
.
location
.
href
=
res
.
data
.
url
;
}
else
{
layer
.
msg
(
res
.
msg
,{
icon
:
2
,
shade
:[
0.4
,
'#000'
],
time
:
1500
},
function
(){
});
}
}
});
return
false
;
// 阻止默认 form 跳转
});
/*快编监听*/
table
.
on
(
'edit(withdrawal)'
,
function
(
obj
){
admin
.
req
(
app_root
+
"editup"
,{
id
:
obj
.
data
.
id
,
av
:
obj
.
value
,
af
:
obj
.
field
},
function
(
res
){
...
...
app/admin/view/cert/cert/edit.html
View file @
f00549db
...
...
@@ -10,7 +10,7 @@
<link
rel=
"stylesheet"
href=
"/static/admin/element/index.css?v=1"
>
<!-- 引入组件库 -->
<script
src=
"/static/admin/element/index.js"
></script>
<div
style=
"margin: 0px
1
0px"
>
<div
style=
"margin: 0px
20px 0px
0px"
>
<form
class=
"layui-form "
style=
"margin-top: 20px;"
id=
"fjfrom"
>
<div
class=
"layui-form-item"
>
...
...
app/admin/view/cert/cert/index.html
View file @
f00549db
...
...
@@ -192,10 +192,9 @@
}
layer
.
open
({
type
:
2
,
area
:
[
'900px'
,
'
850px
'
],
area
:
[
'900px'
,
'
90%
'
],
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
content
:
app_root
+
'/edit?id='
+
id
+
'&type='
+
type
,
yes
:
function
(
index
,
layero
){
var
data
=
window
[
"layui-layer-iframe"
+
index
].
callbackdata
();
...
...
app/admin/view/cert/cert_category/edit.html
View file @
f00549db
{extend name="base/header" /}
{block name="body"}
<div
style=
"margin: 0px
10px
"
>
<div
style=
"margin: 0px
20px 0px 0px;
"
>
<form
class=
"layui-form "
style=
"margin-top: 20px;"
id=
"fjfrom"
>
<div
class=
"layui-form-item"
>
...
...
app/admin/view/cert/cert_category/index.html
View file @
f00549db
...
...
@@ -117,10 +117,9 @@
}
layer
.
open
({
type
:
2
,
area
:
[
'900px'
,
'90
0px
'
],
area
:
[
'900px'
,
'90
%
'
],
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
content
:
app_root
+
'edit?id='
+
id
,
yes
:
function
(
index
,
layero
){
var
data
=
window
[
"layui-layer-iframe"
+
index
].
callbackdata
();
...
...
app/admin/view/cert/cert_order/index.html
View file @
f00549db
...
...
@@ -170,7 +170,7 @@
function
certorderOpen
(
id
=
''
,
type
=
''
){
layer
.
open
({
type
:
2
,
area
:
[
'900px'
,
'90
0px
'
],
area
:
[
'900px'
,
'90
%
'
],
title
:
'资料详情'
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
...
...
app/admin/view/cert/cert_tag/edit.html
View file @
f00549db
...
...
@@ -10,7 +10,7 @@
<link
rel=
"stylesheet"
href=
"/static/admin/element/index.css?v=1"
>
<!-- 引入组件库 -->
<script
src=
"/static/admin/element/index.js"
></script>
<div
style=
"margin: 0px
10px
"
>
<div
style=
"margin: 0px
20px 0px 0px;
"
>
<form
class=
"layui-form "
style=
"margin-top: 20px;"
id=
"fjfrom"
>
...
...
app/admin/view/cert/cert_tag/index.html
View file @
f00549db
...
...
@@ -150,10 +150,10 @@
}
layer
.
open
({
type
:
2
,
area
:
[
'
900px'
,
'85
0px'
],
area
:
[
'
600px'
,
'60
0px'
],
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
content
:
app_root
+
'/edit?id='
+
id
+
'&type='
+
type
,
yes
:
function
(
index
,
layero
){
var
data
=
window
[
"layui-layer-iframe"
+
index
].
callbackdata
();
...
...
app/admin/view/course/course/detail.html
View file @
f00549db
...
...
@@ -85,14 +85,14 @@
<div
class=
"layui-tab-item"
>
<div
class=
"layui-card-body"
style=
" padding: 0px 10px !important; "
>
<div
class=
"layui-card-box"
style=
"width:
9
50px;"
>
<div
class=
"layui-card-box"
style=
"width:
8
50px;"
>
<table
lay-filter=
"courseclasscategory"
id=
"courseclasscategory"
></table>
</div>
</div>
</div>
<div
class=
"layui-tab-item"
>
<div
class=
"layui-card-body"
style=
" padding: 0px 10px !important; "
>
<div
class=
"layui-card-box"
style=
"width:
9
50px;"
>
<div
class=
"layui-card-box"
style=
"width:
8
50px;"
>
<table
lay-filter=
"coursework"
id=
"coursework"
></table>
</div>
</div>
...
...
app/admin/view/course/course/index.html
View file @
f00549db
...
...
@@ -28,6 +28,15 @@
<div
class=
"layui-form-item"
>
<div
class=
"layui-inline"
style=
"width:250px;"
><input
type=
"text"
name=
"kw"
placeholder=
"课程关键词"
autocomplete=
"off"
class=
"layui-input"
lay-affix=
"clear"
/></div>
<div
class=
"layui-inline"
style=
"width:150px;"
>
<select
name=
"status"
>
<option
value=
"-1"
>
审核状态
</option>
<option
value=
"0"
>
待提交
</option>
<option
value=
"1"
>
待审核
</option>
<option
value=
"2"
>
审核失败
</option>
<option
value=
"3"
>
审核成功
</option>
</select>
</div>
<div
class=
"layui-inline"
>
<div
class=
"layui-btn-group"
>
<button
class=
"layui-btn"
lay-submit
lay-filter=
"search-course"
><i
class=
"layui-icon layui-icon-search"
></i>
搜索
</button>
...
...
@@ -121,7 +130,8 @@
{
field
:
'price'
,
width
:
120
,
align
:
'center'
,
title
:
'价格'
},
{
field
:
'createtime'
,
width
:
120
,
align
:
'center'
,
title
:
'发布时间'
},
{
field
:
"status_text"
,
width
:
80
,
align
:
'center'
,
title
:
"状态"
,
templet
:
'#status-demo'
},
{
field
:
"is_sell_text"
,
width
:
80
,
align
:
'center'
,
title
:
"上架状态"
},
// {field:"is_sell_text",width:80,align:'center',title:"上架状态"},
{
field
:
"is_sell"
,
width
:
80
,
align
:
'center'
,
title
:
"是否上架"
,
templet
:
function
(
d
){
return
'<input type="checkbox" name="is_sell" lay-skin="switch" lay-text="是|否" lay-filter="is_sell-chang" value="'
+
d
.
is_sell
+
'" data-json="'
+
encodeURIComponent
(
JSON
.
stringify
(
d
))
+
'"'
+
(
d
.
is_sell
==
1
?
' checked'
:
''
)
+
'>'
;},
unresize
:
true
,},
{
field
:
"teacher_name"
,
width
:
100
,
align
:
'center'
,
title
:
"讲师"
},
{
field
:
'tag_title'
,
width
:
100
,
align
:
'center'
,
title
:
'标签'
},
...
...
@@ -132,6 +142,16 @@
}
});
// 状态 - 开关操作
form
.
on
(
'switch(is_sell-chang)'
,
function
(
obj
){
var
json
=
JSON
.
parse
(
decodeURIComponent
(
$
(
this
).
data
(
'json'
)));
var
av
=
obj
.
elem
.
checked
?
1
:
0
;
admin
.
req
(
app_root
+
"editup"
,{
id
:
json
.
id
,
av
:
av
,
af
:
obj
.
elem
.
name
},
function
(
res
){
layer
.
tips
(
res
.
msg
,
obj
.
othis
,{
time
:
1000
});
if
(
res
.
code
===
0
)
obj
.
elem
.
checked
=
parseInt
(
obj
.
value
);
},
'post'
,{
headersToken
:
true
});
});
/*快编监听*/
table
.
on
(
'edit(course)'
,
function
(
obj
){
admin
.
req
(
app_root
+
"editup"
,{
id
:
obj
.
data
.
id
,
av
:
obj
.
value
,
af
:
obj
.
field
},
function
(
res
){
...
...
@@ -256,10 +276,10 @@
layer
.
open
({
type
:
2
,
area
:
[
'
1000px'
,
'900px
'
],
area
:
[
'
900px'
,
'90%
'
],
title
:
"课程详情"
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
//
fixed: false, //不固定
content
:
'/admin/course.course/detail?id='
+
id
,
yes
:
function
(
index
,
layero
){
// var data = window["layui-layer-iframe" + index].callbackdata();
...
...
app/admin/view/course/course_category/index.html
View file @
f00549db
...
...
@@ -117,10 +117,10 @@
}
layer
.
open
({
type
:
2
,
area
:
[
'
900px'
,
'900px
'
],
area
:
[
'
800px'
,
'90%
'
],
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
//
fixed: false, //不固定
content
:
app_root
+
'edit?id='
+
id
,
yes
:
function
(
index
,
layero
){
var
data
=
window
[
"layui-layer-iframe"
+
index
].
callbackdata
();
...
...
app/admin/view/course/course_work/index.html
View file @
f00549db
...
...
@@ -117,10 +117,10 @@
layer
.
open
({
type
:
2
,
area
:
[
'
1000px'
,
'900px
'
],
area
:
[
'
900px'
,
'90%
'
],
title
:
"作业详情"
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
//
fixed: false, //不固定
content
:
'/admin/course.course_work/detail?id='
+
id
,
yes
:
function
(
index
,
layero
){
layer
.
close
(
index
);
// 关闭弹窗
...
...
app/admin/view/index/main.html
View file @
f00549db
<tpl>
<form
class=
"layui-form "
action=
"admin/Index/main"
id=
"fjfrom"
>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
输入框
</label>
<div
class=
"layui-input-block"
>
<input
type=
"text"
name=
"title"
placeholder=
"请输入标题"
autocomplete=
"off"
class=
"layui-input"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
密码框
</label>
<div
class=
"layui-input-inline"
>
<input
type=
"password"
name=
"password"
required
lay-verify=
"required"
placeholder=
"请输入密码"
autocomplete=
"off"
class=
"layui-input"
>
</div>
<div
class=
"layui-form-mid layui-word-aux"
>
辅助文字
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
选择框
</label>
<div
class=
"layui-input-block"
>
<select
name=
"city"
lay-verify=
"required"
>
<option
value=
""
></option>
<option
value=
"0"
>
北京
</option>
<option
value=
"1"
>
上海
</option>
<option
value=
"2"
>
广州
</option>
<option
value=
"3"
>
深圳
</option>
<option
value=
"4"
>
杭州
</option>
</select>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
复选框
</label>
<div
class=
"layui-input-block"
>
<input
type=
"checkbox"
name=
"like[write]"
title=
"写作"
>
<input
type=
"checkbox"
name=
"like[read]"
title=
"阅读"
checked
>
<input
type=
"checkbox"
name=
"like[dai]"
title=
"发呆"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
开关
</label>
<div
class=
"layui-input-block"
>
<input
type=
"checkbox"
name=
"admin_log"
lay-skin=
"switch"
lay-text=
"ON|OFF"
lay-filter=
"admin_log"
value=
"1"
title=
"ON|OFF"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
单选框
</label>
<div
class=
"layui-input-block"
>
<input
type=
"radio"
name=
"sex"
value=
"男"
title=
"男"
>
<input
type=
"radio"
name=
"sex"
value=
"女"
title=
"女"
checked
>
</div>
</div>
<div
class=
"layui-form-item layui-form-text"
>
<label
class=
"layui-form-label"
>
文本域
</label>
<div
class=
"layui-input-block"
>
<textarea
name=
"desc"
placeholder=
"请输入内容"
class=
"layui-textarea"
></textarea>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
上传图片
</label>
<div
class=
"layui-input-block"
id=
"imgboxheadimg"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
上传图片
</label>
<div
class=
"layui-input-block"
id=
"imgboxheadimg2"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
多图上传
</label>
<div
class=
"layui-input-block"
id=
"imgboxheadimg3"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<label
class=
"layui-form-label"
>
文件上传
</label>
<div
class=
"layui-input-block"
id=
"imgboxheadimg4"
>
</div>
</div>
<div
class=
"layui-form-item"
>
<button
class=
"layui-btn ajax-post"
type=
"button"
target-form=
"layui-form"
>
确认
</button>
<button
type=
"reset"
class=
"layui-btn layui-btn-primary"
>
重置
</button>
</div>
</form>
<script
src=
"{STATIC__PATH}admin/tc.js"
></script>
<script>
layui
.
use
([
'buildItems'
,
'form'
,
'laydate'
,
'util'
],
function
(){
/*解析顶部分组选项*/
var
str
=
[{
"name"
:
"{$data.name}"
,
"title"
:
"上传图片"
,
"value"
:
"/static/file/upload/image/20250422/68073d795d609.png"
,
"pathid"
:
11
,
"type"
:
"{$data.type}"
}];
layui
.
buildItems
.
build
({
bid
:
'imgboxheadimg'
,
fjbid
:
'fjfrom'
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
gid
:
1
,
data
:
str
});
var
str
=
[{
"name"
:
"{$data2.name}"
,
"title"
:
"上传图片"
,
"value"
:
"{$data2.value}"
,
"type"
:
"{$data2.type}"
}];
layui
.
buildItems
.
build
({
bid
:
'imgboxheadimg2'
,
fjbid
:
'fjfrom'
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
gid
:
1
,
data
:
str
});
//
// var str = [{
// "name": "{$data3.name}",
// "title": "多图图片",
// "value": "{$data3.value}",
// "type": "{$data3.type}"
// }];
// layui.buildItems.build({
// bid: 'imgboxheadimg3',
// url: '',
// map: layui.cache.maps + 'system.upload/',
// gid: 1,
// data:str
// });
//
//
var
str
=
[{
"name"
:
"{$data4.name}"
,
"title"
:
"文件上传"
,
"value"
:
"{$data4.value}"
,
"type"
:
"{$data4.type}"
}];
layui
.
buildItems
.
build
({
bid
:
'imgboxheadimg4'
,
fjbid
:
'fjfrom'
,
url
:
''
,
map
:
layui
.
cache
.
maps
+
'system.upload/'
,
gid
:
1
,
data
:
str
});
layui
.
buildItems
.
init
();
form
=
layui
.
form
;
form
.
render
();
// 指定开关事件
form
.
on
(
'switch(admin_log)'
,
function
(
data
){
layer
.
msg
(
'开关 checked:'
+
(
this
.
checked
?
'true'
:
'false'
),
{
offset
:
'6px'
});
});
});
</script>
</tpl>
\ No newline at end of file
app/admin/view/index/main2.html
View file @
f00549db
This diff is collapsed.
Click to expand it.
app/admin/view/order/payment/index.html
0 → 100644
View file @
f00549db
<div
class=
"layui-fluid"
>
<style>
#paymentcategoryTreeBar
{
padding
:
10px
15px
;
border
:
1px
solid
#e6e6e6
;
background-color
:
#f2f2f2
}
#paymentcategoryTree
{
border
:
1px
solid
#e6e6e6
;
border-top
:
none
;
padding
:
10px
5px
;
overflow
:
auto
;
height
:
-webkit-calc
(
100vh
-
290px
);
height
:
-moz-calc
(
100vh
-
290px
);
height
:
calc
(
100vh
-
290px
)}
.layui-tree-entry
.layui-tree-txt
{
padding
:
0
5px
;
border
:
1px
transparent
solid
;
text-decoration
:
none
!important
}
.layui-tree-entry.organ-tree-click
.layui-tree-txt
{
background-color
:
#fff3e0
;
border
:
1px
#ffe6b0
solid
}
.files_itemwpayment
{
width
:
30px
;
height
:
30px
;
line-height
:
30px
;
cursor
:
pointer
;
padding
:
1px
;
background
:
#fff
;
display
:
-webkit-box
;
-moz-box-align
:
center
;
-webkit-box-align
:
center
;
-moz-box-pack
:
center
;
-webkit-box-pack
:
center
;}
.files_itemwpayment
img
{
max-width
:
28px
;
max-height
:
28px
;
border
:
0
}
</style>
<div
class=
"layui-card"
>
<div
class=
"layui-card-header"
>
<form
class=
"layui-form render"
>
<input
type=
"hidden"
name=
"groupid"
id=
"payment-groupid"
value=
""
/>
<div
class=
"layui-form-item"
>
<div
class=
"layui-inline"
style=
"width:250px;"
><input
type=
"text"
name=
"kw"
placeholder=
"支付单号"
autocomplete=
"off"
class=
"layui-input"
lay-affix=
"clear"
/></div>
<div
class=
"layui-inline"
style=
"width:250px;"
><input
type=
"text"
name=
"user"
placeholder=
"用户名,用户手机"
autocomplete=
"off"
class=
"layui-input"
lay-affix=
"clear"
/></div>
<div
class=
"layui-inline"
style=
"width:150px;"
>
<select
name=
"pay_status"
>
<option
value=
"-1"
>
支付状态
</option>
<option
value=
"0"
>
未支付
</option>
<option
value=
"1"
>
已支付
</option>
<option
value=
"2"
>
支付失败
</option>
</select>
</div>
<div
class=
"layui-inline"
>
<div
class=
"layui-btn-group"
>
<button
class=
"layui-btn"
lay-submit
lay-filter=
"search-payment"
><i
class=
"layui-icon layui-icon-search"
></i>
搜索
</button>
<a
class=
"layui-btn"
lay-submit
lay-filter=
"search-payment-all"
onclick=
"$('#payment-groupid').val('')"
><i
class=
"layui-icon layui-icon-light"
></i>
全部
</a>
</div>
</div>
</div>
</form>
</div>
<div
class=
"layui-card-body"
>
<table
lay-filter=
"payment"
id=
"payment"
></table>
</div>
</div>
</div>
<script
type=
"text/html"
id=
"paystatus-demo"
>
{{
#
if
(
d
.
pay_status
===
1
)
{
}}
<
a
class
=
"layui-btn layui-btn-xs layui-btn-normal"
>
{{
=
d
.
pay_status_text
}}
<
/a
>
{{
#
}
else
{
}}
{{
#
if
(
d
.
pay_status
===
2
)
{
}}
<
a
class
=
"layui-btn layui-btn-xs layui-btn-danger"
>
{{
=
d
.
pay_status_text
}}
<
/a
>
{{
#
}
else
{
}}
<
a
class
=
"layui-btn layui-btn-xs"
>
{{
=
d
.
pay_status_text
}}
<
/a
>
{{
#
}
}}
{{
#
}
}}
</script>
<!--JS部分-->
<script>
layui
.
use
([
'vinfo'
,
'buildItems'
,
'dropdown'
],
function
(){
var
map_root
=
layui
.
cache
.
maps
;
var
app_root
=
map_root
+
'order.payment/'
;
var
layer
=
layui
.
layer
,
table
=
layui
.
table
,
form
=
layui
.
form
,
admin
=
layui
.
admin
;
/*渲染数据*/
table
.
render
({
elem
:
'#payment'
,
page
:
true
,
limit
:{
$limit
},
height
:
'full-341'
,
url
:
app_root
+
"index?&do=json"
,
// css: 'td .layui-table-cell{height:80px;line-height:80px;padding:0 5px;}',
cols
:
[[
{
type
:
'checkbox'
,
fixed
:
'left'
},
{
field
:
'id'
,
width
:
50
,
unresize
:
true
,
align
:
'center'
,
title
:
'ID'
,
sort
:
!
0
},
{
field
:
'order_no'
,
align
:
'center'
,
width
:
200
,
title
:
'支付单号'
},
{
field
:
'username'
,
align
:
'center'
,
width
:
150
,
title
:
'用户名'
,
templet
:
'<div>{{= d.getuserdata.username}}</div>'
},
{
field
:
'mobile'
,
align
:
'center'
,
width
:
120
,
title
:
'用户手机'
,
templet
:
'<div>{{= d.getuserdata.mobile}}</div>'
},
{
field
:
'order_name'
,
align
:
'center'
,
title
:
'支付详细'
},
{
field
:
'pay_amount'
,
align
:
'center'
,
width
:
100
,
title
:
'支付金额'
},
{
field
:
"pay_status_text"
,
width
:
100
,
align
:
'center'
,
title
:
"支付状态"
,
templet
:
'#paystatus-demo'
},
{
field
:
'pay_method_text'
,
align
:
'center'
,
width
:
100
,
title
:
'支付类型'
},
{
field
:
'pay_time_text'
,
align
:
'center'
,
width
:
150
,
title
:
'支付时间'
},
{
field
:
'createtime'
,
width
:
150
,
align
:
'center'
,
title
:
'时间'
},
]],
done
:
function
(){
admin
.
vShow
(
$
(
'[lay-table-id="payment"]'
));
}
});
// 状态 - 开关操作
form
.
on
(
'switch(is_sell-chang)'
,
function
(
obj
){
var
json
=
JSON
.
parse
(
decodeURIComponent
(
$
(
this
).
data
(
'json'
)));
var
av
=
obj
.
elem
.
checked
?
1
:
0
;
admin
.
req
(
app_root
+
"editup"
,{
id
:
json
.
id
,
av
:
av
,
af
:
obj
.
elem
.
name
},
function
(
res
){
layer
.
tips
(
res
.
msg
,
obj
.
othis
,{
time
:
1000
});
if
(
res
.
code
===
0
)
obj
.
elem
.
checked
=
parseInt
(
obj
.
value
);
},
'post'
,{
headersToken
:
true
});
});
/*快编监听*/
table
.
on
(
'edit(payment)'
,
function
(
obj
){
admin
.
req
(
app_root
+
"editup"
,{
id
:
obj
.
data
.
id
,
av
:
obj
.
value
,
af
:
obj
.
field
},
function
(
res
){
layer
.
msg
(
res
.
msg
,{
shade
:[
0.4
,
'#000'
],
time
:
500
});
},
'post'
,{
headersToken
:
true
});
});
/**/
/*工具条监听*/
table
.
on
(
'tool(payment)'
,
function
(
obj
){
var
data
=
obj
.
data
;
var
id
=
data
.
id
;
if
(
obj
.
event
===
'detail'
){
paymentOpen
(
data
.
id
);
}
else
if
(
obj
.
event
===
'del'
){
del
(
id
);
}
else
if
(
obj
.
event
===
'payment-event-image'
){
var
src
=
$
(
this
).
attr
(
'src'
),
alt
=
$
(
this
).
attr
(
'alt'
);
layer
.
photos
({
photos
:{
data
:[{
alt
:
alt
,
src
:
src
}],
start
:
'0'
},
anim
:
5
,
shade
:[
0.4
,
'#000'
]});
}
else
if
(
obj
.
event
===
'more'
){
}
});
/**/
/*删除*/
function
del
(
ids
){
layer
.
confirm
(
'确定要删除所选记录吗?'
,
function
(){
admin
.
req
(
app_root
+
"del"
,{
id
:
ids
},
function
(
res
){
layer
.
msg
(
res
.
msg
,{
shade
:[
0.4
,
'#000'
],
time
:
1500
},
function
(){
if
(
res
.
code
==
1
)
table
.
reloadData
(
'payment'
);
});
},
'post'
,{
headersToken
:
true
});
});
}
/**/
/*顶部删除按钮*/
$
(
'#payment-del'
).
on
(
'click'
,
function
(){
var
checkRows
=
table
.
checkStatus
(
'payment'
).
data
;
if
(
checkRows
.
length
===
0
){
return
layer
.
msg
(
'请选择需删除的记录'
);}
var
ids
=
checkRows
.
map
(
function
(
d
){
return
d
.
id
;});
console
.
log
(
ids
);
del
(
ids
);
});
/**/
});
</script>
\ No newline at end of file
app/admin/view/project/project/index.html
View file @
f00549db
...
...
@@ -246,10 +246,9 @@
layer
.
open
({
type
:
2
,
area
:
[
'900px'
,
'
850px
'
],
area
:
[
'900px'
,
'
90%
'
],
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
content
:
app_root
+
'/detail?id='
+
id
+
'&type='
+
type
,
yes
:
function
(
index
,
layero
){
layer
.
close
(
index
);
...
...
app/admin/view/project/project_category/edit.html
View file @
f00549db
{extend name="base/header" /}
{block name="body"}
<div
style=
"margin: 0px
1
0px"
>
<div
style=
"margin: 0px
20px 0px
0px"
>
<form
class=
"layui-form "
style=
"margin-top: 20px;"
id=
"fjfrom"
>
<div
class=
"layui-form-item"
>
...
...
app/admin/view/project/project_category/index.html
View file @
f00549db
...
...
@@ -117,10 +117,9 @@
}
layer
.
open
({
type
:
2
,
area
:
[
'900px'
,
'90
0px
'
],
area
:
[
'900px'
,
'90
%
'
],
title
:
title
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
content
:
app_root
+
'edit?id='
+
id
,
yes
:
function
(
index
,
layero
){
var
data
=
window
[
"layui-layer-iframe"
+
index
].
callbackdata
();
...
...
app/admin/view/users/business/index.html
View file @
f00549db
...
...
@@ -175,10 +175,9 @@
function
businessOpen
(
id
=
''
,
type
=
''
){
layer
.
open
({
type
:
2
,
area
:
[
'900px'
,
'90
0px
'
],
area
:
[
'900px'
,
'90
%
'
],
title
:
'资料详情'
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
content
:
'/admin/users.business/detail?id='
+
id
+
'&type='
+
type
,
yes
:
function
(
index
,
layero
){
layer
.
close
(
index
);
...
...
app/admin/view/users/school/index.html
View file @
f00549db
...
...
@@ -179,10 +179,9 @@
function
schoolOpen
(
id
=
''
,
type
=
''
){
layer
.
open
({
type
:
2
,
area
:
[
'900px'
,
'90
0px
'
],
area
:
[
'900px'
,
'90
%
'
],
title
:
'资料详情'
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
content
:
'/admin/users.school/detail?id='
+
id
+
'&type='
+
type
,
yes
:
function
(
index
,
layero
){
layer
.
close
(
index
);
...
...
app/admin/view/users/user/index.html
View file @
f00549db
...
...
@@ -181,10 +181,9 @@
function
userOpen
(
id
=
''
,
type
=
''
){
layer
.
open
({
type
:
2
,
area
:
[
'900px'
,
'90
0px
'
],
area
:
[
'900px'
,
'90
%
'
],
title
:
'会员详情'
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
content
:
'/admin/users.user/detail?id='
+
id
+
'&type='
+
type
,
yes
:
function
(
index
,
layero
){
layer
.
close
(
index
);
...
...
@@ -198,7 +197,6 @@
area
:
[
'900px'
,
'600px'
],
title
:
'资金记录'
,
btn
:
[
'确定'
,
'关闭'
],
fixed
:
false
,
//不固定
content
:
'/admin/users.user/usermoneylog?user_id='
+
id
+
'&type='
+
type
,
yes
:
function
(
index
,
layero
){
layer
.
close
(
index
);
...
...
app/event/PhpOffice.php
View file @
f00549db
...
...
@@ -11,6 +11,9 @@
namespace
app\event
;
use
PhpOffice\PhpSpreadsheet\IOFactory
;
use
PhpOffice\PhpSpreadsheet\Spreadsheet
;
use
PhpOffice\PhpSpreadsheet\Writer\Xlsx
;
use
think\facade\Db
;
/**
* phpoffice excel导入导出类
...
...
@@ -99,9 +102,74 @@ class PhpOffice
unset
(
$spreadsheet
,
$sheet
,
$data
);
}
}
}
/*
* 导出excel
*/
public
static
function
exportexcel
(
$dataGenerator
,
$filenamedata
=
''
,
$chunkSize
=
1000
)
{
// 创建临时文件
$tempFile
=
tempnam
(
sys_get_temp_dir
(),
'phpxlsx'
);
// 初始设置
$spreadsheet
=
new
Spreadsheet
();
$sheet
=
$spreadsheet
->
getActiveSheet
();
$writer
=
new
Xlsx
(
$spreadsheet
);
// 写入表头
$headers
=
array_shift
(
$dataGenerator
);
$sheet
->
fromArray
(
$headers
,
null
,
'A1'
);
$row
=
2
;
// 数据从第2行开始
$chunkCount
=
0
;
foreach
(
$dataGenerator
as
$item
)
{
// 写入数据
$sheet
->
fromArray
(
$item
,
null
,
'A'
.
$row
++
);
// 每处理$chunkSize行保存一次
if
(
$row
%
$chunkSize
===
0
)
{
$writer
->
save
(
$tempFile
);
$spreadsheet
->
disconnectWorksheets
();
// 释放内存
// 重新加载
$spreadsheet
=
IOFactory
::
load
(
$tempFile
);
$sheet
=
$spreadsheet
->
getActiveSheet
();
$writer
=
new
Xlsx
(
$spreadsheet
);
// $chunkCount++;
// echo "已处理 " . ($chunkCount * $chunkSize) . " 行数据\n";
}
}
// 最终保存
$writer
->
save
(
$tempFile
);
// 设置路径
$fileurl
=
VT_STATIC
.
'downexcel/'
.
date
(
'Ymd'
)
.
'/'
;
$savePath
=
VT_PUBLIC
.
$fileurl
;
// 创建目录
if
(
!
is_dir
(
$savePath
))
{
mkdir
(
$savePath
,
0755
,
true
);
}
// 设置文件名
$filename
=
uniqid
()
.
'.xlsx'
;
$fullPath
=
$savePath
.
$filename
;
//完整目录地址
$fileurl
=
$fileurl
.
$filename
;
//存数据库的地址
// 移动到最终位置
if
(
!
rename
(
$tempFile
,
$fullPath
))
{
throw
new
\Exception
(
'无法移动文件到目标位置'
);
}
return
Db
::
name
(
'excel_down'
)
->
insertGetId
([
'fileurl'
=>
$fileurl
,
'filename'
=>
$filenamedata
.
'.xlsx'
,
'admin_id'
=>
session
(
VT_MANAGER
)[
'userid'
],
'createtime'
=>
time
()]);
// // 输出到浏览器
// header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
// header('Content-Disposition: attachment;filename="' . $filename . '"');
// header('Cache-Control: max-age=0');
// readfile($tempFile);
// unlink($tempFile);
}
}
class
ChunkReadFilter
implements
\PhpOffice\PhpSpreadsheet\Reader\IReadFilter
{
private
$startRow
=
0
;
...
...
@@ -118,4 +186,6 @@ class ChunkReadFilter implements \PhpOffice\PhpSpreadsheet\Reader\IReadFilter
// 只读取指定行范围内的单元格
return
(
$row
>=
$this
->
startRow
&&
$row
<=
$this
->
endRow
);
}
}
\ No newline at end of file
}
app/model/Payment.php
View file @
f00549db
<?php
/**
* ===========================================================================
* Veitool 快捷开发框架系统
* Author: Niaho 26843818@qq.com
* Copyright (c)2019-2025 www.veitool.com All rights reserved.
* Licensed: 这不是一个自由软件,不允许对程序代码以任何形式任何目的的再发行
* ---------------------------------------------------------------------------
*/
namespace
app\model
;
use
app\api\service\UtilService
;
use
\app\model\CertCategory
;
use
app\model\project\User
;
use
app\model\system\SystemUploadFile
;
use
think\facade\Db
;
use
think\Model
;
/**
* 课程模型
*/
class
Payment
extends
Model
{
protected
$autoWriteTimestamp
=
true
;
protected
$createTime
=
'createtime'
;
//用户信息
public
function
getuserdata
()
{
return
$this
->
belongsTo
(
User
::
class
,
'user_id'
)
->
field
(
'username,mobile,id'
);
}
public
function
getPayMethodTextAttr
(
$value
,
$data
)
{
switch
(
$data
[
'pay_method'
])
{
case
2
:
$text
=
'微信'
;
break
;
default
:
$text
=
'支付宝'
;
break
;
}
return
$text
;
}
public
function
getPayStatusTextAttr
(
$value
,
$data
)
{
switch
(
$data
[
'pay_status'
])
{
case
1
:
$text
=
'支付成功'
;
break
;
case
2
:
$text
=
'支付失败'
;
break
;
default
:
$text
=
'未支付'
;
break
;
}
return
$text
;
}
public
function
getPayTimeTextAttr
(
$value
,
$data
)
{
return
date
(
'Y-m-d H:i:s'
,
$data
[
'pay_time'
]);
}
public
function
getOrderNameAttr
(
$value
,
$data
)
{
$title
=
''
;
if
(
$data
[
'order_type'
]
==
1
)
{
//课程
$title
=
ShCourse
::
where
(
'id'
,
$data
[
'order_id'
])
->
value
(
'title'
);
$title
=
'购买课程:'
.
$title
;
}
elseif
(
$data
[
'order_type'
]
==
2
)
{
//证书
$certinfo
=
CertOrder
::
where
(
'id'
,
$data
[
'order_id'
])
->
with
(
'certdata'
)
->
find
();
$title
=
'购买证书:'
.
$certinfo
[
'certdata'
][
'title'
];
}
return
$title
;
}
}
\ No newline at end of file
public/static/admin/admin.css
View file @
f00549db
This source diff could not be displayed because it is too large. You can
view the blob
instead.
public/static/layui/css/layui.css
View file @
f00549db
This diff is collapsed.
Click to expand it.
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