view.html.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. /**
  3. * The view view file of opportunity module of ZenTaoPMS.
  4. * @copyright Copyright 2009-2024 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
  5. * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
  6. * @author Shujie Tian <tianshujie@chandao.com>
  7. * @package opportunity
  8. * @link https://www.zentao.net
  9. */
  10. namespace zin;
  11. $canModify = !$opportunity->deleted;
  12. if($canModify && $project) $canModify = common::canModify('project', $project);
  13. if($canModify && $execution) $canModify = common::canModify('execution', $execution);
  14. $actions = $canModify ? $this->loadModel('common')->buildOperateMenu($opportunity) : array();
  15. if(!empty($actions)) $actions = array_merge($actions['mainActions'], $actions['suffixActions']);
  16. foreach($actions as $key => $action)
  17. {
  18. if(isset($actions[$key]['url']))
  19. {
  20. $actions[$key]['url'] = str_replace('{from}', $from, $action['url']);
  21. }
  22. }
  23. $sections = array();
  24. $sections[] = setting()
  25. ->title($lang->opportunity->desc)
  26. ->control('html')
  27. ->content($opportunity->desc);
  28. $sections[] = setting()
  29. ->title($lang->opportunity->prevention)
  30. ->control('html')
  31. ->content($opportunity->prevention);
  32. $sections[] = setting()
  33. ->title($lang->opportunity->resolution)
  34. ->control('html')
  35. ->content($opportunity->resolution);
  36. $isEn = $app->getClientLang() == 'en';
  37. $basicInfoItems = array();
  38. $basicInfoItems[$lang->opportunity->source] = array('control' => 'text', 'text' => zget($lang->opportunity->sourceList, $opportunity->source));
  39. $basicInfoItems[$lang->opportunity->type] = array('control' => 'text', 'text' => zget($lang->opportunity->typeList, $opportunity->type));
  40. $basicInfoItems[$lang->opportunity->strategy] = array('control' => 'text', 'text' => zget($lang->opportunity->strategyList, $opportunity->strategy));
  41. $basicInfoItems[$lang->opportunity->status] = array('control' => 'text', 'text' => $this->processStatus('opportunity', $opportunity), 'contentClass' => 'status-' . $opportunity->status);
  42. if(!empty($project->multiple)) $basicInfoItems[$lang->opportunity->execution] = array('control' => 'link', 'text' => !empty($execution->name) ? $execution->name : '', 'url' => createLink('execution', 'view', "executionID={$opportunity->execution}"));
  43. $basicInfoItems[$lang->opportunity->impact] = array('control' => 'text', 'text' => zget($lang->opportunity->impactList, $opportunity->impact));
  44. $basicInfoItems[$lang->opportunity->chance] = array('control' => 'text', 'text' => zget($lang->opportunity->chanceList, $opportunity->chance));
  45. $basicInfoItems[$lang->opportunity->ratio] = array('control' => 'text', 'text' => $opportunity->ratio);
  46. $basicInfoItems[$lang->opportunity->pri] = array('control' => 'pri', 'text' => $lang->opportunity->priList, 'pri' => $opportunity->pri);
  47. $basicInfoItems[$lang->opportunity->identifiedDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->identifiedDate) ? '' : $opportunity->identifiedDate);
  48. $basicInfoItems[$lang->opportunity->plannedClosedDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->plannedClosedDate) ? '' : $opportunity->plannedClosedDate);
  49. $basicInfoItems[$lang->opportunity->actualClosedDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->actualClosedDate) ? '' : $opportunity->actualClosedDate);
  50. $basicInfo = datalist
  51. (
  52. set::className('opportunity-basic-info'),
  53. set::items($basicInfoItems),
  54. set::labelWidth($isEn ? '106' : '80')
  55. );
  56. $lifeTimeItems = array();
  57. $lifeTimeItems[$lang->opportunity->assignedTo] = array('control' => 'text', 'text' => zget($users, $opportunity->assignedTo));
  58. $lifeTimeItems[$lang->opportunity->lastCheckedBy] = array('control' => 'text', 'text' => zget($users, $opportunity->lastCheckedBy));
  59. $lifeTimeItems[$lang->opportunity->lastCheckedDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->lastCheckedDate) ? '' : $opportunity->lastCheckedDate);
  60. $lifeTimeItems[$lang->opportunity->createdBy] = array('control' => 'text', 'text' => zget($users, $opportunity->createdBy));
  61. $lifeTimeItems[$lang->opportunity->createdDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->createdDate) ? '' : $opportunity->createdDate);
  62. $lifeTimeItems[$lang->opportunity->editedBy] = array('control' => 'text', 'text' => zget($users, $opportunity->editedBy));
  63. $lifeTimeItems[$lang->opportunity->editedDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->editedDate) ? '' : $opportunity->editedDate);
  64. $lifeTimeItems[$lang->opportunity->assignedDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->assignedDate) ? '' : $opportunity->assignedDate);
  65. $lifeTimeItems[$lang->opportunity->resolvedBy] = array('control' => 'text', 'text' => zget($users, $opportunity->resolvedBy));
  66. $lifeTimeItems[$lang->opportunity->resolvedDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->resolvedDate) ? '' : $opportunity->resolvedDate);
  67. $lifeTimeItems[$lang->opportunity->actualClosedDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->actualClosedDate) ? '' : $opportunity->actualClosedDate);
  68. $lifeTimeItems[$lang->opportunity->canceledBy] = array('control' => 'text', 'text' => zget($users, $opportunity->canceledBy));
  69. $lifeTimeItems[$lang->opportunity->canceledDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->canceledDate) ? '' : $opportunity->canceledDate);
  70. $lifeTimeItems[$lang->opportunity->cancelReason] = array('control' => 'text', 'text' => zget($lang->opportunity->cancelReasonList, $opportunity->cancelReason));
  71. $lifeTimeItems[$lang->opportunity->hangupedBy] = array('control' => 'text', 'text' => zget($users, $opportunity->hangupedBy));
  72. $lifeTimeItems[$lang->opportunity->hangupedDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->hangupedDate) ? '' : $opportunity->hangupedDate);
  73. $lifeTimeItems[$lang->opportunity->activatedBy] = array('control' => 'text', 'text' => zget($users, $opportunity->activatedBy));
  74. $lifeTimeItems[$lang->opportunity->activatedDate] = array('control' => 'text', 'text' => helper::isZeroDate($opportunity->activatedDate) ? '' : $opportunity->activatedDate);
  75. $lifeTime = datalist
  76. (
  77. set::className('opportunity-lift-item'),
  78. set::items($lifeTimeItems),
  79. set::labelWidth($isEn ? '106' : '80')
  80. );
  81. $tabs = array();
  82. $tabs[] = setting()
  83. ->group('basic')
  84. ->title($lang->opportunity->legendBasicInfo)
  85. ->children(wg($basicInfo));
  86. $tabs[] = setting()
  87. ->group('life')
  88. ->title($lang->opportunity->legendLifeTime)
  89. ->children(wg($lifeTime));
  90. detail
  91. (
  92. set::sections($sections),
  93. set::tabs($tabs),
  94. set::actions(array_values($actions))
  95. );
  96. modal
  97. (
  98. setID('importToLib'),
  99. set::modalProps(array('title' => $lang->opportunity->importToLib)),
  100. form
  101. (
  102. setID('importToLibForm'),
  103. setClass('text-center py-4'),
  104. set::actions(array('submit')),
  105. set::submitBtnText($lang->import),
  106. set::url(createLink('opportunity', 'importToLib', "opportunityID={$opportunity->id}")),
  107. $isEn ? set::labelWidth('124px') : null,
  108. formGroup
  109. (
  110. setClass('text-left'),
  111. set::label($lang->opportunity->lib),
  112. set::name('lib'),
  113. set::required(true),
  114. set::items($libs)
  115. ),
  116. !common::hasPriv('assetlib', 'approveOpportunity') && !common::hasPriv('assetlib', 'batchApproveOpportunity') ? formGroup
  117. (
  118. setClass('text-left'),
  119. set::label($lang->opportunity->approver),
  120. set::control(array('control' => 'picker', 'required' => true)),
  121. set::name('assignedTo'),
  122. set::items($approvers)
  123. ) : null
  124. )
  125. );