update
This commit is contained in:
@ -44,4 +44,70 @@ class WebsiteController extends AbstractController
|
||||
{
|
||||
return $render->render('website/view');
|
||||
}
|
||||
|
||||
/**
|
||||
* @url /admin/website/first-column
|
||||
* @param RenderInterface $render
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'first-column', methods: 'get')]
|
||||
public function firstColumn(RenderInterface $render): ResponseInterface
|
||||
{
|
||||
return $render->render('website/first-column/index');
|
||||
}
|
||||
|
||||
/**
|
||||
* @url /admin/website/first-column/insert
|
||||
* @param RenderInterface $render
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'first-column/insert', methods: 'get')]
|
||||
public function firstColumnInsert(RenderInterface $render): ResponseInterface
|
||||
{
|
||||
return $render->render('website/first-column/insert');
|
||||
}
|
||||
|
||||
/**
|
||||
* @url /admin/website/first-column/view
|
||||
* @param RenderInterface $render
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'first-column/view', methods: 'get')]
|
||||
public function firstColumnView(RenderInterface $render): ResponseInterface
|
||||
{
|
||||
return $render->render('website/first-column/view');
|
||||
}
|
||||
|
||||
/**
|
||||
* @url /admin/website/second-column
|
||||
* @param RenderInterface $render
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'second-column', methods: 'get')]
|
||||
public function secondColumn(RenderInterface $render): ResponseInterface
|
||||
{
|
||||
return $render->render('website/second-column/index');
|
||||
}
|
||||
|
||||
/**
|
||||
* @url /admin/website/second-column/insert
|
||||
* @param RenderInterface $render
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'second-column/insert', methods: 'get')]
|
||||
public function secondColumnInsert(RenderInterface $render): ResponseInterface
|
||||
{
|
||||
return $render->render('website/second-column/insert');
|
||||
}
|
||||
|
||||
/**
|
||||
* @url /admin/website/second-column/view
|
||||
* @param RenderInterface $render
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'second-column/view', methods: 'get')]
|
||||
public function secondColumnView(RenderInterface $render): ResponseInterface
|
||||
{
|
||||
return $render->render('website/second-column/view');
|
||||
}
|
||||
}
|
@ -88,7 +88,7 @@ class NewsController extends AbstractController
|
||||
public function insert()
|
||||
{
|
||||
$model = new NewsFormModel();
|
||||
$model->setAttributes($this->request->post(), ['title', 'keywords', 'description', 'cover', 'content', 'platform']);
|
||||
$model->setAttributes($this->request->post(), ['title', 'keywords', 'description', 'cover', 'content', 'platform', 'column1', 'column2']);
|
||||
$model->insert();
|
||||
return $this->response->json(['code' => 0, 'msg' => 'ok']);
|
||||
}
|
||||
@ -104,6 +104,7 @@ class NewsController extends AbstractController
|
||||
$content = $this->request->post('content', null);
|
||||
$platform = $this->request->post('platform', 0);
|
||||
$column = $this->request->post('column', 0);
|
||||
$column2 = $this->request->post('column2', 0);
|
||||
// 随机图片
|
||||
$directory = env('COVER_ROOT'); // 文件夹路径
|
||||
$images = glob($directory . '/*.{jpg,jpeg,png,gif,bmp}', GLOB_BRACE); // 获取图片文件
|
||||
@ -139,6 +140,7 @@ class NewsController extends AbstractController
|
||||
EOF
|
||||
]);
|
||||
$model->column_tag = $column;
|
||||
$model->second_column = $column2;
|
||||
$model->save();
|
||||
}
|
||||
return $this->response->json(['code' => 0, 'msg' => 'ok']);
|
||||
|
@ -3,6 +3,8 @@
|
||||
namespace App\Controller\admin\api;
|
||||
|
||||
use App\Controller\AbstractController;
|
||||
use App\Model\AppNewsColumn;
|
||||
use App\Model\AppNewsSecondColumn;
|
||||
use App\Model\AppWebsiteConfig;
|
||||
use Hyperf\HttpServer\Annotation\Controller;
|
||||
use Hyperf\HttpServer\Annotation\RequestMapping;
|
||||
@ -119,4 +121,167 @@ class WebsiteController extends AbstractController
|
||||
|
||||
return $this->response->json(['code' => 0, 'msg' => 'ok', 'data' => $query]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 一级栏目列表
|
||||
* @url /admin/api/website/first-column
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'first-column', methods: 'get')]
|
||||
public function firstColumn(): ResponseInterface
|
||||
{
|
||||
$query = AppNewsColumn::query()->where('is_delete', 0)->get()->toArray();
|
||||
|
||||
foreach ($query as &$item) {
|
||||
$item['website'] = AppWebsiteConfig::find($item['website'])->app_name;
|
||||
}
|
||||
|
||||
return $this->response->json([
|
||||
'code' => 0,
|
||||
'data' => $query
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增一级栏目
|
||||
* @url /admin/api/website/first-column/insert
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'first-column/insert', methods: 'post')]
|
||||
public function firstColumnInsert(): ResponseInterface
|
||||
{
|
||||
$model = new AppNewsColumn();
|
||||
$model->name = $this->request->post('name');
|
||||
$model->website = $this->request->post('website');
|
||||
$model->url = $this->request->post('url');
|
||||
$model->desc = $this->request->post('desc');
|
||||
$model->save();
|
||||
|
||||
return $this->response->json([]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @url /admin/api/website/first-column/view
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'first-column/view', methods: 'get')]
|
||||
public function firstColumnView(): ResponseInterface
|
||||
{
|
||||
$id = $this->request->input('id');
|
||||
|
||||
$query = AppNewsColumn::query()->where(['id' => $id])->first()->toArray();
|
||||
if (!$query) {
|
||||
return $this->response->json(['code' => 400, 'msg' => 'id 有误']);
|
||||
}
|
||||
|
||||
return $this->response->json(['code' => 0, 'msg' => 'ok', 'data' => $query]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @url /admin/api/website/first-column/save
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'first-column/save', methods: 'post')]
|
||||
public function firstColumnSave(): ResponseInterface
|
||||
{
|
||||
$id = $this->request->post('id');
|
||||
|
||||
$query = AppNewsColumn::find($id);
|
||||
if (!$query) {
|
||||
return $this->response->json(['code' => 400, 'msg' => 'id 有误']);
|
||||
}
|
||||
|
||||
$query->website = $this->request->post('website');
|
||||
$query->name = $this->request->post('name');
|
||||
$query->url = $this->request->post('url');
|
||||
$query->desc = $this->request->post('desc');
|
||||
$query->save();
|
||||
|
||||
return $this->response->json(['code' => 0, 'msg' => 'ok', 'data' => $query]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 二级栏目列表
|
||||
* @url /admin/api/website/second-column
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'second-column', methods: 'get')]
|
||||
public function secondColumn(): ResponseInterface
|
||||
{
|
||||
$query = AppNewsSecondColumn::query()->where('is_delete', 0);
|
||||
$pagination = $query->paginate($this->request->input('limit', 10), page: $this->request->input('page'));
|
||||
$data = $query->get()->toArray();
|
||||
foreach ($data as &$item) {
|
||||
$query = AppWebsiteConfig::find($item['website']);
|
||||
$item['website'] = $query->app_name;
|
||||
$item['rid'] = AppNewsColumn::find($item['rid'])->name;
|
||||
}
|
||||
|
||||
return $this->response->json([
|
||||
'code' => 0,
|
||||
'data' => $data,
|
||||
'count' => $pagination->total()
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增二级栏目
|
||||
* @url /admin/api/website/second-column/insert
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'second-column/insert', methods: 'post')]
|
||||
public function secondColumnInsert(): ResponseInterface
|
||||
{
|
||||
$model = new AppNewsSecondColumn();
|
||||
$model->name = $this->request->post('name');
|
||||
$model->website = $this->request->post('website');
|
||||
$model->url = $this->request->post('url');
|
||||
$model->desc = $this->request->post('desc');
|
||||
$model->rid = $this->request->post('rid');
|
||||
$model->save();
|
||||
|
||||
return $this->response->json([]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @url /admin/api/website/second-column/view
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'second-column/view', methods: 'get')]
|
||||
public function secondColumnView(): ResponseInterface
|
||||
{
|
||||
$id = $this->request->input('id');
|
||||
|
||||
$query = AppNewsSecondColumn::query()->where(['id' => $id])->first()->toArray();
|
||||
if (!$query) {
|
||||
return $this->response->json(['code' => 400, 'msg' => 'id 有误']);
|
||||
}
|
||||
|
||||
return $this->response->json(['code' => 0, 'msg' => 'ok', 'data' => $query]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @url /admin/api/website/second-column/save
|
||||
* @return ResponseInterface
|
||||
*/
|
||||
#[RequestMapping(path: 'second-column/save', methods: 'post')]
|
||||
public function secondColumnSave(): ResponseInterface
|
||||
{
|
||||
$id = $this->request->post('id');
|
||||
|
||||
$query = AppNewsSecondColumn::find($id);
|
||||
if (!$query) {
|
||||
return $this->response->json(['code' => 400, 'msg' => 'id 有误']);
|
||||
}
|
||||
|
||||
$query->website = $this->request->post('website');
|
||||
$query->name = $this->request->post('name');
|
||||
$query->url = $this->request->post('url');
|
||||
$query->desc = $this->request->post('desc');
|
||||
$query->rid = $this->request->post('rid');
|
||||
$query->save();
|
||||
|
||||
return $this->response->json(['code' => 0, 'msg' => 'ok', 'data' => $query]);
|
||||
}
|
||||
}
|
@ -26,6 +26,10 @@ class NewsFormModel
|
||||
public function insert()
|
||||
{
|
||||
$model = new AppNews();
|
||||
$this->attributes['column_tag'] = $this->attributes['column1'] ?: 0;
|
||||
$this->attributes['second_column'] = $this->attributes['column2'] ?: 0;
|
||||
unset($this->attributes['column1']);
|
||||
unset($this->attributes['column2']);
|
||||
$model->setRawAttributes($this->attributes);
|
||||
$model->save();
|
||||
}
|
||||
@ -39,6 +43,8 @@ class NewsFormModel
|
||||
$model->cover = $this->attributes['cover'];
|
||||
$model->content = $this->attributes['content'];
|
||||
$model->platform = $this->attributes['platform'];
|
||||
$model->column_tag = $this->attributes['column1'] ?: 0;
|
||||
$model->second_column = $this->attributes['column2'] ?: 0;
|
||||
$model->save();
|
||||
}
|
||||
}
|
@ -24,6 +24,7 @@ namespace App\Model;
|
||||
* @property string $source_url
|
||||
* @property string $source_platform
|
||||
* @property int $column_tag
|
||||
* @property int $second_column
|
||||
* @property-read mixed $created_at
|
||||
*/
|
||||
class AppNews extends Model
|
||||
@ -41,7 +42,7 @@ class AppNews extends Model
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*/
|
||||
protected array $casts = ['id' => 'integer', 'created_at' => 'datetime', 'created_by' => 'integer', 'updated_at' => 'datetime', 'updated_by' => 'integer', 'deleted_at' => 'integer', 'deleted_by' => 'integer', 'platform' => 'integer', 'is_record' => 'integer', 'is_delete' => 'integer', 'column_tag' => 'integer'];
|
||||
protected array $casts = ['id' => 'integer', 'created_at' => 'datetime', 'created_by' => 'integer', 'updated_at' => 'datetime', 'updated_by' => 'integer', 'deleted_at' => 'integer', 'deleted_by' => 'integer', 'platform' => 'integer', 'is_record' => 'integer', 'is_delete' => 'integer', 'column_tag' => 'integer', 'second_column' => 'integer'];
|
||||
|
||||
protected ?string $dateFormat = 'U';
|
||||
|
||||
|
@ -10,6 +10,13 @@ namespace App\Model;
|
||||
* @property int $id
|
||||
* @property string $name
|
||||
* @property string $url
|
||||
* @property \Carbon\Carbon $created_at
|
||||
* @property int $created_by
|
||||
* @property int $website
|
||||
* @property int $is_delete
|
||||
* @property \Carbon\Carbon $updated_at
|
||||
* @property int $updated_by
|
||||
* @property string $desc
|
||||
*/
|
||||
class AppNewsColumn extends Model
|
||||
{
|
||||
@ -26,5 +33,5 @@ class AppNewsColumn extends Model
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*/
|
||||
protected array $casts = ['id' => 'integer'];
|
||||
protected array $casts = ['id' => 'integer', 'created_at' => 'datetime', 'created_by' => 'integer', 'website' => 'integer', 'is_delete' => 'integer', 'updated_at' => 'datetime', 'updated_by' => 'integer'];
|
||||
}
|
||||
|
38
app/Model/AppNewsSecondColumn.php
Normal file
38
app/Model/AppNewsSecondColumn.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Model;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @property int $id
|
||||
* @property string $name
|
||||
* @property string $url
|
||||
* @property \Carbon\Carbon $created_at
|
||||
* @property int $created_by
|
||||
* @property int $website
|
||||
* @property int $is_delete
|
||||
* @property \Carbon\Carbon $updated_at
|
||||
* @property int $updated_by
|
||||
* @property string $desc
|
||||
* @property int $rid
|
||||
*/
|
||||
class AppNewsSecondColumn extends Model
|
||||
{
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*/
|
||||
protected ?string $table = 'app_news_second_column';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*/
|
||||
protected array $fillable = [];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast to native types.
|
||||
*/
|
||||
protected array $casts = ['id' => 'integer', 'created_at' => 'datetime', 'created_by' => 'integer', 'website' => 'integer', 'is_delete' => 'integer', 'updated_at' => 'datetime', 'updated_by' => 'integer', 'rid' => 'integer'];
|
||||
}
|
59
app/Rpc/v1/ColumnService.php
Normal file
59
app/Rpc/v1/ColumnService.php
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace App\Rpc\v1;
|
||||
|
||||
use App\Model\AppNews;
|
||||
use App\Model\AppNewsColumn;
|
||||
use App\Model\AppNewsSecondColumn;
|
||||
use App\Rpc\BaseService;
|
||||
use Hyperf\RpcServer\Annotation\RpcService;
|
||||
|
||||
#[RpcService(name: "column", server: "jsonrpc-http", protocol: "jsonrpc-http")]
|
||||
class ColumnService extends BaseService
|
||||
{
|
||||
/**
|
||||
* 获取栏目
|
||||
* @url /column/index
|
||||
* @param int $app_id
|
||||
* @return array
|
||||
*/
|
||||
public function index(int $app_id = 0): array
|
||||
{
|
||||
$resp = $this->getResponse();
|
||||
if ($app_id) {
|
||||
$firstColumn = AppNewsColumn::query()->where('website', $app_id)->get()->toArray();
|
||||
$res = [];
|
||||
foreach ($firstColumn as $index => &$column) {
|
||||
$filter = [];
|
||||
$filter[] = ['column_tag', $column['id']];
|
||||
$res[] = [
|
||||
'filter' => $filter,
|
||||
'desc' => $column['desc'],
|
||||
'item' => [['title' => $column['name'], 'link' => $column['url']]],
|
||||
'path' => $column['url'],
|
||||
];
|
||||
$second = AppNewsSecondColumn::query()->where('rid', $column['id'])->get()->toArray();
|
||||
if ($second) {
|
||||
foreach ($second as $secondCol) {
|
||||
$appendArr = [];
|
||||
$appendArr[] = ['title' => $column['name'], 'link' => $column['url']];
|
||||
$appendArr[] = ['title' => $secondCol['name'], 'link' => $column['url'] . $secondCol['url']];
|
||||
$filter = [
|
||||
['column_tag', $column['id']],
|
||||
['second_column', $secondCol['id']]
|
||||
];
|
||||
$res[] = [
|
||||
'filter' => $filter,
|
||||
'path' => "{$column['url']}{$secondCol['url']}",
|
||||
'desc' => $secondCol['desc'],
|
||||
'item' => $appendArr,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $resp->setCode(200)->setData($res)->send();
|
||||
}
|
||||
|
||||
return $resp->setCode(200)->send();
|
||||
}
|
||||
}
|
@ -4,6 +4,7 @@ namespace App\Rpc\v1;
|
||||
|
||||
use App\Model\AppNews;
|
||||
use App\Model\AppNewsColumn;
|
||||
use App\Model\AppNewsSecondColumn;
|
||||
use App\Rpc\BaseService;
|
||||
use Hyperf\RpcServer\Annotation\RpcService;
|
||||
|
||||
@ -60,11 +61,16 @@ class NewsService extends BaseService
|
||||
* @param int $page
|
||||
* @return array
|
||||
*/
|
||||
public function index(int $id, int $limit = 30, int $page = 1): array
|
||||
public function index(int $id, int $limit = 30, int $page = 1, array $filter = []): array
|
||||
{
|
||||
$query = AppNews::formatQuery(['created_at', 'column_tag'])
|
||||
->where('is_delete', 0);
|
||||
|
||||
if ($filter) {
|
||||
foreach ($filter as $item) {
|
||||
$query->where(...$item);
|
||||
}
|
||||
}
|
||||
if (isset(self::RELATION[$id])) {
|
||||
$query->whereIn('platform', self::RELATION[$id]);
|
||||
} else {
|
||||
@ -83,15 +89,24 @@ class NewsService extends BaseService
|
||||
|
||||
foreach ($value as &$item) {
|
||||
$item['created_at'] = date('Y-m-d', $item['created_at']);
|
||||
|
||||
if ($item['column_tag']) {
|
||||
$columnTag = AppNewsColumn::find($item['column_tag']);
|
||||
$item['column_tag'] = $columnTag->name ?? '';
|
||||
$item['column_tag_url'] = $columnTag->url ?? '';
|
||||
|
||||
if ($item['second_column']) {
|
||||
$secondColumnTag = AppNewsSecondColumn::find($item['second_column']);
|
||||
$item['second_column_tag'] = $secondColumnTag->name ?? '';
|
||||
$item['second_column_tag_url'] = $columnTag->url . $secondColumnTag->url ?? '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$hot = AppNews::formatQuery(['created_at'])
|
||||
->where('platform', $id)
|
||||
->where('is_delete', 0)
|
||||
->select(['title', 'id', 'cover'])
|
||||
->select(['title', 'id', 'cover', 'created_at'])
|
||||
->limit(5)
|
||||
->orderBy('id', 'desc')
|
||||
->get()
|
||||
|
24129
public/component/wangeditor/index.js
Normal file
24129
public/component/wangeditor/index.js
Normal file
File diff suppressed because one or more lines are too long
27
public/component/wangeditor/style.css
Normal file
27
public/component/wangeditor/style.css
Normal file
File diff suppressed because one or more lines are too long
@ -3,8 +3,12 @@ $platforms = call_user_func(function () {
|
||||
return \App\Model\AppWebsiteConfig::query()->where('is_delete', 0)->get()->toArray();
|
||||
});
|
||||
|
||||
$columnTag = call_user_func(function () {
|
||||
return \App\Model\AppNewsColumn::query()->get()->toArray();
|
||||
$firstColumn = call_user_func(function () {
|
||||
return json_encode(\App\Model\AppNewsColumn::query()->where('is_delete', 0)->get()->groupBy('website')->toArray());
|
||||
});
|
||||
|
||||
$secondColumn = call_user_func(function () {
|
||||
return json_encode(\App\Model\AppNewsSecondColumn::query()->where('is_delete', 0)->get()->groupBy('rid')->toArray());
|
||||
});
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
@ -23,7 +27,7 @@ $columnTag = call_user_func(function () {
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">发布平台</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="platform" lay-search="">
|
||||
<select name="platform" lay-search="" lay-filter="platform">
|
||||
<option value="">请选择</option>
|
||||
<?php foreach ($platforms ?: [] as $platform): ?>
|
||||
<option value="<?= $platform['id'] ?>"><?= $platform['app_name'] ?></option>
|
||||
@ -31,19 +35,22 @@ $columnTag = call_user_func(function () {
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="column" lay-search="">
|
||||
<select id="column" name="column" lay-search="" lay-filter="first-column">
|
||||
<option value="">请选择</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">二级栏目</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="second-column" name="column2" lay-search="">
|
||||
<option value="">请选择</option>
|
||||
<?php foreach ($columnTag ?: [] as $tag): ?>
|
||||
<option value="<?= $tag['id'] ?>"><?= $tag['name'] ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label class="layui-form-label">json数据</label>
|
||||
<div class="layui-input-block">
|
||||
@ -70,6 +77,41 @@ $columnTag = call_user_func(function () {
|
||||
layui.use(['upload', 'jquery', 'popup'], function(){
|
||||
const upload = layui.upload;
|
||||
const $ = layui.jquery;
|
||||
const form = layui.form;
|
||||
// 站点
|
||||
form.on('select(platform)', function(data){
|
||||
const val = data.value
|
||||
var firstColumn = JSON.parse('<?= $firstColumn ?>')
|
||||
console.log(firstColumn[val])
|
||||
let html = '<option value="">请选择</option>'
|
||||
if (firstColumn[val]) {
|
||||
firstColumn[val].forEach(item => {
|
||||
html += `<option value="${item.id}">${item.name}</option>`
|
||||
})
|
||||
console.log(html)
|
||||
}
|
||||
|
||||
$('#column').html(html);
|
||||
form.render('select'); // 重新渲染 select 以应用新的选项和样式
|
||||
});
|
||||
|
||||
// 站点
|
||||
form.on('select(first-column)', function(data){
|
||||
const val = data.value
|
||||
var firstColumn = JSON.parse('<?= $secondColumn ?>')
|
||||
console.log(firstColumn[val])
|
||||
let html = '<option value="0">请选择</option>'
|
||||
if (firstColumn[val]) {
|
||||
firstColumn[val].forEach(item => {
|
||||
html += `<option value="${item.id}">${item.name}</option>`
|
||||
})
|
||||
console.log(html)
|
||||
}
|
||||
|
||||
$('#second-column').html(html);
|
||||
form.render('select'); // 重新渲染 select 以应用新的选项和样式
|
||||
});
|
||||
|
||||
layui.form.on("submit(submit)", function (data) {
|
||||
layui.$.ajax({
|
||||
url: SAVE_API,
|
||||
@ -77,10 +119,10 @@ $columnTag = call_user_func(function () {
|
||||
dateType: "json",
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
|
||||
if (res.code) {
|
||||
return layui.popup.failure(res.msg);
|
||||
}
|
||||
|
||||
return layui.popup.success("操作成功", function () {
|
||||
parent.refreshTable();
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
|
@ -2,6 +2,14 @@
|
||||
$platforms = call_user_func(function () {
|
||||
return \App\Model\AppWebsiteConfig::query()->where('is_delete', 0)->get()->toArray();
|
||||
});
|
||||
|
||||
$firstColumn = call_user_func(function () {
|
||||
return json_encode(\App\Model\AppNewsColumn::query()->where('is_delete', 0)->get()->groupBy('website')->toArray());
|
||||
});
|
||||
|
||||
$secondColumn = call_user_func(function () {
|
||||
return json_encode(\App\Model\AppNewsSecondColumn::query()->where('is_delete', 0)->get()->groupBy('rid')->toArray());
|
||||
});
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
@ -11,7 +19,7 @@ $platforms = call_user_func(function () {
|
||||
<link rel="stylesheet" href="/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/admin/css/reset.css" />
|
||||
<link
|
||||
href="https://unpkg.com/@wangeditor/editor@latest/dist/css/style.css"
|
||||
href="/component/wangeditor/style.css"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
</head>
|
||||
@ -23,7 +31,7 @@ $platforms = call_user_func(function () {
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">发布平台</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="platform" lay-search="">
|
||||
<select name="platform" lay-search="" lay-filter="platform">
|
||||
<option value="">请选择</option>
|
||||
<?php foreach ($platforms ?: [] as $platform): ?>
|
||||
<option value="<?= $platform['id'] ?>"><?= $platform['app_name'] ?></option>
|
||||
@ -31,6 +39,22 @@ $platforms = call_user_func(function () {
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">一级栏目</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="first-column" name="column1" lay-search="" lay-filter="first-column">
|
||||
<option value="">请选择</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">二级栏目</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="second-column" name="column2" lay-search="">
|
||||
<option value="">请选择</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">文章标题</label>
|
||||
<div class="layui-input-block">
|
||||
@ -80,7 +104,7 @@ $platforms = call_user_func(function () {
|
||||
</form>
|
||||
<script src="/component/layui/layui.js?v=2.8.12"></script>
|
||||
<script src="/component/pear/pear.js"></script>
|
||||
<script src="https://unpkg.com/@wangeditor/editor@latest/dist/index.js"></script>
|
||||
<script src="/component/wangeditor/index.js"></script>
|
||||
<script>
|
||||
// api
|
||||
const INSERT_API = "/admin/api/news/insert"; // 插入新闻
|
||||
@ -129,6 +153,41 @@ $platforms = call_user_func(function () {
|
||||
layui.use(['upload', 'jquery'], function(){
|
||||
const upload = layui.upload;
|
||||
const $ = layui.jquery;
|
||||
const form = layui.form
|
||||
|
||||
// 站点
|
||||
form.on('select(platform)', function(data){
|
||||
const val = data.value
|
||||
var firstColumn = JSON.parse('<?= $firstColumn ?>')
|
||||
console.log(firstColumn[val])
|
||||
let html = '<option value="">请选择</option>'
|
||||
if (firstColumn[val]) {
|
||||
firstColumn[val].forEach(item => {
|
||||
html += `<option value="${item.id}">${item.name}</option>`
|
||||
})
|
||||
console.log(html)
|
||||
}
|
||||
|
||||
$('#first-column').html(html);
|
||||
form.render('select'); // 重新渲染 select 以应用新的选项和样式
|
||||
});
|
||||
|
||||
// 站点
|
||||
form.on('select(first-column)', function(data){
|
||||
const val = data.value
|
||||
var firstColumn = JSON.parse('<?= $secondColumn ?>')
|
||||
console.log(firstColumn[val])
|
||||
let html = '<option value="0">请选择</option>'
|
||||
if (firstColumn[val]) {
|
||||
firstColumn[val].forEach(item => {
|
||||
html += `<option value="${item.id}">${item.name}</option>`
|
||||
})
|
||||
console.log(html)
|
||||
}
|
||||
|
||||
$('#second-column').html(html);
|
||||
form.render('select'); // 重新渲染 select 以应用新的选项和样式
|
||||
});
|
||||
|
||||
//执行实例
|
||||
var uploadInst = upload.render({
|
||||
|
@ -2,6 +2,15 @@
|
||||
$platforms = call_user_func(function () {
|
||||
return \App\Model\AppWebsiteConfig::query()->where('is_delete', 0)->get()->toArray();
|
||||
});
|
||||
|
||||
$firstColumn = call_user_func(function () {
|
||||
return json_encode(\App\Model\AppNewsColumn::query()->where('is_delete', 0)->get()->groupBy('website')->toArray());
|
||||
});
|
||||
|
||||
$secondColumn = call_user_func(function () {
|
||||
return json_encode(\App\Model\AppNewsSecondColumn::query()->where('is_delete', 0)->get()->groupBy('rid')->toArray());
|
||||
});
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
@ -11,7 +20,7 @@ $platforms = call_user_func(function () {
|
||||
<link rel="stylesheet" href="/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/admin/css/reset.css" />
|
||||
<link
|
||||
href="https://unpkg.com/@wangeditor/editor@latest/dist/css/style.css"
|
||||
href="/component/wangeditor/style.css"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
</head>
|
||||
@ -24,7 +33,7 @@ $platforms = call_user_func(function () {
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">发布平台</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="platform" lay-search="">
|
||||
<select name="platform" lay-search="" lay-filter="platform">
|
||||
<option value="">请选择</option>
|
||||
<?php foreach ($platforms ?: [] as $platform): ?>
|
||||
<option value="<?= $platform['id'] ?>"><?= $platform['app_name'] ?></option>
|
||||
@ -32,6 +41,22 @@ $platforms = call_user_func(function () {
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">一级栏目</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="first-column" name="column1" lay-search="" lay-filter="first-column">
|
||||
<option value="">请选择</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">二级栏目</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="second-column" name="column2" lay-search="">
|
||||
<option value="">请选择</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">文章标题</label>
|
||||
<div class="layui-input-block">
|
||||
@ -81,7 +106,7 @@ $platforms = call_user_func(function () {
|
||||
</form>
|
||||
<script src="/component/layui/layui.js?v=2.8.12"></script>
|
||||
<script src="/component/pear/pear.js"></script>
|
||||
<script src="https://unpkg.com/@wangeditor/editor@latest/dist/index.js"></script>
|
||||
<script src="/component/wangeditor/index.js"></script>
|
||||
<script>
|
||||
// api
|
||||
const SAVE_API = "/admin/api/news/update"; // 更新新闻
|
||||
@ -131,8 +156,46 @@ $platforms = call_user_func(function () {
|
||||
layui.use(['upload', 'jquery', 'popup'], function(){
|
||||
const upload = layui.upload;
|
||||
const $ = layui.jquery;
|
||||
const col1 = JSON.parse('<?= $firstColumn ?>')
|
||||
const col2 = JSON.parse('<?= $secondColumn ?>')
|
||||
const form = layui.form
|
||||
|
||||
initViewData()
|
||||
// 站点
|
||||
form.on('select(platform)', function(data){
|
||||
const val = data.value
|
||||
var firstColumn = JSON.parse('<?= $firstColumn ?>')
|
||||
console.log(firstColumn[val])
|
||||
let html = '<option value="">请选择</option>'
|
||||
$('#second-column').html(html);
|
||||
if (firstColumn[val]) {
|
||||
firstColumn[val].forEach(item => {
|
||||
html += `<option value="${item.id}">${item.name}</option>`
|
||||
})
|
||||
console.log(html)
|
||||
}
|
||||
|
||||
$('#first-column').html(html);
|
||||
form.render('select'); // 重新渲染 select 以应用新的选项和样式
|
||||
});
|
||||
|
||||
// 站点
|
||||
form.on('select(first-column)', function(data){
|
||||
const val = data.value
|
||||
var firstColumn = JSON.parse('<?= $secondColumn ?>')
|
||||
console.log(firstColumn[val])
|
||||
let html = '<option value="0">请选择</option>'
|
||||
if (firstColumn[val]) {
|
||||
firstColumn[val].forEach(item => {
|
||||
html += `<option value="${item.id}">${item.name}</option>`
|
||||
})
|
||||
console.log(html)
|
||||
}
|
||||
|
||||
$('#second-column').html(html);
|
||||
form.render('select'); // 重新渲染 select 以应用新的选项和样式
|
||||
});
|
||||
|
||||
|
||||
//执行实例
|
||||
var uploadInst = upload.render({
|
||||
@ -211,8 +274,33 @@ $platforms = call_user_func(function () {
|
||||
$("[name=cover]").val(res.data.cover);
|
||||
|
||||
$("select[name=platform]").val(res.data.platform);
|
||||
layui.form.render("select");
|
||||
|
||||
|
||||
// 栏目1
|
||||
$("select[name=column1]").val(res.data.column_tag);
|
||||
var val = res.data.platform
|
||||
var html = '<option value="">请选择</option>'
|
||||
if (col1[val]) {
|
||||
col1[val].forEach(item => {
|
||||
html += `<option value="${item.id}">${item.name}</option>`
|
||||
})
|
||||
}
|
||||
$('#first-column').html(html);
|
||||
$("select[name=column1]").val(res.data.column_tag);
|
||||
|
||||
// 栏目2
|
||||
$("select[name=column2]").val(res.data.second_column);
|
||||
val = res.data.column_tag
|
||||
html = '<option value="">请选择</option>'
|
||||
if (col2[val]) {
|
||||
col2[val].forEach(item => {
|
||||
html += `<option value="${item.id}">${item.name}</option>`
|
||||
})
|
||||
}
|
||||
$('#second-column').html(html);
|
||||
$("select[name=column2]").val(res.data.second_column);
|
||||
|
||||
layui.form.render("select");
|
||||
editor.setHtml(res.data.content)
|
||||
|
||||
// ajax产生错误
|
||||
|
@ -1,408 +0,0 @@
|
||||
<?php
|
||||
|
||||
$articleModule = array_map(fn($case) => [
|
||||
'label' => ucfirst($case->toString()),
|
||||
'value' => $case->value,
|
||||
], \App\Enums\ArticleModuleEnum::cases());
|
||||
|
||||
$articlePublishedStatus = array_map(fn($case) => [
|
||||
'label' => ucfirst($case->toString()),
|
||||
'value' => $case->value,
|
||||
], \App\Enums\SpiderArticlePublishedStatusEnum::cases());
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>浏览页面</title>
|
||||
<link rel="stylesheet" href="/component/pear/css/pear.css"/>
|
||||
<link rel="stylesheet" href="/admin/css/reset.css"/>
|
||||
<link rel="stylesheet" href="/admin/css/reset.css"/>
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<!-- 顶部查询表单 -->
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<form class="layui-form top-search-from">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">文章标题</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="title" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">创建时间</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-block" id="created_at">
|
||||
<input type="text" autocomplete="off" value="<?= date('Y-m-d', strtotime('-1 month')) ?>"
|
||||
name="created_at[]" id="created_at-date-start" class="layui-input inline-block"
|
||||
placeholder="开始时间">
|
||||
-
|
||||
<input type="text" autocomplete="off" value="<?= date('Y-m-d') ?>" name="created_at[]"
|
||||
id="created_at-date-end" class="layui-input inline-block" placeholder="结束时间">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">文章类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="module">
|
||||
<option value="">请选择</option>
|
||||
<?php foreach ($articleModule as $module): ?>
|
||||
<option value="<?= $module['value'] ?>"><?= $module['label'] ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">发布状态</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="published_status">
|
||||
<?php foreach ($articlePublishedStatus as $status): ?>
|
||||
<option value="<?= $status['value'] ?>"><?= $status['label'] ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label"></label>
|
||||
<button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="table-query">
|
||||
<i class="layui-icon layui-icon-search"></i>查询
|
||||
</button>
|
||||
<button type="reset" class="pear-btn pear-btn-md" lay-submit lay-filter="table-reset">
|
||||
<i class="layui-icon layui-icon-refresh"></i>重置
|
||||
</button>
|
||||
</div>
|
||||
<div class="toggle-btn">
|
||||
<a class="layui-hide">展开<i class="layui-icon layui-icon-down"></i></a>
|
||||
<a class="layui-hide">收起<i class="layui-icon layui-icon-up"></i></a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="data-table" lay-filter="data-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 表格行工具栏 -->
|
||||
<script type="text/html" id="table-bar">
|
||||
<button class="pear-btn pear-btn-xs tool-btn" lay-event="pre-publish">预发布</button>
|
||||
<button class="pear-btn pear-btn-xs tool-btn" lay-event="edit">预览数据</button>
|
||||
<button class="pear-btn pear-btn-xs tool-btn" lay-event="delete">删除</button>
|
||||
</script>
|
||||
|
||||
<script src="/component/layui/layui.js?v=2.8.12"></script>
|
||||
<script src="/component/pear/pear.js"></script>
|
||||
<script src="/admin/js/permission.js"></script>
|
||||
<script src="/admin/js/common.js"></script>
|
||||
<script>
|
||||
|
||||
// 相关常量
|
||||
const PRIMARY_KEY = "id";
|
||||
const UPDATE_API = "/admin/update";
|
||||
const DELETE_API = "/admin/delete";
|
||||
|
||||
// ----------------------
|
||||
const UPDATE_URL = "/articles/update";
|
||||
|
||||
// page
|
||||
const VIEW_URL = "/admin/spider-article/view";
|
||||
|
||||
// api
|
||||
const INDEX_API = '/admin/api/spider-article';
|
||||
const PRE_PUBLISH_API = '/admin/api/spider-article/pre-publish';
|
||||
|
||||
// 字段 创建时间 created_at
|
||||
layui.use(["laydate"], function () {
|
||||
layui.laydate.render({
|
||||
elem: "#created_at",
|
||||
range: ["#created_at-date-start", "#created_at-date-end"],
|
||||
|
||||
});
|
||||
})
|
||||
|
||||
// 表格渲染
|
||||
layui.use(["table", "form", "common", "popup", "util"], function () {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.$;
|
||||
let common = layui.common;
|
||||
let util = layui.util;
|
||||
|
||||
// 表头参数
|
||||
let cols = [
|
||||
{
|
||||
type: "checkbox"
|
||||
}, {
|
||||
title: "文章标题",
|
||||
field: "title",
|
||||
}, {
|
||||
title: "文章类型",
|
||||
field: "module",
|
||||
}, {
|
||||
field:'published_status', title: '发布状态', templet: function(d){
|
||||
if(d.published_status === '未同步'){
|
||||
return '<span style="color: red">' + d.published_status + '</span>';
|
||||
} else {
|
||||
return '<span style="color: green">' + d.published_status + '</span>';
|
||||
}
|
||||
},
|
||||
// field: "published_status",
|
||||
}, {
|
||||
title: "采集时间",
|
||||
field: "created_at",
|
||||
}, {
|
||||
title: "来源链接",
|
||||
field: "source_url",
|
||||
}, {
|
||||
title: "操作",
|
||||
toolbar: "#table-bar",
|
||||
align: "center",
|
||||
fixed: "right",
|
||||
width: 230,
|
||||
}
|
||||
];
|
||||
|
||||
// 渲染表格
|
||||
function render() {
|
||||
table.render({
|
||||
elem: "#data-table",
|
||||
url: INDEX_API,
|
||||
page: true,
|
||||
cols: [cols],
|
||||
skin: "line",
|
||||
size: "lg",
|
||||
toolbar: "#table-toolbar",
|
||||
autoSort: false,
|
||||
defaultToolbar: [{
|
||||
title: "刷新",
|
||||
layEvent: "refresh",
|
||||
icon: "layui-icon-refresh",
|
||||
}, "filter", "print", "exports"],
|
||||
done: function () {
|
||||
layer.photos({photos: 'div[lay-id="data-table"]', anim: 5});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 获取表格中下拉或树形组件数据
|
||||
let apis = [];
|
||||
apis.push(["roles", "/role/select?format=select"]);
|
||||
let apiResults = {};
|
||||
apiResults["roles"] = [];
|
||||
let count = apis.length;
|
||||
layui.each(apis, function (k, item) {
|
||||
let [field, url] = item;
|
||||
$.ajax({
|
||||
url: url,
|
||||
dateType: "json",
|
||||
success: function (res) {
|
||||
if (res.code) {
|
||||
return layui.popup.failure(res.msg);
|
||||
}
|
||||
|
||||
function travel(items) {
|
||||
for (let k in items) {
|
||||
let item = items[k];
|
||||
apiResults[field][item.value] = item.name;
|
||||
if (item.children) {
|
||||
travel(item.children);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
travel(res.data);
|
||||
},
|
||||
complete: function () {
|
||||
if (--count === 0) {
|
||||
render();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
if (!count) {
|
||||
render();
|
||||
}
|
||||
|
||||
// 编辑或删除行事件
|
||||
table.on("tool(data-table)", function (obj) {
|
||||
if (obj.event === "edit") {
|
||||
edit(obj);
|
||||
}
|
||||
if (obj.event === "delete") {
|
||||
alert('未生效');
|
||||
}
|
||||
|
||||
// 预发布
|
||||
if (obj.event === 'pre-publish') {
|
||||
console.log(obj.data.id)
|
||||
layer.confirm('确定发布吗?', function (index) {
|
||||
// obj.del(); // 删除对应行(tr)的 DOM 结构,并更新缓存
|
||||
// layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: PRE_PUBLISH_API,
|
||||
data: {
|
||||
id: obj.data.id
|
||||
},
|
||||
dataType: "json",
|
||||
type: "post",
|
||||
success: (res) => {
|
||||
layer.close(index);
|
||||
if (res.code) {
|
||||
return layui.popup.failure(res.msg);
|
||||
}
|
||||
return layui.popup.success("操作成功", refreshTable);
|
||||
},
|
||||
error: function () {
|
||||
return layui.popup.failure("操作失败");
|
||||
},
|
||||
complete: function () {
|
||||
layer.close(loading);
|
||||
}
|
||||
})
|
||||
// 向后端发送删除请求,执行完毕后,可通过 reloadData 方法完成数据重载
|
||||
/*
|
||||
table.reloadData(id, {
|
||||
scrollPos: 'fixed' // 保持滚动条位置不变 - v2.7.3 新增
|
||||
});
|
||||
*/
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// 表格顶部工具栏事件
|
||||
table.on("toolbar(data-table)", function (obj) {
|
||||
if (obj.event === "add") {
|
||||
add();
|
||||
} else if (obj.event === "refresh") {
|
||||
refreshTable();
|
||||
} else if (obj.event === "batchRemove") {
|
||||
batchRemove(obj);
|
||||
}
|
||||
});
|
||||
|
||||
// 表格顶部搜索事件
|
||||
form.on("submit(table-query)", function (data) {
|
||||
table.reload("data-table", {
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
})
|
||||
return false;
|
||||
});
|
||||
|
||||
// 表格顶部搜索重置事件
|
||||
form.on("submit(table-reset)", function (data) {
|
||||
table.reload("data-table", {
|
||||
where: []
|
||||
})
|
||||
});
|
||||
|
||||
// 表格排序事件
|
||||
table.on("sort(data-table)", function (obj) {
|
||||
table.reload("data-table", {
|
||||
initSort: obj,
|
||||
scrollPos: "fixed",
|
||||
where: {
|
||||
field: obj.field,
|
||||
order: obj.type
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 表格新增数据
|
||||
let add = function () {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: "新增",
|
||||
shade: 0.1,
|
||||
area: [common.isModile() ? "100%" : "98%", common.isModile() ? "100%" : "95%"],
|
||||
content: VIEW_URL
|
||||
});
|
||||
}
|
||||
|
||||
// 表格编辑数据
|
||||
let edit = function (obj) {
|
||||
let value = obj.data[PRIMARY_KEY];
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: "预览",
|
||||
shade: 0.1,
|
||||
area: [common.isModile() ? "100%" : "98%", common.isModile() ? "100%" : "95%"],
|
||||
content: VIEW_URL + "?" + PRIMARY_KEY + "=" + value
|
||||
});
|
||||
}
|
||||
|
||||
// 删除一行
|
||||
let remove = function (obj) {
|
||||
return doRemove(obj.data[PRIMARY_KEY]);
|
||||
}
|
||||
|
||||
// 删除多行
|
||||
let batchRemove = function (obj) {
|
||||
let checkIds = common.checkField(obj, PRIMARY_KEY);
|
||||
if (checkIds === "") {
|
||||
layui.popup.warning("未选中数据");
|
||||
return false;
|
||||
}
|
||||
doRemove(checkIds.split(","));
|
||||
}
|
||||
|
||||
// 执行删除
|
||||
let doRemove = function (ids) {
|
||||
let data = {};
|
||||
data[PRIMARY_KEY] = ids;
|
||||
layer.confirm("确定删除?", {
|
||||
icon: 3,
|
||||
title: "提示"
|
||||
}, function (index) {
|
||||
layer.close(index);
|
||||
let loading = layer.load();
|
||||
$.ajax({
|
||||
url: DELETE_API,
|
||||
data: data,
|
||||
dataType: "json",
|
||||
type: "post",
|
||||
success: function (res) {
|
||||
layer.close(loading);
|
||||
if (res.code) {
|
||||
return layui.popup.failure(res.msg);
|
||||
}
|
||||
return layui.popup.success("操作成功", refreshTable);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
// 刷新表格数据
|
||||
window.refreshTable = function () {
|
||||
table.reloadData("data-table", {
|
||||
scrollPos: "fixed",
|
||||
done: function (res, curr) {
|
||||
if (curr > 1 && res.data && !res.data.length) {
|
||||
curr = curr - 1;
|
||||
table.reloadData("data-table", {
|
||||
page: {
|
||||
curr: curr
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,208 +0,0 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>更新页面</title>
|
||||
<link rel="stylesheet" href="/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/admin/css/reset.css" />
|
||||
<style>
|
||||
.layui-iconpicker .layui-anim {
|
||||
bottom: 42px !important;
|
||||
top: inherit !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<form class="layui-form">
|
||||
|
||||
<div class="mainBox">
|
||||
<div class="main-container mr-5">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">标题</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="title" required lay-verify="required" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">标识</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="key" required lay-verify="required" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">url</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="href" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">上级菜单</label>
|
||||
<div class="layui-input-block">
|
||||
<div name="pid" id="pid" value="0" ></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">图标</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="icon" id="icon" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">类型</label>
|
||||
<div class="layui-input-block">
|
||||
<div name="type" id="type" value="1" ></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">排序</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" name="weight" value="0" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bottom">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="pear-btn pear-btn-primary pear-btn-md" lay-submit="" lay-filter="save">
|
||||
提交
|
||||
</button>
|
||||
<button type="reset" class="pear-btn pear-btn-md">
|
||||
重置
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script src="/component/layui/layui.js?v=2.8.12"></script>
|
||||
<script src="/component/pear/pear.js"></script>
|
||||
<script src="/admin/js/permission.js"></script>
|
||||
<script>
|
||||
|
||||
// 相关接口
|
||||
let PRIMARY_KEY = "id";
|
||||
const VIEW_API = "/admin/api/menu/view" + location.search;
|
||||
const UPDATE_API = "/admin/api/menu/update";
|
||||
|
||||
// 获取行数据
|
||||
layui.use(["form", "util", "popup"], function () {
|
||||
let $ = layui.$;
|
||||
$.ajax({
|
||||
url: VIEW_API,
|
||||
dataType: "json",
|
||||
success: function (res) {
|
||||
|
||||
// 赋值表单
|
||||
layui.each(res.data, function (key, value) {
|
||||
let obj = $('*[name="'+key+'"]');
|
||||
// if (key === "password") {
|
||||
// obj.attr("placeholder", "不更新密码请留空");
|
||||
// return;
|
||||
// }
|
||||
if (typeof obj[0] === "undefined" || !obj[0].nodeName) return;
|
||||
if (obj[0].nodeName.toLowerCase() === "textarea") {
|
||||
obj.html(layui.util.escape(value));
|
||||
} else {
|
||||
obj.attr("value", value);
|
||||
}
|
||||
});
|
||||
|
||||
// 图标选择
|
||||
layui.use(["iconPicker"], function() {
|
||||
layui.iconPicker.render({
|
||||
elem: "#icon",
|
||||
type: "fontClass",
|
||||
page: false,
|
||||
});
|
||||
});
|
||||
|
||||
// 获取上级菜单
|
||||
layui.use(["jquery", "xmSelect", "popup"], function() {
|
||||
layui.$.ajax({
|
||||
url: "/admin/api/menu/list?format=tree&type=0,1",
|
||||
dataType: "json",
|
||||
success: function (res) {
|
||||
let value = layui.$("#pid").attr("value");
|
||||
console.log(value)
|
||||
let initValue = value ? value.split(",") : [];
|
||||
layui.xmSelect.render({
|
||||
el: "#pid",
|
||||
name: "pid",
|
||||
initValue: initValue,
|
||||
tips: "无",
|
||||
toolbar: {show: true, list: ["CLEAR"]},
|
||||
data: res.data,
|
||||
model: {"icon":"hidden","label":{"type":"text"}},
|
||||
clickClose: true,
|
||||
radio: true,
|
||||
tree: {show: true,"strict":false,"clickCheck":true,"clickExpand":false,expandedKeys: initValue},
|
||||
});
|
||||
if (res.code) {
|
||||
return layui.popup.failure(res.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 菜单类型下拉选择
|
||||
layui.use(["jquery", "xmSelect"], function() {
|
||||
let value = layui.$("#type").attr("value");
|
||||
let initValue = value ? value.split(",") : [];
|
||||
layui.xmSelect.render({
|
||||
el: "#type",
|
||||
name: "type",
|
||||
initValue: initValue,
|
||||
data: [{"value":"0","name":"目录"},{"value":"1","name":"菜单"},{"value":"2","name":"权限"}],
|
||||
model: {"icon":"hidden","label":{"type":"text"}},
|
||||
clickClose: true,
|
||||
radio: true,
|
||||
})
|
||||
});
|
||||
|
||||
// ajax产生错误
|
||||
if (res.code) {
|
||||
layui.popup.failure(res.msg);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 提交事件
|
||||
layui.use(["form", "popup"], function () {
|
||||
layui.form.on("submit(save)", function (data) {
|
||||
data.field[PRIMARY_KEY] = layui.url().search[PRIMARY_KEY];
|
||||
layui.$.ajax({
|
||||
url: UPDATE_API,
|
||||
type: "POST",
|
||||
dateType: "json",
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
if (res.code) {
|
||||
return layui.popup.failure(res.msg);
|
||||
}
|
||||
return layui.popup.success("操作成功", function () {
|
||||
parent.refreshTable();
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,151 +0,0 @@
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>更新页面</title>
|
||||
<link rel="stylesheet" href="/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/admin/css/reset.css" />
|
||||
<style>
|
||||
.layui-iconpicker .layui-anim {
|
||||
bottom: 42px !important;
|
||||
top: inherit !important;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<form class="layui-form">
|
||||
|
||||
<div class="mainBox">
|
||||
<div class="main-container mr-5">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">标题</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="title" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">品牌名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="brand" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">源数据</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="source_url" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">类型</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="module" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">图集</label>
|
||||
<div class="layui-input-block">
|
||||
<div id="images"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<style>
|
||||
.images-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
||||
<script id="ID-demo-tpl" type="text/html">
|
||||
<div class="layui-col-space1" style="display:grid;grid-template-columns: auto auto auto;">
|
||||
@{{# d.forEach(function(item) { }}
|
||||
<div class="images-item">
|
||||
<img loading="lazy" style="width: 100%" src="@{{= item.src }}" >
|
||||
</div>
|
||||
@{{# }); }}
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script src="/component/layui/layui.js?v=2.8.12"></script>
|
||||
<script src="/component/pear/pear.js"></script>
|
||||
<script>
|
||||
|
||||
// 相关接口
|
||||
let PRIMARY_KEY = "id";
|
||||
|
||||
// api
|
||||
const VIEW_API = "/admin/api/spider-article/view"
|
||||
const UPDATE_API = "/admin/api/menu/update";
|
||||
|
||||
// 获取行数据
|
||||
layui.use(["form", "util", "popup"], function () {
|
||||
let viewId = layui.url().search['id']
|
||||
let $ = layui.$;
|
||||
$.ajax({
|
||||
url: VIEW_API,
|
||||
data: {
|
||||
id: viewId
|
||||
},
|
||||
method: 'get',
|
||||
dataType: "json",
|
||||
success: function (res) {
|
||||
|
||||
// 赋值表单
|
||||
layui.each(res.data, function (key, value) {
|
||||
let obj = $('*[name="'+key+'"]');
|
||||
// if (key === "password") {
|
||||
// obj.attr("placeholder", "不更新密码请留空");
|
||||
// return;
|
||||
// }
|
||||
if (typeof obj[0] === "undefined" || !obj[0].nodeName) return;
|
||||
if (obj[0].nodeName.toLowerCase() === "textarea") {
|
||||
obj.html(layui.util.escape(value));
|
||||
} else {
|
||||
obj.attr("value", value);
|
||||
}
|
||||
});
|
||||
|
||||
// 图标选择
|
||||
layui.use(["iconPicker"], function() {
|
||||
layui.iconPicker.render({
|
||||
elem: "#icon",
|
||||
type: "fontClass",
|
||||
page: false,
|
||||
});
|
||||
});
|
||||
|
||||
renderImages(res.data.images);
|
||||
|
||||
// ajax产生错误
|
||||
if (res.code) {
|
||||
layui.popup.failure(res.msg);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 渲染图集
|
||||
function renderImages(images) {
|
||||
var laytpl = layui.laytpl;
|
||||
var template = document.getElementById('ID-demo-tpl').innerHTML; // 获取模板字符
|
||||
var target = document.getElementById('images'); // 输出结果的目标元素
|
||||
|
||||
// 渲染并输出结果
|
||||
laytpl(template).render(images, function(html) {
|
||||
target.innerHTML = html;
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
205
storage/view/website/first-column/index.blade.php
Normal file
205
storage/view/website/first-column/index.blade.php
Normal file
@ -0,0 +1,205 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>一级菜单设置</title>
|
||||
<link rel="stylesheet" href="/component/pear/css/pear.css"/>
|
||||
<link rel="stylesheet" href="/admin/css/reset.css"/>
|
||||
<link rel="stylesheet" href="/admin/css/reset.css"/>
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<!-- 顶部查询表单 -->
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<form class="layui-form top-search-from">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">栏目名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="mobile" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label"></label>
|
||||
<button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="table-query">
|
||||
<i class="layui-icon layui-icon-search"></i>查询
|
||||
</button>
|
||||
<button type="reset" class="pear-btn pear-btn-md" lay-submit lay-filter="table-reset">
|
||||
<i class="layui-icon layui-icon-refresh"></i>重置
|
||||
</button>
|
||||
</div>
|
||||
<div class="toggle-btn">
|
||||
<a class="layui-hide">展开<i class="layui-icon layui-icon-down"></i></a>
|
||||
<a class="layui-hide">收起<i class="layui-icon layui-icon-up"></i></a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="data-table" lay-filter="data-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 表格顶部工具栏 -->
|
||||
<script type="text/html" id="table-toolbar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
|
||||
<i class="layui-icon layui-icon-add-1"></i>新增
|
||||
</button>
|
||||
</script>
|
||||
|
||||
<!-- 表格行工具栏 -->
|
||||
<script type="text/html" id="table-bar">
|
||||
<button class="pear-btn pear-btn-xs tool-btn" lay-event="edit">编辑</button>
|
||||
</script>
|
||||
|
||||
<script src="/component/layui/layui.js?v=2.8.12"></script>
|
||||
<script src="/component/pear/pear.js"></script>
|
||||
<script src="/admin/js/permission.js"></script>
|
||||
<script src="/admin/js/common.js"></script>
|
||||
<script>
|
||||
|
||||
// 相关常量
|
||||
const PRIMARY_KEY = "id";
|
||||
|
||||
const INDEX_API = '/admin/api/website/first-column';
|
||||
const VIEW_API = "/admin/api/website/first-column/view";
|
||||
const VIEW_URL = "/admin/website/first-column/view";
|
||||
const INSERT_API = "/admin/api/website/first-column/insert";
|
||||
const INSERT_URL = "/admin/website/first-column/insert";
|
||||
|
||||
// 字段 创建时间 created_at
|
||||
layui.use(["laydate"], function () {
|
||||
layui.laydate.render({
|
||||
elem: "#created_at",
|
||||
range: ["#created_at-date-start", "#created_at-date-end"],
|
||||
});
|
||||
})
|
||||
|
||||
// 表格渲染
|
||||
layui.use(["table", "form", "common", "popup", "util"], function () {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.$;
|
||||
let common = layui.common;
|
||||
let util = layui.util;
|
||||
|
||||
// 表头参数
|
||||
let cols = [
|
||||
{
|
||||
type: "checkbox"
|
||||
}, {
|
||||
title: "所属网站",
|
||||
field: "website",
|
||||
},{
|
||||
title: "栏目名称",
|
||||
field: "name",
|
||||
}, {
|
||||
title: "操作",
|
||||
toolbar: "#table-bar",
|
||||
align: "center",
|
||||
fixed: "right",
|
||||
width: 230,
|
||||
}
|
||||
];
|
||||
|
||||
// 渲染表格
|
||||
function render() {
|
||||
table.render({
|
||||
elem: "#data-table",
|
||||
url: INDEX_API,
|
||||
page: true,
|
||||
cols: [cols],
|
||||
skin: "line",
|
||||
size: "lg",
|
||||
toolbar: "#table-toolbar",
|
||||
autoSort: false,
|
||||
defaultToolbar: [{
|
||||
title: "刷新",
|
||||
layEvent: "refresh",
|
||||
icon: "layui-icon-refresh",
|
||||
}, "filter", "print", "exports"],
|
||||
done: function () {
|
||||
layer.photos({photos: 'div[lay-id="data-table"]', anim: 5});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
render();
|
||||
|
||||
// 编辑或删除行事件
|
||||
table.on("tool(data-table)", function (obj) {
|
||||
if (obj.event === "edit") {
|
||||
edit(obj);
|
||||
}
|
||||
});
|
||||
|
||||
// 表格顶部工具栏事件
|
||||
table.on("toolbar(data-table)", function (obj) {
|
||||
if (obj.event === "add") {
|
||||
add();
|
||||
}
|
||||
});
|
||||
|
||||
// 表格新增数据
|
||||
let add = function () {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: "新增",
|
||||
shade: 0.1,
|
||||
area: [common.isModile() ? "100%" : "98%", common.isModile() ? "100%" : "95%"],
|
||||
content: INSERT_URL
|
||||
});
|
||||
}
|
||||
|
||||
// 表格编辑数据
|
||||
let edit = function (obj) {
|
||||
let value = obj.data['id'];
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: "修改",
|
||||
shade: 0.1,
|
||||
area: [common.isModile() ? "100%" : "98%", common.isModile() ? "100%" : "95%"],
|
||||
content: VIEW_URL + "?" + PRIMARY_KEY + "=" + value
|
||||
});
|
||||
}
|
||||
|
||||
// 删除一行
|
||||
let remove = function (obj) {
|
||||
return doRemove(obj.data[PRIMARY_KEY]);
|
||||
}
|
||||
|
||||
// 删除多行
|
||||
let batchRemove = function (obj) {
|
||||
let checkIds = common.checkField(obj, PRIMARY_KEY);
|
||||
if (checkIds === "") {
|
||||
layui.popup.warning("未选中数据");
|
||||
return false;
|
||||
}
|
||||
doRemove(checkIds.split(","));
|
||||
}
|
||||
|
||||
// 刷新表格数据
|
||||
window.refreshTable = function () {
|
||||
table.reloadData("data-table", {
|
||||
scrollPos: "fixed",
|
||||
done: function (res, curr) {
|
||||
if (curr > 1 && res.data && !res.data.length) {
|
||||
curr = curr - 1;
|
||||
table.reloadData("data-table", {
|
||||
page: {
|
||||
curr: curr
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
90
storage/view/website/first-column/insert.blade.php
Normal file
90
storage/view/website/first-column/insert.blade.php
Normal file
@ -0,0 +1,90 @@
|
||||
<?php
|
||||
$platforms = call_user_func(function () {
|
||||
return \App\Model\AppWebsiteConfig::query()->where('is_delete', 0)->get()->toArray();
|
||||
});
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>insert</title>
|
||||
<link rel="stylesheet" href="/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/admin/css/reset.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<form class="layui-form" action="">
|
||||
<div class="main-container mr-5">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">发布平台</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="website" lay-search="">
|
||||
<option value="">请选择</option>
|
||||
<?php foreach ($platforms ?: [] as $platform): ?>
|
||||
<option value="<?= $platform['id'] ?>"><?= $platform['app_name'] ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目地址</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="url" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目描述</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="desc" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="pear-btn pear-btn-primary pear-btn-md" lay-submit="" lay-filter="insert">
|
||||
提交
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/component/layui/layui.js?v=2.8.12"></script>
|
||||
<script src="/component/pear/pear.js"></script>
|
||||
<script>
|
||||
// api
|
||||
const INSERT_API = "/admin/api/website/first-column/insert";
|
||||
const UPLOAD_API = '/upload/image' // 上传图片
|
||||
|
||||
layui.use(['upload', 'jquery', 'popup'], function(){
|
||||
const $ = layui.jquery;
|
||||
const upload = layui.upload;
|
||||
|
||||
layui.form.on("submit(insert)", function (data) {
|
||||
console.log(data)
|
||||
layui.$.ajax({
|
||||
url: INSERT_API,
|
||||
type: "POST",
|
||||
dateType: "json",
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
if (res.code) {
|
||||
return layui.popup.failure(res.msg);
|
||||
}
|
||||
|
||||
return layui.popup.success("操作成功", function () {
|
||||
parent.refreshTable();
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
127
storage/view/website/first-column/view.blade.php
Normal file
127
storage/view/website/first-column/view.blade.php
Normal file
@ -0,0 +1,127 @@
|
||||
<?php
|
||||
$platforms = call_user_func(function () {
|
||||
return \App\Model\AppWebsiteConfig::query()->where('is_delete', 0)->get()->toArray();
|
||||
});
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>更新</title>
|
||||
<link rel="stylesheet" href="/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/admin/css/reset.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<form class="layui-form" action="">
|
||||
<input type="hidden" name="id" autocomplete="off">
|
||||
<div class="main-container mr-5">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">发布平台</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="website" lay-search="">
|
||||
<option value="">请选择</option>
|
||||
<?php foreach ($platforms ?: [] as $platform): ?>
|
||||
<option value="<?= $platform['id'] ?>"><?= $platform['app_name'] ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目地址</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="url" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目描述</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="desc" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="pear-btn pear-btn-primary pear-btn-md" lay-submit="" lay-filter="save">
|
||||
提交
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div id="test"></div>
|
||||
<script src="/component/layui/layui.js?v=2.8.12"></script>
|
||||
<script src="/component/pear/pear.js"></script>
|
||||
<script>
|
||||
// API
|
||||
const VIEW_API = "/admin/api/website/first-column/view"; // 获取关键词数据
|
||||
const SAVE_API = "/admin/api/website/first-column/save"; // 重新保存数据
|
||||
const UPLOAD_API = '/upload/image' // 上传图片
|
||||
|
||||
layui.use(['upload', 'jquery', 'popup', 'form'], function(){
|
||||
const $ = layui.jquery;
|
||||
layui.form.on("submit(save)", function (data) {
|
||||
layui.$.ajax({
|
||||
url: SAVE_API,
|
||||
type: "POST",
|
||||
dateType: "json",
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
|
||||
if (res.code) {
|
||||
return layui.popup.failure(res.msg);
|
||||
}
|
||||
return layui.popup.success("操作成功", function () {
|
||||
parent.refreshTable();
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
initViewData()
|
||||
function initViewData() {
|
||||
let viewId = layui.url().search['id']
|
||||
$.ajax({
|
||||
url: VIEW_API,
|
||||
data: {
|
||||
id: viewId
|
||||
},
|
||||
method: 'get',
|
||||
dataType: "json",
|
||||
success: function (res) {
|
||||
// ajax产生错误
|
||||
if (res.code) {
|
||||
layui.popup.failure(res.msg);
|
||||
}
|
||||
|
||||
// 赋值表单
|
||||
layui.each(res.data, function (key, value) {
|
||||
let obj = $('*[name="'+key+'"]');
|
||||
// if (key === "password") {
|
||||
// obj.attr("placeholder", "不更新密码请留空");
|
||||
// return;
|
||||
// }
|
||||
if (typeof obj[0] === "undefined" || !obj[0].nodeName) return;
|
||||
if (obj[0].nodeName.toLowerCase() === "textarea") {
|
||||
obj.html(layui.util.escape(value));
|
||||
} else {
|
||||
obj.attr("value", value);
|
||||
}
|
||||
});
|
||||
|
||||
$("select[name=website]").val(res.data.website);
|
||||
layui.form.render("select");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -62,14 +62,14 @@
|
||||
<input type="text" name="app_filing_url" 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="radio" name="template" value="2" title="模板2">
|
||||
<input type="radio" name="template" value="3" title="模板3">
|
||||
{{-- <input type="radio" name="sex" value="nv" title="女" checked>--}}
|
||||
</div>
|
||||
</div>
|
||||
{{-- <div class="layui-form-item">--}}
|
||||
{{-- <label class="layui-form-label">模板</label>--}}
|
||||
{{-- <div class="layui-input-inline layui-input-wrap">--}}
|
||||
{{-- <input type="radio" name="template" value="2" title="模板2">--}}
|
||||
{{-- <input type="radio" name="template" value="3" title="模板3">--}}
|
||||
{{-- --}}{{-- <input type="radio" name="sex" value="nv" title="女" checked>--}}
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">百度站长验证</label>
|
||||
<div class="layui-input-inline layui-input-wrap">
|
||||
|
208
storage/view/website/second-column/index.blade.php
Normal file
208
storage/view/website/second-column/index.blade.php
Normal file
@ -0,0 +1,208 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>一级菜单设置</title>
|
||||
<link rel="stylesheet" href="/component/pear/css/pear.css"/>
|
||||
<link rel="stylesheet" href="/admin/css/reset.css"/>
|
||||
<link rel="stylesheet" href="/admin/css/reset.css"/>
|
||||
</head>
|
||||
<body class="pear-container">
|
||||
<!-- 顶部查询表单 -->
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<form class="layui-form top-search-from">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">栏目名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="mobile" value="" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label"></label>
|
||||
<button class="pear-btn pear-btn-md pear-btn-primary" lay-submit lay-filter="table-query">
|
||||
<i class="layui-icon layui-icon-search"></i>查询
|
||||
</button>
|
||||
<button type="reset" class="pear-btn pear-btn-md" lay-submit lay-filter="table-reset">
|
||||
<i class="layui-icon layui-icon-refresh"></i>重置
|
||||
</button>
|
||||
</div>
|
||||
<div class="toggle-btn">
|
||||
<a class="layui-hide">展开<i class="layui-icon layui-icon-down"></i></a>
|
||||
<a class="layui-hide">收起<i class="layui-icon layui-icon-up"></i></a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 数据表格 -->
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="data-table" lay-filter="data-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 表格顶部工具栏 -->
|
||||
<script type="text/html" id="table-toolbar">
|
||||
<button class="pear-btn pear-btn-primary pear-btn-md" lay-event="add">
|
||||
<i class="layui-icon layui-icon-add-1"></i>新增
|
||||
</button>
|
||||
</script>
|
||||
|
||||
<!-- 表格行工具栏 -->
|
||||
<script type="text/html" id="table-bar">
|
||||
<button class="pear-btn pear-btn-xs tool-btn" lay-event="edit">编辑</button>
|
||||
</script>
|
||||
|
||||
<script src="/component/layui/layui.js?v=2.8.12"></script>
|
||||
<script src="/component/pear/pear.js"></script>
|
||||
<script src="/admin/js/permission.js"></script>
|
||||
<script src="/admin/js/common.js"></script>
|
||||
<script>
|
||||
|
||||
// 相关常量
|
||||
const PRIMARY_KEY = "id";
|
||||
|
||||
const INDEX_API = '/admin/api/website/second-column';
|
||||
const VIEW_API = "/admin/api/website/second-column/view";
|
||||
const VIEW_URL = "/admin/website/second-column/view";
|
||||
const INSERT_API = "/admin/api/website/second-column/insert";
|
||||
const INSERT_URL = "/admin/website/second-column/insert";
|
||||
|
||||
// 字段 创建时间 created_at
|
||||
layui.use(["laydate"], function () {
|
||||
layui.laydate.render({
|
||||
elem: "#created_at",
|
||||
range: ["#created_at-date-start", "#created_at-date-end"],
|
||||
});
|
||||
})
|
||||
|
||||
// 表格渲染
|
||||
layui.use(["table", "form", "common", "popup", "util"], function () {
|
||||
let table = layui.table;
|
||||
let form = layui.form;
|
||||
let $ = layui.$;
|
||||
let common = layui.common;
|
||||
let util = layui.util;
|
||||
|
||||
// 表头参数
|
||||
let cols = [
|
||||
{
|
||||
type: "checkbox"
|
||||
},{
|
||||
title: "所属网站",
|
||||
field: "website",
|
||||
},{
|
||||
title: "一级栏目",
|
||||
field: "rid",
|
||||
},{
|
||||
title: "二级栏目名称",
|
||||
field: "name",
|
||||
}, {
|
||||
title: "操作",
|
||||
toolbar: "#table-bar",
|
||||
align: "center",
|
||||
fixed: "right",
|
||||
width: 230,
|
||||
}
|
||||
];
|
||||
|
||||
// 渲染表格
|
||||
function render() {
|
||||
table.render({
|
||||
elem: "#data-table",
|
||||
url: INDEX_API,
|
||||
page: true,
|
||||
cols: [cols],
|
||||
skin: "line",
|
||||
size: "lg",
|
||||
toolbar: "#table-toolbar",
|
||||
autoSort: false,
|
||||
defaultToolbar: [{
|
||||
title: "刷新",
|
||||
layEvent: "refresh",
|
||||
icon: "layui-icon-refresh",
|
||||
}, "filter", "print", "exports"],
|
||||
done: function () {
|
||||
layer.photos({photos: 'div[lay-id="data-table"]', anim: 5});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
render();
|
||||
|
||||
// 编辑或删除行事件
|
||||
table.on("tool(data-table)", function (obj) {
|
||||
if (obj.event === "edit") {
|
||||
edit(obj);
|
||||
}
|
||||
});
|
||||
|
||||
// 表格顶部工具栏事件
|
||||
table.on("toolbar(data-table)", function (obj) {
|
||||
if (obj.event === "add") {
|
||||
add();
|
||||
}
|
||||
});
|
||||
|
||||
// 表格新增数据
|
||||
let add = function () {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: "新增",
|
||||
shade: 0.1,
|
||||
area: [common.isModile() ? "100%" : "98%", common.isModile() ? "100%" : "95%"],
|
||||
content: INSERT_URL
|
||||
});
|
||||
}
|
||||
|
||||
// 表格编辑数据
|
||||
let edit = function (obj) {
|
||||
let value = obj.data['id'];
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: "修改",
|
||||
shade: 0.1,
|
||||
area: [common.isModile() ? "100%" : "98%", common.isModile() ? "100%" : "95%"],
|
||||
content: VIEW_URL + "?" + PRIMARY_KEY + "=" + value
|
||||
});
|
||||
}
|
||||
|
||||
// 删除一行
|
||||
let remove = function (obj) {
|
||||
return doRemove(obj.data[PRIMARY_KEY]);
|
||||
}
|
||||
|
||||
// 删除多行
|
||||
let batchRemove = function (obj) {
|
||||
let checkIds = common.checkField(obj, PRIMARY_KEY);
|
||||
if (checkIds === "") {
|
||||
layui.popup.warning("未选中数据");
|
||||
return false;
|
||||
}
|
||||
doRemove(checkIds.split(","));
|
||||
}
|
||||
|
||||
// 刷新表格数据
|
||||
window.refreshTable = function () {
|
||||
table.reloadData("data-table", {
|
||||
scrollPos: "fixed",
|
||||
done: function (res, curr) {
|
||||
if (curr > 1 && res.data && !res.data.length) {
|
||||
curr = curr - 1;
|
||||
table.reloadData("data-table", {
|
||||
page: {
|
||||
curr: curr
|
||||
},
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
120
storage/view/website/second-column/insert.blade.php
Normal file
120
storage/view/website/second-column/insert.blade.php
Normal file
@ -0,0 +1,120 @@
|
||||
<?php
|
||||
$platforms = call_user_func(function () {
|
||||
return \App\Model\AppWebsiteConfig::query()->where('is_delete', 0)->get()->toArray();
|
||||
});
|
||||
|
||||
$firstColumn = call_user_func(function () {
|
||||
return json_encode(\App\Model\AppNewsColumn::query()->where('is_delete', 0)->get()->groupBy('website')->toArray());
|
||||
});
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>insert</title>
|
||||
<link rel="stylesheet" href="/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/admin/css/reset.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<form class="layui-form" action="">
|
||||
<div class="main-container mr-5">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">平台</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="website" name="website" lay-search="" lay-filter="website">
|
||||
<option value="">请选择</option>
|
||||
<?php foreach ($platforms ?: [] as $platform): ?>
|
||||
<option value="<?= $platform['id'] ?>"><?= $platform['app_name'] ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">一级栏目</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="first-column" name="rid" lay-search="" lay-filter="first-column">
|
||||
<option value="">请选择</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目地址</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="url" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目描述</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="desc" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="pear-btn pear-btn-primary pear-btn-md" lay-submit="" lay-filter="insert">
|
||||
提交
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<script src="/component/layui/layui.js?v=2.8.12"></script>
|
||||
<script src="/component/pear/pear.js"></script>
|
||||
<script>
|
||||
// api
|
||||
const INSERT_API = "/admin/api/website/second-column/insert";
|
||||
const UPLOAD_API = '/upload/image' // 上传图片
|
||||
|
||||
layui.use(['upload', 'jquery', 'popup', 'form'], function(){
|
||||
const $ = layui.jquery;
|
||||
const form = layui.form;
|
||||
|
||||
// 站点
|
||||
form.on('select(website)', function(data){
|
||||
const val = data.value
|
||||
var firstColumn = JSON.parse('<?= $firstColumn ?>')
|
||||
console.log(firstColumn[val])
|
||||
let html = '<option value="">请选择</option>'
|
||||
if (firstColumn[val]) {
|
||||
firstColumn[val].forEach(item => {
|
||||
html += `<option value="${item.id}">${item.name}</option>`
|
||||
})
|
||||
console.log(html)
|
||||
}
|
||||
|
||||
$('#first-column').html(html);
|
||||
form.render('select'); // 重新渲染 select 以应用新的选项和样式
|
||||
});
|
||||
|
||||
layui.form.on("submit(insert)", function (data) {
|
||||
console.log(data)
|
||||
layui.$.ajax({
|
||||
url: INSERT_API,
|
||||
type: "POST",
|
||||
dateType: "json",
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
if (res.code) {
|
||||
return layui.popup.failure(res.msg);
|
||||
}
|
||||
|
||||
return layui.popup.success("操作成功", function () {
|
||||
parent.refreshTable();
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
166
storage/view/website/second-column/view.blade.php
Normal file
166
storage/view/website/second-column/view.blade.php
Normal file
@ -0,0 +1,166 @@
|
||||
<?php
|
||||
$platforms = call_user_func(function () {
|
||||
return \App\Model\AppWebsiteConfig::query()->where('is_delete', 0)->get()->toArray();
|
||||
});
|
||||
|
||||
$firstColumn = call_user_func(function () {
|
||||
return json_encode(\App\Model\AppNewsColumn::query()->where('is_delete', 0)->get()->groupBy('website')->toArray());
|
||||
});
|
||||
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-cn">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>更新</title>
|
||||
<link rel="stylesheet" href="/component/pear/css/pear.css" />
|
||||
<link rel="stylesheet" href="/admin/css/reset.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<form class="layui-form" action="">
|
||||
<input type="hidden" name="id" autocomplete="off">
|
||||
<div class="main-container mr-5">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">平台</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="website" lay-search="" lay-filter="website">
|
||||
<option value="">请选择</option>
|
||||
<?php foreach ($platforms ?: [] as $platform): ?>
|
||||
<option value="<?= $platform['id'] ?>"><?= $platform['app_name'] ?></option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">一级栏目</label>
|
||||
<div class="layui-input-block">
|
||||
<select id="first-column" name="rid" lay-search="" lay-filter="first-column">
|
||||
<option value="">请选择</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="name" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目地址</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="url" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required">栏目描述</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="desc" value="" required lay-verify="required" class="layui-input" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="button-container">
|
||||
<button type="submit" class="pear-btn pear-btn-primary pear-btn-md" lay-submit="" lay-filter="save">
|
||||
提交
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div id="test"></div>
|
||||
<script src="/component/layui/layui.js?v=2.8.12"></script>
|
||||
<script src="/component/pear/pear.js"></script>
|
||||
<script>
|
||||
// API
|
||||
const VIEW_API = "/admin/api/website/second-column/view"; // 获取关键词数据
|
||||
const SAVE_API = "/admin/api/website/second-column/save"; // 重新保存数据
|
||||
const UPLOAD_API = '/upload/image' // 上传图片
|
||||
|
||||
layui.use(['upload', 'jquery', 'popup', 'form'], function(){
|
||||
const $ = layui.jquery;
|
||||
const form = layui.form
|
||||
const col = JSON.parse('<?= $firstColumn ?>')
|
||||
layui.form.on("submit(save)", function (data) {
|
||||
layui.$.ajax({
|
||||
url: SAVE_API,
|
||||
type: "POST",
|
||||
dateType: "json",
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
|
||||
if (res.code) {
|
||||
return layui.popup.failure(res.msg);
|
||||
}
|
||||
return layui.popup.success("操作成功", function () {
|
||||
parent.refreshTable();
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
// 站点
|
||||
form.on('select(website)', function(data){
|
||||
const val = data.value
|
||||
let html = '<option value="">请选择</option>'
|
||||
if (col[val]) {
|
||||
col[val].forEach(item => {
|
||||
html += `<option value="${item.id}">${item.name}</option>`
|
||||
})
|
||||
}
|
||||
|
||||
$('#first-column').html(html);
|
||||
form.render('select'); // 重新渲染 select 以应用新的选项和样式
|
||||
});
|
||||
|
||||
initViewData()
|
||||
function initViewData() {
|
||||
let viewId = layui.url().search['id']
|
||||
$.ajax({
|
||||
url: VIEW_API,
|
||||
data: {
|
||||
id: viewId
|
||||
},
|
||||
method: 'get',
|
||||
dataType: "json",
|
||||
success: function (res) {
|
||||
// ajax产生错误
|
||||
if (res.code) {
|
||||
layui.popup.failure(res.msg);
|
||||
}
|
||||
|
||||
// 赋值表单
|
||||
layui.each(res.data, function (key, value) {
|
||||
let obj = $('*[name="'+key+'"]');
|
||||
// if (key === "password") {
|
||||
// obj.attr("placeholder", "不更新密码请留空");
|
||||
// return;
|
||||
// }
|
||||
if (typeof obj[0] === "undefined" || !obj[0].nodeName) return;
|
||||
if (obj[0].nodeName.toLowerCase() === "textarea") {
|
||||
obj.html(layui.util.escape(value));
|
||||
} else {
|
||||
obj.attr("value", value);
|
||||
}
|
||||
});
|
||||
|
||||
$("select[name=website]").val(res.data.website);
|
||||
const val = res.data.website
|
||||
let html = '<option value="">请选择</option>'
|
||||
if (col[val]) {
|
||||
col[val].forEach(item => {
|
||||
html += `<option value="${item.id}">${item.name}</option>`
|
||||
})
|
||||
}
|
||||
|
||||
$('#first-column').html(html);
|
||||
$("select[name=rid]").val(res.data.rid);
|
||||
layui.form.render("select");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -69,14 +69,14 @@
|
||||
<input type="text" name="app_baidu_zhanzhang" 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="radio" name="template" value="2" title="模板2">
|
||||
<input type="radio" name="template" value="3" title="模板3">
|
||||
{{-- <div class="layui-form-item">--}}
|
||||
{{-- <label class="layui-form-label">模板</label>--}}
|
||||
{{-- <div class="layui-input-inline layui-input-wrap">--}}
|
||||
{{-- <input type="radio" name="template" value="2" title="模板2">--}}
|
||||
{{-- <input type="radio" name="template" value="3" title="模板3">--}}
|
||||
{{-- <input type="radio" name="sex" value="nv" title="女" checked>--}}
|
||||
</div>
|
||||
</div>
|
||||
{{-- </div>--}}
|
||||
{{-- </div>--}}
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">extra_tag</label>
|
||||
<div class="layui-input-inline layui-input-wrap">
|
||||
|
Reference in New Issue
Block a user