Leader.cshtml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. @using WeApp.Configuration
  2. @using WeApp.TrainingCampGroup.Dto
  3. @{
  4. Layout = "~/Views/Shared/Layout/_Layout.Stu.cshtml";
  5. CampGroupDto group = ViewBag.Group;
  6. ViewBag.Title = "指挥长屏(" + group.Name + ")";
  7. string id = group.Id,
  8. groupName = group.Name,
  9. campNo = group.CampNo;
  10. }
  11. @section css{
  12. <link href="~/Content/Css/Exercise/stu-leader.min.css" rel="stylesheet" />
  13. }
  14. <div class="body">
  15. <div class="title-box box">
  16. <div class="left-box">
  17. <div class="line"></div>
  18. <div class="title">@(groupName)指挥部 —— 指挥长</div>
  19. </div>
  20. <div class="right-box">
  21. <div class="btn btn-submit" onclick="SubmitNextScene()">进入下一阶段情景</div>
  22. </div>
  23. </div>
  24. <div class="leader-box box">
  25. <table class="table">
  26. <thead>
  27. <tr>
  28. <th style="width: 200px">角色</th>
  29. <th>指令内容</th>
  30. <th style="width: 80px">下达状态</th>
  31. <th style="width: 120px">操作</th>
  32. </tr>
  33. </thead>
  34. <tbody id="log-box">
  35. <tr class="empty">
  36. <td colspan="5">暂无指令,等待组员发送指令</td>
  37. </tr>
  38. </tbody>
  39. </table>
  40. </div>
  41. </div>
  42. @section scripts
  43. {
  44. <script>
  45. $(function() {
  46. GetLog();
  47. OverlayScrollbar($('.leader-box'));
  48. });
  49. function RoleHandle(that) {
  50. MsgConfirm("您确认下达这条指令吗?",
  51. "下达指令",
  52. function() {
  53. var $that = $(that).closest('tr');
  54. var id = $that.data('id');
  55. $.iwbAjax4({
  56. url: abp.appUrl + "Eval/OperationScene?id=" + id,
  57. success: function() {
  58. $that.removeClass('wait').addClass('send');
  59. $that.find('.state').html('已下达');
  60. $that.find('.action').html('');
  61. }
  62. });
  63. });
  64. }
  65. function SubmitNextScene() {
  66. var log = $("#log-box tr.send");
  67. if (!log || log.length <= 0) {
  68. abp.message.warn("请至少下达一条指令后再操作!");
  69. return;
  70. }
  71. MsgConfirm("您确认进入到下一情景吗?",
  72. "情景流转",
  73. function() {
  74. $.iwbAjax4({
  75. url: abp.appUrl + "Eval/NextFlowNode?groupNo=@(id)&campNo=none",
  76. success: function(res) {
  77. $("#log-box").html('<tr class="empty"><td colspan="5">暂无指令,等待组员发送指令</td></tr>');
  78. }
  79. });
  80. });
  81. }
  82. function GetLog() {
  83. $.iwbAjax5({
  84. url: abp.appUrl + "Query/GetCurrentSceneLog?no=@(id)",
  85. success: function(res) {
  86. if (res) {
  87. $("#box-body").empty();
  88. var str = '';
  89. for (var i = 0; i < res.length; i++) {
  90. var item = res[i];
  91. str += FormatLog(item);
  92. }
  93. if (str) {
  94. $("#log-box").html(str);
  95. }
  96. }
  97. }
  98. });
  99. }
  100. function FormatLog(data) {
  101. var str = "";
  102. if (data) {
  103. var msg = data.word ? data.word : "",
  104. btn = data.logState == '@(LogStateDefinition.New)'
  105. ? '<button type="button" class="btn btn-submit" style="" onclick="RoleHandle(this)">下达指令</button>'
  106. : '',
  107. state = data.logState == '@(LogStateDefinition.New)' ? '待下达' : '已下达',
  108. style = data.logState == '@(LogStateDefinition.New)' ? 'wait' : 'send';
  109. str = '<tr class="{5}" data-id="{0}"><td>{1}</td><td>{2}</td><td class="state">{3}</td><td class="action">{4}</td></tr>'.format(
  110. data.id,
  111. data.role,
  112. msg,
  113. state,
  114. btn,
  115. style);
  116. //str =
  117. // '<div class="handle-box leader {4}" data-id="{0}"> <div class="handle-content"><span class="role-text">{1}</span><span class="text">:</span><span class="content-text">{2}</span></div><div class="handle-button">{3}</div></div>'
  118. // .format(data.id, data.role, msg, btn, style);
  119. }
  120. return str;
  121. }
  122. </script>
  123. <script>
  124. abp.signalr.connect(['@(id)', '@(campNo)']);
  125. iwbHub.client.getReloadAll = function(msg) {
  126. console.log('getReloadAll: ', msg);
  127. if (msg) {
  128. try {
  129. var data = JSON.parse(msg);
  130. if (data) {
  131. if (data.no == '@(id)' || data.no == '@(campNo)') {
  132. window.location.reload();
  133. }
  134. }
  135. } catch (e) {
  136. console.log('getReloadAll: ', e);
  137. }
  138. }
  139. };
  140. iwbHub.client.getReloadLeader = function(msg) {
  141. console.log('getReloadLeader: ', msg);
  142. if (msg) {
  143. try {
  144. var data = JSON.parse(msg);
  145. if (data) {
  146. if (data.no == '@(id)' || data.no == '@(campNo)') {
  147. window.location.reload();
  148. }
  149. }
  150. } catch (e) {
  151. console.log('getReloadLeader: ', e);
  152. }
  153. }
  154. };
  155. iwbHub.client.getOperationLog = function(msg) {
  156. console.log('getOperationLog: ', msg);
  157. if (msg) {
  158. try {
  159. var data = JSON.parse(msg);
  160. if (data) {
  161. if (data.no == '@(id)') {
  162. $('tr.empty').remove();
  163. var str = FormatLog(data);
  164. $('#log-box').prepend(str);
  165. }
  166. }
  167. } catch (e) {
  168. console.log('getOperationLog: ', e);
  169. }
  170. }
  171. };
  172. </script>
  173. }