增加mfgname 的管理页面功能

This commit is contained in:
panx
2024-08-18 21:55:49 +08:00
parent f2b899bd0b
commit 3566f03653
5 changed files with 611 additions and 0 deletions

View File

@@ -0,0 +1,171 @@
<?php
declare (strict_types = 1);
namespace app\admin\controller;
use app\AdminController;
use Webman\Http\Request;
use app\common\model\PdmMfgName as PdmMfgNameModel;
use support\Response;
/**
* pdm_mfg_name
* 制造商名录
* <!--partmanage-->
* Class PdmMfgName
* @package app\admin\controller
*/
class PdmMfgName extends AdminController
{
/**
* PdmMfgName模型对象
* @var \app\common\model\PdmMfgName
*/
public function __construct()
{
parent::__construct();
$this->model = new PdmMfgNameModel;
}
/**
* 默认生成的方法为index/add/edit/del/status 五个方法
* 当创建CURD的时候DIY的函数体和模板为空请自行编写代码
*/
/**
* 获取资源列表
* @param array $params
* @return array
* @throws DataNotFoundException
* @throws DbException
* @throws ModelNotFoundException
*/
public static function dataList(array $params): array
{
$where = array();
if (!empty($params['mfgname'])) {
$where[] = ['mfgname','like','%'.$params['mfgname'].'%'];
}
if (!empty($params['status'])) {
$where[] = ['status','like','%'.$params['status'].'%'];
}
$model = new PdmMfgNameModel();
$count = $model->where($where)->count();
$list = $model->where($where)->order('sort asc')->select()->toArray();
foreach ($list as $key => $value) {
$list[$key]['mfgname'] = __($value['mfgname']);
}
// $users = array();
$users = $model->usernames();
// throw new \Exception(json_encode($users));
foreach ($list as $key => $value) {
foreach ($users as $keyuser => $valueuser) {
if ($value['createrid'] == $valueuser['id']) {
// $list[$key]['createrid'] = __($valueuser['name']);
$list[$key]['createrid'] = __($valueuser['nickname']);
break;
}else{
$list[$key]['createrid'] =$list[$key]['createrid'].'|'. __('未知用户');
}
}
}
return [$count, $list];
}
/**
* 获取资源列表
* return Response
*/
public function index(): Response
{
if (request()->isAjax()) {
list($count, $list) = PdmMfgName::dataList(request()->all());
$rules = list_to_tree($list,'id','pid','children',0);
return $this->success('获取成功', '/',$rules, $count);
}
return view('/pdm_mfg_name/index');
}
/**
* 添加节点数据
* @return Response
*/
public function add(): Response
{
if (request()->isPost()) {
$post = \request()->post();
// validate(\app\common\validate\system\AdminRules::class . '.add')->check($post);
$userid = get_admin_id();
$post['createrid'] = $userid ;
if ($this->model->create($post)) {
return $this->success('添加成功!');
}else{
return $this->error('添加失败!');
}
}
$data = $this->getTableFields();
$data['pid'] = input('pid', 0);
$data['auth'] = 1;
$data['type'] = 1;
list($count, $list) = PdmMfgName::dataList(request()->all());
return view('/pdm_mfg_name/add', [
'data' => $data,
'rules' => json_encode( list_to_tree($list), JSON_UNESCAPED_UNICODE),
]);
}
/**
* 编辑节点数据
* @return Response
* @throws DbException
* @throws DataNotFoundException
* @throws ModelNotFoundException
*/
public function edit(): Response
{
$id = input('id', 0);
$data = $this->model->find($id);
if (request()->isPost()) {
$post = \request()->post();
// validate(\app\common\validate\system\AdminRules::class . '.edit')->check($post);
if ($this->model->update($post)) {
return $this->success('更新成功!');
}else{
return $this->error('更新失败!');
}
}
list($count, $list) = PdmMfgName::dataList(request()->all());
return view('/pdm_mfg_name/add', [
'data' => $data,
'rules' => json_encode( list_to_tree($list), JSON_UNESCAPED_UNICODE),
]);
}
/**
* 删除节点数据
* @return Response
* @throws DbException
*/
public function del(): Response
{
$id = input('id');
if (!empty($id)) {
// 查询子节点
if ($this->model->where('pid',$id)->count()) {
return $this->error('当前菜单存在子菜单!');
}
// 删除单个
if ($this->model::destroy($id)) {
return $this->success('删除菜单成功!');
}
}
return $this->error('删除失败,请检查您的参数!');
}
}

View File

@@ -0,0 +1,156 @@
<include file="/public/header" />
<!-- // 重定位style -->
<!--partmanage-->
<link href="__STATICADMIN__css/content.css" rel="stylesheet" type="text/css" />
<div class="layui-fluid">
<form class="layui-form layui-card" >
<div class="layui-card-body">
<gt name="$data.id" value="0">
<input type="text" name="id" value="{$data.id}" hidden="">
<else/>
<input type="text" name="id" value="" hidden="">
</gt>
<div class="layui-form-item layui-row" ><div class="layui-col-md6 layui-grid-0" data-index="0">
<div class="layui-form-item" >
<label class="layui-form-label">上级分类</label>
<div class="layui-input-block">
<div id="treeNode" name="pid" lay-filter="treeNode" data-pid="{$data.pid|default=0}"></div>
</div>
<label class="layui-form-label"><font color="red">* </font>制造商名称</label>
<div class="layui-input-block"><input class="layui-input" name="mfgname" placeholder="请输入" required="1" lay-verify=""value="{$data.mfgname}" ></div>
</div>
<div class="layui-form-item" >
<div class="layui-input-block"><div class="layui-input-inline">
<!-- <label class="layui-form-label"> -->
<font color="blue">* </font>制造商名称格式eg.TI德州仪器
<!-- </label> -->
<i class="layui-icon layui-icon-about" lay-tips="消息提示:如果无中文名称,可以忽略。" data-offset="4"></i>
</div>
</div>
</div>
</div><div class="layui-col-md6 layui-grid-1" data-index="1"><div class="layui-form-item" >
<label class="layui-form-label">网站主页</label>
<div class="layui-input-block"><input class="layui-input" name="mfgsite" placeholder="请输入" lay-verify=""value="{$data.mfgsite}" ></div>
</div>
<div class="layui-form-item" >
<div class="layui-input-block"><div class="layui-input-inline">
<!-- <label class="layui-form-label"> -->
<font color="blue">* </font>网站主页格式eg.https://www.ti.com
<!-- </label> -->
<i class="layui-icon layui-icon-about" lay-tips="消息提示:如果无主页路径,可以忽略。" data-offset="4"></i>
</div>
</div>
</div>
</div>
</div>
<div class="layui-form-item" >
<label class="layui-form-label">备注</label>
<div class="layui-input-block"><textarea class="layui-textarea" name="mfgrmark" placeholder="请输入" >{$data.mfgrmark}</textarea></div>
</div>
<div class="layui-form-item" >
<div class="layui-input-block"><hr class="layui-border-black"></div>
<label class="layui-form-label">排序</label>
<div class="layui-input-block">
<!-- <input class="layui-input" name="sort" placeholder="{:__('默认自动生成')}" required="" lay-verify=""value="{$data.sort}" > -->
<input name="sort" placeholder="{:__('默认自动生成')}" type="number" value="{$data.sort}" class="layui-input"/>
</div>
</div>
<div class="layui-form-item" >
<label class="layui-form-label">注释</label>
<div class="layui-input-block"> <textarea id="content" lay-editor class="layui-hide" name="content" type="layui-textarea" >{$data.content}</textarea></div>
</div>
<div class="layui-footer layui-form-footer">
<button class="layui-btn layui-btn-primary" type="button" sa-event="closeDialog">{:__('取消')}</button>
<button class="layui-btn" type="button" lay-filter="submitIframe" lay-submit>{:__('提交')}</button>
</div>
</form>
</div>
<include file="/public/static" />
<include file="/public/footer" />
<script>
layui.use(['jquery', 'iconPicker','form'],function() {
let $ = layui.jquery;
let show = layui.show;
let form = layui.form;
let iconPicker = layui.iconPicker;
let data = {$rules|raw};
// 提交参数
form.on("submit(submit)",function(data){
$.post("{:Url('/PdmMfgName/')}"+app_Config.action,data.field,function(res){
if(res.code === 200){
show.msg(res.msg);
parent.layui.table.reloadData('lay-tableList');
parent.layer.closeAll();
// 调用接口更新菜单
top.layui.admin.reloadLayout();
}else{
show.error(res.msg);
}
});
return false;
})
xmSelect.render({
el: '#treeNode',
tips: '请选择上级菜单',
name: 'pid',
height: '260px',
data: data,
radio: true,
clickClose: true,
initValue:[$('#treeNode').data('pid')],
prop: {
value: 'id',
name:'mfgname'
},
tree: {
show: true,
strict: false,
showLine: false,
clickExpand: false,
},
model: {
icon: 'hidden',
label: {
type: 'text'
}
},
theme: {
color: '#1890FF'
}
})
iconPicker.render({
elem: '#iconPicker',
type: 'fontClass',
search: true,
cellWidth: "19%",
page: true,
limit: 12,
// 点击回调
click: function(data) { // 点击回调
$('#iconPicker').val(data.icon);
},
success: function(d) { // 渲染成功后的回调
}
});
$('.router').bind('input change',function(data){
let router = $('.router').val();
router = router.substring(1);
$('.alias').val(router.replaceAll('/',':'));
})
})
</script>

View File

@@ -0,0 +1,206 @@
<include file="/public/header" />
<!--partmanage-->
<div class="layui-fluid">
<div class="layui-card">
<!-- // 默认操作按钮 -->
<div class="layui-card-header layadmin-card-header-auto ">
<div class="layui-form">
<!-- // 自定义搜索参数 -->
<div id="laytable-search" class="layui-form-item" >
<div class="layui-inline">
<div class="layui-form-label">{:__('ID')}</div>
<div class="layui-input-inline ">
<input name="id" class="layui-input" type="text" placeholder="{:__('ID')}"/>
</div>
</div>
<div class="layui-inline">
<div class="layui-form-label">{:__('父ID')}</div>
<div class="layui-input-inline ">
<input name="pid" class="layui-input" type="text" placeholder="{:__('父ID')}"/>
</div>
</div>
<div class="layui-inline">
<div class="layui-form-label">{:__('网站主页')}</div>
<div class="layui-input-inline ">
<input name="mfgsite" class="layui-input" type="text" placeholder="{:__('网站主页')}"/>
</div>
</div>
<div class="layui-inline">
<div class="layui-form-label">{:__('备注')}</div>
<div class="layui-input-inline ">
<input name="mfgrmark" class="layui-input" type="text" placeholder="{:__('备注')}"/>
</div>
</div>
<div class="layui-inline">
<div class="layui-form-label">{:__('注释')}</div>
<div class="layui-input-inline ">
<input name="content" class="layui-input" type="text" placeholder="{:__('注释')}"/>
</div>
</div>
<div class="layui-inline">
<div class="layui-form-label">{:__('创建者')}</div>
<div class="layui-input-inline ">
<input name="createrid" class="layui-input" type="text" placeholder="{:__('创建者')}"/>
</div>
</div>
<div class="layui-inline">
<div class="layui-form-label">{:__('更新时间')}</div>
<div class="layui-input-inline ">
<input name="update_time" lay-datetime data-range="true" data-type="date" data-dateformat="yyyy/MM/dd" class="layui-input" type="text" placeholder="{:__('更新时间')}"/>
</div>
</div>
<div class="layui-inline">
<div class="layui-form-label">{:__('创建时间')}</div>
<div class="layui-input-inline ">
<input name="create_time" lay-datetime data-range="true" data-type="date" data-dateformat="yyyy/MM/dd" class="layui-input" type="text" placeholder="{:__('创建时间')}"/>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<select name="status">
<option value="">{:__('按状态查询')}</option>
<option value="2" >{:__('正常')}</option>
<option value="1" >{:__('关闭')}</option>
</select>
</div>
<div class="layui-inline">
<div class="layui-form-label">{:__('制造商名称')}</div>
<div class="layui-input-inline ">
<input name="mfgname" class="layui-input" type="text" placeholder="{:__('制造商名称')}"/>
</div>
</div>
<div class="layui-inline" >
<!-- // 默认搜索 -->
<button class="layui-btn icon-btn" lay-filter="formSearch" lay-submit><i class="layui-icon layui-icon-search"></i>{:__('搜索')}</button>
<!--formBegin-->
<button class="layui-btn icon-btn" lay-open="" data-title="{:__('添加')}" data-area="1100px,750px" data-maxmin="true" data-url="{:url('/PdmMfgName/add')}" >
<i class="layui-icon layui-icon-add-1"></i>{:__('添加')}
</button>
<button class="layui-btn layui-btn-primary icon-btn" id="expandAll" ><i class="layui-icon layui-icon-templeate-1"></i>{:__('展开全部')}</button>
<button class="layui-btn layui-btn-danger icon-btn" id="foldAll" ><i class="layui-icon layui-icon-add-1"></i>{:__('折叠全部')}</button>
<!--formEnd-->
</div>
</div>
</div>
</div>
<!-- // 创建数据实例 -->
<table id="lay-tableList" lay-filter="lay-tableList"></table>
</div>
</div>
<!-- // 列表状态栏 -->
<script type="text/html" id="columnStatus">
<input type="checkbox" lay-filter="switchStatus" data-url="{:url('/PdmMfgName/status')}" value="{{d.id}}" lay-skin="switch" {{d.status==1?'checked':''}} />
</script>
<!-- // 列表工具栏 -->
<script type="text/html" id="tableBar">
<!--formBegin-->
<a class="layui-table-text" data-title="{:__('编辑')}" data-area="1100px,750px" data-maxmin="true"
data-url="{:url('/PdmMfgName/edit')}?id={{d.id}}" lay-event="edit" >{:__('编辑')}</a>
<div class="layui-divider layui-divider-vertical"></div>
<!--formEnd-->
<a class="layui-table-text" data-url="{:url('/PdmMfgName/del')}?id={{d.id}}" lay-event="del" >{:__('删除')}</a>
</script>
<script type="text/html" id="tableButton"></script>
<include file="/public/footer" />
<script>
layui.use(['form','treeTable'], function () {
let $ = layui.jquery;
let form = layui.form;
let treeTable = layui.treeTable;
let tableURL = "{:url('/PdmMfgName/index')}";
// 渲染初始化表格
let renderTable = function (tableURL) {
treeTable.render({
id: 'lay-tableList',
elem: '#lay-tableList',
url: tableURL,
toolbar: '#tableButton',
defaultToolbar: ['filter', 'exports', 'print','search'],
cellMinWidth: 160,
page: true,
limit: 18,
tree: {
customName: {
pid: 'pid',
icon: 'icon1',
},
view: {
iconClose: '', // 关闭时候的图标
iconOpen: '', // 打开时候的图标
iconLeaf: '', // 叶子节点的图标
}
},
cols: [[
//{type: 'checkbox', width: 50},
{type: 'numbers'},
//{field: 'id', align: 'center',sort: true,width: 80, title: 'ID'},
{field:'name',title:'{:__("制造商名称")}',templet: function(d) {
return d.mfgname;
},},
{field:'mfgsite',title:'{:__("网站主页")}',templet: function(d) {
// return '<a href="https://' +d.mfgsite+ '" target="_blank">'+ d.mfgsite +'</a>';
return '<a href="' +d.mfgsite+ '" target="_blank">'+ d.mfgsite +'</a>';
},}, //https://www.ti.com/
{field:'mfgrmark',title:'{:__("备注")}'},
{field:'sort',title:'{:__("排序")}'},
{field:'content',title:'{:__("注释")}'},
{field:'createrid',title:'{:__("创建者")}'},
{field:'status',templet: '#columnStatus',title:'{:__("状态")}'},
{align: 'center', toolbar: '#tableBar', width:160, fixed: 'right', title: '{:__("操作")}'},
]]
});
}
// 监听搜索 serialize
form.on('submit(treeSearch)',function(data) {
let whereURL = '',
field = data.field;
for (let key in field ) {
whereURL += key + '=' + field[key];
whereURL += '&';
}
// 拼接字符串
whereURL = whereURL.replace(/(.*)&/,'$1 ');
whereURL = tableURL + '?' + whereURL;
renderTable(whereURL);
})
// 展开所有
$('#expandAll').click(function(){
treeTable.expandAll('lay-tableList', true);
})
// 折叠所有
$('#foldAll').click(function () {
treeTable.expandAll('lay-tableList',false);
});
// 执行初始化
renderTable(tableURL);
});
</script>