ajaxgetdropmenu.html.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?php
  2. /**
  3. * The ajaxgetdropmenu view file of product module of ZenTaoPMS.
  4. *
  5. * @copyright Copyright 2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.cnezsoft.com)
  6. * @author Hao Sun <sunhao@easycorp.ltd>
  7. * @package product
  8. * @version $Id
  9. * @link https://www.zentao.net
  10. */
  11. namespace zin;
  12. /* 旧页面获取旧的1.5级导航。*/
  13. if(in_array("{$module}-{$method}", $config->index->oldPages))
  14. {
  15. include '../view/ajaxgetdropmenu.html.php';
  16. return;
  17. }
  18. /**
  19. * 获取产品所属分组。
  20. * Get product group.
  21. *
  22. * @param object $product
  23. * @return string
  24. */
  25. $getProductGroup = function($product): string
  26. {
  27. global $app;
  28. if($product->status == 'normal' and $product->PO == $app->user->account) return 'my';
  29. if($product->status == 'closed') return 'closed';
  30. return 'other';
  31. };
  32. $productNames = array();
  33. foreach($products as $programID => $programProducts)
  34. {
  35. $productNames = array_merge($productNames, array_column($programProducts, 'name'));
  36. }
  37. $productPinyinNames = common::convert2Pinyin($productNames);
  38. if($extra === 'selectmode')
  39. {
  40. $data = array();
  41. /* 处理分组数据。Process grouped data. */
  42. foreach($products as $programID => $programProducts)
  43. {
  44. if(empty($data[$programID]))
  45. {
  46. $programItem = array();
  47. $programItem['id'] = $programID;
  48. $programItem['text'] = $programID ? zget($programs, $programID) : $lang->product->emptyProgram;
  49. $programItem['subtitle'] = $lang->program->common;
  50. $programItem['items'] = array();
  51. $data[$programID] = $programItem;
  52. }
  53. else
  54. {
  55. $programItem = $data[$programID];
  56. }
  57. foreach($programProducts as $index => $product)
  58. {
  59. $item = array();
  60. $item['id'] = $product->id;
  61. $item['text'] = $product->name;
  62. $item['keys'] = zget($productPinyinNames, $product->name, '');
  63. $item['value'] = $product->id;
  64. $data[$programID]['items'][] = $item;
  65. }
  66. }
  67. $data = array_values($data);
  68. renderJson($data);
  69. }
  70. else
  71. {
  72. /**
  73. * 定义每个分组下的选项数据列表。
  74. * Define the grouped data list.
  75. */
  76. $data = array('my' => array(), 'other' => array(), 'closed' => array());
  77. /**
  78. * 定义产品所属分组。
  79. * Define the group of product.
  80. */
  81. $productGroup = array();
  82. /* 处理分组数据。Process grouped data. */
  83. foreach($products as $programID => $programProducts)
  84. {
  85. $programItem = array();
  86. $programItem['id'] = $programID;
  87. $programItem['type'] = 'program';
  88. $programItem['text'] = $programID ? zget($programs, $programID) : $lang->product->emptyProgram;
  89. $programItem['items'] = array();
  90. if(!$programID) $programItem['label'] = '';
  91. foreach($programProducts as $index => $product)
  92. {
  93. $group = $productGroup[$product->id] = $getProductGroup($product);
  94. $item = array();
  95. $item['id'] = $product->id;
  96. $item['text'] = $product->name;
  97. $item['active'] = $productID == $product->id;
  98. $item['keys'] = zget($productPinyinNames, $product->name, '');
  99. $item['data-app'] = $app->tab;
  100. $item['isPO'] = $product->PO == $this->app->user->account;
  101. if($config->systemMode == 'light' || $config->vision == 'or' || !helper::hasFeature('program'))
  102. {
  103. $data[$group][] = $item;
  104. }
  105. else
  106. {
  107. if(!isset($data[$group][$programID])) $data[$group][$programID] = $programItem;
  108. $data[$group][$programID]['items'][] = $item;
  109. }
  110. }
  111. }
  112. /* 将分组数据转换为索引数组。Format grouped data to indexed array. */
  113. foreach($data as $key => $value) $data[$key] = array_values($value);
  114. /**
  115. * 定义每个分组名称信息,包括可展开的已关闭分组。
  116. * Define every group name, include expanded group.
  117. */
  118. $tabs = array();
  119. $tabs[] = array('name' => 'my', 'text' => $lang->product->mine, 'active' => zget($productGroup, $productID, '') === 'my');
  120. $tabs[] = array('name' => 'other', 'text' => $lang->product->other, 'active' => zget($productGroup, $productID, '') === 'other');
  121. $tabs[] = array('name' => 'closed', 'text' => $lang->product->closedProducts);
  122. /**
  123. * 定义最终的 JSON 数据。
  124. * Define the final json data.
  125. */
  126. $json = array();
  127. $json['data'] = $data;
  128. $json['tabs'] = $tabs;
  129. $json['searchHint'] = $lang->searchAB;
  130. $json['link'] = array('product' => sprintf($link, '{id}'));
  131. $json['labelMap'] = array('program' => $lang->program->common);
  132. $json['expandName'] = 'closed';
  133. $json['itemType'] = 'product';
  134. /**
  135. * 渲染 JSON 字符串并发送到客户端。
  136. * Render json data to string and send to client.
  137. */
  138. renderJson($json);
  139. }