first commit
This commit is contained in:
BIN
views/.DS_Store
vendored
Normal file
BIN
views/.DS_Store
vendored
Normal file
Binary file not shown.
221
views/layouts/main.php
Normal file
221
views/layouts/main.php
Normal file
@ -0,0 +1,221 @@
|
||||
<?php
|
||||
|
||||
/** @var yii\web\View $this */
|
||||
/** @var string $content */
|
||||
|
||||
use app\assets\AppAsset;
|
||||
use app\widgets\Alert;
|
||||
use yii\bootstrap5\Breadcrumbs;
|
||||
use yii\bootstrap5\Html;
|
||||
use yii\bootstrap5\Nav;
|
||||
use yii\bootstrap5\NavBar;
|
||||
|
||||
AppAsset::register($this);
|
||||
|
||||
$this->registerCsrfMetaTags();
|
||||
$this->registerMetaTag(['charset' => Yii::$app->charset], 'charset');
|
||||
$this->registerMetaTag(['name' => 'viewport', 'content' => 'width=device-width, initial-scale=1, shrink-to-fit=no']);
|
||||
$this->registerMetaTag(['name' => 'description', 'content' => $this->params['meta_description'] ?? '']);
|
||||
$this->registerMetaTag(['name' => 'keywords', 'content' => $this->params['meta_keywords'] ?? '']);
|
||||
$this->registerLinkTag(['rel' => 'icon', 'type' => 'image/x-icon', 'href' => Yii::getAlias('@web/images/logo.png')]);
|
||||
?>
|
||||
<?php $this->beginPage() ?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?= Yii::$app->language ?>" class="h-100">
|
||||
<head>
|
||||
<script>if (window !== top) top.location.replace(location.href);</script>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<title><?= Html::encode($this->title) ?></title>
|
||||
<!-- <link rel="stylesheet" href="../../../assets/libs/layui/css/layui.css"/>-->
|
||||
<!-- <link rel="stylesheet" href="../../../assets/module/admin.css?v=317">-->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<?php $this->head() ?>
|
||||
</head>
|
||||
<style>
|
||||
body {
|
||||
background-image: url("/images/bg-login.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
body:before {
|
||||
content: "";
|
||||
background-color: rgba(0, 0, 0, .2);
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.login-wrapper {
|
||||
max-width: 420px;
|
||||
padding: 20px;
|
||||
margin: 0 auto;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.login-wrapper > .layui-form {
|
||||
padding: 25px 30px;
|
||||
background-color: #fff;
|
||||
box-shadow: 0 3px 6px -1px rgba(0, 0, 0, 0.19);
|
||||
box-sizing: border-box;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.login-wrapper > .layui-form > h2 {
|
||||
color: #333;
|
||||
font-size: 18px;
|
||||
text-align: center;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.login-wrapper > .layui-form > .layui-form-item {
|
||||
margin-bottom: 25px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.login-wrapper > .layui-form > .layui-form-item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.login-wrapper > .layui-form > .layui-form-item > .layui-input {
|
||||
height: 46px;
|
||||
line-height: 46px;
|
||||
border-radius: 2px !important;
|
||||
}
|
||||
|
||||
.login-wrapper .layui-input-icon-group > .layui-input {
|
||||
padding-left: 46px;
|
||||
}
|
||||
|
||||
.login-wrapper .layui-input-icon-group > .layui-icon {
|
||||
width: 46px;
|
||||
height: 46px;
|
||||
line-height: 46px;
|
||||
font-size: 20px;
|
||||
color: #909399;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.login-wrapper > .layui-form > .layui-form-item.login-captcha-group {
|
||||
padding-right: 135px;
|
||||
}
|
||||
|
||||
.login-wrapper > .layui-form > .layui-form-item.login-captcha-group > .login-captcha {
|
||||
height: 46px;
|
||||
width: 120px;
|
||||
cursor: pointer;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #e6e6e6;
|
||||
border-radius: 2px !important;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.login-wrapper > .layui-form > .layui-form-item > .layui-form-checkbox {
|
||||
margin: 0 !important;
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
.login-wrapper > .layui-form > .layui-form-item > .layui-form-checkbox > .layui-icon {
|
||||
width: 15px !important;
|
||||
height: 15px !important;
|
||||
}
|
||||
|
||||
.login-wrapper > .layui-form .layui-btn-fluid {
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
font-size: 16px;
|
||||
border-radius: 2px !important;
|
||||
}
|
||||
|
||||
.login-wrapper > .layui-form > .layui-form-item.login-oauth-group > a > .layui-icon {
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
.login-copyright {
|
||||
color: #eee;
|
||||
padding-bottom: 20px;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
@media screen and (min-height: 550px) {
|
||||
.login-wrapper {
|
||||
margin: -250px auto 0;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.login-copyright {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.layui-btn {
|
||||
background-color: #5FB878;
|
||||
border-color: #5FB878;
|
||||
}
|
||||
|
||||
.layui-link {
|
||||
color: #5FB878 !important;
|
||||
}
|
||||
|
||||
.p{
|
||||
text-align: center;
|
||||
margin-bottom: 25px;
|
||||
font-weight: 300;
|
||||
color: #999;
|
||||
font-size: 17px ;
|
||||
}
|
||||
.h2{
|
||||
margin-bottom: 10px !important;
|
||||
font-weight: 500;
|
||||
font-size: 30px !important;
|
||||
color: #000;
|
||||
}
|
||||
</style>
|
||||
<body class="d-flex flex-column h-100 theme-colorful">
|
||||
<?php $this->beginBody() ?>
|
||||
|
||||
<?= $content ?>
|
||||
|
||||
<footer id="footer" class="mt-auto py-3 bg-light">
|
||||
<div class="container">
|
||||
<div class="row text-muted">
|
||||
<!-- <div class="col-md-6 text-center text-md-start">© My Company --><?//= date('Y') ?><!--</div>-->
|
||||
<div class="col-md-6 text-center text-md-end"><?= "copyright © " . date('Y') . " rights reserved." ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<?php $this->endBody() ?>
|
||||
<?php $this->registerJsFile('@web/libs/layui/layui.js') ?>
|
||||
<?php $this->registerJsFile('@web/js/common.js') ?>
|
||||
<!-- js部分 -->
|
||||
<!--<script type="text/javascript" src="../../../assets/libs/layui/layui.js"></script>-->
|
||||
<!--<script type="text/javascript" src="../../../assets/js/common.js?v=317"></script>-->
|
||||
</body>
|
||||
</html>
|
||||
<?php $this->endPage() ?>
|
||||
|
||||
83
views/layouts/main_bak.php
Normal file
83
views/layouts/main_bak.php
Normal file
@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
/** @var yii\web\View $this */
|
||||
/** @var string $content */
|
||||
|
||||
use app\assets\AppAsset;
|
||||
use app\widgets\Alert;
|
||||
use yii\bootstrap5\Breadcrumbs;
|
||||
use yii\bootstrap5\Html;
|
||||
use yii\bootstrap5\Nav;
|
||||
use yii\bootstrap5\NavBar;
|
||||
|
||||
AppAsset::register($this);
|
||||
|
||||
$this->registerCsrfMetaTags();
|
||||
$this->registerMetaTag(['charset' => Yii::$app->charset], 'charset');
|
||||
$this->registerMetaTag(['name' => 'viewport', 'content' => 'width=device-width, initial-scale=1, shrink-to-fit=no']);
|
||||
$this->registerMetaTag(['name' => 'description', 'content' => $this->params['meta_description'] ?? '']);
|
||||
$this->registerMetaTag(['name' => 'keywords', 'content' => $this->params['meta_keywords'] ?? '']);
|
||||
$this->registerLinkTag(['rel' => 'icon', 'type' => 'image/x-icon', 'href' => Yii::getAlias('@web/favicon.ico')]);
|
||||
?>
|
||||
<?php $this->beginPage() ?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?= Yii::$app->language ?>" class="h-100">
|
||||
<head>
|
||||
<title><?= Html::encode($this->title) ?></title>
|
||||
<?php $this->head() ?>
|
||||
</head>
|
||||
<body class="d-flex flex-column h-100">
|
||||
<?php $this->beginBody() ?>
|
||||
|
||||
<header id="header">
|
||||
<?php
|
||||
NavBar::begin([
|
||||
'brandLabel' => Yii::$app->name,
|
||||
'brandUrl' => Yii::$app->homeUrl,
|
||||
'options' => ['class' => 'navbar-expand-md navbar-dark bg-dark fixed-top']
|
||||
]);
|
||||
echo Nav::widget([
|
||||
'options' => ['class' => 'navbar-nav'],
|
||||
'items' => [
|
||||
['label' => 'Home', 'url' => ['/site/index']],
|
||||
['label' => 'About', 'url' => ['/site/about']],
|
||||
['label' => 'Contact', 'url' => ['/site/contact']],
|
||||
Yii::$app->user->isGuest
|
||||
? ['label' => 'Login', 'url' => ['/site/login']]
|
||||
: '<li class="nav-item">'
|
||||
. Html::beginForm(['/site/logout'])
|
||||
. Html::submitButton(
|
||||
'Logout (' . Yii::$app->user->identity->username . ')',
|
||||
['class' => 'nav-link btn btn-link logout']
|
||||
)
|
||||
. Html::endForm()
|
||||
. '</li>'
|
||||
]
|
||||
]);
|
||||
NavBar::end();
|
||||
?>
|
||||
</header>
|
||||
|
||||
<main id="main" class="flex-shrink-0" role="main">
|
||||
<div class="container">
|
||||
<?php if (!empty($this->params['breadcrumbs'])): ?>
|
||||
<?= Breadcrumbs::widget(['links' => $this->params['breadcrumbs']]) ?>
|
||||
<?php endif ?>
|
||||
<?= Alert::widget() ?>
|
||||
<?= $content ?>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer id="footer" class="mt-auto py-3 bg-light">
|
||||
<div class="container">
|
||||
<div class="row text-muted">
|
||||
<div class="col-md-6 text-center text-md-start">© My Company <?= date('Y') ?></div>
|
||||
<div class="col-md-6 text-center text-md-end"><?= Yii::powered() ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<?php $this->endBody() ?>
|
||||
</body>
|
||||
</html>
|
||||
<?php $this->endPage() ?>
|
||||
85
views/layouts/main_index.php
Normal file
85
views/layouts/main_index.php
Normal file
@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
/** @var yii\web\View $this */
|
||||
/** @var string $content */
|
||||
|
||||
use app\assets\AppAsset;
|
||||
use app\widgets\Alert;
|
||||
use yii\bootstrap5\Breadcrumbs;
|
||||
use yii\bootstrap5\Html;
|
||||
use yii\bootstrap5\Nav;
|
||||
use yii\bootstrap5\NavBar;
|
||||
|
||||
AppAsset::register($this);
|
||||
|
||||
$this->registerCsrfMetaTags();
|
||||
$this->registerMetaTag(['charset' => Yii::$app->charset], 'charset');
|
||||
$this->registerMetaTag(['name' => 'viewport', 'content' => 'width=device-width, initial-scale=1, shrink-to-fit=no']);
|
||||
$this->registerMetaTag(['name' => 'description', 'content' => $this->params['meta_description'] ?? '']);
|
||||
$this->registerMetaTag(['name' => 'keywords', 'content' => $this->params['meta_keywords'] ?? '']);
|
||||
$this->registerLinkTag(['rel' => 'icon', 'type' => 'image/x-icon', 'href' => Yii::getAlias('@web/images/logo.png')]);
|
||||
$this->registerJsFile('@web/js/layui.js', ['position' => \yii\web\View::POS_HEAD]);
|
||||
$this->registerJsFile('@web/libs/layui/lay/modules/jquery.js', ['position' => \yii\web\View::POS_HEAD]);
|
||||
$this->registerJsFile('@web/js/common.js', ['position' => \yii\web\View::POS_HEAD]);
|
||||
?>
|
||||
<?php $this->beginPage() ?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?= Yii::$app->language ?>" class="h-100">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<title><?= Html::encode($this->title) ?></title>
|
||||
<!-- <script src="//unpkg.com/layui@2.13.3/dist/layui.js"></script>-->
|
||||
<!-- <link rel="stylesheet" href="../../../assets/libs/layui/css/layui.css"/>-->
|
||||
<!-- <link rel="stylesheet" href="../../../assets/module/admin.css?v=317">-->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<?php $this->head() ?>
|
||||
</head>
|
||||
|
||||
<body class="layui-layout-body">
|
||||
<?php $this->beginBody() ?>
|
||||
|
||||
<?= $content ?>
|
||||
|
||||
<?php $this->endBody() ?>
|
||||
<!-- js部分 -->
|
||||
<!--<script type="text/javascript" src="../../../assets/libs/layui/layui.js"></script>-->
|
||||
<!--<script type="text/javascript" src="../../../assets/js/common.js?v=317"></script>-->
|
||||
<script>
|
||||
layui.use(['layer', 'form','admin'], function () {
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var form = layui.form;
|
||||
var admin = layui.admin;
|
||||
/* 表单提交 */
|
||||
form.on('submit(loginSubmit)', function (obj) {
|
||||
admin.showLoading('body',1, '.7');
|
||||
$.post('',obj.field ,function (res) {
|
||||
if(res.code == 666){
|
||||
layer.msg(res.msg, {icon: 1, time: 1500}, function () {
|
||||
location.replace('/')
|
||||
});
|
||||
}else {
|
||||
layer.msg(res.msg, {icon: 2, time: 1500});
|
||||
$('img.login-captcha').prop('src',$('img.login-captcha').attr('src')+ '?t=' + (new Date).getTime());
|
||||
}
|
||||
admin.removeLoading( 'body',true, true);
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
/* 图形验证码 */
|
||||
$('img.login-captcha').click(function () {
|
||||
this.src = this.src + '?t=' + (new Date).getTime();
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
<?php $this->endPage() ?>
|
||||
|
||||
18
views/site/about.php
Normal file
18
views/site/about.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
/** @var yii\web\View $this */
|
||||
|
||||
use yii\helpers\Html;
|
||||
|
||||
$this->title = 'About';
|
||||
$this->params['breadcrumbs'][] = $this->title;
|
||||
?>
|
||||
<div class="site-about">
|
||||
<h1><?= Html::encode($this->title) ?></h1>
|
||||
|
||||
<p>
|
||||
This is the About page. You may modify the following file to customize its content:
|
||||
</p>
|
||||
|
||||
<code><?= __FILE__ ?></code>
|
||||
</div>
|
||||
2
views/site/console.php
Normal file
2
views/site/console.php
Normal file
@ -0,0 +1,2 @@
|
||||
<?php
|
||||
echo 'Hello ^_^';
|
||||
68
views/site/contact.php
Normal file
68
views/site/contact.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
/** @var yii\web\View $this */
|
||||
/** @var yii\bootstrap5\ActiveForm $form */
|
||||
/** @var app\models\ContactForm $model */
|
||||
|
||||
use yii\bootstrap5\ActiveForm;
|
||||
use yii\bootstrap5\Html;
|
||||
use yii\captcha\Captcha;
|
||||
|
||||
$this->title = 'Contact';
|
||||
$this->params['breadcrumbs'][] = $this->title;
|
||||
?>
|
||||
<div class="site-contact">
|
||||
<h1><?= Html::encode($this->title) ?></h1>
|
||||
|
||||
<?php if (Yii::$app->session->hasFlash('contactFormSubmitted')): ?>
|
||||
|
||||
<div class="alert alert-success">
|
||||
Thank you for contacting us. We will respond to you as soon as possible.
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Note that if you turn on the Yii debugger, you should be able
|
||||
to view the mail message on the mail panel of the debugger.
|
||||
<?php if (Yii::$app->mailer->useFileTransport): ?>
|
||||
Because the application is in development mode, the email is not sent but saved as
|
||||
a file under <code><?= Yii::getAlias(Yii::$app->mailer->fileTransportPath) ?></code>.
|
||||
Please configure the <code>useFileTransport</code> property of the <code>mail</code>
|
||||
application component to be false to enable email sending.
|
||||
<?php endif; ?>
|
||||
</p>
|
||||
|
||||
<?php else: ?>
|
||||
|
||||
<p>
|
||||
If you have business inquiries or other questions, please fill out the following form to contact us.
|
||||
Thank you.
|
||||
</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-5">
|
||||
|
||||
<?php $form = ActiveForm::begin(['id' => 'contact-form']); ?>
|
||||
|
||||
<?= $form->field($model, 'name')->textInput(['autofocus' => true]) ?>
|
||||
|
||||
<?= $form->field($model, 'email') ?>
|
||||
|
||||
<?= $form->field($model, 'subject') ?>
|
||||
|
||||
<?= $form->field($model, 'body')->textarea(['rows' => 6]) ?>
|
||||
|
||||
<?= $form->field($model, 'verifyCode')->widget(Captcha::class, [
|
||||
'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
|
||||
]) ?>
|
||||
|
||||
<div class="form-group">
|
||||
<?= Html::submitButton('Submit', ['class' => 'btn btn-primary', 'name' => 'contact-button']) ?>
|
||||
</div>
|
||||
|
||||
<?php ActiveForm::end(); ?>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
27
views/site/error.php
Normal file
27
views/site/error.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
/** @var yii\web\View $this */
|
||||
/** @var string $name */
|
||||
/** @var string $message */
|
||||
/** @var Exception$exception */
|
||||
|
||||
use yii\helpers\Html;
|
||||
|
||||
$this->title = $name;
|
||||
?>
|
||||
<div class="site-error">
|
||||
|
||||
<h1><?= Html::encode($this->title) ?></h1>
|
||||
|
||||
<div class="alert alert-danger">
|
||||
<?= nl2br(Html::encode($message)) ?>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
The above error occurred while the Web server was processing your request.
|
||||
</p>
|
||||
<p>
|
||||
Please contact us if you think this is a server error. Thank you.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
71
views/site/genjin.php
Normal file
71
views/site/genjin.php
Normal file
@ -0,0 +1,71 @@
|
||||
<form class="layui-form admin-form" lay-filter="testForm">
|
||||
<input type="hidden" name="clue_id" value="<?= $clueId ?>">
|
||||
<?php if (Yii::$app->user->identity->role === 'ADMIN'): ?>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">转化状态</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="convert_status" lay-filter="aihao">
|
||||
<option value="1" <?= $covert_status == 1 ? 'selected' : '' ?>>合法转化</option>
|
||||
<option value="2" <?= $covert_status == 2 ? 'selected' : '' ?>>待确认</option>
|
||||
<option value="3" <?= $covert_status == 3 ? 'selected' : '' ?>>营销预览</option>
|
||||
<option value="4" <?= $covert_status == 4 ? 'selected' : '' ?>>其他转化</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">姓名</label>
|
||||
<div class="layui-input-inline layui-input-wrap">
|
||||
<input type="text" value="<?= $name ?>" name="name" lay-verify="required" autocomplete="off" lay-affix="clear" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label ">备注</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="note" placeholder="备注" class="layui-textarea" lay-verType="tips"><?= htmlspecialchars($note ?? '', ENT_QUOTES) ?></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item text-right">
|
||||
<button type="submit"
|
||||
class="layui-btn"
|
||||
lay-submit
|
||||
lay-filter="save">
|
||||
提交
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
<script>
|
||||
layui.use(['form'], function () {
|
||||
var form = layui.form;
|
||||
|
||||
console.log('form init ok');
|
||||
|
||||
form.on('submit(save)', function (data) {
|
||||
console.log(data)
|
||||
$.ajax({
|
||||
url: '/api/update-clue',
|
||||
method: 'POST',
|
||||
data: {
|
||||
clue_id: data.field.clue_id,
|
||||
note: data.field.note,
|
||||
name: data.field.name,
|
||||
<?php if (Yii::$app->user->identity->role === 'ADMIN'): ?>
|
||||
<?= 'convert_status: data.field.convert_status' ?>
|
||||
<?php endif; ?>
|
||||
}
|
||||
})
|
||||
|
||||
// ✅ 刷新父页面表格
|
||||
parent.layui.table.reload('clueTable');
|
||||
|
||||
// ✅ 关闭当前弹窗
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(index);
|
||||
|
||||
// 修复焦点 & 滚动锁
|
||||
parent.document.body.style.overflow = 'auto';
|
||||
parent.window.focus();
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
100
views/site/index.php
Normal file
100
views/site/index.php
Normal file
@ -0,0 +1,100 @@
|
||||
<div class="layui-layout layui-layout-admin">
|
||||
<!-- 头部 -->
|
||||
<div class="layui-header">
|
||||
<div class="layui-logo">
|
||||
<img src="/images/logo.png"/>
|
||||
<cite>线索管理</cite>
|
||||
</div>
|
||||
<ul class="layui-nav layui-layout-left">
|
||||
<li class="layui-nav-item" lay-unselect>
|
||||
<a ew-event="flexible" title="侧边伸缩"><i class="layui-icon layui-icon-shrink-right"></i></a>
|
||||
</li>
|
||||
<li class="layui-nav-item" lay-unselect>
|
||||
<a ew-event="refresh" title="刷新"><i class="layui-icon layui-icon-refresh-3"></i></a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="layui-nav layui-layout-right">
|
||||
<li class="layui-nav-item layui-hide-xs" lay-unselect>
|
||||
<a ew-event="fullScreen" title="全屏"><i class="layui-icon layui-icon-screen-full"></i></a>
|
||||
</li>
|
||||
<li class="layui-nav-item" lay-unselect>
|
||||
<a>
|
||||
<img src="/images/head.png" class="layui-nav-img">
|
||||
<cite><?= Yii::$app->user->identity->username ?></cite>
|
||||
</a>
|
||||
<dl class="layui-nav-child">
|
||||
<!-- <dd lay-unselect><a id="index_psw">修改密码</a></dd>-->
|
||||
<!-- <hr>-->
|
||||
<dd lay-unselect><a id="logout">退出</a></dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- 侧边栏 -->
|
||||
<div class="layui-side">
|
||||
<div class="layui-side-scroll">
|
||||
<ul class="layui-nav layui-nav-tree arrow2" lay-filter="admin-side-nav" lay-shrink="all">
|
||||
<?php if (Yii::$app->user->identity->role === 'USER'): ?>
|
||||
<li class="layui-nav-item" >
|
||||
<a lay-href="private">
|
||||
<i class="layui-icon layui-icon-auz"></i> 
|
||||
<cite>我的线索</cite>
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
<?php if (Yii::$app->user->identity->role === 'ADMIN'): ?>
|
||||
<li class="layui-nav-item" >
|
||||
<a lay-href="xiansuo">
|
||||
<i class="layui-icon layui-icon-auz"></i> 
|
||||
<cite>线索管理</cite>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-nav-item" >
|
||||
<a lay-href="users">
|
||||
<i class="layui-icon layui-icon-auz"></i> 
|
||||
<cite>后台账户管理</cite>
|
||||
</a>
|
||||
</li>
|
||||
<li class="layui-nav-item" >
|
||||
<a lay-href="oauthmanage">
|
||||
<i class="layui-icon layui-icon-auz"></i> 
|
||||
<cite>授权账户管理</cite>
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 主体部分 -->
|
||||
<div class="layui-body" style="bottom:0;"></div>
|
||||
</div>
|
||||
|
||||
<!-- 加载动画 -->
|
||||
<div class="page-loading">
|
||||
<div class="ball-loader">
|
||||
<span></span><span></span><span></span><span></span>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
layui.use(['layer','index','admin'], function () {
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var index = layui.index;
|
||||
var admin = layui.admin;
|
||||
var form = layui.form;
|
||||
var notice = layui.notice;
|
||||
|
||||
|
||||
// 默认加载主页
|
||||
index.loadHome({
|
||||
menuPath: 'console',
|
||||
menuName: '<i class="layui-icon layui-icon-home"></i>',
|
||||
// loadSetting: false,
|
||||
});
|
||||
|
||||
$('#logout').click(function () {
|
||||
location.replace("logout")
|
||||
})
|
||||
});
|
||||
</script>
|
||||
53
views/site/index_bak.php
Normal file
53
views/site/index_bak.php
Normal file
@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
/** @var yii\web\View $this */
|
||||
|
||||
$this->title = 'My Yii Application';
|
||||
?>
|
||||
<div class="site-index">
|
||||
|
||||
<div class="jumbotron text-center bg-transparent mt-5 mb-5">
|
||||
<h1 class="display-4">Congratulations!</h1>
|
||||
|
||||
<p class="lead">You have successfully created your Yii-powered application.</p>
|
||||
|
||||
<p><a class="btn btn-lg btn-success" href="https://www.yiiframework.com">Get started with Yii</a></p>
|
||||
</div>
|
||||
|
||||
<div class="body-content">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-4 mb-3">
|
||||
<h2>Heading</h2>
|
||||
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
|
||||
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
|
||||
ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
|
||||
fugiat nulla pariatur.</p>
|
||||
|
||||
<p><a class="btn btn-outline-secondary" href="https://www.yiiframework.com/doc/">Yii Documentation »</a></p>
|
||||
</div>
|
||||
<div class="col-lg-4 mb-3">
|
||||
<h2>Heading</h2>
|
||||
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
|
||||
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
|
||||
ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
|
||||
fugiat nulla pariatur.</p>
|
||||
|
||||
<p><a class="btn btn-outline-secondary" href="https://www.yiiframework.com/forum/">Yii Forum »</a></p>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<h2>Heading</h2>
|
||||
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
|
||||
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
|
||||
ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
|
||||
fugiat nulla pariatur.</p>
|
||||
|
||||
<p><a class="btn btn-outline-secondary" href="https://www.yiiframework.com/extensions/">Yii Extensions »</a></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
94
views/site/login.php
Normal file
94
views/site/login.php
Normal file
@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
/** @var yii\web\View $this */
|
||||
/** @var yii\bootstrap5\ActiveForm $form */
|
||||
|
||||
/** @var app\models\LoginForm $model */
|
||||
|
||||
use yii\bootstrap5\ActiveForm;
|
||||
use yii\bootstrap5\Html;
|
||||
|
||||
$this->title = 'Login';
|
||||
$this->params['breadcrumbs'][] = $this->title;
|
||||
?>
|
||||
<div class="login-wrapper">
|
||||
<?php $form = ActiveForm::begin([
|
||||
'id' => 'login-form',
|
||||
'options' => [
|
||||
'class' => 'layui-form',
|
||||
],
|
||||
'fieldConfig' => [
|
||||
'template' => "{label}\n{input}\n{error}",
|
||||
'labelOptions' => ['class' => 'col-lg-1 col-form-label mr-lg-3'],
|
||||
'inputOptions' => ['class' => 'col-lg-3 form-control'],
|
||||
'errorOptions' => ['class' => 'col-lg-7 invalid-feedback'],
|
||||
],
|
||||
]); ?>
|
||||
<h2 class="h2">线索管理</h2>
|
||||
<?= $form->field($model, 'username', [
|
||||
'options' => ['class' => 'layui-form-item layui-input-icon-group'],
|
||||
'template' => '
|
||||
<i class="layui-icon layui-icon-username"></i>
|
||||
{input}
|
||||
{error}
|
||||
',
|
||||
])->textInput([
|
||||
'autofocus' => true,
|
||||
'class' => 'layui-input',
|
||||
'placeholder' => '用户名',
|
||||
])->label(false) ?>
|
||||
|
||||
<?= $form->field($model, 'password', [
|
||||
'options' => ['class' => 'layui-form-item layui-input-icon-group'],
|
||||
'template' => '
|
||||
<i class="layui-icon layui-icon-username"></i>
|
||||
{input}
|
||||
{error}
|
||||
',
|
||||
])->passwordInput([
|
||||
'autofocus' => true,
|
||||
'class' => 'layui-input',
|
||||
'placeholder' => '密码',
|
||||
])->label(false) ?>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<?= Html::submitButton('登陆', ['id' => 'loginBtn','class' => 'layui-btn layui-btn-fluid', 'name' => 'login-button']) ?>
|
||||
</div>
|
||||
<?php ActiveForm::end(); ?>
|
||||
</div>
|
||||
<script>
|
||||
let submitting = false;
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
const form = document.getElementById('login-form');
|
||||
const btn = document.getElementById('loginBtn');
|
||||
const inputs = form.querySelectorAll('input[name="LoginForm[username]"], input[name="LoginForm[password]"]');
|
||||
|
||||
if (!form || !btn) return;
|
||||
|
||||
// 提交时锁定
|
||||
form.addEventListener('submit', function (e) {
|
||||
if (submitting) {
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
submitting = true;
|
||||
|
||||
btn.disabled = true;
|
||||
btn.classList.add('layui-btn-disabled');
|
||||
btn.innerText = '登录中...';
|
||||
});
|
||||
|
||||
// 输入变化时解锁
|
||||
inputs.forEach(function (input) {
|
||||
input.addEventListener('input', function () {
|
||||
submitting = false;
|
||||
btn.disabled = false;
|
||||
btn.classList.remove('layui-btn-disabled');
|
||||
btn.innerText = '登录';
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
55
views/site/login_bak.php
Normal file
55
views/site/login_bak.php
Normal file
@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
/** @var yii\web\View $this */
|
||||
/** @var yii\bootstrap5\ActiveForm $form */
|
||||
|
||||
/** @var app\models\LoginForm $model */
|
||||
|
||||
use yii\bootstrap5\ActiveForm;
|
||||
use yii\bootstrap5\Html;
|
||||
|
||||
$this->title = 'Login';
|
||||
$this->params['breadcrumbs'][] = $this->title;
|
||||
?>
|
||||
<div class="site-login">
|
||||
<h1><?= Html::encode($this->title) ?></h1>
|
||||
|
||||
<p>Please fill out the following fields to login:</p>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-5">
|
||||
|
||||
<?php $form = ActiveForm::begin([
|
||||
'id' => 'login-form',
|
||||
'fieldConfig' => [
|
||||
'template' => "{label}\n{input}\n{error}",
|
||||
'labelOptions' => ['class' => 'col-lg-1 col-form-label mr-lg-3'],
|
||||
'inputOptions' => ['class' => 'col-lg-3 form-control'],
|
||||
'errorOptions' => ['class' => 'col-lg-7 invalid-feedback'],
|
||||
],
|
||||
]); ?>
|
||||
|
||||
<?= $form->field($model, 'username')->textInput(['autofocus' => true]) ?>
|
||||
|
||||
<?= $form->field($model, 'password')->passwordInput() ?>
|
||||
|
||||
<?= $form->field($model, 'rememberMe')->checkbox([
|
||||
'template' => "<div class=\"custom-control custom-checkbox\">{input} {label}</div>\n<div class=\"col-lg-8\">{error}</div>",
|
||||
]) ?>
|
||||
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php ActiveForm::end(); ?>
|
||||
|
||||
<div style="color:#999;">
|
||||
You may login with <strong>admin/admin</strong> or <strong>demo/demo</strong>.<br>
|
||||
To modify the username/password, please check out the code <code>app\models\User::$users</code>.
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
61
views/site/oauth-manage-config.php
Normal file
61
views/site/oauth-manage-config.php
Normal file
@ -0,0 +1,61 @@
|
||||
|
||||
<form class="layui-form admin-form" lay-filter="testForm">
|
||||
<?php foreach ($arr as $accountName => $item): ?>
|
||||
<h3 class="ws-bold"><?= $accountName ?></h3>
|
||||
<div class="layui-form">
|
||||
<div class="layui-form-item">
|
||||
<?php foreach ($item['items'] as $childItem): ?>
|
||||
<input type="checkbox"
|
||||
name="advertiser_ids[]"
|
||||
value="<?= $childItem['id'] . '|' . $item['id'] ?>"
|
||||
title="<?= $childItem['advertiser_name'] ?>"
|
||||
<?= $childItem['is_active'] == 1 ? 'checked' : '' ?>
|
||||
lay-filter="demo-checkbox-filter">
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<div class="layui-form-item text-right">
|
||||
<button type="submit"
|
||||
class="layui-btn"
|
||||
lay-submit
|
||||
lay-filter="save">
|
||||
提交
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
<script>
|
||||
layui.use(['form', 'layer'], function () {
|
||||
var form = layui.form;
|
||||
var layer = layui.layer;
|
||||
console.log('form init ok');
|
||||
|
||||
form.on('submit(save)', function (data) {
|
||||
var loadIndex = layer.load();
|
||||
|
||||
// console.log(data.field);
|
||||
$.ajax({
|
||||
url: '/api/oauth-account-local-update',
|
||||
method: 'POST',
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
if (res.code != 0) {
|
||||
layer.msg(res.message)
|
||||
return
|
||||
}
|
||||
layer.close(loadIndex)
|
||||
// ✅ 刷新父页面表格
|
||||
parent.layui.table.reload('clueTable');
|
||||
|
||||
// ✅ 关闭当前弹窗
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(index);
|
||||
}
|
||||
})
|
||||
layer.closeAll()
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
192
views/site/oauth-manage.php
Normal file
192
views/site/oauth-manage.php
Normal file
@ -0,0 +1,192 @@
|
||||
<style>
|
||||
.layui-table-cell{
|
||||
height:auto !important;
|
||||
}
|
||||
</style>
|
||||
<!-- 页面加载loading -->
|
||||
<div class="page-loading">
|
||||
<div class="ball-loader">
|
||||
<span></span><span></span><span></span><span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 正文开始 -->
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
|
||||
<table id="tableUser" lay-filter="tableUser"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="toolDemo">
|
||||
<div class="layui-clear-space">
|
||||
<a class="layui-btn layui-btn-xs" lay-event="init">同步授权数据</a>
|
||||
<a class="layui-btn layui-btn-xs" lay-event="edit">配置</a>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
layui.use(['layer', 'form', 'table', 'util', 'admin', 'formX'], function () {
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var form = layui.form;
|
||||
var table = layui.table;
|
||||
var util = layui.util;
|
||||
var admin = layui.admin;
|
||||
var formX = layui.formX;
|
||||
var notice = layui.notice;
|
||||
var dropdown = layui.dropdown;//下拉菜单的
|
||||
var laydate = layui.laydate
|
||||
var xmSelect = layui.xmSelect
|
||||
// 渲染表格
|
||||
var insTb = table.render({
|
||||
elem: '#tableUser',
|
||||
url: 'api/oauth-manage',
|
||||
page: true,
|
||||
limit:50,
|
||||
limits:[50,100,200,500,1000,10000],
|
||||
toolbar: true,
|
||||
defaultToolbar:['exports','print'],
|
||||
cellMinWidth: 100,
|
||||
cols: [[
|
||||
{field: 'uid', title: '账户主体ID', align: 'center'},
|
||||
{field: 'updated_at', title: '授权时间', align: 'center'},
|
||||
{fixed: 'right', title:'操作', width: 240, minWidth: 155, templet: '#toolDemo'}
|
||||
]]
|
||||
});
|
||||
/* 表格搜索 */
|
||||
form.on('submit(tbAdvTbSearch)', function (data) {
|
||||
insTb.reload({where: data.field, page: {curr: 1}});
|
||||
return false;
|
||||
});
|
||||
// /* 添加时间 */
|
||||
// laydate.render({
|
||||
// elem: '#formAdvDateSel1',
|
||||
// range: true,
|
||||
// trigger: 'click'
|
||||
// });
|
||||
// 添加
|
||||
$('#btnAddUser123').click(function () {
|
||||
showEditModel();
|
||||
return false;
|
||||
});
|
||||
|
||||
/* 表格工具条点击事件 */
|
||||
table.on('tool(tableUser)', function (obj) {
|
||||
var data = obj.data;
|
||||
console.log(data)
|
||||
if (obj.event === 'edit') { // 修改
|
||||
edit(data);
|
||||
} else if (obj.event === 'init') { // 删除
|
||||
initOauthAdmin(data);
|
||||
}
|
||||
// dropdown.hideAll();
|
||||
});
|
||||
// 显示表单弹窗
|
||||
function showEditModel(mUser) {
|
||||
var url_get = 'oauthmanageconfig';
|
||||
var layIndex = admin.open({
|
||||
title: (mUser ? '修改' : '添加') + '用户',
|
||||
url: url_get,
|
||||
data: {user: mUser}, // 传递数据到表单页面
|
||||
end: function () {
|
||||
//
|
||||
},
|
||||
success: function (layero, dIndex) {
|
||||
// 弹窗超出范围不出现滚动条
|
||||
var mUser = admin.getLayerData('#modelUserForm').user; // 列表页面传递的数据,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
||||
console.log(mUser);
|
||||
form.val('modelUserForm', mUser);
|
||||
// 回显数据
|
||||
if (mUser) {
|
||||
$('.hide').remove()
|
||||
}
|
||||
// 表单提交事件
|
||||
var id = mUser ? mUser.id : 0;
|
||||
form.on('submit(modelSubmitUser)', function (data) {
|
||||
admin.showLoading( 'body',1, '.7');
|
||||
var url = mUser ? 'users/' + mUser.id : 'users';
|
||||
if (mUser) {
|
||||
data.field._method = 'PUT'
|
||||
}
|
||||
$.post(url, data.field, function (res) {
|
||||
layer.closeAll('loading');
|
||||
if (res.code == 666) {
|
||||
msg('消息通知',res.msg,1)
|
||||
insTb.reload({}, 'data');
|
||||
admin.closeDialog('#modelUserForm'); // 关闭页面层弹窗
|
||||
} else {
|
||||
msg('消息通知',res.msg,2)
|
||||
}
|
||||
admin.removeLoading( 'body',true, true);
|
||||
}, 'json');
|
||||
return false;
|
||||
});
|
||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function edit(data) {
|
||||
console.log(data)
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '授权账户管理',
|
||||
shadeClose: true,
|
||||
shade: 0.8,
|
||||
area: ['380px', '80%'],
|
||||
content: 'oauthmanageconfig?uid=' + data.uid // iframe 的 url
|
||||
});
|
||||
}
|
||||
|
||||
function tuisong(mUser, _this){
|
||||
var data = {'xs_id':mUser.id}
|
||||
layer.confirm('确定推送?', {
|
||||
skin: 'layui-layer-admin',
|
||||
shade: .1
|
||||
}, function(i){
|
||||
layer.close(i);
|
||||
admin.showLoading('body', 1, '.7');
|
||||
$.post('xiansuo/tuisong', {
|
||||
_token: 'lY9I6mn5ij6xKtr0iil9xVXbyaHaowdYC3IWSovG',
|
||||
data: data
|
||||
}, function (res) {
|
||||
if (res.code == 666) {
|
||||
msg('提示',res.msg,1)
|
||||
insTb.reload({}, 'data');
|
||||
} else {
|
||||
msg('提示',res.msg,2)
|
||||
}
|
||||
admin.removeLoading('body', true, true);
|
||||
}, 'json');
|
||||
})
|
||||
}
|
||||
|
||||
function initOauthAdmin(obj){
|
||||
admin.showLoading('body', 1, '.7');
|
||||
$.ajax({
|
||||
url: 'api/init-oauth-admin',
|
||||
data: {
|
||||
uid: obj.uid
|
||||
},
|
||||
dataType: "json",
|
||||
type: "post",
|
||||
success: function (res) {
|
||||
admin.removeLoading('body', true, true);
|
||||
// layer.close(loading);
|
||||
// if (res.code) {
|
||||
// return layui.popup.failure(res.msg);
|
||||
// }
|
||||
// return layui.popup.success("操作成功", refreshTable);
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
window.clearTimeout(localStorage.getItem("in_user"))
|
||||
localStorage.removeItem("in_user")
|
||||
localStorage.removeItem("in_user_box")
|
||||
|
||||
</script>
|
||||
60
views/site/user/create.php
Normal file
60
views/site/user/create.php
Normal file
@ -0,0 +1,60 @@
|
||||
<form class="layui-form admin-form" action="">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-inline layui-input-wrap">
|
||||
<input type="text" name="username" lay-verify="required" autocomplete="off" lay-affix="clear" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">密码</label>
|
||||
<div class="layui-input-inline layui-input-wrap">
|
||||
<input type="text" name="password" lay-verify="required" autocomplete="off" lay-affix="clear" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item text-right">
|
||||
<button type="submit"
|
||||
class="layui-btn"
|
||||
lay-submit
|
||||
lay-filter="save">
|
||||
提交
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
<script>
|
||||
layui.use(['form', 'layer'], function () {
|
||||
var form = layui.form;
|
||||
var layer = layui.layer;
|
||||
console.log('form init ok');
|
||||
|
||||
form.on('submit(save)', function (data) {
|
||||
var loadIndex = layer.load();
|
||||
|
||||
// console.log(data.field);
|
||||
$.ajax({
|
||||
url: '/api/user/create',
|
||||
method: 'POST',
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
console.log(res)
|
||||
if (res.code != 0) {
|
||||
layer.msg(res.msg);
|
||||
return;
|
||||
}
|
||||
// ✅ 刷新父页面表格
|
||||
parent.layui.table.reload('clueTable');
|
||||
|
||||
// ✅ 关闭当前弹窗
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(index);
|
||||
},
|
||||
complete: function () {
|
||||
layer.close(loadIndex)
|
||||
}
|
||||
})
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
60
views/site/user/edit-password.php
Normal file
60
views/site/user/edit-password.php
Normal file
@ -0,0 +1,60 @@
|
||||
<form class="layui-form admin-form" action="">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-inline layui-input-wrap">
|
||||
<input type="text" value="<?= $query['username'] ?>" name="username" lay-verify="required" autocomplete="off" lay-affix="clear" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">新密码</label>
|
||||
<div class="layui-input-inline layui-input-wrap">
|
||||
<input type="text" name="password" lay-verify="required" autocomplete="off" lay-affix="clear" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item text-right">
|
||||
<button type="submit"
|
||||
class="layui-btn"
|
||||
lay-submit
|
||||
lay-filter="save">
|
||||
提交
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
<script>
|
||||
layui.use(['form', 'layer'], function () {
|
||||
var form = layui.form;
|
||||
var layer = layui.layer;
|
||||
console.log('form init ok');
|
||||
|
||||
form.on('submit(save)', function (data) {
|
||||
var loadIndex = layer.load();
|
||||
|
||||
// console.log(data.field);
|
||||
$.ajax({
|
||||
url: '/api/user/create',
|
||||
method: 'POST',
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
console.log(res)
|
||||
if (res.code != 0) {
|
||||
layer.msg(res.msg);
|
||||
return;
|
||||
}
|
||||
// ✅ 刷新父页面表格
|
||||
parent.layui.table.reload('clueTable');
|
||||
|
||||
// ✅ 关闭当前弹窗
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(index);
|
||||
},
|
||||
complete: function () {
|
||||
layer.close(loadIndex)
|
||||
}
|
||||
})
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
71
views/site/user/edit.php
Normal file
71
views/site/user/edit.php
Normal file
@ -0,0 +1,71 @@
|
||||
<form class="layui-form admin-form" action="">
|
||||
<input type="hidden" name="user_id" value="<?= $user_id ?>">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline">
|
||||
<div id="demo1" style="width: 300px; margin: 20px;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item text-right">
|
||||
<button type="submit"
|
||||
class="layui-btn"
|
||||
lay-submit
|
||||
lay-filter="save">
|
||||
提交
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
<script>
|
||||
layui.use(['form', 'layer', 'xmSelect'], function () {
|
||||
var form = layui.form;
|
||||
var layer = layui.layer;
|
||||
console.log('form init ok');
|
||||
|
||||
var xmSelect = layui.xmSelect;
|
||||
|
||||
//渲染多选
|
||||
var demo1 = xmSelect.render({
|
||||
el: '#demo1',
|
||||
filterable: true,
|
||||
data: <?= json_encode($advertiser) ?>
|
||||
// [
|
||||
// {name: '张三', value: 1},
|
||||
// {name: '李四', value: 2},
|
||||
// {name: '王五', value: 3},
|
||||
// ],
|
||||
})
|
||||
|
||||
form.on('submit(save)', function (data) {
|
||||
var loadIndex = layer.load();
|
||||
|
||||
// console.log(data.field);
|
||||
$.ajax({
|
||||
url: '/api/user/update-user',
|
||||
method: 'POST',
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
console.log(res)
|
||||
if (res.code != 0) {
|
||||
layer.msg(res.msg);
|
||||
return;
|
||||
}
|
||||
|
||||
layer.msg(res.msg);
|
||||
|
||||
// ✅ 刷新父页面表格
|
||||
parent.layui.table.reload('clueTable');
|
||||
|
||||
// ✅ 关闭当前弹窗
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(index);
|
||||
},
|
||||
complete: function () {
|
||||
layer.close(loadIndex)
|
||||
}
|
||||
})
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
179
views/site/users.php
Normal file
179
views/site/users.php
Normal file
@ -0,0 +1,179 @@
|
||||
<!--<link href="//unpkg.com/layui@2.13.3/dist/css/layui.css" rel="stylesheet">-->
|
||||
|
||||
<table class="layui-hide" id="ID-treeTable-demo"></table>
|
||||
<script type="text/html" id="TPL-treeTable-demo">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm" lay-event="create">新增用户</button>
|
||||
</div>
|
||||
</script>
|
||||
<script type="text/html" id="TPL-treeTable-demo-tools">
|
||||
<div class="layui-btn-container">
|
||||
<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="editPassword">修改密码</a>-->
|
||||
<a class="layui-btn layui-btn-xs" lay-event="more">更多 <i class="layui-icon layui-icon-down"></i></a>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
layui.use(function(){
|
||||
var treeTable = layui.treeTable;
|
||||
var layer = layui.layer;
|
||||
var dropdown = layui.dropdown;
|
||||
// 渲染
|
||||
|
||||
var inst = treeTable.render({
|
||||
elem: '#ID-treeTable-demo',
|
||||
url: '/api/user/index', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
tree: {
|
||||
/*
|
||||
// 异步加载子节点
|
||||
async: {
|
||||
enable: true,
|
||||
url: '/static/json/2/treeTable/demo-async.json', // 此处为静态模拟数据,实际使用时需换成真实接口
|
||||
autoParam: ["parentId=id"]
|
||||
}
|
||||
*/
|
||||
},
|
||||
maxHeight: '501px',
|
||||
toolbar: '#TPL-treeTable-demo',
|
||||
cols: [[
|
||||
{type: 'checkbox', fixed: 'left'},
|
||||
{field: 'username', title: '用户名', fixed: 'left'},
|
||||
{field: 'role', title: '权限', fixed: 'left', templet: function(d) {
|
||||
if(d.role === 'ADMIN'){
|
||||
return '管理员';
|
||||
} else {
|
||||
return '子账户';
|
||||
}
|
||||
}},
|
||||
{field: 'advertiser_status', title: '绑定账户', fixed: 'left'},
|
||||
{field: 'status', title: '状态', fixed: 'left', templet: function(d) {
|
||||
if(d.status == '10'){
|
||||
return '正常';
|
||||
} else {
|
||||
return '已关闭';
|
||||
}
|
||||
}},
|
||||
{field: 'created_at', title: '创建时间', fixed: 'left'},
|
||||
{fixed: "right", title: "操作", width: 190, align: "center", toolbar: "#TPL-treeTable-demo-tools"}
|
||||
]],
|
||||
page: true
|
||||
});
|
||||
// 表头工具栏工具事件
|
||||
treeTable.on("toolbar(ID-treeTable-demo)", function (obj) {
|
||||
var config = obj.config;
|
||||
var tableId = config.id;
|
||||
var status = treeTable.checkStatus(tableId);
|
||||
|
||||
// 获取选中行
|
||||
if (obj.event === "getChecked") {
|
||||
if(!status.data.length) return layer.msg('无选中数据');
|
||||
console.log(status);
|
||||
layer.alert("当前数据选中已经输出到控制台,<br>您可按 F12 从控制台中查看结果。");
|
||||
}
|
||||
|
||||
if (obj.event === 'create') {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '新增后台账户',
|
||||
shadeClose: true,
|
||||
shade: 0.8,
|
||||
area: ['380px', '80%'],
|
||||
content: 'usercreate'
|
||||
});
|
||||
}
|
||||
});
|
||||
// 单元格工具事件
|
||||
treeTable.on('tool('+ inst.config.id +')', function (obj) {
|
||||
var layEvent = obj.event; // 获得 lay-event 对应的值
|
||||
var trElem = obj.tr;
|
||||
var trData = obj.data;
|
||||
var tableId = obj.config.id;
|
||||
|
||||
if (layEvent === 'editPassword') {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '修改密码',
|
||||
shadeClose: true,
|
||||
shade: 0.8,
|
||||
area: ['380px', '80%'],
|
||||
content: 'usereditpasswprd?id=' + obj.data.id
|
||||
});
|
||||
}
|
||||
|
||||
if (layEvent === "detail") {
|
||||
layer.msg("查看操作:" + trData.name);
|
||||
} else if (layEvent === "addChild") {
|
||||
var data = { id: Date.now(), name: "新节点" };
|
||||
var newNode2 = treeTable.addNodes(tableId, {
|
||||
parentIndex: trData["LAY_DATA_INDEX"],
|
||||
index: -1,
|
||||
data: data
|
||||
});
|
||||
} else if (layEvent === "more") {
|
||||
// 下拉菜单
|
||||
dropdown.render({
|
||||
elem: this, // 触发事件的 DOM 对象
|
||||
show: true, // 外部事件触发即显示
|
||||
align: "right", // 右对齐弹出
|
||||
data: [
|
||||
{
|
||||
title: "编辑",
|
||||
id: "edit"
|
||||
},
|
||||
{
|
||||
title: "修改密码",
|
||||
id: "editPassword"
|
||||
}
|
||||
],
|
||||
click: function (menudata) {
|
||||
if (menudata.id === 'edit') {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: '编辑',
|
||||
shadeClose: true,
|
||||
shade: 0.8,
|
||||
area: ['380px', '80%'],
|
||||
content: 'useredit?id=' + obj.data.id
|
||||
});
|
||||
}
|
||||
if (menudata.id === "del") {
|
||||
layer.confirm("真的删除行么", function (index) {
|
||||
obj.del(); // 等效如下
|
||||
// treeTable.removeNode(tableId, trElem.attr('data-index'))
|
||||
layer.close(index);
|
||||
});
|
||||
} else if (menudata.id === "editPassword") {
|
||||
console.log(obj)
|
||||
layer.prompt({
|
||||
value: trData.experience,
|
||||
title: "输入新的密码"
|
||||
}, function (value, index) {
|
||||
obj.update({ experience: value }); // 等效如下
|
||||
var loadIndex = layer.load();
|
||||
$.ajax({
|
||||
url: '/api/user/reset-password',
|
||||
data: {
|
||||
password: value,
|
||||
id: obj.data.id
|
||||
},
|
||||
dataType: "json",
|
||||
type: "post",
|
||||
success: function (res) {
|
||||
layer.msg(res.message);
|
||||
// layer.close(loading);
|
||||
// if (res.code) {
|
||||
// return layui.popup.failure(res.msg);
|
||||
// }
|
||||
// return layui.popup.success("操作成功", refreshTable);
|
||||
layer.closeAll();
|
||||
}
|
||||
})
|
||||
// treeTable.updateNode(tableId, trElem.attr('data-index'), {experience: value});
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
323
views/site/xiansuo.php
Normal file
323
views/site/xiansuo.php
Normal file
@ -0,0 +1,323 @@
|
||||
<style>
|
||||
.layui-table-cell{
|
||||
height:auto !important;
|
||||
}
|
||||
</style>
|
||||
<!-- 页面加载loading -->
|
||||
<div class="page-loading">
|
||||
<div class="ball-loader">
|
||||
<span></span><span></span><span></span><span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 正文开始 -->
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
|
||||
<form class="layui-form toolbar">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">姓名:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="name" class="layui-input" placeholder="输入姓名"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">电话:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="phone" class="layui-input" placeholder="输入电话"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">备注:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="note" class="layui-input" placeholder="输入备注"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">城市</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="city" class="layui-input" placeholder="输入城市"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">日期范围</label>
|
||||
<div class="layui-inline" id="ID-laydate-range">
|
||||
<div class="layui-input-inline">
|
||||
<input name="date_start" type="text" autocomplete="off" id="ID-laydate-start-date" class="layui-input" placeholder="开始日期" value="<?= date('Y-m-d', strtotime('-1 day')) ?>">
|
||||
</div>
|
||||
<div class="layui-form-mid">-</div>
|
||||
<div class="layui-input-inline">
|
||||
<input name="date_end" type="text" autocomplete="off" id="ID-laydate-end-date" class="layui-input" placeholder="结束日期" value="<?= date('Y-m-d') ?>">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">转化状态:</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="convert_status" lay-filter="aihao">
|
||||
<option value=""></option>
|
||||
<option value="1">合法转化</option>
|
||||
<option value="2">待确认</option>
|
||||
<option value="3">营销预览</option>
|
||||
<option value="4">其他转化</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="layui-inline"> 
|
||||
<button class="layui-btn icon-btn" lay-filter="tbAdvTbSearch" lay-submit>
|
||||
<i class="layui-icon"></i>搜索
|
||||
</button>
|
||||
<a class="layui-btn" search-expand>展开 <i class="layui-icon layui-icon-down"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table id="tableUser" lay-filter="tableUser"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="tableBarUser1221">
|
||||
<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a> -->
|
||||
<a class="layui-btn layui-btn-xs" data-dropdown="#userTbDrop{{d.id}}" no-shade="true">
|
||||
更多<i class="layui-icon layui-icon-drop" style="font-size: 12px;margin-right: 0;"></i></a>
|
||||
<!-- 下拉菜单 -->
|
||||
<ul class="dropdown-menu-nav dropdown-bottom-right layui-hide" id="userTbDrop{{d.id}}">
|
||||
<div class="dropdown-anchor"></div>
|
||||
<li><a lay-event="genjin"><i class="layui-icon layui-icon-edit"></i>跟进</a></li>
|
||||
<!-- <li><a lay-event="genjin"><i class="layui-icon layui-icon-edit"></i>客户跟进</a></li>-->
|
||||
<!-- <li><a lay-event="gjlist"><i class="layui-icon layui-icon-edit"></i>跟进列表</a></li>-->
|
||||
<!--<li><a lay-event="tuisong"><i class="layui-icon layui-icon-file"></i>推送</a></li>-->
|
||||
</ul>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="tableBarUser">
|
||||
<div class="layui-clear-space">
|
||||
<!-- <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>-->
|
||||
<a class="layui-btn layui-btn-xs" lay-event="genjin">
|
||||
跟进
|
||||
<i class="layui-icon layui-icon-down"></i>
|
||||
</a>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
layui.use(function () {
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var form = layui.form;
|
||||
var table = layui.table;
|
||||
var util = layui.util;
|
||||
var admin = layui.admin;
|
||||
var formX = layui.formX;
|
||||
var notice = layui.notice;
|
||||
|
||||
var laydate = layui.laydate
|
||||
var xmSelect = layui.xmSelect
|
||||
var dropdown = layui.dropdown;
|
||||
// 日期
|
||||
laydate.render({
|
||||
elem: '#ID-laydate-range',
|
||||
range: ['#ID-laydate-start-date', '#ID-laydate-end-date']
|
||||
});
|
||||
// 渲染表格
|
||||
var insTb = table.render({
|
||||
elem: '#tableUser',
|
||||
id: 'clueTable',
|
||||
url: 'api/xiansuo',
|
||||
page: true,
|
||||
limit:10,
|
||||
limits:[10, 50],
|
||||
toolbar: true,
|
||||
defaultToolbar:['exports','print'],
|
||||
cellMinWidth: 100,
|
||||
cols: [[
|
||||
{field: 'clue_id', title: '线索ID',width: 90, align: 'center'},
|
||||
{field: 'promotion_name', title: '推广计划名称',align: 'center'},
|
||||
{field: 'name', title: '姓名',align: 'center'},
|
||||
{field: 'telephone', title: '电话',align: 'center'},
|
||||
{field: 'convert_status', title: '转化状态',align: 'center'},
|
||||
{field: 'auto_province_name', title: '系统识别省',align: 'center'},
|
||||
{field: 'auto_city_name', title: '系统识别市',align: 'center'},
|
||||
{field: 'note', title: '备注',align: 'center'},
|
||||
{field: 'create_time_detail', title: '线索创建时间',align: 'center'},
|
||||
{fixed: 'right', title: '操作', toolbar: '#tableBarUser', align: 'center', width: 80},
|
||||
]],
|
||||
});
|
||||
/* 表格搜索 */
|
||||
form.on('submit(tbAdvTbSearch)', function (data) {
|
||||
insTb.reload({where: data.field, page: {curr: 1}});
|
||||
return false;
|
||||
});
|
||||
// /* 添加时间 */
|
||||
// laydate.render({
|
||||
// elem: '#formAdvDateSel1',
|
||||
// range: true,
|
||||
// trigger: 'click'
|
||||
// });
|
||||
// 添加
|
||||
$('#btnAddUser123').click(function () {
|
||||
showEditModel();
|
||||
return false;
|
||||
});
|
||||
|
||||
/* 表格工具条点击事件 */
|
||||
table.on('tool(tableUser)', function (obj) {
|
||||
console.log(obj)
|
||||
var data = obj.data;
|
||||
if (obj.event === 'edit') { // 修改
|
||||
showEditModel(data);
|
||||
} else if (obj.event === 'zhengzhuang') { // 删除
|
||||
zhengzhuang(data);
|
||||
} else if (obj.event === 'gjlist') { // 跟进列表
|
||||
gjlist(data);
|
||||
}else if (obj.event === 'genjin') { // 跟进
|
||||
genjin(data);
|
||||
}else if(obj.event === 'tuisong'){ // 推送
|
||||
tuisong(data);
|
||||
} else if (obj.event === 'more') {
|
||||
// 更多 - 下拉菜单
|
||||
dropdown.render({
|
||||
elem: this, // 触发事件的 DOM 对象
|
||||
show: true, // 外部事件触发即显示
|
||||
data: [{
|
||||
title: '查看',
|
||||
id: 'detail'
|
||||
},{
|
||||
title: '删除',
|
||||
id: 'del'
|
||||
}],
|
||||
click: function(menudata){
|
||||
if(menudata.id === 'detail'){
|
||||
layer.msg('查看操作,当前行 ID:'+ data.id);
|
||||
} else if(menudata.id === 'del'){
|
||||
layer.confirm('真的删除行 [id: '+ data.id +'] 么', function(index){
|
||||
obj.del(); // 删除对应行(tr)的DOM结构
|
||||
layer.close(index);
|
||||
// 向服务端发送删除指令
|
||||
});
|
||||
}
|
||||
},
|
||||
id: 'dropdown-table-tool',
|
||||
align: 'right', // 右对齐弹出
|
||||
style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' // 设置额外样式
|
||||
});
|
||||
}
|
||||
// dropdown.hideAll();
|
||||
});
|
||||
// 显示表单弹窗
|
||||
function showEditModel(mUser) {
|
||||
var url_get = mUser ? 'users/' + mUser.id + '/edit' : 'users/create';
|
||||
var layIndex = admin.open({
|
||||
title: (mUser ? '修改' : '添加') + '用户',
|
||||
url: url_get,
|
||||
data: {user: mUser}, // 传递数据到表单页面
|
||||
end: function () {
|
||||
//
|
||||
},
|
||||
success: function (layero, dIndex) {
|
||||
// 弹窗超出范围不出现滚动条
|
||||
var mUser = admin.getLayerData('#modelUserForm').user; // 列表页面传递的数据,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
||||
console.log(mUser);
|
||||
form.val('modelUserForm', mUser);
|
||||
// 回显数据
|
||||
if (mUser) {
|
||||
$('.hide').remove()
|
||||
}
|
||||
// 表单提交事件
|
||||
var id = mUser ? mUser.id : 0;
|
||||
form.on('submit(modelSubmitUser)', function (data) {
|
||||
admin.showLoading( 'body',1, '.7');
|
||||
var url = mUser ? 'users/' + mUser.id : 'users';
|
||||
if (mUser) {
|
||||
data.field._method = 'PUT'
|
||||
}
|
||||
$.post(url, data.field, function (res) {
|
||||
layer.closeAll('loading');
|
||||
if (res.code == 666) {
|
||||
msg('消息通知',res.msg,1)
|
||||
insTb.reload({}, 'data');
|
||||
admin.closeDialog('#modelUserForm'); // 关闭页面层弹窗
|
||||
} else {
|
||||
msg('消息通知',res.msg,2)
|
||||
}
|
||||
admin.removeLoading( 'body',true, true);
|
||||
}, 'json');
|
||||
return false;
|
||||
});
|
||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function tuisong(mUser, _this){
|
||||
var data = {'xs_id':mUser.id}
|
||||
layer.confirm('确定推送?', {
|
||||
skin: 'layui-layer-admin',
|
||||
shade: .1
|
||||
}, function(i){
|
||||
layer.close(i);
|
||||
admin.showLoading('body', 1, '.7');
|
||||
$.post('xiansuo/tuisong', {
|
||||
_token: 'lY9I6mn5ij6xKtr0iil9xVXbyaHaowdYC3IWSovG',
|
||||
data: data
|
||||
}, function (res) {
|
||||
if (res.code == 666) {
|
||||
msg('提示',res.msg,1)
|
||||
insTb.reload({}, 'data');
|
||||
} else {
|
||||
msg('提示',res.msg,2)
|
||||
}
|
||||
admin.removeLoading('body', true, true);
|
||||
}, 'json');
|
||||
})
|
||||
}
|
||||
|
||||
function zhengzhuang(mUser){
|
||||
|
||||
var layIndex = admin.open({
|
||||
title:'查看:'+mUser.name+' 症状',
|
||||
url: 'xiansuo/zhengzhuang/'+mUser.id,
|
||||
end: function () {
|
||||
//
|
||||
},
|
||||
success: function (layero, dIndex) {
|
||||
form.val('addmoneyForm', mUser);
|
||||
}
|
||||
});
|
||||
}
|
||||
// 跟进状态
|
||||
function genjin(data) {
|
||||
console.log(data.clue_id)
|
||||
layer.open({
|
||||
type: 2,
|
||||
area: ['800px', '300px'], // 宽高
|
||||
title: "跟进",
|
||||
shade: 0.1,
|
||||
content: 'genjin?clue_id='+ data.clue_id
|
||||
});
|
||||
}
|
||||
function gjlist(mUser){
|
||||
var layIndex = admin.open({
|
||||
area:'90%',
|
||||
title:mUser.name+' 跟进列表',
|
||||
url: 'xiansuo/gjlist/'+mUser.id,
|
||||
end: function () {
|
||||
//
|
||||
},
|
||||
success: function (layero, dIndex) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
window.clearTimeout(localStorage.getItem("in_user"))
|
||||
localStorage.removeItem("in_user")
|
||||
localStorage.removeItem("in_user_box")
|
||||
|
||||
</script>
|
||||
309
views/site/xiansuo_private.php
Normal file
309
views/site/xiansuo_private.php
Normal file
@ -0,0 +1,309 @@
|
||||
<style>
|
||||
.layui-table-cell{
|
||||
height:auto !important;
|
||||
}
|
||||
</style>
|
||||
<!-- 页面加载loading -->
|
||||
<div class="page-loading">
|
||||
<div class="ball-loader">
|
||||
<span></span><span></span><span></span><span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 正文开始 -->
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
|
||||
<form class="layui-form toolbar">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">姓名:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="name" class="layui-input" placeholder="输入姓名"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">电话:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="phone" class="layui-input" placeholder="输入电话"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">备注:</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="note" class="layui-input" placeholder="输入备注"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">城市</label>
|
||||
<div class="layui-input-inline">
|
||||
<input name="city" class="layui-input" placeholder="输入城市"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">日期范围</label>
|
||||
<div class="layui-inline" id="ID-laydate-range">
|
||||
<div class="layui-input-inline">
|
||||
<input name="date_start" type="text" autocomplete="off" id="ID-laydate-start-date" class="layui-input" placeholder="开始日期" value="<?= date('Y-m-d', strtotime('-1 day')) ?>">
|
||||
</div>
|
||||
<div class="layui-form-mid">-</div>
|
||||
<div class="layui-input-inline">
|
||||
<input name="date_end" type="text" autocomplete="off" id="ID-laydate-end-date" class="layui-input" placeholder="结束日期" value="<?= date('Y-m-d') ?>">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline"> 
|
||||
<button class="layui-btn icon-btn" lay-filter="tbAdvTbSearch" lay-submit>
|
||||
<i class="layui-icon"></i>搜索
|
||||
</button>
|
||||
<a class="layui-btn" search-expand>展开 <i class="layui-icon layui-icon-down"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table id="tableUser" lay-filter="tableUser"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="tableBarUser1221">
|
||||
<!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a> -->
|
||||
<a class="layui-btn layui-btn-xs" data-dropdown="#userTbDrop{{d.id}}" no-shade="true">
|
||||
更多<i class="layui-icon layui-icon-drop" style="font-size: 12px;margin-right: 0;"></i></a>
|
||||
<!-- 下拉菜单 -->
|
||||
<ul class="dropdown-menu-nav dropdown-bottom-right layui-hide" id="userTbDrop{{d.id}}">
|
||||
<div class="dropdown-anchor"></div>
|
||||
<li><a lay-event="genjin"><i class="layui-icon layui-icon-edit"></i>跟进</a></li>
|
||||
<!-- <li><a lay-event="genjin"><i class="layui-icon layui-icon-edit"></i>客户跟进</a></li>-->
|
||||
<!-- <li><a lay-event="gjlist"><i class="layui-icon layui-icon-edit"></i>跟进列表</a></li>-->
|
||||
<!--<li><a lay-event="tuisong"><i class="layui-icon layui-icon-file"></i>推送</a></li>-->
|
||||
</ul>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="tableBarUser">
|
||||
<div class="layui-clear-space">
|
||||
<!-- <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>-->
|
||||
<a class="layui-btn layui-btn-xs" lay-event="genjin">
|
||||
跟进
|
||||
<i class="layui-icon layui-icon-down"></i>
|
||||
</a>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
layui.use(function () {
|
||||
var $ = layui.jquery;
|
||||
var layer = layui.layer;
|
||||
var form = layui.form;
|
||||
var table = layui.table;
|
||||
var util = layui.util;
|
||||
var admin = layui.admin;
|
||||
var formX = layui.formX;
|
||||
var notice = layui.notice;
|
||||
|
||||
var laydate = layui.laydate
|
||||
var xmSelect = layui.xmSelect
|
||||
var dropdown = layui.dropdown;
|
||||
// 日期
|
||||
laydate.render({
|
||||
elem: '#ID-laydate-range',
|
||||
range: ['#ID-laydate-start-date', '#ID-laydate-end-date']
|
||||
});
|
||||
// 渲染表格
|
||||
var insTb = table.render({
|
||||
elem: '#tableUser',
|
||||
id: 'clueTable',
|
||||
url: 'api/xiansuo-private',
|
||||
page: true,
|
||||
limit:10,
|
||||
limits:[10, 50],
|
||||
toolbar: true,
|
||||
defaultToolbar:['exports','print'],
|
||||
cellMinWidth: 100,
|
||||
cols: [[
|
||||
{field: 'clue_id', title: '线索ID',width: 90, align: 'center'},
|
||||
{field: 'promotion_name', title: '推广计划名称',align: 'center'},
|
||||
{field: 'name', title: '姓名',align: 'center'},
|
||||
{field: 'telephone', title: '电话',align: 'center'},
|
||||
{field: 'convert_status', title: '转化状态',align: 'center'},
|
||||
{field: 'auto_province_name', title: '系统识别省',align: 'center'},
|
||||
{field: 'auto_city_name', title: '系统识别市',align: 'center'},
|
||||
{field: 'note', title: '备注',align: 'center'},
|
||||
{field: 'create_time_detail', title: '线索创建时间',align: 'center'},
|
||||
{fixed: 'right', title: '操作', toolbar: '#tableBarUser', align: 'center', width: 80},
|
||||
]],
|
||||
});
|
||||
/* 表格搜索 */
|
||||
form.on('submit(tbAdvTbSearch)', function (data) {
|
||||
insTb.reload({where: data.field, page: {curr: 1}});
|
||||
return false;
|
||||
});
|
||||
// /* 添加时间 */
|
||||
// laydate.render({
|
||||
// elem: '#formAdvDateSel1',
|
||||
// range: true,
|
||||
// trigger: 'click'
|
||||
// });
|
||||
// 添加
|
||||
$('#btnAddUser123').click(function () {
|
||||
showEditModel();
|
||||
return false;
|
||||
});
|
||||
|
||||
/* 表格工具条点击事件 */
|
||||
table.on('tool(tableUser)', function (obj) {
|
||||
console.log(obj)
|
||||
var data = obj.data;
|
||||
if (obj.event === 'edit') { // 修改
|
||||
showEditModel(data);
|
||||
} else if (obj.event === 'zhengzhuang') { // 删除
|
||||
zhengzhuang(data);
|
||||
} else if (obj.event === 'gjlist') { // 跟进列表
|
||||
gjlist(data);
|
||||
}else if (obj.event === 'genjin') { // 跟进
|
||||
genjin(data);
|
||||
}else if(obj.event === 'tuisong'){ // 推送
|
||||
tuisong(data);
|
||||
} else if (obj.event === 'more') {
|
||||
// 更多 - 下拉菜单
|
||||
dropdown.render({
|
||||
elem: this, // 触发事件的 DOM 对象
|
||||
show: true, // 外部事件触发即显示
|
||||
data: [{
|
||||
title: '查看',
|
||||
id: 'detail'
|
||||
},{
|
||||
title: '删除',
|
||||
id: 'del'
|
||||
}],
|
||||
click: function(menudata){
|
||||
if(menudata.id === 'detail'){
|
||||
layer.msg('查看操作,当前行 ID:'+ data.id);
|
||||
} else if(menudata.id === 'del'){
|
||||
layer.confirm('真的删除行 [id: '+ data.id +'] 么', function(index){
|
||||
obj.del(); // 删除对应行(tr)的DOM结构
|
||||
layer.close(index);
|
||||
// 向服务端发送删除指令
|
||||
});
|
||||
}
|
||||
},
|
||||
id: 'dropdown-table-tool',
|
||||
align: 'right', // 右对齐弹出
|
||||
style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' // 设置额外样式
|
||||
});
|
||||
}
|
||||
// dropdown.hideAll();
|
||||
});
|
||||
// 显示表单弹窗
|
||||
function showEditModel(mUser) {
|
||||
var url_get = mUser ? 'users/' + mUser.id + '/edit' : 'users/create';
|
||||
var layIndex = admin.open({
|
||||
title: (mUser ? '修改' : '添加') + '用户',
|
||||
url: url_get,
|
||||
data: {user: mUser}, // 传递数据到表单页面
|
||||
end: function () {
|
||||
//
|
||||
},
|
||||
success: function (layero, dIndex) {
|
||||
// 弹窗超出范围不出现滚动条
|
||||
var mUser = admin.getLayerData('#modelUserForm').user; // 列表页面传递的数据,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
||||
console.log(mUser);
|
||||
form.val('modelUserForm', mUser);
|
||||
// 回显数据
|
||||
if (mUser) {
|
||||
$('.hide').remove()
|
||||
}
|
||||
// 表单提交事件
|
||||
var id = mUser ? mUser.id : 0;
|
||||
form.on('submit(modelSubmitUser)', function (data) {
|
||||
admin.showLoading( 'body',1, '.7');
|
||||
var url = mUser ? 'users/' + mUser.id : 'users';
|
||||
if (mUser) {
|
||||
data.field._method = 'PUT'
|
||||
}
|
||||
$.post(url, data.field, function (res) {
|
||||
layer.closeAll('loading');
|
||||
if (res.code == 666) {
|
||||
msg('消息通知',res.msg,1)
|
||||
insTb.reload({}, 'data');
|
||||
admin.closeDialog('#modelUserForm'); // 关闭页面层弹窗
|
||||
} else {
|
||||
msg('消息通知',res.msg,2)
|
||||
}
|
||||
admin.removeLoading( 'body',true, true);
|
||||
}, 'json');
|
||||
return false;
|
||||
});
|
||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function tuisong(mUser, _this){
|
||||
var data = {'xs_id':mUser.id}
|
||||
layer.confirm('确定推送?', {
|
||||
skin: 'layui-layer-admin',
|
||||
shade: .1
|
||||
}, function(i){
|
||||
layer.close(i);
|
||||
admin.showLoading('body', 1, '.7');
|
||||
$.post('xiansuo/tuisong', {
|
||||
_token: 'lY9I6mn5ij6xKtr0iil9xVXbyaHaowdYC3IWSovG',
|
||||
data: data
|
||||
}, function (res) {
|
||||
if (res.code == 666) {
|
||||
msg('提示',res.msg,1)
|
||||
insTb.reload({}, 'data');
|
||||
} else {
|
||||
msg('提示',res.msg,2)
|
||||
}
|
||||
admin.removeLoading('body', true, true);
|
||||
}, 'json');
|
||||
})
|
||||
}
|
||||
|
||||
function zhengzhuang(mUser){
|
||||
|
||||
var layIndex = admin.open({
|
||||
title:'查看:'+mUser.name+' 症状',
|
||||
url: 'xiansuo/zhengzhuang/'+mUser.id,
|
||||
end: function () {
|
||||
//
|
||||
},
|
||||
success: function (layero, dIndex) {
|
||||
form.val('addmoneyForm', mUser);
|
||||
}
|
||||
});
|
||||
}
|
||||
// 跟进状态
|
||||
function genjin(data) {
|
||||
console.log(data.clue_id)
|
||||
layer.open({
|
||||
type: 2,
|
||||
area: ['800px', '300px'], // 宽高
|
||||
title: "跟进",
|
||||
shade: 0.1,
|
||||
content: 'genjin?clue_id='+ data.clue_id
|
||||
});
|
||||
}
|
||||
function gjlist(mUser){
|
||||
var layIndex = admin.open({
|
||||
area:'90%',
|
||||
title:mUser.name+' 跟进列表',
|
||||
url: 'xiansuo/gjlist/'+mUser.id,
|
||||
end: function () {
|
||||
//
|
||||
},
|
||||
success: function (layero, dIndex) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
window.clearTimeout(localStorage.getItem("in_user"))
|
||||
localStorage.removeItem("in_user")
|
||||
localStorage.removeItem("in_user_box")
|
||||
|
||||
</script>
|
||||
Reference in New Issue
Block a user