Camp.cshtml 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584
  1. @using IwbZero.IwbDataQuery
  2. @using IwbZero.ToolCommon.StringModel
  3. @using WeApp.Configuration
  4. @using WeApp.Authorization
  5. @using WeApp.Views.Shared.Modals
  6. @using WeApp.Views.Shared.SearchForm
  7. @using WeApp.Views.Shared.Table
  8. @using WeEngine.Enum
  9. @{
  10. ViewBag.Title = "演练培训营管理";
  11. string activeMenu = PermissionNames.PagesTrainMgCampMg; //The menu item will be active for this page.
  12. ViewBag.ActiveMenu = activeMenu;
  13. string auditState = ViewBag.AutidState,
  14. state = ViewBag.State,
  15. variableType = IwbDataType.GetDataTypeSelectStr();
  16. var searchForm = new SearchFormViewModel(new List<SearchItem>()
  17. {
  18. new SearchItem("name","培训营名称"),
  19. new SearchItem("packageName","方案包名称"),
  20. new SearchItem("campState","方案包状态",FieldType.I).SetSelectItem(state),
  21. new SearchItem("planDate","计划日期",FieldType.D),
  22. });
  23. var table = new TableViewModel(IwbConsts.ApiAppUrl + "Camp/GetAll", activeMenu, searchForm)
  24. .SetFields(new List<FieldItem>()
  25. {
  26. new FieldItem("name", "培训营名称"),
  27. new FieldItem("packageName", "方案包名称"),
  28. new FieldItem("roundScore", "每轮总分"),
  29. new FieldItem("scoreRule", "评分规则"),
  30. new FieldItem("campState", "方案包状态","StateFormatter").SetWidth(100),
  31. new FieldItem("roundScore", "每轮总分").SetWidth(100),
  32. new FieldItem("planDate", "计划日期","DateTimeFormatter").SetWidth(200),
  33. new FieldItem("", "操作","ActionFormatter").SetWidth(200),
  34. });
  35. }
  36. @section css{
  37. }
  38. @Html.Partial("Table/_Table", table)
  39. @section modal{
  40. <!--Main Modal-->
  41. @{
  42. var modal = new ModalViewModel("培训营", new ModalBodyViewModel(new List<Input>()
  43. {
  44. new InputHide("id"),
  45. new InputHide("packageName"),
  46. new InputHide("engineModelType"),
  47. new Input("name", "培训营名称"),
  48. new Input("packageNo", "方案包编号").SetSelectOptions(""),
  49. new Input("address", "培训地点"),
  50. new InputNumber("roundScore", "每轮总分").SetMin(100),
  51. new InputDateTime("planDate", "计划日期"),
  52. new Input("scoreRule", "评分规则",@class:"expression").SetHelp("请以@分隔 [系统评分(权重|总分),专家评分(权重|总分),大众评分(权重|总分)] (例: 8|500@2|10@0|100)"),
  53. new Input("campState", "审核状态").SetSelectOptions(auditState),
  54. new InputTextarea("description", "培训营描述").SetNotRequired(),
  55. }));
  56. }
  57. @Html.Partial("Modals/_Modal", modal)
  58. }
  59. @section scripts
  60. {
  61. <script type="text/javascript">
  62. jQuery.validator.addMethod("expression",
  63. function(value, element) {
  64. var tel = /^\d{1,}\|\d{1,}@@+\d{1,}\|\d{1,}@@+\d{1,}\|\d{1,}$/;
  65. return (tel.test(value));
  66. },
  67. "请正确填写表达式!");
  68. var $table;
  69. $(function() {
  70. $table = LoadTable();
  71. var packageSettingStr =
  72. '<div style="margin: 0px 20px 10px;"><button type="button" class="btn btn-sm btn-block btn-success" id="package-btn" onclick="PackageSetting(\'{0}\')">方案包配置</button></div>';
  73. $('#modal #packageNo').off('change.package').on('change.package',
  74. function() {
  75. $('#modal #packageName').val('');
  76. $('#modal #engineModelType').val('');
  77. $('#modal #package-btn').remove();
  78. _PackageSetting = null;
  79. var packageNo = $('#modal #packageNo').val();
  80. if (packageNo) {
  81. GetPackageSetting(packageNo);
  82. $('#modal #packageName').val($('#modal #packageNo option:selected').text());
  83. $('#modal #engineModelType').val($('#modal #packageNo option:selected').data('model-type'));
  84. $(this).closest('.form-group').after(packageSettingStr.format(packageNo));
  85. }
  86. });
  87. var funs = window.iwbfuns || { none: function() { console.log("No type"); } };
  88. funs["btnCreate"] = function() {
  89. $('#modal #package-btn').remove();
  90. _PackageSetting = null;
  91. $.iwbAjax4({
  92. url: abp.appUrl + 'Camp/GetPackageSelectStr',
  93. block: true,
  94. success: function(res) {
  95. $('#modal #packageNo').html(res).select2();
  96. BtnCreate({
  97. data: { id: "", scoreRule:'8|500@2|10@0|100', campState: '@(CampStateDefinition.New)' },
  98. disabled: 'campState',
  99. dataFun: GetSaveData
  100. });
  101. }
  102. });
  103. }
  104. funs["btnUpdate"] = function() {
  105. var row = $table.bootstrapTable('getSelections')[0];
  106. $('#modal #package-btn').remove();
  107. if (row) {
  108. if (row.campState == @(CampStateDefinition.New) || row.campState == @(CampStateDefinition.Audit)) {
  109. $('#modal #packageNo').closest('.form-group').after(packageSettingStr.format(row.packageNo));
  110. _PackageSetting = null;
  111. $.iwbAjax4({
  112. url: abp.appUrl + 'Camp/GetPackageSelectStr',
  113. block: true,
  114. success: function(res) {
  115. $('#modal #packageNo').html(res).select2();
  116. BtnUpdate({
  117. disabled: "",
  118. dataFun: GetSaveData,
  119. shownAfter: function() {
  120. GetPackageSetting(row.packageNo);
  121. }
  122. },
  123. row);
  124. }
  125. });
  126. } else {
  127. abp.message.warn("培训营已运行不能再修改!");
  128. }
  129. } else {
  130. abp.message.warn(abp.localization.iwbZero('SelectRecordOperation'));
  131. }
  132. };
  133. funs["btnGroup"] = function(url) {
  134. var row = $table.bootstrapTable('getSelections')[0];
  135. if (row) {
  136. $.iwbAjax4({
  137. url: abp.appUrl + 'Camp/CheckCampGroup?no=' + row.id,
  138. success: function(res) {
  139. if (res) {
  140. window.open(res, "_blank");
  141. } else {
  142. $(document).iwbModal('create',
  143. {
  144. url: url,
  145. modal: 'modal-group',
  146. modaltitle: '分组管理',
  147. data: { campNo: row.id, count: 1 },
  148. modalBody:
  149. '<form style="margin-top:10px"><input class="form-control" id="campNo" name="campNo" type="hidden"><div class="form-group row"><label class=" iwb-label iwb-label-sm iwb-label-required" for="count">分组数量</label><div class=""><div class="input-group input-group-sm "><input class="form-control required number" id="count" name="count" min="1" type="number" placeholder="请输入分组数量..."></div></div></div></form>',
  150. success: function(res) {
  151. if (res) {
  152. window.open(res, "_blank");
  153. }
  154. }
  155. });
  156. }
  157. }
  158. });
  159. } else {
  160. abp.message.warn(abp.localization.iwbZero('SelectRecordOperation'));
  161. }
  162. }
  163. funs["btnAttach"] = function() {
  164. var row = $table.bootstrapTable('getSelections')[0];
  165. if (row) {
  166. $.iwbAjax1({
  167. url: abp.appUrl + 'Camp/CheckAttach?no=' + row.id,
  168. success: function(res) {
  169. if (res) {
  170. window.open(res, "_blank");
  171. }
  172. }
  173. });
  174. } else {
  175. abp.message.warn(abp.localization.iwbZero('SelectRecordOperation'));
  176. }
  177. }
  178. funs["btnTag"] = function(url) {
  179. var row = $table.bootstrapTable('getSelections')[0];
  180. if (row) {
  181. $.iwbAjax4({
  182. url: abp.appUrl + 'Camp/GetBehaviorTags?no=' + row.id,
  183. success: function(res) {
  184. if (res) {
  185. TagModal(res, url);
  186. }
  187. }
  188. });
  189. } else {
  190. abp.message.warn(abp.localization.iwbZero('SelectRecordOperation'));
  191. }
  192. }
  193. funs["btnRole"] = function(url) {
  194. var row = $table.bootstrapTable('getSelections')[0];
  195. if (row) {
  196. $.iwbAjax4({
  197. url: abp.appUrl + 'Camp/GetGroupRoles?no=' + row.id,
  198. success: function(res) {
  199. if (res) {
  200. GroupRoleModal(res, url);
  201. }
  202. }
  203. });
  204. } else {
  205. abp.message.warn(abp.localization.iwbZero('SelectRecordOperation'));
  206. }
  207. }
  208. });
  209. function GetSaveData() {
  210. _PackageSetting = _PackageSetting || {};
  211. var data = $.formSerialize($('#modal #form'));
  212. //data.roundScore = _PackageSetting.roundScore;
  213. data.assessRoleNames = _PackageSetting.assessRoleNames;
  214. data.assessAuto = _PackageSetting.assessAuto;
  215. data.variable = _PackageSetting.variable;
  216. return data;
  217. }
  218. </script>
  219. <script id="PackageSetting-S">
  220. var _PackageSetting = null;
  221. function PackageSetting() {
  222. if (_PackageSetting) {
  223. PackageSettingModal(_PackageSetting);
  224. } else {
  225. abp.message.warn('未发现配置信息!');
  226. }
  227. }
  228. function GetPackageSetting(no) {
  229. var id = $('#modal #id').val() || 'none';
  230. $.iwbAjax4({
  231. url: abp.appUrl + 'camp/GetPackageSetting?id=' + id + '&packageNo=' + no,
  232. success: function(res) {
  233. if (res) {
  234. _PackageSetting = res;
  235. }
  236. }
  237. });
  238. }
  239. function PackageSettingModal(data) {
  240. var $body = FormatterPackageSettingBody(data);
  241. $(document).iwbModal('create',
  242. {
  243. modal: 'modal-package-setting',
  244. modaltitle: "方案包配置",
  245. modalBody: $body,
  246. save: SavePackageSetting
  247. });
  248. }
  249. function FormatterPackageSettingBody(data) {
  250. var $form = $('<form>', { 'css': { 'padding': '10px' } });
  251. //$form.append(
  252. // '<div class="form-group row"><label class=" iwb-label iwb-label-sm" for="roundScore">每轮总分</label><div class=""><div class="input-group input-group-sm "><input class="form-control number" id="roundScore" name="roundScore" type="text" placeholder="请输入每轮总分..." style="" aria-required="true"></div></div></div>');
  253. //if (data.roundScore) {
  254. // $form.find('#roundScore').val(data.roundScore);
  255. //}
  256. $form.append(FormatterVariableBox(data.variable));
  257. $form.append(FormatterRoleBox(data.allRoles, data.assessRoleNames, data.assessAuto));
  258. return $form;
  259. }
  260. function FormatterRoleBox(allRoles, assessRoleNames, assessAuto) {
  261. var temp =
  262. '<label class="iwb-checkbox iwb-{3}"><input type="checkbox" id="role-{0}" data-role-no="{0}" data-role-name="{1}" name="assess-role{4}" value="{0}" {2}><span></span>{1}</label>';
  263. var $roleBox = $('<div>',
  264. { 'class': 'dynamic-box row', 'css': { 'margin': '10px', 'paddingBottom': '0' } });
  265. var roleArr = assessRoleNames ? assessRoleNames.split(',') : undefined;
  266. var modelType = $('#modal #engineModelType').val();
  267. if (allRoles) {
  268. allRoles.forEach(function(v) {
  269. var checkedStr = "";
  270. if (roleArr && roleArr.indexOf(v.roleName) >= 0) {
  271. checkedStr = "checked";
  272. }
  273. var $role = $('<div>', { 'class': 'col-sm-4' }).append(temp.format(v.roleName,
  274. v.roleName + "(" + v.rolePer + "%)",
  275. checkedStr,
  276. 'green',""));
  277. if (modelType == @(ModelType.IndependentTeam.ToInt()) ||
  278. modelType == @(ModelType.Independent.ToInt())) {
  279. $role.on('click',
  280. function(e) {
  281. e.preventDefault();
  282. e.stopPropagation();
  283. var flag = $(this).find('input').is(':checked');
  284. $(this).closest('.role-box').find('input').prop('checked', false);
  285. $(this).find('input').prop('checked', !flag);
  286. });
  287. }
  288. $roleBox.append($role);
  289. });
  290. }
  291. var $info = $('<div>',
  292. { 'class': 'iwb-info-box iwb-sm', 'id': 'role-box', 'css': { 'padding': '0 10px' } });
  293. $info.append('<div class="box-header">考核角色<small>(不配置即视为关闭关联角色)</small></div>');
  294. $info.append($roleBox);
  295. $info.append($('<div>',
  296. {
  297. 'class': 'role-auto',
  298. 'css': { 'border': 'none', 'textAlign': 'right', 'marginRight': '0 30px 0 0' }
  299. })
  300. .append(temp.format('auto', '未考核角色自动满分', assessAuto != false ? "checked" : "", 'danger',"auto")));
  301. return $info;
  302. }
  303. function FormatterVariableBox(variableStr) {
  304. if (!variableStr) {
  305. return '';
  306. }
  307. var label = '<div class="dynamic-label col-sm-{0}"><label class="iwb-label">{1}</label></div >',
  308. $box = $('<div>', { 'class': 'dynamic-box', 'css': { 'margin': '10px' } }),
  309. $box1 = $('<div>', { 'class': 'row iwb-dynamic-box' }),
  310. $box2 = $('<div>', { 'class': 'row iwb-dynamic-box' });
  311. $box1.append(label.format('4', '变量'))
  312. .append(label.format('4', '类型'))
  313. .append(label.format('4', '默认值'));
  314. $box2.append(
  315. '<div class="col-sm-4"><div class="input-group input-group-sm"><input class="form-control required" name="variableId" placeholder="请输入变量" style="width: 100%" /></div></div><div class="col-sm-4"><div class="input-group input-group-sm"><select class="form-control required" name="variableType" style="width: 100%">@(Html.Raw(variableType))</select></div></div><div class="col-sm-4"><div class="input-group input-group-sm"><input class="form-control required" name="defaultValue" placeholder="请输入默认值" style="width: 100%" /></div></div><div style="display:none"><button class="btn btn-sm btn-block btn-add" type="button" onclick="AddDynamicBox(this)">增加</button></div>');
  316. $box.append($box1).append($box2);
  317. var variableArr = variableStr.split(',');
  318. for (var i = 0; i < variableArr.length; i++) {
  319. var str = variableArr[i];
  320. var arr = str.split(':');
  321. var $that = i === 0
  322. ? $box.find('.iwb-dynamic-box').eq(1)
  323. : AddDynamicBox($box.find('.iwb-dynamic-box').eq(1).find('.btn-add'));
  324. $that.find('.form-control[name="variableId"]').val(arr[0]).prop('disabled', true);
  325. $that.find('.form-control[name="variableType"]').val(arr[1].toLocaleLowerCase() || "string").select2()
  326. .prop('disabled', true);
  327. $that.find('.form-control[name="defaultValue"]').val(arr[2] || "");
  328. }
  329. var $info = $('<div>',
  330. { 'class': 'iwb-info-box iwb-sm', 'id': 'variable-box', 'css': { 'padding': '0 10px' } });
  331. $info.append('<div class="box-header">全局变量</div>');
  332. $info.append($box);
  333. return $info;
  334. }
  335. function SavePackageSetting() {
  336. var $modal = $('#modal-package-setting');
  337. _PackageSetting = _PackageSetting || {};
  338. //_PackageSetting.roundScore = $modal.find('#roundScore').val();
  339. var roleNames = '';
  340. $modal.find('#role-box input[name="assess-role"]:checked').each(function() {
  341. if ($(this).is(':checked')) {
  342. roleNames += (roleNames === "" ? "" : ",") + $(this).data('role-no');
  343. }
  344. });
  345. _PackageSetting.assessAuto = $modal.find('#role-auto').is(':checked');
  346. _PackageSetting.assessRoleNames = roleNames;
  347. var variableStr = '';
  348. $modal.find('#variable-box').find('.iwb-dynamic-box').each(function() {
  349. var name = $(this).find('.form-control[name="variableId"]').val();
  350. if (name) {
  351. var type = $(this).find('.form-control[name="variableType"]').val() || 'string';
  352. var value = $(this).find('.form-control[name="defaultValue"]').val() || '';
  353. variableStr += (variableStr == '' ? '' : ',') + '{0}:{1}:{2}'.format(name, type, value);
  354. }
  355. });
  356. _PackageSetting.variable = variableStr;
  357. $modal.modal('hide');
  358. }
  359. </script>
  360. <script id="tag-s">
  361. function TagModal(data, url) {
  362. var $body = FormatterTagBody(data);
  363. $(document).iwbModal('create',
  364. {
  365. modal: 'modal-tag',
  366. modaltitle: "筛选行为标签",
  367. modalBody: $body,
  368. save: function () {
  369. SaveTag(url);
  370. }
  371. });
  372. }
  373. function FormatterTagBody(data) {
  374. var $form = $('<form>', { 'css': { 'padding': '10px' } });
  375. $form.append('<input class="form-control" id="campNo" name="campNo" type="hidden">');
  376. $form.find("#campNo").val(data.campNo);
  377. var temp =
  378. '<label class="iwb-checkbox iwb-{3}"><input type="checkbox" id="tag-{0}" data-tag-no="{0}" name="tag" value="{0}" {2}><span></span>{1}</label>';
  379. var $tagBox = $('<div>', { 'class': 'dynamic-box row', 'css': { 'margin': '10px', 'paddingBottom': '0' } });
  380. var tagArr = data.behaviorTagNos ? data.behaviorTagNos.split(',') : undefined;
  381. if (data.allTags) {
  382. data.allTags.forEach(function (v) {
  383. var checkedStr = "";
  384. if (tagArr && tagArr.indexOf(v.tagNo) >= 0) {
  385. checkedStr = "checked";
  386. }
  387. var $tag = $('<div>', { 'class': 'col-sm-3' })
  388. .append(temp.format(v.tagNo, v.tagName, checkedStr, 'green'));
  389. $tagBox.append($tag);
  390. });
  391. }
  392. var $info = $('<div>', { 'class': 'iwb-info-box iwb-sm', 'id': 'tag-box', 'css': { 'padding': '0 10px' } });
  393. $info.append('<div class="box-header">评估标签</div>');
  394. $info.append($tagBox);
  395. $form.append($info);
  396. return $form;
  397. }
  398. function SaveTag(url) {
  399. var $modal = $('#modal-tag'), data = { campNo: $modal.find('#campNo').val() };
  400. var tagNos = '';
  401. $modal.find('#tag-box input[name="tag"]:checked').each(function () {
  402. if ($(this).is(':checked')) {
  403. tagNos += (tagNos === "" ? "" : ",") + $(this).data('tag-no');
  404. }
  405. });
  406. data.behaviorTagNos = tagNos;
  407. $.iwbAjax1({
  408. url: url,
  409. data: data,
  410. success: function () {
  411. $modal.modal('hide');
  412. }
  413. });
  414. }
  415. </script>
  416. <script id="groupRole-s">
  417. function GroupRoleModal(data, url) {
  418. var $body = FormatterGroupRoleBody(data);
  419. $(document).iwbModal('create',
  420. {
  421. modal: 'modal-group-role',
  422. modaltitle: "筛选角色组预案",
  423. modalBody: $body,
  424. save: function () {
  425. SaveGroupRole(url);
  426. }
  427. });
  428. }
  429. function FormatterGroupRoleBody(data) {
  430. var $form = $('<form>', { 'css': { 'padding': '10px' } });
  431. $form.append('<input class="form-control" id="campNo" name="campNo" type="hidden">');
  432. $form.find("#campNo").val(data.campNo);
  433. var temp =
  434. '<label class="iwb-checkbox iwb-{3}"><input type="checkbox" id="group-{0}" data-group-no="{0}" name="group" value="{0}" {2}><span></span>{1}</label>';
  435. var $groupBox = $('<div>',
  436. { 'class': 'dynamic-box row', 'css': { 'margin': '10px', 'paddingBottom': '0' } });
  437. //var groupArr = data.groupNos ? data.groupNos.split(',') : undefined;
  438. if (data.allGroups) {
  439. data.allGroups.forEach(function (v) {
  440. var checkedStr = "";
  441. if (data.groupNos && data.groupNos.indexOf(v.id) >= 0) {
  442. checkedStr = "checked";
  443. }
  444. var $group = $('<div>', { 'class': 'col-sm-3' })
  445. .append(temp.format(v.id, v.roleGroupName, checkedStr, 'green'));
  446. $groupBox.append($group);
  447. });
  448. }
  449. var $info = $('<div>',
  450. { 'class': 'iwb-info-box iwb-sm', 'id': 'group-box', 'css': { 'padding': '0 10px' } });
  451. $info.append('<div class="box-header">角色组预案</div>');
  452. $info.append($groupBox);
  453. $form.append($info);
  454. return $form;
  455. }
  456. function SaveGroupRole(url) {
  457. var $modal = $('#modal-group-role'), data = { campNo: $modal.find('#campNo').val() };
  458. var groupNos = [];
  459. $modal.find('#group-box input[name="group"]:checked').each(function () {
  460. if ($(this).is(':checked')) {
  461. groupNos.push($(this).data('group-no'));
  462. }
  463. });
  464. data.groupNos = groupNos;
  465. $.iwbAjax1({
  466. url: url,
  467. data: data,
  468. success: function () {
  469. $modal.modal('hide');
  470. }
  471. });
  472. }
  473. </script>
  474. <!--格式化-->
  475. <script id="formatter-script" type="text/javascript">
  476. var icon = '<i class="fa fa-angle-double-right"></i>';
  477. function TypeFormatter(v) {
  478. var name = $('#hid-type option[value="' + v + '"]').text();
  479. switch (v) {
  480. case 0:
  481. return '<span class="label label-danger">' + name + '</span>';
  482. default:
  483. return '<span class="label label-info">' + name + '</span>';
  484. }
  485. }
  486. function ActionFormatter(v, r) {
  487. var temp = '<a class="table-action" href="{1}" target="_blank">' + icon + '{0}</a>';
  488. var str = '';
  489. if (r.campState == @(CampStateDefinition.Audit) || r.campState == @(CampStateDefinition.Run)) {
  490. str += temp.format("演练实施", '/Train/Eval/{0}'.format(r.id));
  491. }
  492. if (r.campState == @(CampStateDefinition.Run)) {
  493. @if (IsGranted(PermissionNames.PagesTrainMgPortraitMgGenerate))
  494. {
  495. <text>
  496. str += temp.format("生成画像", '/Train/GeneratePortrait/{0}'.format(r.id));
  497. </text>
  498. }
  499. }
  500. if (r.campState == @(CampStateDefinition.End)) {
  501. @if (IsGranted(PermissionNames.PagesTrainMgPortraitMgGenerate))
  502. {
  503. <text>
  504. str += temp.format("生成画像", '/Train/GeneratePortrait/{0}'.format(r.id));
  505. </text>
  506. }
  507. else if (IsGranted(PermissionNames.PagesTrainMgPortraitMgQuery))
  508. {
  509. <text>
  510. str += temp.format("演练画像", '/Train/Portrait/{0}'.format(r.id));
  511. </text>
  512. }
  513. }
  514. if (!str) {
  515. str += '<span class="table-action">暂无操作</span>';
  516. }
  517. return str;
  518. }
  519. function StateFormatter(v) {
  520. var name = $('#hid-state option[value="' + v + '"]').text();
  521. switch (v) {
  522. case @(CampStateDefinition.New):
  523. return '<span class="label label-info">' + name + '</span>';
  524. case @(CampStateDefinition.Audit):
  525. return '<span class="label label-success">' + name + '</span>';
  526. case @(CampStateDefinition.Run):
  527. return '<span class="label label-iwb">' + name + '</span>';
  528. case @(CampStateDefinition.Error):
  529. case @(CampStateDefinition.End):
  530. return '<span class="label label-danger">' + name + '</span>';
  531. default:
  532. return '<span class="label label-info">' + name + '</span>';
  533. }
  534. }
  535. </script>
  536. }
  537. <section style="display: none">
  538. <select id="hid-type">
  539. <option value=""></option>
  540. </select>
  541. <select id="hid-state">
  542. @(Html.Raw(state))
  543. </select>
  544. @*@Html.DropDownList("hid-type", type)*@
  545. </section>