浏览代码

直播分组增加 调整分组功能

dusenyao 3 年之前
父节点
当前提交
bdbc4f2c7b
共有 6 个文件被更改,包括 167 次插入701 次删除
  1. 2 5
      .prettierrc.js
  2. 3 687
      package-lock.json
  3. 13 0
      src/api/live.js
  4. 17 3
      src/views/live/student/group.vue
  5. 127 6
      src/views/live/teacher/group.vue
  6. 5 0
      src/views/task_details/teacher/index.vue

+ 2 - 5
.prettierrc.js

@@ -1,12 +1,9 @@
 module.exports = {
   tabWidth: 2,
-  useTabs: false,
+  printWidth: 120,
   semi: true,
   singleQuote: true,
   trailingComma: 'none',
   endOfLine: 'auto',
-  bracketSpacing: true,
-  arrowParens: 'avoid',
-  printWidth: 120,
-  singleAttributePerLine: true
+  arrowParens: 'avoid'
 };

+ 3 - 687
package-lock.json

@@ -8,14 +8,12 @@
       "name": "gcls_sys_learn_web",
       "version": "0.1.0",
       "dependencies": {
-        "ailp-book-question-ui": "file:../ailp-book-question-ui-0.1.1.tgz",
         "awe-dnd": "^0.3.4",
         "axios": "^0.26.1",
         "book-ui": "file:../book-ui-0.2.27.tgz",
         "core-js": "^3.21.1",
         "dayjs": "^1.10.8",
         "element-ui": "^2.15.6",
-        "gcls-book-question-ui": "file:../gcls-book-question-ui-0.1.0.tgz",
         "jquery": "^3.6.0",
         "js-cookie": "^3.0.1",
         "jsplumb": "^2.15.6",
@@ -3958,210 +3956,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/ailp-book-question-ui": {
-      "version": "0.1.1",
-      "resolved": "file:../ailp-book-question-ui-0.1.1.tgz",
-      "integrity": "sha512-8snSAD7U2YqlRUWw0NS7smimxC/hL3n1MTgUENFH/Rf0qVV0VTwO+hvqR6q/bGDCDbZZtWztAHnxnwIKruo28w==",
-      "dependencies": {
-        "awe-dnd": "^0.3.4",
-        "axios": "^0.21.1",
-        "core-js": "^3.6.5",
-        "element-ui": "^2.15.1",
-        "hanzi-writer": "^3.1.0",
-        "js-audio-recorder": "^1.0.7",
-        "less-loader": "^5.0.0",
-        "node-sass": "^4.14.1",
-        "sass-loader": "^7.1.0",
-        "seededshuffle": "^0.2.0",
-        "vue": "^2.6.11",
-        "vue-esign": "^1.0.5",
-        "vue-pdf": "^4.3.0",
-        "vuedraggable": "^2.24.3"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/ansi-regex": {
-      "version": "2.1.1",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/ansi-styles": {
-      "version": "2.2.1",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/axios": {
-      "version": "0.21.4",
-      "license": "MIT",
-      "dependencies": {
-        "follow-redirects": "^1.14.0"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/chalk": {
-      "version": "1.1.3",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^2.2.1",
-        "escape-string-regexp": "^1.0.2",
-        "has-ansi": "^2.0.0",
-        "strip-ansi": "^3.0.0",
-        "supports-color": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/cross-spawn": {
-      "version": "3.0.1",
-      "license": "MIT",
-      "dependencies": {
-        "lru-cache": "^4.0.1",
-        "which": "^1.2.9"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/get-stdin": {
-      "version": "4.0.1",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/lru-cache": {
-      "version": "4.1.5",
-      "license": "ISC",
-      "dependencies": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/node-gyp": {
-      "version": "3.8.0",
-      "license": "MIT",
-      "dependencies": {
-        "fstream": "^1.0.0",
-        "glob": "^7.0.3",
-        "graceful-fs": "^4.1.2",
-        "mkdirp": "^0.5.0",
-        "nopt": "2 || 3",
-        "npmlog": "0 || 1 || 2 || 3 || 4",
-        "osenv": "0",
-        "request": "^2.87.0",
-        "rimraf": "2",
-        "semver": "~5.3.0",
-        "tar": "^2.0.0",
-        "which": "1"
-      },
-      "bin": {
-        "node-gyp": "bin/node-gyp.js"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/node-sass": {
-      "version": "4.14.1",
-      "hasInstallScript": true,
-      "license": "MIT",
-      "dependencies": {
-        "async-foreach": "^0.1.3",
-        "chalk": "^1.1.1",
-        "cross-spawn": "^3.0.0",
-        "gaze": "^1.0.0",
-        "get-stdin": "^4.0.1",
-        "glob": "^7.0.3",
-        "in-publish": "^2.0.0",
-        "lodash": "^4.17.15",
-        "meow": "^3.7.0",
-        "mkdirp": "^0.5.1",
-        "nan": "^2.13.2",
-        "node-gyp": "^3.8.0",
-        "npmlog": "^4.0.0",
-        "request": "^2.88.0",
-        "sass-graph": "2.2.5",
-        "stdout-stream": "^1.4.0",
-        "true-case-path": "^1.0.2"
-      },
-      "bin": {
-        "node-sass": "bin/node-sass"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/nopt": {
-      "version": "3.0.6",
-      "license": "ISC",
-      "dependencies": {
-        "abbrev": "1"
-      },
-      "bin": {
-        "nopt": "bin/nopt.js"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/sass-loader": {
-      "version": "7.3.1",
-      "license": "MIT",
-      "dependencies": {
-        "clone-deep": "^4.0.1",
-        "loader-utils": "^1.0.1",
-        "neo-async": "^2.5.0",
-        "pify": "^4.0.1",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      },
-      "peerDependencies": {
-        "webpack": "^3.0.0 || ^4.0.0"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/sass-loader/node_modules/semver": {
-      "version": "6.3.0",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver.js"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/semver": {
-      "version": "5.3.0",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/strip-ansi": {
-      "version": "3.0.1",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/supports-color": {
-      "version": "2.0.0",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/tar": {
-      "version": "2.2.2",
-      "license": "ISC",
-      "dependencies": {
-        "block-stream": "*",
-        "fstream": "^1.0.12",
-        "inherits": "2"
-      }
-    },
-    "node_modules/ailp-book-question-ui/node_modules/yallist": {
-      "version": "2.1.2",
-      "license": "ISC"
-    },
     "node_modules/ajv": {
       "version": "6.12.6",
       "license": "MIT",
@@ -10305,202 +10099,6 @@
         "node": ">= 4.0.0"
       }
     },
-    "node_modules/gcls-book-question-ui": {
-      "version": "0.1.0",
-      "resolved": "file:../gcls-book-question-ui-0.1.0.tgz",
-      "integrity": "sha512-7QgPA/RVdKNPndbLPZL/68pex//+1zGTOa9MhomT/ab6ieXRWhnf53iYtjWOuzD6MLDf0DzOKyNqWjaLHCexUw==",
-      "dependencies": {
-        "awe-dnd": "^0.3.4",
-        "axios": "^0.21.1",
-        "core-js": "^3.6.5",
-        "element-ui": "^2.15.1",
-        "hanzi-writer": "^3.1.0",
-        "js-audio-recorder": "^1.0.7",
-        "less-loader": "^5.0.0",
-        "node-sass": "^4.14.1",
-        "sass-loader": "^7.1.0",
-        "seededshuffle": "^0.2.0",
-        "vue": "^2.6.11",
-        "vue-esign": "^1.0.5",
-        "vue-pdf": "^4.3.0"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/ansi-regex": {
-      "version": "2.1.1",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/ansi-styles": {
-      "version": "2.2.1",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/axios": {
-      "version": "0.21.4",
-      "license": "MIT",
-      "dependencies": {
-        "follow-redirects": "^1.14.0"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/chalk": {
-      "version": "1.1.3",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^2.2.1",
-        "escape-string-regexp": "^1.0.2",
-        "has-ansi": "^2.0.0",
-        "strip-ansi": "^3.0.0",
-        "supports-color": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/cross-spawn": {
-      "version": "3.0.1",
-      "license": "MIT",
-      "dependencies": {
-        "lru-cache": "^4.0.1",
-        "which": "^1.2.9"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/get-stdin": {
-      "version": "4.0.1",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/lru-cache": {
-      "version": "4.1.5",
-      "license": "ISC",
-      "dependencies": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/node-gyp": {
-      "version": "3.8.0",
-      "license": "MIT",
-      "dependencies": {
-        "fstream": "^1.0.0",
-        "glob": "^7.0.3",
-        "graceful-fs": "^4.1.2",
-        "mkdirp": "^0.5.0",
-        "nopt": "2 || 3",
-        "npmlog": "0 || 1 || 2 || 3 || 4",
-        "osenv": "0",
-        "request": "^2.87.0",
-        "rimraf": "2",
-        "semver": "~5.3.0",
-        "tar": "^2.0.0",
-        "which": "1"
-      },
-      "bin": {
-        "node-gyp": "bin/node-gyp.js"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/node-gyp/node_modules/semver": {
-      "version": "5.3.0",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/node-sass": {
-      "version": "4.14.1",
-      "hasInstallScript": true,
-      "license": "MIT",
-      "dependencies": {
-        "async-foreach": "^0.1.3",
-        "chalk": "^1.1.1",
-        "cross-spawn": "^3.0.0",
-        "gaze": "^1.0.0",
-        "get-stdin": "^4.0.1",
-        "glob": "^7.0.3",
-        "in-publish": "^2.0.0",
-        "lodash": "^4.17.15",
-        "meow": "^3.7.0",
-        "mkdirp": "^0.5.1",
-        "nan": "^2.13.2",
-        "node-gyp": "^3.8.0",
-        "npmlog": "^4.0.0",
-        "request": "^2.88.0",
-        "sass-graph": "2.2.5",
-        "stdout-stream": "^1.4.0",
-        "true-case-path": "^1.0.2"
-      },
-      "bin": {
-        "node-sass": "bin/node-sass"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/nopt": {
-      "version": "3.0.6",
-      "license": "ISC",
-      "dependencies": {
-        "abbrev": "1"
-      },
-      "bin": {
-        "nopt": "bin/nopt.js"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/sass-loader": {
-      "version": "7.3.1",
-      "license": "MIT",
-      "dependencies": {
-        "clone-deep": "^4.0.1",
-        "loader-utils": "^1.0.1",
-        "neo-async": "^2.5.0",
-        "pify": "^4.0.1",
-        "semver": "^6.3.0"
-      },
-      "engines": {
-        "node": ">= 6.9.0"
-      },
-      "peerDependencies": {
-        "webpack": "^3.0.0 || ^4.0.0"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/strip-ansi": {
-      "version": "3.0.1",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-regex": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/supports-color": {
-      "version": "2.0.0",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.8.0"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/tar": {
-      "version": "2.2.2",
-      "license": "ISC",
-      "dependencies": {
-        "block-stream": "*",
-        "fstream": "^1.0.12",
-        "inherits": "2"
-      }
-    },
-    "node_modules/gcls-book-question-ui/node_modules/yallist": {
-      "version": "2.1.2",
-      "license": "ISC"
-    },
     "node_modules/generate-source-map": {
       "version": "0.0.5",
       "license": "MIT",
@@ -18455,6 +18053,7 @@
     },
     "node_modules/semver": {
       "version": "6.3.0",
+      "dev": true,
       "license": "ISC",
       "bin": {
         "semver": "bin/semver.js"
@@ -25754,150 +25353,6 @@
         "indent-string": "^4.0.0"
       }
     },
-    "ailp-book-question-ui": {
-      "version": "file:..\\ailp-book-question-ui-0.1.1.tgz",
-      "integrity": "sha512-8snSAD7U2YqlRUWw0NS7smimxC/hL3n1MTgUENFH/Rf0qVV0VTwO+hvqR6q/bGDCDbZZtWztAHnxnwIKruo28w==",
-      "requires": {
-        "awe-dnd": "^0.3.4",
-        "axios": "^0.21.1",
-        "core-js": "^3.6.5",
-        "element-ui": "^2.15.1",
-        "hanzi-writer": "^3.1.0",
-        "js-audio-recorder": "^1.0.7",
-        "less-loader": "^5.0.0",
-        "node-sass": "^4.14.1",
-        "sass-loader": "^7.1.0",
-        "seededshuffle": "^0.2.0",
-        "vue": "^2.6.11",
-        "vue-esign": "^1.0.5",
-        "vue-pdf": "^4.3.0",
-        "vuedraggable": "^2.24.3"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1"
-        },
-        "ansi-styles": {
-          "version": "2.2.1"
-        },
-        "axios": {
-          "version": "0.21.4",
-          "requires": {
-            "follow-redirects": "^1.14.0"
-          }
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          }
-        },
-        "cross-spawn": {
-          "version": "3.0.1",
-          "requires": {
-            "lru-cache": "^4.0.1",
-            "which": "^1.2.9"
-          }
-        },
-        "get-stdin": {
-          "version": "4.0.1"
-        },
-        "lru-cache": {
-          "version": "4.1.5",
-          "requires": {
-            "pseudomap": "^1.0.2",
-            "yallist": "^2.1.2"
-          }
-        },
-        "node-gyp": {
-          "version": "3.8.0",
-          "requires": {
-            "fstream": "^1.0.0",
-            "glob": "^7.0.3",
-            "graceful-fs": "^4.1.2",
-            "mkdirp": "^0.5.0",
-            "nopt": "2 || 3",
-            "npmlog": "0 || 1 || 2 || 3 || 4",
-            "osenv": "0",
-            "request": "^2.87.0",
-            "rimraf": "2",
-            "semver": "~5.3.0",
-            "tar": "^2.0.0",
-            "which": "1"
-          }
-        },
-        "node-sass": {
-          "version": "4.14.1",
-          "requires": {
-            "async-foreach": "^0.1.3",
-            "chalk": "^1.1.1",
-            "cross-spawn": "^3.0.0",
-            "gaze": "^1.0.0",
-            "get-stdin": "^4.0.1",
-            "glob": "^7.0.3",
-            "in-publish": "^2.0.0",
-            "lodash": "^4.17.15",
-            "meow": "^3.7.0",
-            "mkdirp": "^0.5.1",
-            "nan": "^2.13.2",
-            "node-gyp": "^3.8.0",
-            "npmlog": "^4.0.0",
-            "request": "^2.88.0",
-            "sass-graph": "2.2.5",
-            "stdout-stream": "^1.4.0",
-            "true-case-path": "^1.0.2"
-          }
-        },
-        "nopt": {
-          "version": "3.0.6",
-          "requires": {
-            "abbrev": "1"
-          }
-        },
-        "sass-loader": {
-          "version": "7.3.1",
-          "requires": {
-            "clone-deep": "^4.0.1",
-            "loader-utils": "^1.0.1",
-            "neo-async": "^2.5.0",
-            "pify": "^4.0.1",
-            "semver": "^6.3.0"
-          },
-          "dependencies": {
-            "semver": {
-              "version": "6.3.0"
-            }
-          }
-        },
-        "semver": {
-          "version": "5.3.0"
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0"
-        },
-        "tar": {
-          "version": "2.2.2",
-          "requires": {
-            "block-stream": "*",
-            "fstream": "^1.0.12",
-            "inherits": "2"
-          }
-        },
-        "yallist": {
-          "version": "2.1.2"
-        }
-      }
-    },
     "ajv": {
       "version": "6.12.6",
       "requires": {
@@ -30136,146 +29591,6 @@
         "globule": "^1.0.0"
       }
     },
-    "gcls-book-question-ui": {
-      "version": "file:..\\gcls-book-question-ui-0.1.0.tgz",
-      "integrity": "sha512-7QgPA/RVdKNPndbLPZL/68pex//+1zGTOa9MhomT/ab6ieXRWhnf53iYtjWOuzD6MLDf0DzOKyNqWjaLHCexUw==",
-      "requires": {
-        "awe-dnd": "^0.3.4",
-        "axios": "^0.21.1",
-        "core-js": "^3.6.5",
-        "element-ui": "^2.15.1",
-        "hanzi-writer": "^3.1.0",
-        "js-audio-recorder": "^1.0.7",
-        "less-loader": "^5.0.0",
-        "node-sass": "^4.14.1",
-        "sass-loader": "^7.1.0",
-        "seededshuffle": "^0.2.0",
-        "vue": "^2.6.11",
-        "vue-esign": "^1.0.5",
-        "vue-pdf": "^4.3.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "2.1.1"
-        },
-        "ansi-styles": {
-          "version": "2.2.1"
-        },
-        "axios": {
-          "version": "0.21.4",
-          "requires": {
-            "follow-redirects": "^1.14.0"
-          }
-        },
-        "chalk": {
-          "version": "1.1.3",
-          "requires": {
-            "ansi-styles": "^2.2.1",
-            "escape-string-regexp": "^1.0.2",
-            "has-ansi": "^2.0.0",
-            "strip-ansi": "^3.0.0",
-            "supports-color": "^2.0.0"
-          }
-        },
-        "cross-spawn": {
-          "version": "3.0.1",
-          "requires": {
-            "lru-cache": "^4.0.1",
-            "which": "^1.2.9"
-          }
-        },
-        "get-stdin": {
-          "version": "4.0.1"
-        },
-        "lru-cache": {
-          "version": "4.1.5",
-          "requires": {
-            "pseudomap": "^1.0.2",
-            "yallist": "^2.1.2"
-          }
-        },
-        "node-gyp": {
-          "version": "3.8.0",
-          "requires": {
-            "fstream": "^1.0.0",
-            "glob": "^7.0.3",
-            "graceful-fs": "^4.1.2",
-            "mkdirp": "^0.5.0",
-            "nopt": "2 || 3",
-            "npmlog": "0 || 1 || 2 || 3 || 4",
-            "osenv": "0",
-            "request": "^2.87.0",
-            "rimraf": "2",
-            "semver": "~5.3.0",
-            "tar": "^2.0.0",
-            "which": "1"
-          },
-          "dependencies": {
-            "semver": {
-              "version": "5.3.0"
-            }
-          }
-        },
-        "node-sass": {
-          "version": "4.14.1",
-          "requires": {
-            "async-foreach": "^0.1.3",
-            "chalk": "^1.1.1",
-            "cross-spawn": "^3.0.0",
-            "gaze": "^1.0.0",
-            "get-stdin": "^4.0.1",
-            "glob": "^7.0.3",
-            "in-publish": "^2.0.0",
-            "lodash": "^4.17.15",
-            "meow": "^3.7.0",
-            "mkdirp": "^0.5.1",
-            "nan": "^2.13.2",
-            "node-gyp": "^3.8.0",
-            "npmlog": "^4.0.0",
-            "request": "^2.88.0",
-            "sass-graph": "2.2.5",
-            "stdout-stream": "^1.4.0",
-            "true-case-path": "^1.0.2"
-          }
-        },
-        "nopt": {
-          "version": "3.0.6",
-          "requires": {
-            "abbrev": "1"
-          }
-        },
-        "sass-loader": {
-          "version": "7.3.1",
-          "requires": {
-            "clone-deep": "^4.0.1",
-            "loader-utils": "^1.0.1",
-            "neo-async": "^2.5.0",
-            "pify": "^4.0.1",
-            "semver": "^6.3.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "3.0.1",
-          "requires": {
-            "ansi-regex": "^2.0.0"
-          }
-        },
-        "supports-color": {
-          "version": "2.0.0"
-        },
-        "tar": {
-          "version": "2.2.2",
-          "requires": {
-            "block-stream": "*",
-            "fstream": "^1.0.12",
-            "inherits": "2"
-          }
-        },
-        "yallist": {
-          "version": "2.1.2"
-        }
-      }
-    },
     "generate-source-map": {
       "version": "0.0.5",
       "requires": {
@@ -35537,7 +34852,8 @@
       }
     },
     "semver": {
-      "version": "6.3.0"
+      "version": "6.3.0",
+      "dev": true
     },
     "send": {
       "version": "0.17.1",

+ 13 - 0
src/api/live.js

@@ -344,3 +344,16 @@ export function SetCurGroupToExample_Teacher(data) {
     data
   });
 }
+
+/**
+ * 教师调用这个方法,调整分组
+ * @param { Object } data
+ */
+export function AdjustGroup(data) {
+  return request({
+    method: 'post',
+    url: process.env.VUE_APP_LearnWebSI,
+    params: getRequestParams('live_room-live_room_dispatch-AdjustGroup'),
+    data
+  });
+}

+ 17 - 3
src/views/live/student/group.vue

@@ -193,7 +193,9 @@ export default {
       // 旁听学员列表
       audience_list: [],
       is_example_group: false,
-      marginLeft: 0
+      marginLeft: 0,
+      // 所在组的实例标记号
+      group_instance_mark: ''
     };
   },
   watch: {
@@ -370,7 +372,18 @@ export default {
     getGroupStatus() {
       this.timer = setInterval(() => {
         GetGroupStatus({ task_id: this.task_id }).then(
-          ({ is_enable_group, is_has_group_message, group_message_text, is_audience, is_example_group }) => {
+          ({
+            is_enable_group,
+            is_has_group_message,
+            group_message_text,
+            is_audience,
+            is_example_group,
+            group_instance_mark
+          }) => {
+            if (this.group_instance_mark.length > 0 && this.group_instance_mark !== group_instance_mark) {
+              return this.$router.go(0);
+            }
+
             if (is_enable_group === 'false') {
               clearInterval(this.timer);
               CreateEnterLiveRoomSession({
@@ -449,8 +462,9 @@ export default {
     getMyGroupInfo_Student() {
       GetMyGroupInfo_Student({
         task_id: this.task_id
-      }).then(({ live_room_sys_user_id, room_id, student_list, audience_list }) => {
+      }).then(({ live_room_sys_user_id, room_id, student_list, audience_list, group_instance_mark }) => {
         const data = student_list.find(el => el.is_self === 'true');
+        this.group_instance_mark = group_instance_mark;
         this.session_id = data.session_id;
         this.room_user_id = data.room_user_id;
         this.live_room_sys_user_id = live_room_sys_user_id;

+ 127 - 6
src/views/live/teacher/group.vue

@@ -5,6 +5,28 @@
       <div class="live-title">
         <div class="live-title-name">{{ roomInfo.cs_item_name }} {{ roomInfo.task_name }}</div>
         <div>
+          <el-popover
+            v-show="!isGroup"
+            v-model="visible"
+            width="352"
+            popper-class="adjust"
+            trigger="click"
+            placement="bottom-start"
+          >
+            <div class="adjust-title">调整分组</div>
+            <div class="adjust-list">
+              <div v-for="item in adjustGroupList" :key="item.student_id" class="adjust-list-item">
+                <el-avatar icon="el-icon-user" :src="item.student_image_url" />
+                <span class="student-name">{{ item.student_name }}</span>
+                <el-select v-model="item.group_id" size="mini">
+                  <el-option v-for="{ value, label } in groupList" :key="value" :value="value" :label="label" />
+                </el-select>
+              </div>
+            </div>
+            <div class="adjust-button" @click="adjustGroup">确定</div>
+
+            <el-button slot="reference">调整分组</el-button>
+          </el-popover>
           <el-button @click="stopGroup">
             {{ $t('Key404') }}
           </el-button>
@@ -172,7 +194,8 @@ import {
   GetMyGroupInfo_Teacher,
   GetGroupStatus,
   SendGroupMessage,
-  SetCurGroupToExample_Teacher
+  SetCurGroupToExample_Teacher,
+  AdjustGroup
 } from '@/api/live';
 import * as common from './group';
 
@@ -229,9 +252,24 @@ export default {
       // 无远程流学员列表
       noStreamList: [],
       // 旁听学员列表
-      audience_list: []
+      audience_list: [],
+      // 调整分组用列表
+      adjustGroupList: [],
+      visible: false
     };
   },
+  computed: {
+    groupList() {
+      const list = [];
+      this.group_list.forEach(({ group_id }, i) => {
+        list.push({
+          label: `小组${i + 1}`,
+          value: group_id
+        });
+      });
+      return list;
+    }
+  },
   watch: {
     loadedNumber(newVal) {
       if (newVal === 2) {
@@ -286,10 +324,7 @@ export default {
       }
     });
     this.getLiveRoomInfo();
-    GetGroupInfo_Teacher({ task_id: this.task_id }).then(({ live_room_sys_user_id, group_list }) => {
-      this.group_list = group_list;
-      this.live_room_sys_user_id = live_room_sys_user_id;
-    });
+    this.getGroupInfo_Teacher();
   },
   beforeDestroy() {
     common.closeVideo('main');
@@ -451,6 +486,40 @@ export default {
         .finally(() => {
           loading.close();
         });
+    },
+
+    getGroupInfo_Teacher() {
+      GetGroupInfo_Teacher({ task_id: this.task_id }).then(({ live_room_sys_user_id, group_list }) => {
+        this.group_list = group_list;
+        this.live_room_sys_user_id = live_room_sys_user_id;
+
+        const list = [];
+        this.group_list.forEach(({ group_id, student_list }) => {
+          student_list.forEach(item => {
+            list.push({
+              group_id,
+              ...item
+            });
+          });
+        });
+        this.adjustGroupList = list;
+      });
+    },
+
+    adjustGroup() {
+      const student_list = this.adjustGroupList.map(({ group_id, student_id }) => {
+        return { group_id, student_id };
+      });
+      const loading = this.$loading({ text: '调整分组中...' });
+      AdjustGroup({ task_id: this.task_id, student_list })
+        .then(() => {
+          this.$message.success('调整分组成功');
+          this.getGroupInfo_Teacher();
+          this.visible = false;
+        })
+        .finally(() => {
+          loading.close();
+        });
     }
   }
 };
@@ -483,6 +552,10 @@ $live-bc: #3d3938;
         padding: 7px 12px;
         border-radius: 4px;
       }
+
+      ::v-deep .el-popover__reference-wrapper {
+        margin-right: 8px;
+      }
     }
 
     .live-course-name {
@@ -806,3 +879,51 @@ $live-bc: #3d3938;
   }
 }
 </style>
+
+<style lang="scss">
+.adjust {
+  padding: 0;
+  font-size: 16px;
+  border-width: 0;
+
+  &-title {
+    padding: 16px;
+    font-weight: bold;
+    background-color: #f4f4f4;
+  }
+
+  &-list {
+    height: 400px;
+    padding: 20px 16px;
+    overflow-y: auto;
+
+    &-item {
+      display: flex;
+      column-gap: 16px;
+      align-items: center;
+
+      .el-avatar {
+        min-width: 40px;
+      }
+
+      .student-name {
+        flex: 1;
+      }
+
+      .el-select {
+        width: 85px;
+      }
+    }
+  }
+
+  &-button {
+    padding: 9px 0;
+    font-weight: 700;
+    color: #fff;
+    text-align: center;
+    cursor: pointer;
+    background-color: $basic-color;
+    border-radius: 0 0 4px 4px;
+  }
+}
+</style>

+ 5 - 0
src/views/task_details/teacher/index.vue

@@ -231,6 +231,11 @@ export default {
       });
   },
   methods: {
+    siteFilter() {
+      const siteFilter = new RegExp(/(https?:\/\/)?[\w-]+\.[\w-]+\.[\w-,@?^=%&:/~\\+#]+/, 'g');
+      console.log(siteFilter);
+    },
+
     getTaskStudentExecuteInfo(student_id) {
       GetTaskStudentExecuteInfo({
         task_id: this.id,