更新下拉列表的功能以及增加下拉列表的筛选功能

This commit is contained in:
panx
2025-01-15 21:02:04 +08:00
parent 2c167222bd
commit 24091459b5
11 changed files with 77 additions and 249 deletions

7
.gitignore vendored
View File

@@ -1,2 +1,9 @@
public/static/json/2/treeTable/demo-1.json public/static/json/2/treeTable/demo-1.json
public/test.html public/test.html
app/admin/view/pdm_partlist/add copy.html
app/admin/view/pdm_partlist/index copy.html
app/admin/view/pdm_partitem_relation copy/add.html
app/admin/view/pdm_partitem_relation copy/index.html
public/upload/datasheet/*
public/upload/datasheet*

View File

@@ -59,7 +59,7 @@ class PdmPartitemIndex extends AdminController
* @throws DbException * @throws DbException
* @throws ModelNotFoundException * @throws ModelNotFoundException
*/ */
public function dataList(array $params): array public static function dataList(array $params): array
{ {
// $where = array(); // $where = array();
// if (!empty($params['partnumber'])) { // if (!empty($params['partnumber'])) {
@@ -91,14 +91,17 @@ class PdmPartitemIndex extends AdminController
$page = (int)input('page', 1); $page = (int)input('page', 1);
$limit = (int)input('limit', 18); $limit = (int)input('limit', 18);
$where = $this->buildSelectParams();
$count = $this->model->where($where)->count(); $controller = new PdmPartitemIndex();
$fieldList = $this->model->getFields();
$where = $controller->buildSelectParams();
$count = $controller->model->where($where)->count();
$fieldList = $controller->model->getFields();
$order = !array_key_exists('sort', $fieldList) ? 'id' : 'sort'; $order = !array_key_exists('sort', $fieldList) ? 'id' : 'sort';
$subQuery = $this->model->field('id')->where($where)->order($order, 'desc')->limit($limit)->page($page)->buildSql(); $subQuery = $controller->model->field('id')->where($where)->order($order, 'desc')->limit($limit)->page($page)->buildSql();
$subQuery = '( SELECT object.id FROM ' . $subQuery . ' AS object )'; $subQuery = '( SELECT object.id FROM ' . $subQuery . ' AS object )';
// $list = $this->model->with($this->relationModel)->where('id in' . $subQuery)->order($order, 'asc')->select()->toArray(); // 如果是'desc' list_to_tree 函数返回为空! // $list = $this->model->with($this->relationModel)->where('id in' . $subQuery)->order($order, 'asc')->select()->toArray(); // 如果是'desc' list_to_tree 函数返回为空!
$list = $this->model->with($this->relationModel)->where('id in' . $subQuery)->order($order, 'asc')->select(); // 如果是'desc' list_to_tree 函数返回为空! $list = $controller->model->with($controller->relationModel)->where('id in' . $subQuery)->order($order, 'asc')->select(); // 如果是'desc' list_to_tree 函数返回为空!
foreach($list as $key => $value){ foreach($list as $key => $value){
// throw new \Exception(json_encode($value)); // throw new \Exception(json_encode($value));
@@ -127,8 +130,8 @@ class PdmPartitemIndex extends AdminController
foreach($list as $key => $value){ foreach($list as $key => $value){
if(!in_array($value['pid'],$nodeid) && $value['pid'] > 0){ if(!in_array($value['pid'],$nodeid) && $value['pid'] > 0){
$nodeid[] = $value['pid']; $nodeid[] = $value['pid'];
$nodevalue = $this->model->find($value['pid']); $nodevalue = $controller->model->find($value['pid']);
$nodevalue = $this->model->find($value['pid'])->toArray(); $nodevalue = $controller->model->find($value['pid'])->toArray();
if(!empty($nodevalue)){ if(!empty($nodevalue)){
$list[] = &$nodevalue; $list[] = &$nodevalue;

View File

@@ -7,6 +7,7 @@ use Webman\Http\Request;
use app\admin\model\PdmPartitemRelation as PdmPartitemRelationModel; use app\admin\model\PdmPartitemRelation as PdmPartitemRelationModel;
use app\admin\model\PdmSymbol as PdmSymbolModel; use app\admin\model\PdmSymbol as PdmSymbolModel;
use app\admin\model\PdmFootprint as PdmFootprintModel; use app\admin\model\PdmFootprint as PdmFootprintModel;
use app\admin\model\PdmPartitemIndex as PdmPartitemIndexModel;
use support\Response; use support\Response;
/** /**
@@ -154,6 +155,7 @@ class PdmPartitemRelation extends AdminController
{ {
$symbol = PdmSymbolModel::select()->toArray(); $symbol = PdmSymbolModel::select()->toArray();
$footprint = PdmFootprintModel::select()->toArray(); $footprint = PdmFootprintModel::select()->toArray();
$partitemIndex = PdmPartitemIndexModel::select()->toArray();
if (request()->isPost()) { if (request()->isPost()) {
$post = \request()->post(); $post = \request()->post();
@@ -179,6 +181,7 @@ class PdmPartitemRelation extends AdminController
'data' => $data, 'data' => $data,
'symbol' => json_encode( list_to_tree($symbol), JSON_UNESCAPED_UNICODE), 'symbol' => json_encode( list_to_tree($symbol), JSON_UNESCAPED_UNICODE),
'footprint' => json_encode( list_to_tree($footprint), JSON_UNESCAPED_UNICODE), 'footprint' => json_encode( list_to_tree($footprint), JSON_UNESCAPED_UNICODE),
'partitemIndex' => json_encode( list_to_tree($partitemIndex), JSON_UNESCAPED_UNICODE),
// 'parttype' => $this->parttype, // 'parttype' => $this->parttype,
'list' => json_encode( list_to_tree($list), JSON_UNESCAPED_UNICODE), 'list' => json_encode( list_to_tree($list), JSON_UNESCAPED_UNICODE),
]); ]);
@@ -199,12 +202,18 @@ class PdmPartitemRelation extends AdminController
$symbolid = $data['symbolid']; $symbolid = $data['symbolid'];
$footprintid = $data['footprintid']; $footprintid = $data['footprintid'];
$partnumbertemp = $data['partnumber'];
// $parems['id'] = input('parttypeid', 0); // $parems['id'] = input('parttypeid', 0);
$symbol = PdmSymbolModel::find($symbolid)->toArray(); $symbol = PdmSymbolModel::find($symbolid)->toArray();
list($countsymbol, $symbol) = \app\admin\controller\PdmSymbol::dataList($symbol); list($countsymbol, $symbol) = \app\admin\controller\PdmSymbol::dataList($symbol);
$footprint = PdmFootprintModel::find($footprintid)->toArray(); $footprint = PdmFootprintModel::find($footprintid)->toArray();
list($countfootprint, $footprint) = \app\admin\controller\PdmFootprint::dataList($footprint); list($countfootprint, $footprint) = \app\admin\controller\PdmFootprint::dataList($footprint);
$where = ['partnumber' => $partnumbertemp];
// $partnumbertemp1 = PdmPartitemIndexModel::find($partnumbertemp)->toArray();
$partnumbertemp1 = PdmPartitemIndexModel::where($where)->select()->toArray();
list($countpartnumberIndex, $partitemIndex) = \app\admin\controller\PdmPartitemIndex::dataList($partnumbertemp1);
if (request()->isPost()) { if (request()->isPost()) {
$post = \request()->post(); $post = \request()->post();
@@ -221,6 +230,7 @@ class PdmPartitemRelation extends AdminController
'data' => $data, 'data' => $data,
'symbol' => json_encode( list_to_tree($symbol), JSON_UNESCAPED_UNICODE), 'symbol' => json_encode( list_to_tree($symbol), JSON_UNESCAPED_UNICODE),
'footprint' => json_encode( list_to_tree($footprint), JSON_UNESCAPED_UNICODE), 'footprint' => json_encode( list_to_tree($footprint), JSON_UNESCAPED_UNICODE),
'partitemIndex' => json_encode( list_to_tree($partitemIndex), JSON_UNESCAPED_UNICODE),
// 'parttype' => json_encode( $parttype, JSON_UNESCAPED_UNICODE), // 'parttype' => json_encode( $parttype, JSON_UNESCAPED_UNICODE),
'list' => json_encode( list_to_tree($list), JSON_UNESCAPED_UNICODE), 'list' => json_encode( list_to_tree($list), JSON_UNESCAPED_UNICODE),
]); ]);

View File

@@ -152,6 +152,7 @@
theme: { theme: {
color: '#1890FF' color: '#1890FF'
} }
,filterable: true // 启用筛选功能
}) })
iconPicker.render({ iconPicker.render({

View File

@@ -1,67 +0,0 @@
<include file="/public/header" />
<!-- // 重定位style -->
<!---->
<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" >
<label class="layui-form-label">PartNumber</label>
<div class="layui-input-block"><input class="layui-input" name="partnumber" placeholder="请输入" lay-verify=""value="{$data.partnumber}" ></div>
</div>
<div class="layui-form-item" >
<label class="layui-form-label">描述</label>
<div class="layui-input-block"><input class="layui-input" name="description" placeholder="请输入" lay-verify=""value="{$data.description}" ></div>
</div>
<div class="layui-form-item" >
<label class="layui-form-label">部件属性</label>
<div class="layui-input-block">
<table class="layui-table">
<thead>
<tr>
<th>名称</th>
<th>变量值</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<notempty name="data.partattribute">
<volist name="data.partattribute" id="vo" key="i">
<tr>
<td><input type="text" class="layui-input" name="partattribute[key][]" value="{$key}" ></td>
<td><input type="text" class="layui-input" name="partattribute[value][]" value="{$vo}"></td>
<td><i class="layui-icon fa-times" data-name="partattribute" onclick="layui.admin.resetInput(this);"></i></td>
</tr>
</volist>
</notempty>
</tbody>
</table>
<button type="button" class="layui-btn layui-btn-normal layui-jsonvar-add" data-name="partattribute">追加</button>
</div>
</div>
<div class="layui-form-item" >
<div class="layui-input-block"><blockquote class="layui-elem-quote">便签信息</blockquote></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" />

View File

@@ -1,172 +0,0 @@
<include file="/public/header" />
<!---->
<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">{:__('ParttypeID')}</div>
<div class="layui-input-inline ">
<input name="parttypeid" class="layui-input" type="text" placeholder="{:__('ParttypeID')}"/>
</div>
</div>
<div class="layui-inline">
<div class="layui-form-label">{:__('排序')}</div>
<div class="layui-input-inline ">
<input name="sort" 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="description" 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="partattribute" 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="partattributetitle" 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="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="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">{:__('PartNumber')}</div>
<div class="layui-input-inline ">
<input name="partnumber" class="layui-input" type="text" placeholder="{:__('PartNumber')}"/>
</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('/PdmPartitem/add')}" >
<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('/PdmPartitem/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('/PdmPartitem/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('/PdmPartitem/del')}?id={{d.id}}" lay-event="del" >{:__('删除')}</a>
</script>
<script type="text/html" id="tableButton"></script>
<include file="/public/footer" />
<script>
layui.use(['admin','table'], function () {
var admin = layui.admin;
var table = layui.table;
/*
* 初始化表格
*/
var isTable = table.render({
elem: "#lay-tableList"
,url: "{:url('/PdmPartitem/index')}"
,toolbar: '#tableButton'
,defaultToolbar: ['filter', 'exports', 'print','search']
,cellMinWidth: 160
,page: true
,limit: 18
,cols: [[
{type: 'checkbox', width: 50},
{field: 'id', align: 'center',sort: true,width: 80, title: 'ID'},
{field:'partnumber',title:'{:__("PartNumber")}'},
{field:'description',title:'{:__("描述")}'},
{field:'partattribute',templet:function(d) {
return JSON.stringify(d.partattribute);
},title:'{:__("部件属性")}'},
{field:'createrid',title:'{:__("创建者")}'},
{field:'content',title:'{:__("注释")}'},
{field:'status',templet: '#columnStatus',title:'{:__("状态")}'},
{align: 'center', toolbar: '#tableBar', width:160, fixed: 'right', title: '{:__("操作")}'},
]]
})
})
</script>

View File

@@ -176,6 +176,7 @@
theme: { theme: {
color: '#1890FF' color: '#1890FF'
} }
,filterable: true // 启用筛选功能
}) })
// iconPicker.render({ // iconPicker.render({

View File

@@ -13,10 +13,17 @@
<input type="text" name="id" value="" hidden=""> <input type="text" name="id" value="" hidden="">
<input type="text" class="pid" name="pid" value="" hidden=""> <input type="text" class="pid" name="pid" value="" hidden="">
</gt> </gt>
<div class="layui-form-item"> <!-- <div class="layui-form-item">
<label class="layui-form-label">PartNumber</label> <label class="layui-form-label">PartNumber</label>
<div class="layui-input-block"><input class="layui-input" name="partnumber" placeholder="请输入" <div class="layui-input-block"><input class="layui-input" name="partnumber" placeholder="请输入"
lay-verify="" value="{$data.partnumber}"></div> lay-verify="" value="{$data.partnumber}"></div>
</div> -->
<div class="layui-form-item">
<label class="layui-form-label">Symbol</label>
<div class="layui-input-block">
<div id="partnumberNode" name="partnumber" lay-filter="partnumberNode" data-pid="{$data.partnumber|default=''}"></div>
</div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item">
@@ -85,6 +92,7 @@
let data = {$list|raw}; let data = {$list|raw};
let symboldata= {$symbol|raw}; let symboldata= {$symbol|raw};
let footprintdata= {$footprint|raw}; let footprintdata= {$footprint|raw};
let partnumberdata= {$partitemIndex|raw};
// 提交参数 // 提交参数
form.on("submit(submit)",function(data){ form.on("submit(submit)",function(data){
@@ -132,6 +140,7 @@
theme: { theme: {
color: '#1890FF' color: '#1890FF'
} }
,filterable: true // 启用筛选功能
}) })
@@ -165,6 +174,40 @@
theme: { theme: {
color: '#1890FF' color: '#1890FF'
} }
,filterable: true // 启用筛选功能
})
xmSelect.render({
el: '#partnumberNode',
tips: '请选择Partnumber',
// name: 'pid',
name: 'partnumber',
height: '260px',
data: partnumberdata,
// data: data,
radio: true,
clickClose: true,
initValue:[$('#partnumberNode').data('pid')],
prop: {
value: 'partnumber',
name:'partnumber'
},
tree: {
show: true,
strict: false,
showLine: false,
clickExpand: false,
},
model: {
icon: 'hidden',
label: {
type: 'text'
}
},
theme: {
color: '#1890FF'
}
,filterable: true // 启用筛选功能
}) })
// iconPicker.render({ // iconPicker.render({

View File

@@ -195,7 +195,7 @@
{ field: 'value', sort: true,width: 160, title: '{:__("Value")}' }, { field: 'value', sort: true,width: 160, title: '{:__("Value")}' },
{ field: 'description', width: 250, title: '{:__("描述")}' }, { field: 'description', width: 250, title: '{:__("描述")}' },
{ field: 'mpn', sort: true, width: 160, title: '{:__("MPN")}' }, { field: 'mpn', sort: true, width: 160, title: '{:__("MPN")}' },
{ field: 'mfgname', sort: true, width: 160, title: '{:__("制造商名称")}' }, { field: 'mfg', sort: true, width: 160, title: '{:__("制造商名称")}' },
{ field: 'symbol', width: 160, title: '{:__("SymbolName")}' }, { field: 'symbol', width: 160, title: '{:__("SymbolName")}' },
{ field: 'footprint',width: 160, sort: true, title: '{:__("Footprint")}' }, { field: 'footprint',width: 160, sort: true, title: '{:__("Footprint")}' },
//{ field: 'datasheet', title: '{:__("规格书")}' }, //{ field: 'datasheet', title: '{:__("规格书")}' },

View File

@@ -147,6 +147,7 @@
theme: { theme: {
color: '#1890FF' color: '#1890FF'
} }
,filterable: true // 启用筛选功能
}) })
iconPicker.render({ iconPicker.render({

View File

@@ -147,6 +147,7 @@
theme: { theme: {
color: '#1890FF' color: '#1890FF'
} }
,filterable: true // 启用筛选功能
}) })
iconPicker.render({ iconPicker.render({