|
@@ -27,6 +27,18 @@
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
+ <div class="tips-info tips-error">
|
|
|
+ <template v-if="groupInfo.length <= 1">
|
|
|
+ <p v-if="unsignData.length">
|
|
|
+ 未分配班级:{{ unsignData.map((item) => item.className).join() }}
|
|
|
+ </p>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <p v-for="item in unsignData" :key="item.className">
|
|
|
+ {{ item.content }}
|
|
|
+ </p>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="mark-footer">
|
|
|
<el-button type="primary" :disabled="loading" @click="submit"
|
|
@@ -61,10 +73,11 @@ export default {
|
|
|
classList: [],
|
|
|
selectedClassIds: [],
|
|
|
loading: false,
|
|
|
+ unsignData: [],
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
- ...mapState("markParam", ["basicInfo"]),
|
|
|
+ ...mapState("markParam", ["basicInfo", "groupInfo"]),
|
|
|
},
|
|
|
mounted() {
|
|
|
this.initData();
|
|
@@ -78,6 +91,8 @@ export default {
|
|
|
const res = await markClassMarkerList(params);
|
|
|
this.dataList = res.markerClass || [];
|
|
|
this.classList = res.classNames || [];
|
|
|
+
|
|
|
+ this.updateUnsignData();
|
|
|
},
|
|
|
toSelectClass(row) {
|
|
|
this.curRow = row;
|
|
@@ -86,6 +101,46 @@ export default {
|
|
|
},
|
|
|
classSelected(markerClassList) {
|
|
|
this.curRow.markerClassList = markerClassList;
|
|
|
+
|
|
|
+ this.updateUnsignData();
|
|
|
+ },
|
|
|
+ updateUnsignData() {
|
|
|
+ this.unsignData = this.classList
|
|
|
+ .map((className) => {
|
|
|
+ const markIds = this.dataList
|
|
|
+ .filter((row) => row.markerClassList.include(className))
|
|
|
+ .map((row) => row.mark.id);
|
|
|
+
|
|
|
+ const unsignGroups = this.groupInfo
|
|
|
+ .filter(
|
|
|
+ (group) =>
|
|
|
+ !group.markers.some((marker) => markIds.includes(marker.id))
|
|
|
+ )
|
|
|
+ .map((group) => {
|
|
|
+ return {
|
|
|
+ id: group.id,
|
|
|
+ groupNumber: group.groupNumber,
|
|
|
+ question: group.questions
|
|
|
+ .map((q) => `${q.mainNumber}-${q.subNumber}`)
|
|
|
+ .join(),
|
|
|
+ };
|
|
|
+ });
|
|
|
+
|
|
|
+ const nrow = {
|
|
|
+ className,
|
|
|
+ unsignGroups,
|
|
|
+ content: "",
|
|
|
+ };
|
|
|
+ if (unsignGroups.length) {
|
|
|
+ const groupCont = unsignGroups
|
|
|
+ .map((group) => group.question)
|
|
|
+ .join(" ");
|
|
|
+ nrow.content = `${className},${groupCont},未分配评卷员`;
|
|
|
+ }
|
|
|
+
|
|
|
+ return nrow;
|
|
|
+ })
|
|
|
+ .filter((item) => item.unsignGroups.length);
|
|
|
},
|
|
|
async submit() {
|
|
|
if (this.loading) return;
|