Merge branch dev/task-145726 of zentao/zentaopms (#9857)

This commit is contained in:
刘刚
2025-06-24 16:46:14 +08:00
committed by Gitfox
4 changed files with 73 additions and 19 deletions
+48
View File
@@ -0,0 +1,48 @@
<?php
namespace zin;
class remotePicker extends wg
{
protected static array $defineProps = array(
'label?: string', // 控件标签。
'id?: string', // 控件 ID。
'name?: string="users[]"', // 控件名称。
'value?: string', // 控件默认值。
'type?: string="user"', // 控件类型。
'params?: string=""', // 额外参数,如user的pofirst。
'items?: string|array', // picker 列表项或列表项获取方法。
'menu?: array', // picker 附加的菜单选项。
'toolbar?: boolean|array', // picker 列表工具栏。
'multiple?: boolean|number=false', // picker 是否允许选择多个值,如果指定为数字,则限制多选的数目,默认 `false`。
'inputGroupClass?: string=""' // inputGroup 的 class 属性。
);
protected function created()
{
$items = $this->prop('items');
if(!$items)
{
$type = $this->prop('type');
$params = $this->prop('params') ? $this->prop('params') : 'noclosed|nodeleted';
switch($type)
{
case 'user':
$items = createLink('user', 'ajaxGetItems', 'params=' . $params);
break;
}
$this->setProp('items', $items);
}
if(!$this->prop('id')) $this->setProp('id', '_' . $this->prop('name'));
}
protected function build()
{
return zui::picker
(
set::_class('form-group-wrapper picker-box'),
set::_map(array('value' => 'defaultValue', 'formID' => 'id')),
set($this->props->pick(array('id', 'name', 'value', 'items', 'toolbar', 'menu', 'multiple'))),
);
}
}
+4 -8
View File
@@ -27,25 +27,21 @@ $fields->field('type')
$fields->field('code')->control('input');
$fields->field('PO')
->control('picker')
->items(data('fields.PO.options'))
->control(array('control' => 'remotepicker', 'params' => 'nodeleted|pofirst|noclosed'))
->value(data('fields.PO.default'));
$fields->field('reviewer')
->control('picker')
->control('remotepicker')
->multiple()
->items(data('fields.reviewer.options'))
->value(data('fields.reviewer.default'));
$fields->field('QD')
->wrapBefore()
->control('picker')
->items(data('fields.QD.options'))
->control(array('control' => 'remotepicker', 'params' => 'nodeleted|qdfirst|noclosed'))
->value(data('fields.QD.default'));
$fields->field('RD')
->control('picker')
->items(data('fields.RD.options'))
->control(array('control' => 'remotepicker', 'params' => 'nodeleted|devfirst|noclosed'))
->value(data('fields.RD.default'));
$fields->field('desc')
+2 -11
View File
@@ -230,12 +230,7 @@ class productZen extends product
*/
private function setSelectFormOptions(int $programID, array $fields): array
{
/* 准备数据。*/
$this->loadModel('user');
$poUsers = $this->user->getPairs('nodeleted|pofirst|noclosed');
$qdUsers = $this->user->getPairs('nodeleted|qdfirst|noclosed');
$rdUsers = $this->user->getPairs('nodeleted|devfirst|noclosed');
$users = $this->user->getPairs('nodeleted|noclosed');
$users = $this->loadModel('user')->getPairs('nodeleted|noclosed');
/* 追加字段的name、title属性,展开user数据。 */
foreach($fields as $field => $attr)
@@ -246,13 +241,9 @@ class productZen extends product
}
/* 设置下拉菜单内容。 */
if(isset($fields['PO'])) $fields['PO']['options'] = $poUsers;
if(isset($fields['PMT'])) $fields['PMT']['options'] = $poUsers;
if(isset($fields['QD'])) $fields['QD']['options'] = $qdUsers;
if(isset($fields['RD'])) $fields['RD']['options'] = $rdUsers;
if(isset($fields['groups'])) $fields['groups']['options'] = $this->loadModel('group')->getPairs();
if(isset($fields['program'])) $fields['program']['options'] = $this->loadModel('program')->getTopPairs('noclosed');
if(isset($fields['line'])) $fields['line']['options'] = $this->product->getLinePairs($programID, true);
if(isset($fields['line'])) $fields['line']['options'] = $this->product->getLinePairs($programID, true);
if($this->config->edition != 'open' && isset($fields['workflowGroup']))
{
+19
View File
@@ -1087,6 +1087,25 @@ class user extends control
return print(html::select('contactListMenu', array('' => '') + $contactList, '', "class='form-control' onchange=\"setMailto('$dropdownName', this.value)\""));
}
/**
* AJAX: 获取用户列表。
* AJAX: Get users.
*
* @access public
* @return void
*/
public function ajaxGetItems($params = '')
{
$items = array();
$users = $this->user->getPairs($params);
foreach($users as $account => $realname)
{
$items[] = array('text' => $realname, 'value' => $account);
}
return print(json_encode($items));
}
/**
* AJAX: 获取用户模板。
* AJAX: get user templates.