PageRenderTime 41ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/mobile/WebContent/admin.js

http://smartmobile.googlecode.com/
JavaScript | 416 lines | 367 code | 22 blank | 27 comment | 45 complexity | 5ae056430db79d79e5659af510aea03b MD5 | raw file
  1. // ????
  2. // ---------------------------------------------------------------------
  3. isc.TreeGrid.create({//???
  4. ID:"depTree",dataSource:"depDS",fetchOperation:"myTreeFetch",canEdit: true,leaveScrollbarGap:false,
  5. animateFolders:true,showHeader:false,selectionType:"single",autoFetchData: true,animateRowsMaxTime:750
  6. ,cellContextClick:"return depTreeMenu.showContextMenu()"
  7. ,rowClick: "userList.filterData({dep_pk:record.pk})",
  8. dataArrived:function(parentNode){
  9. if(!parentNode.pk){
  10. this.openFolder(parentNode.children[0]);
  11. }
  12. },
  13. fields: [{name: "name"}]
  14. });
  15. isc.Menu.create({//????????
  16. ID:"depTreeMenu",
  17. cellHeight:22,
  18. data:[
  19. {title:"??",
  20. icon:"icon_add.png",
  21. click:function () {
  22. var p = depTree.getSelectedRecord();
  23. depTree.data.openFolder(p);
  24. //???pk
  25. var maxPk = 0;
  26. var c = depTree.data.getChildren(p);
  27. for(var i =0; i < c.getLength(); i++){
  28. var pk = Number(c.get(i).pk);
  29. if(pk > maxPk){
  30. maxPk = pk;
  31. }
  32. }
  33. maxPk =""+ (maxPk +1001);
  34. maxPk = maxPk.substr(1);
  35. //????
  36. var n = {pk: p.pk+maxPk,name:"???",corp_sid:currUserCorpSid, parentID:p.pk,orderby:0,isFolder:false,
  37. smLimit:-1,mmLimit:-1,smSent:0,mmSent:0
  38. };
  39. depDS.addData(n,function(){
  40. var nn = depTree.data.findById(n.pk);
  41. var i = depTree.data.indexOf(nn);
  42. depTree.startEditing(i);
  43. });
  44. }
  45. },
  46. {title:"??",
  47. icon:"icon_edit.png",
  48. click:"depTree.startEditing(depTree.getFocusRow());"},
  49. {title:"??",
  50. icon:"icon_delete.png",
  51. click:function(){
  52. if(depTree.data.size()==1){
  53. isc.say("???????????????????");
  54. return;
  55. }
  56. depTree.removeSelectedData();
  57. }
  58. }
  59. ]
  60. });
  61. isc.Window.create({//EXCEL????
  62. ID: "userImportWindow", title: "????",height:"100%", width: '800',autoCenter: true, isModal: true, showModalMask: true, autoDraw: false,
  63. closeClick : function () {
  64. this.Super("closeClick", arguments);
  65. //depTree.invalidateCache();
  66. },
  67. items: [
  68. isc.BatchUploader.create({
  69. layoutMargin:15,partialCommitPrompt:"??????????????????????????????????????",
  70. uploadFormFields: [
  71. { value: "user.xls", title:"????",canEdit: false, type: "link" ,width:180}
  72. ],
  73. uploadDataSource: user,uploadFileLabel:"Excel ",
  74. requestProperties:{willHandleError:true,operationId:"batchImport"},
  75. gridProperties: {height:350,width: '100%',addOperation:"batchImport"},
  76. gridFields :[
  77. {name:"truename"},{name:"telephone"},{name:"password"},{name:"dep_pk"},{name:"sex"},
  78. {name:"address"},{name:"certificateType"},{name:"certificateNum"}
  79. ]
  80. })
  81. ]
  82. });
  83. isc.ListGrid.create({//????
  84. ID:"userList",dataSource:"user",fetchOperation:"adminFetch",addOperation:"adminAdd",
  85. useAllDataSourceFields:true,showRowNumbers:true,canEdit:true, modalEditing:true,
  86. height:"100%",autoFetchData: true, showFilterEditor: true, selectionAppearance:"checkbox",
  87. selectionType:"simple",filterOnKeypress: true,
  88. canEditCell : function (rowNum, colNum) {
  89. //???????????????,????????
  90. var record = this.getRecord(rowNum);
  91. var fieldName = this.getFieldName(colNum);
  92. if(!record){
  93. return this.Super("canEditCell", arguments);
  94. }
  95. if ((fieldName == "admin" || fieldName == "dep_pk")&& record.pk == currUserPK) {
  96. return false;
  97. }
  98. // use default rules for all other fields
  99. return this.Super("canEditCell", arguments);
  100. },
  101. fields:[
  102. {name:"dep_pk",optionDataSource:"depDS",title:"??",
  103. optionOperationId:"mySelectFetch" ,valueField:"pk",displayField:"name" }
  104. ]
  105. });
  106. isc.HLayout.create({//??????
  107. autoDraw: false,
  108. layoutMargin: 3,
  109. membersMargin: 7,
  110. ID: "userButtonLayout", members: [
  111. isc.IButton.create({
  112. autoDraw: false,
  113. title: "????",
  114. click:"userList.startEditingNew()"
  115. }),
  116. isc.IButton.create({
  117. autoDraw: false,
  118. title: "??????",
  119. click: function () {
  120. if (userList.getSelectedRecord()) {
  121. isc.confirm("???????","if(value) userList.removeSelectedData()");
  122. }else{
  123. isc.say("?????");
  124. }
  125. }
  126. }),
  127. isc.IButton.create({
  128. title: "?EXCEL??",click:"userImportWindow.show()"
  129. }),
  130. isc.IButton.create({
  131. autoDraw: false,
  132. title: "??????",
  133. click: function () {
  134. var data = userList.getSelection();
  135. if (data) {
  136. var wasQueuing1 = RPCManager.startQueue();
  137. for(var i = 0; i < data.length; i++){
  138. var d = data.get(i);
  139. if(d.smStatus === true){
  140. continue;
  141. }
  142. var task = {};
  143. task.mt_content="?????????"+currUserTruename+"??????????????Y?????";
  144. task.mt_dst_num=d.telephone;
  145. task.mt_dst_name=d.truename;
  146. task.from_number=currUserTelephone;
  147. task.mt_dst_size=1;
  148. sms_task.addData(task);
  149. }
  150. if (!wasQueuing1) RPCManager.sendQueue(function(){
  151. isc.say("??????????");
  152. });
  153. }else{
  154. isc.say("?????");
  155. }
  156. }
  157. })
  158. ]
  159. });
  160. isc.HLayout.create({//????????
  161. ID:"orgLayout",
  162. width:"100%",
  163. height:"100%",
  164. members:[
  165. isc.SectionStack.create({
  166. width:180,
  167. sections:[
  168. {title:"????", autoShow:true, items:[depTree]}
  169. ]
  170. }),
  171. isc.SectionStack.create({
  172. sections:[
  173. {title:"??", autoShow:true, items:[userButtonLayout,userList]}
  174. ]
  175. })
  176. ]
  177. });
  178. // ???
  179. // ---------------------------------------------------------------------
  180. isc.HLayout.create({//?????
  181. ID: "blackButtonLayout",autoDraw: false,layoutMargin: 3,membersMargin: 7,
  182. members: [
  183. isc.IButton.create({title: "??",click:"blackList.startEditingNew()"}),
  184. isc.IButton.create({title: "????",click:function(){
  185. if (blackList.getSelectedRecord()) {
  186. isc.confirm("???????","if(value) blackList.removeSelectedData()");
  187. }else{
  188. isc.say("?????");
  189. }
  190. }})
  191. ]
  192. });
  193. isc.ListGrid.create({//?????
  194. ID:"blackList",dataSource:"blackDS",addOperation:"depAdd",fetchOperation:"depFetch",
  195. useAllDataSourceFields:true,
  196. showRowNumbers:true,
  197. canEdit:true,
  198. modalEditing:true,
  199. alternateRecordStyles:true,
  200. height:"100%",
  201. autoFetchData: true,
  202. showFilterEditor: true,
  203. selectionAppearance:"checkbox",
  204. selectionType:"simple",
  205. filterOnKeypress: true
  206. });
  207. isc.HLayout.create({//????
  208. ID:"blackApp",
  209. width:"100%",
  210. height:"100%",
  211. members:[
  212. isc.SectionStack.create({
  213. sections:[
  214. {title:"???", autoShow:true, items:[ blackButtonLayout,blackList]}
  215. ]
  216. })
  217. ]
  218. });
  219. // ????
  220. // ---------------------------------------------------------------------
  221. isc.SectionStack.create({ID:"appLimt",width:'100%',sections:[{title:"???????",autoShow:true, items:[
  222. isc.DynamicForm.create({cellBorder :0,width:300,
  223. ID:"limitForm",dataSource:"companyDS",saveOperationType:"update",numCols:4,colWidths:[1,50,1,'*'],
  224. fields:[
  225. {name:"corp_sid",value:currUserCorpSid,type:"hidden"},
  226. {name:"ms_limit",value:currComMsLimit,
  227. changed:function (form, item, value){
  228. form.saveData();
  229. }},
  230. {type:"staticText",value:'<div style="color:red">????-1?????</div>'}
  231. ]
  232. }),
  233. isc.TreeGrid.create({//???
  234. ID:"limitDepTree",dataSource:"depDS",fetchOperation:"myTreeFetch",canEdit: true,
  235. leaveScrollbarGap:true,animateFolders:true,loadDataOnDemand :true,
  236. showHeader:true,selectionType:"single",modalEditing:true,
  237. autoFetchData: true,
  238. dataArrived:function(parentNode){
  239. if(!parentNode.pk){
  240. //???????
  241. this.openFolder(parentNode.children[0]);
  242. //???????????????
  243. if("depAdmin" == roles){
  244. parentNode.children[0].enabled=false;
  245. }
  246. }
  247. },
  248. fields: [
  249. {name: "name",canEdit:false,width:260},
  250. {name: "smLimit",emptyCellValue:"-1"
  251. ,validators: [
  252. {
  253. type: "custom",
  254. /*????????????*/
  255. condition: function(item, validator, value, record){
  256. //???????,????true
  257. var ivalue = parseInt(value);
  258. if(isNaN(ivalue) || ivalue == -1) return true;
  259. //????????
  260. var p = limitDepTree.data.getParent(record);
  261. while(p != null && (isNaN(p.smLimit) || p.smLimit == -1)){
  262. p = limitDepTree.data.getParent(p);
  263. }
  264. //???????????,??true
  265. if(p == null ) return true;
  266. //?????
  267. if(ivalue > p.smLimit) return false;
  268. else return true;
  269. },
  270. errorMessage: "??????????"
  271. }]
  272. },
  273. {name: "smSent",canEdit:false,emptyCellValue:"0"},
  274. {name: "mmLimit",emptyCellValue:"-1"
  275. ,validators: [
  276. {
  277. type: "custom",
  278. /*????????????*/
  279. condition: function(item, validator, value, record){
  280. //???????,????true
  281. var ivalue = parseInt(value);
  282. if(isNaN(ivalue) || ivalue == -1) return true;
  283. //????????
  284. var p = limitDepTree.data.getParent(record);
  285. while(p != null && (isNaN(p.mmLimit) || p.mmLimit == -1)){
  286. p = limitDepTree.data.getParent(p);
  287. }
  288. //???????????,??true
  289. if(p == null ) return true;
  290. //?????
  291. if(ivalue > p.mmLimit) return false;
  292. else return true;
  293. },
  294. errorMessage: "??????????"
  295. }]
  296. },
  297. {name: "mmSent",canEdit:false,emptyCellValue:"0"}
  298. ]
  299. })
  300. ]}]});
  301. //????
  302. //---------------------------------------------------------------------
  303. isc.SectionStack.create({ID:"smConfigApp",width:'100%',sections:[{title:"??????",autoShow:true, items:[
  304. isc.HLayout.create({layoutTopMargin: 3,membersMargin: 3,height:30,
  305. members: [
  306. isc.IButton.create({title: "??",click:"smConfigList.startEditingNew()"}),
  307. isc.IButton.create({title: "????",click:function(){
  308. if (smConfigList.getSelectedRecord()) {
  309. isc.confirm("???????","if(value) smConfigList.removeSelectedData()");
  310. }else{
  311. isc.say("?????");
  312. }
  313. }})
  314. ]
  315. }),
  316. isc.ListGrid.create({
  317. ID:"smConfigList",dataSource:"sms_config",fetchOperation:"comFetch",addOperation:"comAdd",showRowNumbers:false,
  318. canEdit:true, modalEditing:true, autoFetchData: true, showFilterEditor: true,
  319. filterOnKeypress: true, wrapCells: true,cellHeight: 56, selectionType:"simple",selectionAppearance:"checkbox",
  320. fields:[
  321. {name:"title"},
  322. {name:"content",type:"text",showHover:true,
  323. cellChanged: function(record,value){
  324. record.mt_dst_size = Math.ceil(value.length/70);
  325. smConfigList.updateData(record);
  326. }
  327. },
  328. {name:"mt_dst_size",canEdit:false},
  329. {name:"inCallSend"},
  330. {name:"outCallSend"}
  331. ]
  332. })
  333. ]}]});
  334. //????
  335. //---------------------------------------------------------------------
  336. isc.Window.create({
  337. ID: "mmsConfigWindow", title: "????", width:'80%',height:'100%', autoCenter: true, isModal: true, showModalMask: true, autoDraw: false,
  338. closeClick : function () {
  339. mmsConfigList.invalidateCache();
  340. this.Super("closeClick", arguments);
  341. this.animateMove(-3300);
  342. },
  343. items: [
  344. isc.HTMLPane.create({
  345. ID:"mmsConfigPane",
  346. showEdges:true,
  347. contentsType:"page"
  348. })
  349. ]
  350. });
  351. isc.SectionStack.create({ID:"mmsConfigApp",width:'100%',
  352. sections:[{title:"??????",autoShow:true, items:[
  353. isc.HLayout.create({
  354. autoDraw: false, layoutTopMargin: 3, membersMargin: 3, height:30,
  355. members: [
  356. isc.IButton.create({
  357. title: "??",
  358. click:function(){
  359. mmsConfigPane.setContentsURL('mmsConfig.do?method=append&company=y');
  360. mmsConfigWindow.centerInPage();
  361. mmsConfigWindow.show();
  362. }
  363. }),
  364. isc.IButton.create({title: "????",click:function(){
  365. if (mmsConfigList.getSelectedRecord()) {
  366. isc.confirm("???????","if(value) mmsConfigList.removeSelectedData()");
  367. }else{
  368. isc.say("?????");
  369. }
  370. }})
  371. ]
  372. }),
  373. isc.ListGrid.create({
  374. ID:"mmsConfigList",selectionType:"simple",selectionAppearance:"checkbox",fetchOperation:"comMmsFetch",
  375. dataSource:"mms",useAllDataSourceFields:true,showRowNumbers:true,alternateRecordStyles:true,
  376. autoFetchData: true, showFilterEditor: true,filterOnKeypress: true,wrapCells: true,
  377. fields:[
  378. {name:"mms_subject",type:"link",target:"javascript"}
  379. ,{name:"mms_size",width:50}
  380. ,{name:"incoming_call_state",width:50
  381. }
  382. ,{name:"outcoming_call_state",width:50}
  383. ,{name:"create_date",width:100}
  384. ],
  385. cellClick:function (record, rowNum, colNum){
  386. if(colNum == 2){
  387. mmsConfigPane.setContentsURL('');
  388. mmsConfigPane.setContentsURL('mmsConfig.do?method=edit&company=y&mmsSid='+record.mms_sid);
  389. mmsConfigWindow.centerInPage();
  390. mmsConfigWindow.show();
  391. }
  392. }
  393. })
  394. ]}]});