miaoguo_user_admin.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>秒过学习</title>
  6. <link rel="stylesheet" href="../mg/common.css">
  7. <style type="text/css">
  8. .container {
  9. width:98%;
  10. margin: 0 20px 0 20px;
  11. }
  12. #app {
  13. margin: 0 auto;
  14. font-size: 18px;
  15. }
  16. .panelTop{
  17. width:100%;
  18. height:50px;
  19. justify-content: flex-start;
  20. }
  21. .btn1{
  22. width:80px;
  23. height: 25px;
  24. border-radius: 2px;
  25. margin: 0px 10px 0px 10px;
  26. border: 1px solid #aaaaaa;
  27. text-align: center;
  28. background-color: #fff;
  29. color:#000;
  30. cursor:pointer;
  31. }
  32. .btn2{
  33. background-color: #19C575;
  34. color:#fff;
  35. }
  36. table {
  37. border-collapse: collapse;
  38. margin: 0 0 50px 0;
  39. width:100%;
  40. }
  41. .tdClass {
  42. background-color: #eeeeee;
  43. text-align: center;
  44. }
  45. .tdA{
  46. color:blue;
  47. text-decoration: underline;
  48. cursor:pointer;
  49. }
  50. td {
  51. border: 1px solid #aaaaaa;
  52. min-height: 30px;
  53. padding: 5px 10px 5px 10px;
  54. flex: 1;
  55. }
  56. .td1{
  57. text-align: center;
  58. }
  59. .main {
  60. width: 100%;
  61. }
  62. .avatar {
  63. width: 60px;
  64. height: 60px;
  65. border-radius: 10px;
  66. }
  67. button {
  68. margin: 0 3px;
  69. }
  70. .BtnOn{
  71. background: #D8D8D8;
  72. border: 1px solid #979797;
  73. }
  74. .BtnOff{
  75. background: #F44336;
  76. border: 1px solid #979797;
  77. color:#fff;
  78. }
  79. select{
  80. font-size:18px;
  81. }
  82. .top{
  83. position: fixed;
  84. width: 50px;
  85. height:26px;
  86. bottom:10px;
  87. left:10px;
  88. z-index: 100;
  89. background-color: #19C575;
  90. color:#fff;
  91. border-radius: 5px;
  92. text-align: center;
  93. }
  94. .DateStart{
  95. margin: 0 0 10px 0;
  96. }
  97. .timg{
  98. margin-top: 50px;
  99. width:220px;
  100. height:145px;
  101. }
  102. </style>
  103. <script src="js/jquery-1.6.4.min.js"></script>
  104. <script src="js/vue.js"></script>
  105. <script>
  106. var vm;
  107. $(document).ready(function () {
  108. vm = new Vue({
  109. el: '#app',
  110. data: {
  111. ListMain: [],
  112. ClassList: [],
  113. ClassListNew:[],
  114. ClassID:"All",
  115. DateStart:"",
  116. },
  117. methods: {
  118. getList: function (event) {
  119. $("#imgMain").css("display","block");
  120. $.get("/api/GetClassList?Sort=desc", function (data) {
  121. var arr = [];
  122. arr = data.result;
  123. vm.ClassList = arr;
  124. var arrTemp=[];
  125. for(var i=arr.length-1;i>=0;i--){
  126. if (arr[i].Flag==0)
  127. arrTemp.push(arr[i]);
  128. }
  129. vm.ClassListNew=arrTemp;
  130. $.get("/api/GetApprovalUserList", function (data) {
  131. var arr = [];
  132. arr = data.result;
  133. for(var i=0;i<arr.length;i++){
  134. arr[i].Index=i+1;
  135. arr[i].CssDisplay="";
  136. if (arr[i].IsTryOut=="1") {
  137. arr[i].CssBg = "background-color: #e2ffd3;";
  138. }
  139. }
  140. vm.ListMain = arr;
  141. vm.getButtonStatus();
  142. $("#imgMain").css("display","none");
  143. //console.log(arr);
  144. });
  145. });
  146. },
  147. btnSelectChange: function (event) {
  148. var str = event.currentTarget.id;
  149. var strArr = str.split("_");
  150. console.log(strArr);
  151. var selectedIndex = $("#Selected_" + strArr[1]+"_"+strArr[2])[0].selectedIndex;
  152. var selectedValue=0;
  153. if (selectedIndex>0) {
  154. selectedValue = $("#Selected_" + strArr[1]+"_"+strArr[2]).val();
  155. }
  156. //console.log(selectedValue);
  157. $.get("/api/UpdateUserMemberInfo?UserID="+strArr[1]+"&WSUUserID="+strArr[2]+"&ClassID="+selectedValue, function (data) {
  158. });
  159. },
  160. btnClickOn: function (event) {
  161. var str = event.currentTarget.id;
  162. var strArr = str.split("_");
  163. console.log(strArr);
  164. var selectedIndex = $("#Selected_" + strArr[2]+"_"+strArr[3])[0].selectedIndex;
  165. var selectedValue=0;
  166. if (selectedIndex>0){
  167. //selectedValue = vm.ClassList[selectedIndex-1].ClassID;
  168. selectedValue = $("#Selected_" + strArr[2]+"_"+strArr[3]).val();
  169. }
  170. console.log(selectedValue);
  171. var IsMember=0;
  172. if (strArr[1]=="On")
  173. IsMember=1;
  174. $.get("/api/UpdateUserMemberInfo?UserID="+strArr[2]+"&WSUUserID="+strArr[3]+"&IsMember="+IsMember+"&ClassID="+selectedValue, function (data) {
  175. for (var i = 0; i < vm.ListMain.length; i++) {
  176. vm.ListMain[i].IsMember=IsMember;
  177. //vm.ListMain[i].ButtonOn=IsMember;
  178. }
  179. setTimeout(function () {
  180. if (IsMember==1){
  181. $("#Btn_Off_"+strArr[2]+"_"+strArr[3]+"_TryOut").prop("disabled",true);
  182. $("#Btn_On_"+strArr[2]+"_"+strArr[3]).css("display","none");
  183. $("#Btn_Off_"+strArr[2]+"_"+strArr[3]).css("display","");
  184. }
  185. else{
  186. $("#Btn_Off_"+strArr[2]+"_"+strArr[3]+"_TryOut").prop("disabled",false);
  187. $("#Btn_On_"+strArr[2]+"_"+strArr[3]).css("display","");
  188. $("#Btn_Off_"+strArr[2]+"_"+strArr[3]).css("display","none");
  189. }
  190. },200);
  191. });
  192. },
  193. btnTryOutClickOn: function (event) {
  194. var str = event.currentTarget.id;
  195. var strArr = str.split("_");
  196. console.log(strArr);
  197. var selectedIndex = $("#Selected_" + strArr[2]+"_"+strArr[3])[0].selectedIndex;
  198. var selectedValue=0;
  199. if (selectedIndex>0){
  200. //selectedValue = vm.ClassList[selectedIndex-1].ClassID;
  201. selectedValue = $("#Selected_" + strArr[2]+"_"+strArr[3]).val();
  202. }
  203. //console.log(selectedValue);
  204. var IsTryOut=-1;
  205. if (strArr[1]=="On")
  206. IsTryOut=1;
  207. $.get("/api/UpdateUserMemberInfo?UserID="+strArr[2]+"&WSUUserID="+strArr[3]+"&IsTryOut="+IsTryOut+"&ClassID="+selectedValue, function (data) {
  208. if (IsTryOut==-1)
  209. IsTryOut=0;
  210. for (var i = 0; i < vm.ListMain.length; i++) {
  211. vm.ListMain[i].IsTryOut=IsTryOut;
  212. }
  213. setTimeout(function () {
  214. if (IsTryOut==1){
  215. $("#Btn_On_"+strArr[2]+"_"+strArr[3]+"_TryOut").css("display","none");
  216. $("#Btn_Off_"+strArr[2]+"_"+strArr[3]+"_TryOut").css("display","");
  217. $("#Tr_"+strArr[2]+"_"+strArr[3]).css("background-color","#e2ffd3");
  218. }
  219. else{
  220. $("#Btn_On_"+strArr[2]+"_"+strArr[3]+"_TryOut").css("display","");
  221. $("#Btn_Off_"+strArr[2]+"_"+strArr[3]+"_TryOut").css("display","none");
  222. $("#Tr_"+strArr[2]+"_"+strArr[3]).css("background-color","#ffffff");
  223. }
  224. },200);
  225. });
  226. },
  227. btnFilter:function(event) {
  228. var classID=null;
  229. var str = event.currentTarget.id;
  230. var obj = $("#ClassSelected"); //定位id
  231. if (str.indexOf("btnClass") >= 0) {
  232. $(".btn1").attr("class", "btn1");
  233. $("#" + str).attr("class", "btn2 btn1");
  234. classID=str.replace("btnClass", "");
  235. if (classID)
  236. vm.ClassID = classID;
  237. obj.find("option[value='0']").attr("selected",true);
  238. }
  239. else {
  240. var index = obj[0].selectedIndex; // 选中索引
  241. if (index>0) {
  242. $(".btn1").attr("class", "btn1");
  243. $("#ClassSelected").attr("class", "btn2 btn1");
  244. classID=obj[0].options[index].value;
  245. if(classID)
  246. vm.ClassID = classID;
  247. }
  248. }
  249. if (classID){
  250. vm.ListMain=[];
  251. vm.DateStart = "";
  252. $("#imgMain").css("display","block");
  253. $.get("/api/GetApprovalUserList?ClassID=" + classID, function (data) {
  254. var arr = [];
  255. arr = data.result;
  256. for (var i = 0; i < arr.length; i++) {
  257. arr[i].Index = i + 1;
  258. arr[i].CssDisplay = "";
  259. if (arr[i].IsTryOut == "1")
  260. arr[i].CssBg = "background-color: #e2ffd3;"
  261. }
  262. vm.ListMain = arr;
  263. //console.log(arr);
  264. for (var i = 0; i < vm.ClassList.length; i++) {
  265. if (i<vm.ClassList.length-1 && vm.ClassList[i].ClassID == Number(classID))
  266. vm.DateStart = vm.ClassList[i].StartDate;
  267. }
  268. vm.getButtonStatus();
  269. $("#imgMain").css("display","none");
  270. setTimeout(function () {
  271. vm.btnSort({currentTarget:{id:"ProbationPayTime_DESC"}});
  272. },200)
  273. });
  274. }
  275. },
  276. btnSort: function (event) {
  277. var str = event.currentTarget.id;
  278. var strArr = str.split("_");
  279. //console.log(strArr);
  280. //sort(vm.ListMain,strArr[1],strArr[0],"String");
  281. vm.ListMain.sort(compare(strArr[0],strArr[1],strArr[2]));
  282. var index=0
  283. for(var i=0;i<vm.ListMain.length;i++){
  284. var item=vm.ListMain[i];
  285. item.Index=++index;
  286. }
  287. vm.getButtonStatus();
  288. },
  289. getButtonStatus:function () {
  290. setTimeout(function(){
  291. for(var i=0;i<vm.ListMain.length;i++){
  292. if (!vm.ListMain[i].UserID)
  293. $("#Btn_On_"+vm.ListMain[i].UserID+"_"+vm.ListMain[i].WSUUserID+"_TryOut").prop("disabled",true);
  294. if (!vm.ListMain[i].UserID)
  295. $("#Btn_On_"+vm.ListMain[i].UserID+"_"+vm.ListMain[i].WSUUserID).prop("disabled",false);
  296. if (vm.ListMain[i].IsMember=="1") {
  297. $("#Btn_On_"+vm.ListMain[i].UserID+"_"+vm.ListMain[i].WSUUserID).css("display","none");
  298. $("#Btn_Off_"+vm.ListMain[i].UserID+"_"+vm.ListMain[i].WSUUserID).css("display","");
  299. }
  300. else{
  301. $("#Btn_On_"+vm.ListMain[i].UserID+"_"+vm.ListMain[i].WSUUserID).css("display","");
  302. $("#Btn_Off_"+vm.ListMain[i].UserID+"_"+vm.ListMain[i].WSUUserID).css("display","none");
  303. }
  304. if (vm.ListMain[i].IsTryOut=="1") {
  305. $("#Btn_On_"+vm.ListMain[i].UserID+"_"+vm.ListMain[i].WSUUserID+"_TryOut").css("display","none");
  306. $("#Btn_Off_"+vm.ListMain[i].UserID+"_"+vm.ListMain[i].WSUUserID+"_TryOut").css("display","");
  307. }
  308. else{
  309. $("#Btn_On_"+vm.ListMain[i].UserID+"_"+vm.ListMain[i].WSUUserID+"_TryOut").css("display","");
  310. $("#Btn_Off_"+vm.ListMain[i].UserID+"_"+vm.ListMain[i].WSUUserID+"_TryOut").css("display","none");
  311. }
  312. }
  313. },200);
  314. }
  315. }
  316. });
  317. vm.getList();
  318. $(".top").click(function(){
  319. document.body.scrollTop = document.documentElement.scrollTop = 0;
  320. })
  321. });
  322. function compare(column,sort,objType){
  323. if (sort=="DESC"){
  324. return function (b, a) {
  325. if (objType=="Number")
  326. return a[column]-b[column];
  327. else {
  328. return a[column].localeCompare(b[column]);
  329. }
  330. }
  331. }
  332. else {
  333. return function (a, b) {
  334. if (objType=="Number")
  335. return a[column]-b[column];
  336. else {
  337. return a[column].localeCompare(b[column]);
  338. }
  339. }
  340. }
  341. }
  342. </script>
  343. </head>
  344. <body class="container">
  345. <div id="app">
  346. <div class="panelTop FlexRow">
  347. <div id="btnClassAll" class="btn1" v-on:click="btnFilter">全部</div>
  348. <div id="btnClass0" class="btn2 btn1" v-on:click="btnFilter">未分班</div>
  349. <div id="btnClass-2" class="btn1" v-on:click="btnFilter">临时</div>
  350. <div id="btnClass-1" class="btn1" v-on:click="btnFilter">待确认</div>
  351. <select class="btn1" class="select" id="ClassSelected" v-model="ClassID" @change='btnFilter'>
  352. <option value="0" key="请选择">请选择</option>
  353. <option v-for="(drpName, drpIndex) in ClassList" :id="drpName.ClassID" :value="drpName.ClassID" :key="drpName.Name" v-if=" drpName.Flag==2 ">{{drpName.Name}}</option>
  354. </select>
  355. <div :id="'btnClass'+item.ClassID" class="btn1" v-on:click="btnFilter" v-for="(item, index) in ClassListNew">{{item.Name}}</div>
  356. </div>
  357. <div class="DateStart" v-if="DateStart">开班日期:<b>{{DateStart}}</b></div>
  358. <div class="main FlexColumn">
  359. <table>
  360. <thead>
  361. <tr>
  362. <td class="tdClass"></td>
  363. <td class="tdA tdClass" v-on:click="btnSort" id="UserID_DESC_Number">秒过ID</td>
  364. <td class="tdClass">秒过</td>
  365. <td class="tdA tdClass" v-on:click="btnSort" id="WSUUserID_DESC_Number">服务号ID</td>
  366. <td class="tdClass">服务号</td>
  367. <td class="tdA tdClass" v-on:click="btnSort" id="NickName_ASC">昵称</td>
  368. <td class="tdA tdClass" v-on:click="btnSort" id="CreateTime_DESC">创建</td>
  369. <td class="tdA tdClass" v-on:click="btnSort" id="LastLoginTime_DESC">最末</td>
  370. <td class="tdA tdClass" v-on:click="btnSort" id="Subscribe_DESC">关注</td>
  371. <td class="tdA tdClass" v-on:click="btnSort" id="ProbationPayTime_DESC">新手包</td>
  372. <td class="tdClass">分班</td>
  373. <td class="tdClass">状态</td>
  374. <td class="tdA tdClass" v-on:click="btnSort" id="PayTime_DESC">年费</td>
  375. <td class="tdClass">小组</td>
  376. <td class="tdClass">介绍人</td>
  377. </tr>
  378. </thead>
  379. <tbody>
  380. <tr :id=" 'Tr_'+item.UserID+'_'+item.WSUUserID " v-for="(item, index) in ListMain" :style="item.CssBg + item.CssDisplay">
  381. <td class="td1">{{item.Index}}</td>
  382. <td class="td1"><a :href="'webuserinfo?UserID=' + item.UserID " target="_blank">{{item.UserID}}</a></td>
  383. <td class="td1"><img class="avatar" :src="item.AvatarUrl" v-if="item.AvatarUrl"/></td>
  384. <td class="td1">{{item.WSUUserID}}</td>
  385. <td class="td1"><img class="avatar" :src="item.WSUAvatarUrl" v-if="item.WSUAvatarUrl"/></td>
  386. <td>{{item.NickName}}</td>
  387. <td>{{item.CreateTime}}</td>
  388. <td>{{item.LastLoginTime}}</td>
  389. <td>{{item.Subscribe}}</td>
  390. <td>{{item.ProbationPayTime}}</td>
  391. <td class="td1"><select class="select" :id=" 'Selected_'+item.UserID+'_'+item.WSUUserID " v-model="item.ClassID" @change='btnSelectChange'>
  392. <option id="0" value="0" key="未分班">未分班</option>
  393. <option id="0" value="-1" key="待确认">待确认</option>
  394. <option id="0" value="-2" key="临时">临时</option>
  395. <option v-for="(drpName, drpIndex) in ClassList" :id="drpName.ClassID" :value="drpName.ClassID" :key="drpName.Name" v-if="drpName.ClassID>0">{{drpName.Name}}</option>
  396. </select>
  397. </td>
  398. <td class="td1">
  399. <button class="BtnOn" :id="'Btn_On_'+item.UserID+'_'+item.WSUUserID+'_TryOut'" v-on:click="btnTryOutClickOn">试用</button>
  400. <button class="BtnOn" :disabled="item.ButtonOn" :id="'Btn_Off_'+item.UserID+'_'+item.WSUUserID+'_TryOut'" v-on:click="btnTryOutClickOn">关闭</button>
  401. <button class="BtnOn" :disabled="!item.IsTryOut" :id="'Btn_On_'+item.UserID+'_'+item.WSUUserID" v-on:click="btnClickOn">开班</button>
  402. <button class="BtnOff" :id="'Btn_Off_'+item.UserID+'_'+item.WSUUserID" v-on:click="btnClickOn">关闭</button>
  403. </td>
  404. <td>{{item.PayTime}}</td>
  405. <td>{{item.GroupID}}</td>
  406. <td>{{item.Introducer}}</td>
  407. </tr>
  408. </tbody>
  409. </table>
  410. <img src="https://kylx365-1253256735.file.myqcloud.com/web/timg.gif" class="timg" id="imgMain"/>
  411. </div>
  412. </div>
  413. <div class="top">top</div>
  414. </body>
  415. </html>