Merge branch dev/task-145726 of zentao/zentaopms (#9857)
This commit is contained in:
@@ -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'))),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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
@@ -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']))
|
||||
{
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user