lex-xin 4 years ago
parent
commit
d6f026834e
70 changed files with 243 additions and 232 deletions
  1. 0 0
      dist/index.html
  2. 33 153
      dist/music-change-speed/index.html
  3. 0 0
      dist/static/css/app.71533e47.css
  4. 1 0
      dist/static/css/chunk-04b851c1.a4d138e0.css
  5. 0 0
      dist/static/css/chunk-0e8308ec.0d811556.css
  6. 0 0
      dist/static/css/chunk-13972927.8302b853.css
  7. 1 0
      dist/static/css/chunk-1a8d67fd.83b12644.css
  8. 1 0
      dist/static/css/chunk-257eca28.18fa87c5.css
  9. 1 0
      dist/static/css/chunk-2c54eb59.7b0ad064.css
  10. 1 0
      dist/static/css/chunk-3592e899.753ee7da.css
  11. 0 0
      dist/static/css/chunk-371273ae.6c574449.css
  12. 0 0
      dist/static/css/chunk-3f2b20e8.8a84a452.css
  13. 1 0
      dist/static/css/chunk-40274e98.f7ae42a7.css
  14. 0 0
      dist/static/css/chunk-4bfd0b56.51b8b2ff.css
  15. 1 0
      dist/static/css/chunk-4edd7c72.dabe3a1c.css
  16. 1 0
      dist/static/css/chunk-59492af2.c9ab11db.css
  17. 0 0
      dist/static/css/chunk-62f65038.4a3261e1.css
  18. 0 0
      dist/static/css/chunk-63856fd2.2060b3f2.css
  19. 1 0
      dist/static/css/chunk-70e6641b.58ebee39.css
  20. 0 0
      dist/static/css/chunk-77aad06b.08f652a2.css
  21. 1 0
      dist/static/css/chunk-7941dd0a.472c882f.css
  22. 0 0
      dist/static/css/chunk-7a921a7e.2dd5c27e.css
  23. 0 0
      dist/static/css/chunk-8f0d5f60.e651d111.css
  24. 0 0
      dist/static/css/chunk-c3c0f04a.67ecdcf0.css
  25. 1 0
      dist/static/css/chunk-cae73716.22334373.css
  26. 1 0
      dist/static/css/chunk-commons.ddb9c391.css
  27. 0 0
      dist/static/css/chunk-e8804332.f43b6815.css
  28. 0 0
      dist/static/css/chunk-f5b70f82.7bd83130.css
  29. 0 0
      dist/static/img/icon.db0c320f.svg
  30. 0 0
      dist/static/js/app.f3e0d8f9.js
  31. 0 0
      dist/static/js/chunk-04b851c1.7c5d3904.js
  32. 0 0
      dist/static/js/chunk-0e8308ec.a5593291.js
  33. 1 0
      dist/static/js/chunk-13972927.f0e49287.js
  34. 0 0
      dist/static/js/chunk-1a8d67fd.ea4bb77b.js
  35. 0 0
      dist/static/js/chunk-257eca28.aae90449.js
  36. 0 0
      dist/static/js/chunk-2c54eb59.a82d529a.js
  37. 1 0
      dist/static/js/chunk-3573b058.74889670.js
  38. 0 0
      dist/static/js/chunk-3573b058.86b678fe.js
  39. 0 0
      dist/static/js/chunk-3592e899.78e5cea7.js
  40. 0 0
      dist/static/js/chunk-371273ae.6d21a020.js
  41. 0 0
      dist/static/js/chunk-394740c2.1ab88bd2.js
  42. 0 0
      dist/static/js/chunk-3da416c4.5d126fc1.js
  43. 0 0
      dist/static/js/chunk-3f2b20e8.8a4864fb.js
  44. 0 0
      dist/static/js/chunk-40274e98.1618f3f5.js
  45. 0 0
      dist/static/js/chunk-44a77d47.bd000502.js
  46. 0 0
      dist/static/js/chunk-4edd7c72.9d515659.js
  47. 0 0
      dist/static/js/chunk-59492af2.be50e2df.js
  48. 0 0
      dist/static/js/chunk-5f9d8f73.1a0886dc.js
  49. 0 0
      dist/static/js/chunk-62b7ca32.172601c1.js
  50. 0 0
      dist/static/js/chunk-62f65038.c5484e56.js
  51. 0 0
      dist/static/js/chunk-63856fd2.9516ceb2.js
  52. 0 0
      dist/static/js/chunk-68b8622f.6ff52c2d.js
  53. 0 0
      dist/static/js/chunk-70e6641b.96d69f47.js
  54. 0 0
      dist/static/js/chunk-78d00d56.6a653d16.js
  55. 0 0
      dist/static/js/chunk-7941dd0a.4cb1a9c9.js
  56. 0 0
      dist/static/js/chunk-7be4f683.32755550.js
  57. 0 0
      dist/static/js/chunk-8f0d5f60.30bae330.js
  58. 0 0
      dist/static/js/chunk-9d5949ea.3a912d2f.js
  59. 0 0
      dist/static/js/chunk-c3c0f04a.46ff2eb4.js
  60. 0 0
      dist/static/js/chunk-cae73716.13a33cc7.js
  61. 0 0
      dist/static/js/chunk-da63f3ae.b12acff9.js
  62. 0 0
      dist/static/js/chunk-e7508bea.2ecf2213.js
  63. 0 0
      dist/static/js/chunk-f9ec9aca.fed2454f.js
  64. 0 0
      dist/static/js/notification.a732b81a.worker.js
  65. 6 0
      src/constant/index.js
  66. 2 0
      src/utils/searchArray.js
  67. 7 0
      src/utils/vueFilter.js
  68. 15 15
      src/views/accompanyManager/accompanys.vue
  69. 10 0
      src/views/studentManager/components/studentInfo.vue
  70. 156 64
      src/views/studentManager/studentList.vue

File diff suppressed because it is too large
+ 0 - 0
dist/index.html


+ 33 - 153
dist/music-change-speed/index.html

@@ -1,174 +1,54 @@
 <!DOCTYPE html>
 <html>
   <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
     <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=0,viewport-fit=cover">
   </head>
   <style>
-    body {
-  --spacing: .75rem;
-  font-family: sans-serif;
-  line-height: 1.5;
-  text-align: center;
-  margin: .75rem;
-  padding-bottom: 2rem;
-  color: hsl(269,19%,30%);
-  background-color: hsla(32,100%,85%,.35);
-  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg width='100%25' xmlns='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.4'/%3E%3C/filter%3E%3C/defs%3E%3C!-- %3Cpath filter='url(%23a)' opacity='.3' d='M0 0h1200v256H0z'/%3E--%3E%3Crect filter='url(%23a)' opacity='.3' width='100%25' height='100%25'/%3E%3C/svg%3E");
-}
-@media (min-width: 48em) {
-  body {--spacing: 1rem;}
-}
-  body * {box-sizing: border-box;}
-  h1, h2, h3 {font-weight:100;}
-  h1 {margin: 1em 0 .5em;}
-  .group {
-    border: 1px solid #fff;
-    background-color: rgba(255,255,255,.25);
-    padding: .5rem 1rem;
-    margin: 1rem auto;
-  }
-
-  .url {
-    display: flex;
-    width: 100%;
-    margin: 1rem auto;
-  }
-  [class*="_label"] {
-    position: relative;
-    white-space: nowrap;
-    margin-right: .5em;
-    min-width: 4em;
-  }
-  [class*="_label"] > span {
-    display: block;
-    position: relative;
-    top: 50%;
-    transform: translatey(-50%);
-  }
-  [class*="_input"] {
-    display: inline-block;
-    line-height: 1;
-    width: 100%;
-    margin: 0;
-    padding: .25rem .5rem;
-    font: inherit;
-    border: 1px solid #fff;
-    background-color: rgba(255,255,255,.5);
-  }
-
-
-  .upload {
-    display: flex;
-    width: 100%;
-    margin: 1rem auto;
-  }
-
-  .player_audio {
-    width: 100%;
-  }
-  .player_display {
-    font-size: 1.25rem;
-  }
-  .tempo {
-    display: flex;
-    width: 100%;
-    margin: 1rem auto;
-  }
-  .tempo_display {
-    font-weight: 700;
-    min-width: 3em;
-    margin-left: .5em;
-  }
+    .item{
+      padding: 10px;
+      width: 100%;
+      box-sizing: content-box;
+    }
   </style>
 <body>
-  <main>
-    <div class=group>
-      <div class=upload>
-        <label class=upload_label for=upload_input><span>上传</span></label>
-        <input id=upload_input class=upload_input type=file accept="audio/*">
-      </div>
 
-    </div>
+<div class="item" id="num">当前倍速: 1</div>
+<form class="item" id="form">
+  <input id="inp" step="0.01" type="number" placeholder="请输入倍速" value="1" />
+  <button type="submit">设置</button><br>
+</form>
 
-    <div class=group>
+<input class="item" id="file" type="file" accept=".mp3"/>
 
-      <div class=player>
-        <h3 class=player_display>SJE40W8.mp3</h3>
-        <audio class=player_audio controls  src="./SJE40W8.mp3">
-          <track id=player-chords kind=captions srclang=en>
-        </audio>
-      </div>
-
-      <div class=tempo>
-        <label class=tempo_label for=tempo_input>速度</label>
-        <input class=tempo_input id=tempo_input type=range value=1 min=0.25 max=2.5 step=0.01>
-        <span class=tempo_display></span>
-      </div>
-
-    </div>
-
-  </main>
+<audio class="item" id="myVideo" height="176" controls src="./SJE40W8.mp3">
+  Your browser does not support HTML5 video.
+</audio>
 
 <script>
+var vid = document.getElementById("myVideo")
 
-const player = document.querySelector('.player_audio');
-const playerDisplay = document.querySelector('.player_display');
+document.getElementById('form').addEventListener('submit', function (evt) {
+  evt.stopPropagation();
+  evt.preventDefault();
+  setPlaySpeed(document.getElementById("inp").value)
+}, false)
 
-const changeTempo = function () {
-  player.playbackRate = tempoInput.value;
-  tempoDisplay.textContent = tempoInput.value;
-};
-
-const changeSongURL = function (e) {
-  player.src = urlInput.value;
-  let filename = player.src.split('\\').pop().split('/').pop();
-  playerDisplay.textContent = filename;
-}
-
-const changeSongFile = function (e) {
-  const target = e.currentTarget;
-  const file = target.files[0];
-  let reader;
-
-  if (target.files && file) {
-    reader = new FileReader();
-    reader.onload = function (e) {
-      player.setAttribute('src', e.target.result);
-      playerDisplay.textContent = file.name;
-      // player.play(); // auto play on load
-    }
-    reader.readAsDataURL(file);
+document.getElementById('file').addEventListener('change', function(evt) {
+  var urlObject = window.URL || window.webkitURL || window
+  if (evt.target.files.length) {
+    var url = urlObject.createObjectURL(evt.target.files[0])
+    vid.src = url
   }
-};
-
-// Get the song from:
-// const urlInput = document.getElementById('url_input');
-// urlInput.addEventListener("change", changeSongURL, false);
+}, false)
 
+function getPlaySpeed() {
+  alert(vid.playbackRate);
+}
 
-// Or upload an MP3:
-const uploadInput = document.getElementById('upload_input');
-uploadInput.addEventListener('change', changeSongFile, false);
-
-
-// Playback tempo
-const tempoInput = document.getElementById('tempo_input');
-tempoInput.addEventListener("change", changeTempo, false);
-const tempoDisplay = document.querySelector('.tempo_display');
-tempoDisplay.textContent = tempoInput.value;
-
-
-
-// Chords from:
-// const vtt = document.getElementById('url_input').value.replace('.mp3', '.vtt');
-// const player_chords = document.getElementById('player-chords');
-
-// player_chords.src = vtt;
-// player.src = urlInput.value;
-// changeSongURL();
-changeTempo();
+function setPlaySpeed(num) {
+  document.getElementById("num").innerText = '当前倍速: ' + num
+  vid.playbackRate = num;
+}
 </script>
 
 </body>

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.71533e47.css


File diff suppressed because it is too large
+ 1 - 0
dist/static/css/chunk-04b851c1.a4d138e0.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-0e8308ec.0d811556.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-13972927.8302b853.css


File diff suppressed because it is too large
+ 1 - 0
dist/static/css/chunk-1a8d67fd.83b12644.css


+ 1 - 0
dist/static/css/chunk-257eca28.18fa87c5.css

@@ -0,0 +1 @@
+.msg[data-v-17bf086e]{min-width:120px}.label[data-v-17bf086e]{width:520px}

File diff suppressed because it is too large
+ 1 - 0
dist/static/css/chunk-2c54eb59.7b0ad064.css


+ 1 - 0
dist/static/css/chunk-3592e899.753ee7da.css

@@ -0,0 +1 @@
+.v-charts-component-loading{position:absolute;left:0;right:0;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:hsla(0,0%,100%,.9)}.v-charts-mask-status{-webkit-filter:blur(1px);filter:blur(1px)}.v-charts-component-loading .circular{width:42px;height:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.v-charts-component-loading .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#20a0ff;stroke-linecap:round}@-webkit-keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.v-charts-data-empty{position:absolute;left:0;right:0;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:hsla(0,0%,100%,.9);color:#888;font-size:14px}

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-371273ae.6c574449.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-3f2b20e8.8a84a452.css


File diff suppressed because it is too large
+ 1 - 0
dist/static/css/chunk-40274e98.f7ae42a7.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-4bfd0b56.51b8b2ff.css


+ 1 - 0
dist/static/css/chunk-4edd7c72.dabe3a1c.css

@@ -0,0 +1 @@
+.alert[data-v-2fc363a8]{margin:10px 0}[data-v-2fc363a8] .el-icon-check,[data-v-2fc363a8] .el-icon-close{font-size:18px;font-weight:700}[data-v-2fc363a8] .el-icon-close{color:red}[data-v-2fc363a8] .el-icon-check{color:#14928a}.title[data-v-03796907]{margin-bottom:20px}.amap-demo[data-v-03796907]{height:500px}[data-v-5ff2c600] .el-dialog__body{padding:10px 20px}[data-v-5ff2c600] .description-title{margin:0!important}

+ 1 - 0
dist/static/css/chunk-59492af2.c9ab11db.css

@@ -0,0 +1 @@
+.number-input[data-v-5ec13f8a]{width:100%}.number-input[data-v-5ec13f8a] .el-input__inner,.number-input[data-v-57cd9361] .el-input__inner{text-align:left}.number-input[data-v-55ad3016]{width:100%}.number-input[data-v-55ad3016] .el-input__inner{text-align:left}

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-62f65038.4a3261e1.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-63856fd2.2060b3f2.css


+ 1 - 0
dist/static/css/chunk-70e6641b.58ebee39.css

@@ -0,0 +1 @@
+.process[data-v-f049a426]{padding:10px;max-height:600px;overflow-y:auto}.dialog-footer[data-v-7a44cd83]{margin-top:20px;display:block;text-align:right}.select[data-v-d7b516c0]{font-size:14px}.btnList[data-v-d7b516c0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.btnList div[data-v-d7b516c0]{margin-right:15px}

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-77aad06b.08f652a2.css


File diff suppressed because it is too large
+ 1 - 0
dist/static/css/chunk-7941dd0a.472c882f.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-7a921a7e.2dd5c27e.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-8f0d5f60.e651d111.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-c3c0f04a.67ecdcf0.css


+ 1 - 0
dist/static/css/chunk-cae73716.22334373.css

@@ -0,0 +1 @@
+.alert[data-v-6ad5e62e]{margin:10px 0}.dialog-footer[data-v-290cb116]{margin-top:20px;display:block;text-align:right}.el-button--primary[data-v-411c7eea],.el-button--primary[data-v-411c7eea]:active,.el-button--primary[data-v-411c7eea]:focus,.el-button--primary[data-v-411c7eea]:hover{background:#14928a;border-color:#14928a;color:#fff}[data-v-411c7eea] .el-date-editor.el-input,[data-v-411c7eea] .el-select{width:100%!important}[data-v-411c7eea] .el-table .cell{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical}[data-v-411c7eea] .el-dialog__body{padding:10px 20px}.newBand[data-v-411c7eea]{display:inline-block}

+ 1 - 0
dist/static/css/chunk-commons.ddb9c391.css

@@ -0,0 +1 @@
+.pagination-container[data-v-5d1dc94e]{background:#fff;padding:32px 16px;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-5d1dc94e]{display:none}.content-tooltip[data-v-98517b38]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;display:inline-block}.left-code .code-url{margin-top:10px;margin-bottom:10px}.left-code .code-url .link-btn{margin-top:0;margin-bottom:0;font-size:12px}

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-e8804332.f43b6815.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-f5b70f82.7bd83130.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/img/icon.db0c320f.svg


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.f3e0d8f9.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-04b851c1.7c5d3904.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-0e8308ec.a5593291.js


File diff suppressed because it is too large
+ 1 - 0
dist/static/js/chunk-13972927.f0e49287.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-1a8d67fd.ea4bb77b.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-257eca28.aae90449.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-2c54eb59.a82d529a.js


File diff suppressed because it is too large
+ 1 - 0
dist/static/js/chunk-3573b058.74889670.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-3573b058.86b678fe.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-3592e899.78e5cea7.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-371273ae.6d21a020.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-394740c2.1ab88bd2.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-3da416c4.5d126fc1.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-3f2b20e8.8a4864fb.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-40274e98.1618f3f5.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-44a77d47.bd000502.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-4edd7c72.9d515659.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-59492af2.be50e2df.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-5f9d8f73.1a0886dc.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-62b7ca32.172601c1.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-62f65038.c5484e56.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-63856fd2.9516ceb2.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-68b8622f.6ff52c2d.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-70e6641b.96d69f47.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-78d00d56.6a653d16.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-7941dd0a.4cb1a9c9.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-7be4f683.32755550.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-8f0d5f60.30bae330.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-9d5949ea.3a912d2f.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-c3c0f04a.46ff2eb4.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-cae73716.13a33cc7.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-da63f3ae.b12acff9.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-e7508bea.2ecf2213.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-f9ec9aca.fed2454f.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/notification.a732b81a.worker.js


+ 6 - 0
src/constant/index.js

@@ -218,3 +218,9 @@ export const complaintsStatus = {
   2: '待处理',
   3: '撤销'
 }
+
+export const packageStatus = {
+  0: '不可用',
+  1: '可用',
+  2: '已使用',
+}

+ 2 - 0
src/utils/searchArray.js

@@ -154,6 +154,8 @@ export const practiceGroupType = [
   { value: "FREE", label: "免费" },
   { value: "CHARGE", label: "收费" },
   { value: "TRIAL", label: "试听课" },
+  { value: "CARE_PACKAGE", label: "关心包" },
+  { value: "COME_ON_PACKAGE", label: "加油包" }
 ]
 export const visitChiose = [
   { value: '课程推荐', label: '课程推荐', children: [{ value: '新课推荐', label: '新课推荐' }, { value: '续费提醒', label: '续费提醒' }] },

+ 7 - 0
src/utils/vueFilter.js

@@ -526,6 +526,8 @@ Vue.filter('comType', value => {
     FREE: "免费",
     CHARGE: '收费',
     TRIAL: '试听课',
+    CARE_PACKAGE: '关心包',
+    COME_ON_PACKAGE: '加油包'
   }
   return template[value]
 })
@@ -719,3 +721,8 @@ Vue.filter('journalTypeFormat', value => {
 Vue.filter('inspectionItemFormat', value => {
   return constant.inspectionItem[value]
 })
+
+// 学员列表关心包,加油包
+Vue.filter('studentPackage', value => {
+  return constant.packageStatus[value]
+})

+ 15 - 15
src/views/accompanyManager/accompanys.vue

@@ -59,9 +59,23 @@
                          align="center"
                          prop="classDate">
           <template slot-scope="scope">
-            <div>{{ scope.row.classDate | formatTimer}}</div>
+            <div>{{ scope.row.classDate | formatTimer}} {{ scope.row.startClassTimeStr |  timerForMinFormat}}~{{ scope.row.endClassTimeStr | timerForMinFormat}}</div>
           </template>
         </el-table-column>
+        <!-- <el-table-column label="开始时间"
+                         align="center"
+                         prop="startClassTimeStr">
+          <template slot-scope="scope">
+            <div>{{ scope.row.startClassTimeStr |  timerForMinFormat}}</div>
+          </template>
+        </el-table-column>
+        <el-table-column label="结束时间"
+                         align="center"
+                         prop="endClassTimeStr">
+          <template slot-scope="scope">
+            <div>{{ scope.row.endClassTimeStr | timerForMinFormat}}</div>
+          </template>
+        </el-table-column> -->
         <el-table-column label="是否点名"
                          align="center"
                          prop="status">
@@ -80,20 +94,6 @@
             <div>{{scope.row.isSettlement?'已结算':'未结算'}}</div>
           </template>
         </el-table-column>
-        <el-table-column label="开始时间"
-                         align="center"
-                         prop="startClassTimeStr">
-          <template slot-scope="scope">
-            <div>{{ scope.row.startClassTimeStr |  timerForMinFormat}}</div>
-          </template>
-        </el-table-column>
-        <el-table-column label="结束时间"
-                         align="center"
-                         prop="endClassTimeStr">
-          <template slot-scope="scope">
-            <div>{{ scope.row.endClassTimeStr | timerForMinFormat}}</div>
-          </template>
-        </el-table-column>
         <!-- <el-table-column label="教学点" align="center" prop="schoolName">
           <template slot-scope="scope">
             <div>{{scope.row.schoolName?scope.row.schoolName:'网络教室'}}</div>

+ 10 - 0
src/views/studentManager/components/studentInfo.vue

@@ -83,6 +83,16 @@
             <el-input :value="studentForm.isNewUser ? '是' : '否'" disabled></el-input>
           </el-form-item>
         </el-col>
+        <el-col :xl="6" :lg="8" :md="8" :xs="12">
+          <el-form-item label="关心包">
+            <el-input :value="studentForm.carePackage | studentPackage" disabled></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :xl="6" :lg="8" :md="8" :xs="12">
+          <el-form-item label="加油包">
+            <el-input :value="studentForm.comeOnPackage | studentPackage" disabled></el-input>
+          </el-form-item>
+        </el-col>
       </el-row>
     </el-form>
 

+ 156 - 64
src/views/studentManager/studentList.vue

@@ -22,7 +22,7 @@
         :model.sync="searchForm"
       >
         <el-form-item>
-          <el-input
+          <el-input clearable
             placeholder="学生姓名或电话"
             @keyup.enter.native="onSearch"
             v-model.trim="searchForm.search"
@@ -73,7 +73,7 @@
             <el-option label="否" value="false"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item prop="hasCourse">
+        <el-form-item prop="operatingTag">
           <el-select
             class="multiple"
             v-model.trim="searchForm.operatingTag"
@@ -84,7 +84,7 @@
             <el-option label="否" :value="0"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item prop="hasCourse">
+        <el-form-item prop="serviceTag">
           <el-select
             class="multiple"
             v-model.trim="searchForm.serviceTag"
@@ -95,6 +95,30 @@
             <el-option label="否" :value="0"></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item prop="carePackage">
+          <el-select
+            class="multiple"
+            v-model.trim="searchForm.carePackage"
+            clearable
+            placeholder="关心包"
+          >
+            <el-option label="不可用" :value="0"></el-option>
+            <el-option label="可用" :value="1"></el-option>
+            <el-option label="已使用" :value="2"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="comeOnPackage">
+          <el-select
+            class="multiple"
+            v-model.trim="searchForm.comeOnPackage"
+            clearable
+            placeholder="加油包"
+          >
+            <el-option label="不可用" :value="0"></el-option>
+            <el-option label="可用" :value="1"></el-option>
+            <el-option label="已使用" :value="2"></el-option>
+          </el-select>
+        </el-form-item>
         <el-form-item>
           <el-button native-type="submit" type="danger">搜索</el-button>
           <el-button native-type="reset" type="primary">重置</el-button>
@@ -243,6 +267,20 @@
           </el-table-column>
           <el-table-column
             align="center"
+            prop="carePackage"
+            label="关心包"
+          >
+            <template slot-scope="scope">{{ scope.row.carePackage | studentPackage }}</template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="comeOnPackage"
+            label="加油包"
+          >
+            <template slot-scope="scope">{{ scope.row.comeOnPackage | studentPackage }}</template>
+          </el-table-column>
+          <el-table-column
+            align="center"
             fixed="right"
             width="250px"
             label="操作"
@@ -299,7 +337,6 @@
       :close-on-click-modal="false"
       :visible.sync="studentVisible"
     >
-      <el-divider>基本信息</el-divider>
       <el-form
         :model="studentForm"
         :inline="true"
@@ -308,38 +345,12 @@
         ref="studentForm"
         :rules="studentRules"
       >
-        <el-form-item
-          label="联系电话"
-          prop="phone"
-          :rules="[
-            { required: true, message: '请输入手机号' },
-            {
-              pattern: /^1\d{10}$/,
-              message: '请输入正确的手机号',
-              trigger: 'blur',
-            },
-          ]"
-        >
-          <!--   @blur="checkPhone(studentForm.phone)" -->
-          <el-input v-model.trim="studentForm.phone"></el-input>
-        </el-form-item>
-        <el-form-item label="所属分部" prop="organId">
-          <el-select
-            class="multiple"
-            v-model.trim="studentForm.organId"
-            filterable
-            clearable
-            placeholder="请选择分部"
-            @change="changeStudentOrgan"
-          >
-            <el-option
-              v-for="(item, index) in selects.branchs"
-              :key="index"
-              :label="item.name"
-              :value="item.id"
-            ></el-option>
-          </el-select>
-        </el-form-item>
+        <el-alert
+          title="课程信息"
+          type="info"
+          :closable="false"
+          style="margin-bottom: 15px;"
+        ></el-alert>
         <el-form-item label="学生姓名" prop="name">
           <el-input v-model.trim="studentForm.name"></el-input>
         </el-form-item>
@@ -355,6 +366,18 @@
             <el-option :value="0" label="女"></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item label="出生日期" prop="date">
+          <el-date-picker
+            v-model.trim="studentForm.date"
+            style="width: 185px"
+            value-format="yyyy-MM-dd"
+            type="date"
+            :picker-options="{
+              firstDayOfWeek: 1,
+            }"
+            placeholder="选择日期"
+          ></el-date-picker>
+        </el-form-item>
         <el-form-item label="学生声部" prop="subjectIdList">
           <el-select
             v-model.trim="studentForm.subjectIdList"
@@ -376,25 +399,39 @@
             </el-option-group>
           </el-select>
         </el-form-item>
-
-        <el-form-item label="是否运营" prop="operatingTag">
-          <el-select
-            class="multiple"
-            v-model.trim="studentForm.operatingTag"
-            clearable
-          >
-            <el-option :value="1" label="是"></el-option>
-            <el-option :value="0" label="否"></el-option>
-          </el-select>
+        <el-form-item label="家长姓名" prop="parseName">
+          <el-input v-model.trim="studentForm.parseName"></el-input>
         </el-form-item>
-        <el-form-item label="是否服务" prop="serviceTag">
+        <el-form-item
+          label="联系电话"
+          prop="phone"
+          :rules="[
+            { required: true, message: '请输入手机号' },
+            {
+              pattern: /^1\d{10}$/,
+              message: '请输入正确的手机号',
+              trigger: 'blur',
+            },
+          ]"
+        >
+          <!--   @blur="checkPhone(studentForm.phone)" -->
+          <el-input :maxlength="11" v-model.trim="studentForm.phone"></el-input>
+        </el-form-item>
+        <el-form-item label="所属分部" prop="organId">
           <el-select
             class="multiple"
-            v-model.trim="studentForm.serviceTag"
+            v-model.trim="studentForm.organId"
+            filterable
             clearable
+            placeholder="请选择分部"
+            @change="changeStudentOrgan"
           >
-            <el-option :value="1" label="是"></el-option>
-            <el-option :value="0" label="否"></el-option>
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="指导老师" prop="teacherId">
@@ -412,21 +449,31 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="家长姓名" prop="parseName">
-          <el-input v-model.trim="studentForm.parseName"></el-input>
+        <el-alert
+          title="课程信息"
+          type="info"
+          :closable="false"
+          style="margin-bottom: 15px;"
+        ></el-alert>
+        <el-form-item label="是否运营" prop="operatingTag">
+          <el-select
+            class="multiple"
+            v-model.trim="studentForm.operatingTag"
+            clearable
+          >
+            <el-option :value="1" label="是"></el-option>
+            <el-option :value="0" label="否"></el-option>
+          </el-select>
         </el-form-item>
-
-        <el-form-item label="出生日期" prop="date">
-          <el-date-picker
-            v-model.trim="studentForm.date"
-            style="width: 185px"
-            value-format="yyyy-MM-dd"
-            type="date"
-            :picker-options="{
-              firstDayOfWeek: 1,
-            }"
-            placeholder="选择日期"
-          ></el-date-picker>
+        <el-form-item label="是否服务" prop="serviceTag">
+          <el-select
+            class="multiple"
+            v-model.trim="studentForm.serviceTag"
+            clearable
+          >
+            <el-option :value="1" label="是"></el-option>
+            <el-option :value="0" label="否"></el-option>
+          </el-select>
         </el-form-item>
         <el-form-item label="是否是新用户" prop="isNewUser">
           <template #label>
@@ -452,6 +499,32 @@
             <el-option :value="0" label="否"></el-option>
           </el-select>
         </el-form-item>
+        <el-form-item label="关心包" prop="carePackage">
+          <el-select
+            class="multiple"
+            v-model.trim="studentForm.carePackage"
+            clearable
+            :disabled="!isNew && studentUpdatePackage.carePackage == 2"
+            placeholder="请选择关心包"
+          >
+            <el-option label="不可用" :value="0"></el-option>
+            <el-option label="可用" :value="1"></el-option>
+            <el-option disabled label="已使用" :value="2"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="加油包" prop="comeOnPackage">
+          <el-select
+            class="multiple"
+            v-model.trim="studentForm.comeOnPackage"
+            clearable
+            :disabled="!isNew && studentUpdatePackage.comeOnPackage == 2"
+            placeholder="请选择加油包"
+          >
+            <el-option label="不可用" :value="0"></el-option>
+            <el-option label="可用" :value="1"></el-option>
+            <el-option disabled label="已使用" :value="2"></el-option>
+          </el-select>
+        </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="studentVisible = false">取 消</el-button>
@@ -550,6 +623,7 @@ import QRCode from "qrcodejs2";
 import store from "@/store";
 import axios from "axios";
 import qs from "qs";
+import { packageStatus } from '@/constant/index'
 import { getToken } from "@/utils/auth";
 import load from "@/utils/loading";
 import { permission } from "@/utils/directivePage";
@@ -570,6 +644,8 @@ export default {
         operatingTag: null,
         serviceTag: null,
         teacherId: null,
+        carePackage: null,
+        comeOnPackage: null,
       },
       searchList: [],
       tableList: [],
@@ -596,6 +672,12 @@ export default {
         teacherId: null,
         subjectIdList: null,
         isNewUser: null,
+        carePackage: 0,
+        comeOnPackage: 0,
+      },
+      studentUpdatePackage: {
+        carePackage: 0,
+        comeOnPackage: 0
       },
       studentRules: {
         name: [{ required: true, message: "请输入学生姓名" }],
@@ -792,6 +874,8 @@ export default {
             teacherId: studentForm.teacherId,
             isNewUser: studentForm.isNewUser,
             subjectIdList: studentForm.subjectIdList,
+            carePackage: studentForm.carePackage,
+            comeOnPackage: studentForm.comeOnPackage
           };
           registerStudent(obj).then((res) => {
             if (res.code == 200) {
@@ -821,6 +905,8 @@ export default {
             teacherId: studentForm.teacherId,
             isNewUser: studentForm.isNewUser,
             subjectIdList: studentForm.subjectIdList,
+            carePackage: studentForm.carePackage,
+            comeOnPackage: studentForm.comeOnPackage
           };
           updateStudent(obj).then((res) => {
             if (res.code == 200) {
@@ -886,7 +972,13 @@ export default {
           teacherId: row.teacherId || null,
           isNewUser: row.isNewUser,
           subjectIdList: Number(row.subjectIdList) || null,
+          carePackage: row.carePackage,
+          comeOnPackage: row.comeOnPackage
         };
+        this.studentUpdatePackage = {
+          carePackage: row.carePackage,
+          comeOnPackage: row.comeOnPackage
+        }
       });
     },
     onMaskClose(formName) {

Some files were not shown because too many files changed in this diff