<template>
    <div class="i_body_box">
        <div class="check_nav">
            <!-- <div class="nav all" :class="{ active: type == '' }" @click="checkType('')">
                所有评测
            </div> -->
            <div class="nav" :class="{
                active: type == item.id,
                gr: item.id == 'afc3f97f-2429-408d-8dcd-5e63a44d355a',
                md: item.id == '478bcccd-e3a1-472b-aa29-3ed7bc479469',
                jy: item.id == '178a377a-b4f1-4a75-b3c3-2787a7c98784',
                yy: item.id == 'dda9728e-5f11-469e-89ee-aca518daf223',
                bj: item.id == 'afc3f97f-2429-408d-8dcd-5e63a44d355c'
            }" @click="checkType(item.id)" v-for="(item, index) in typeArray" :key="index">
                {{ item.name }}
            </div>
            <div class="nav all" :class="{ active: type == '0' }" @click="checkType('0')">
                其他
            </div>
        </div>
        <div class="check_box" v-loading="loading">
            <div class="noneData" v-if="!worksArray.length" style="text-align: center;">
                暂无数据
            </div>
            <div class="test_panel" v-for="(item, index) in worksArray" :key="index">
                <div class="test_panel_title">
                    <div class="title">
                        <span :class="{ is: item.array.length > 0, no: !item.array.length }">{{ item.array.length > 0 ?
                            "已完成" : "未完成" }}</span>
                        <span>{{ item.title }}</span>
                    </div>
                    <div class="time">
                        <span>创建时间： {{ item.time }}</span>
                        <span>修改时间： {{ item.utime }}</span>
                    </div>
                </div>
                <div class="test_panel_box">
                    <div class="detail" v-if="item.array.length === 0 || item.brief">
                        <span>{{ item.brief ? item.brief : "暂无描述" }}</span>
                    </div>
                    <div class="test_add_box"
                        style="width: calc(100% - 350px - 20px);border: none;margin-right: 20px;padding: 0;" v-else>
                        <div class="test" v-for="test in item.array" :key="test.id">
                            <img :src="getImg(test.courseJson)
                                    ? getImg(test.courseJson)
                                    : require('../../../../assets/icon/test/teacher.jpg')
                                " />
                            <div class="time">
                                <span>提交时间</span>
                                <span>{{ test.time }}</span>
                                <span>修改时间</span>
                                <span>{{ test.utime }}</span>
                            </div>
                            <img @click="deleteTest(test.id)" class="delete" src="../../../../assets/icon/test/delete.png"
                                alt="" />
                            <div class="mask">
                                <div @click="doTest(test.courseid, test.id)">
                                    <span></span><span>编辑</span>
                                </div>
                                <div @click="checkTest(test.courseid, test.id)">
                                    <span></span><span>查看</span>
                                </div>
                                <div @click="copyTest(test.id)">
                                    <span></span><span>复制</span>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="panel">
                        <div class="score">
                            <div>
                                <span>{{ getNum(item.chapters) }}</span><span>题</span>
                            </div>
                            <div>题目总数</div>
                        </div>
                        <div class="score">
                            <div>
                                <span>{{ getScore(item.array) }}</span><span>分</span>
                            </div>
                            <div>综合得分</div>
                        </div>
                        <div class="btn">
                            <!-- <div @click="doTest(item.courseid,item.id)"><span></span><span>编辑</span></div> -->
                            <div @click="doTest2(item.courseid)">
                                <span></span><span>添加</span>
                            </div>
                            <!-- <div @click="checkTest(item.courseid,item.id)"><span></span><span>查看</span></div> -->
                            <!-- <div @click="copyTest(item.id)"><span></span><span>复制</span></div> -->
                        </div>
                    </div>
                </div>
                <div class="test_add_box" v-if="item.array.length > 0 && item.brief">
                    <div class="test" v-for="test in item.array" :key="test.id">
                        <img :src="getImg(test.courseJson)
                                ? getImg(test.courseJson)
                                : require('../../../../assets/icon/test/teacher.jpg')
                            " />
                        <div class="time">
                            <span>提交时间</span>
                            <span>{{ test.time }}</span>
                            <span>修改时间</span>
                            <span>{{ test.utime }}</span>
                        </div>
                        <img @click="deleteTest(test.id)" class="delete" src="../../../../assets/icon/test/delete.png"
                            alt="" />
                        <div class="mask">
                            <div @click="doTest(test.courseid, test.id)">
                                <span></span><span>编辑</span>
                            </div>
                            <div @click="checkTest(test.courseid, test.id)">
                                <span></span><span>查看</span>
                            </div>
                            <div @click="copyTest(test.id)">
                                <span></span><span>复制</span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
export default {
    props: {
        userid: {
        type: String,
        },
        oid: {
        type: String,
        },
    },
    data() {
        return {
            type: "",
            typeArray: [],
            typeArrayCheck: [],
            worksArray: [],
            org: this.$route.query.org,
            role: this.$route.query.role,
            loading: false
        };
    },
    computed: {
        getNum() {
            return function (array) {
                let _array = JSON.parse(array);
                let num = 0;
                _array.forEach(el => {
                    if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
                        el.array.forEach(item => {
                            if (item.ttype == 2 && item.array.length > 0) {
                                item.array.forEach(item2 => {
                                    if (item2.ttype == 1 && item2.json) {
                                        num++;
                                    }
                                });
                            } else if (item.ttype == 1 && item.json) {
                                num++;
                            }
                        });
                    } else if (el.ttype == 1 && el.json) {
                        num++;
                    }
                });
                return num;
            };
        },
        getScore() {
            return function (array) {
                // let _array = JSON.parse(array)
                let _score = 0;
                let scoreArray = [];
                for (var i = 0; i < array.length; i++) {
                    let _array = JSON.parse(array[i].courseJson);
                    let score = 0;
                    for (var j = 0; j < _array.length; j++) {
                        let el = _array[j];
                        if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
                            for (var k = 0; k < el.array.length; k++) {
                                let item = el.array[k];
                                if (item.ttype == 2 && item.array.length > 0) {
                                    for (var z = 0; z < item.array.length; z++) {
                                        let item2 = item.array[k];
                                        if (item2.ttype == 1 && item2.json && item2.json.score2) {
                                            score += parseInt(item2.json.score2);
                                        }
                                    }
                                } else if (item.ttype == 1 && item.json && item.json.score2) {
                                    score += parseInt(item.json.score2);
                                }
                            }
                        } else if (el.ttype == 1 && el.json && el.json.score2) {
                            score += parseInt(el.json.score2);
                        }
                    }
                    scoreArray.push(score);
                }
                scoreArray.forEach(el => {
                    _score += el;
                });
                console.log(scoreArray);
                return _score ? _score / scoreArray.length : 0;
            };
        },
        getImg() {
            return function (array) {
                let _array = JSON.parse(array);
                let _img = "";
                s: for (var j = 0; j < _array.length; j++) {
                    let el = _array[j];
                    if ((el.ttype == 3 || el.ttype == 2) && el.array.length > 0) {
                        for (var k2 = 0; k2 < el.array.length; k2++) {
                            let item = el.array[k2];
                            if (item.ttype == 2 && item.array.length > 0) {
                                for (var z = 0; z < item.array.length; z++) {
                                    let item2 = item.array[k2];
                                    if (
                                        item2.ttype == 1 &&
                                        item2.type == 5 &&
                                        item2.json &&
                                        item2.json.file &&
                                        item2.json.file.length > 0
                                    ) {
                                        for (var k4 = 0; k4 < item2.json.file.length; k4++) {
                                            let ik = item2.json.file[k4];
                                            if (ik.type == 3) {
                                                _img = ik.url;
                                                break s;
                                            }
                                        }
                                    }
                                }
                            } else if (
                                item.ttype == 1 &&
                                item.type == 5 &&
                                item.json &&
                                item.json.file &&
                                item.json.file.length > 0
                            ) {
                                for (var k3 = 0; k3 < item.json.file.length; k3++) {
                                    let ik = item.json.file[k3];
                                    if (ik.type == 3) {
                                        _img = ik.url;
                                        break s;
                                    }
                                }
                            }
                        }
                    } else if (
                        el.ttype == 1 &&
                        el.type == 5 &&
                        el.json &&
                        el.json.file &&
                        el.json.file.length > 0
                    ) {
                        for (var k = 0; k < el.json.file.length; k++) {
                            let ik = el.json.file[k];
                            if (ik.type == 3) {
                                _img = ik.url;
                                break s;
                            }
                        }
                    }
                }
                return _img;
            };
        }
    },
    methods: {
        checkType(type) {
            this.type = type;
            this.getWorks();
        },
        selectTestType() {
            let params = {
                oid: this.oid
            };
            this.ajax
                .get(this.$store.state.api + "selectTestType", params)
                .then(res => {
                    this.typeArray = res.data[0];
                    if(this.typeArray.length){
                        this.type = this.typeArray[0].id;
                    }else{
                        this.type = '0';
                    }
                })
                .catch(err => {
                    console.error(err);
                });
        },
        getWorks() {
            this.loading = true;
            let params = {
                uid: this.userid,
                typeid: this.type
            };
            this.ajax
                .get(this.$store.state.api + "getTestWorksPerson", params)
                .then(res => {
                    this.loading = false;
                    let array = res.data[0];
                    let array2 = res.data[1];
                    // 用于存储归类后的数据的对象
                    let worksArray = {};

                    // 遍历原始数据，根据 parentId 进行分组
                    array2.forEach(item => {
                        // console.log(item.chapters);
                        worksArray[item.courseId] = {
                            id: item.id,
                            courseid: item.courseId,
                            title: item.title,
                            time: item.time,
                            utime: item.utime,
                            chapters: item.chapters,
                            brief: item.brief,
                            array: []
                        };
                    });
                    worksArray = Object.values(worksArray);
                    worksArray.forEach(el => {
                        array.forEach(el2 => {
                            if (el.courseid == el2.courseid) {
                                el.array.push(el2);
                            }
                        });
                    });
                    // worksArray[item.courseid].array.push(item);

                    this.worksArray = worksArray;
                    this.$forceUpdate();
                })
                .catch(err => {
                    this.loading = false;
                    console.error(err);
                });
        },
        returnA() {
            this.$router.push(
                "/testStudent?userid=" +
                this.userid +
                "&oid=" +
                this.oid +
                "&org=" +
                this.org +
                "&role=" +
                this.role
            );
        },
        checkTest(cid, tid) {
            this.$router.push(
                "/checkTest?cid=" +
                cid +
                "&tid=" +
                tid +
                "&userid=" +
                this.userid +
                "&oid=" +
                this.oid +
                "&org=" +
                this.org +
                "&type=3" +
                "&role=" +
                this.role
            );
        },
        doTest(cid, tid) {
            this.$router.push(
                "/doTest?cid=" +
                cid +
                "&tid=" +
                tid +
                "&userid=" +
                this.userid +
                "&oid=" +
                this.oid +
                "&org=" +
                this.org +
                "&type=3" +
                "&role=" +
                this.role
            );
        },
        doTest2(cid) {
            this.$router.push(
                "/doTest?cid=" +
                cid +
                "&userid=" +
                this.userid +
                "&oid=" +
                this.oid +
                "&org=" +
                this.org +
                "&type=3" +
                "&role=" +
                this.role
            );
        },
        copyTest(tid) {
            let params = [
                {
                    tid: tid,
                    uid: this.userid
                }
            ];
            this.ajax
                .post(this.$store.state.api + "copyTestWorks", params)
                .then(res => {
                    this.$message.success("复制成功");
                    this.getWorks();
                })
                .catch(err => {
                    console.error(err);
                });
        },
        deleteTest(tid) {
            let _this = this;
            _this
                .$confirm("确定删除此提交的评测么？", "提示", {
                    confirmButtonText: "确定",
                    cancelButtonText: "取消",
                    type: "warning"
                })
                .then(() => {
                    let params = [
                        {
                            tid: tid
                        }
                    ];
                    _this.ajax
                        .post(_this.$store.state.api + "deleteTestCourseWorks", params)
                        .then(res => {
                            _this.$message.success("删除成功");
                            _this.getWorks();
                        })
                        .catch(err => {
                            console.error(err);
                        });
                })
                .catch(() => {
                    return;
                });
        }
    },
    mounted() {
        this.selectTestType();
        this.getWorks();
    }
};
</script>

<style scoped>
.i_body_box {
  height: calc(100% - 30px);
  padding: 30px 0 0;
  box-sizing: border-box;
}

.check_nav {
  display: flex;
  height: 50px;
  align-items: center;
  padding: 0;
  box-sizing: border-box;
  width: 100%;
}

.check_nav>.nav {
  width: 120px;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgb(167, 167, 167);
  /* background: #000000; */
  cursor: pointer;
}

.check_nav>.active {
  color: #3681fc;
  background: rgb(248, 250, 254);
  border-radius: 10px 10px 0 0;
}

.check_nav>.all::before,
.check_nav>.gr::before,
.check_nav>.md::before,
.check_nav>.jy::before,
.check_nav>.bj::before,
.check_nav>.yy::before {
  content: "";
  display: block;
  width: 18px;
  height: 18px;
  background-size: 100% 100%;
  margin-right: 5px;
}

.check_nav>.all::before {

  background-image: url('../../../../assets/icon/test/all_icon.png');
}

.check_nav>.active.all::before {
  background-image: url('../../../../assets/icon/test/all_icon_active.png');
}

.check_nav>.gr::before {
  background-image: url('../../../../assets/icon/test/gr_icon.png');
}

.check_nav>.active.gr::before {
  background-image: url('../../../../assets/icon/test/gr_icon_active.png');
}

.check_nav>.md::before {
  background-image: url('../../../../assets/icon/test/md_icon.png');
}

.check_nav>.active.md::before {
  background-image: url('../../../../assets/icon/test/md_icon_active.png');
}

.check_nav>.jy::before {
  background-image: url('../../../../assets/icon/test/jy_icon.png');
}

.check_nav>.active.jy::before {
  background-image: url('../../../../assets/icon/test/jy_icon_active.png');
}

.check_nav>.yy::before {
  background-image: url('../../../../assets/icon/test/yy_icon.png');
}

.check_nav>.active.yy::before {
  background-image: url('../../../../assets/icon/test/yy_icon_active.png');
}

.check_nav>.bj::before {
  background-image: url('../../../../assets/icon/test/bj_icon.png');
}

.check_nav>.active.bj::before {
  background-image: url('../../../../assets/icon/test/bj_icon_active.png');
}


.check_box {
  height: calc(100% - 50px);
  overflow: auto;
  padding: 20px 0;
  box-sizing: border-box;
  background: rgb(248, 250, 254);
}

.test_panel {
  width: calc(100% - 40px);
  margin: 0 auto;
  background: #fff;
  border-radius: 10px;
  /* height: 300px; */
  overflow: hidden;
}

.test_panel+.test_panel {
  margin-top: 20px;
}

.test_panel_title {
  height: 60px;
  display: flex;
  align-items: center;
  width: 100%;
  justify-content: space-between;
  padding: 0 20px;
  box-sizing: border-box;
  border-bottom: 2px solid #f0f0f0;
}

.test_panel_title>.title {
  display: flex;
  align-items: center;
}

.test_panel_title>.title>span:nth-child(1) {
  font-size: 12px;
  padding: 3px 5px;
  border-radius: 5px;
  margin-right: 10px;
}

.test_panel_title>.title>.is:nth-child(1) {
  color: rgb(100, 215, 155);
  background: rgb(241, 255, 248);
  border: 1px solid rgb(100, 215, 155);
}

.test_panel_title>.title>.no:nth-child(1) {
  color: rgb(240, 66, 66);
  background: rgb(255, 241, 241);
  border: 1px solid rgb(240, 66, 66);
}

.test_panel_title>.title>span:nth-child(2) {
  font-size: 18px;
  font-weight: 600;
}

.test_panel_title>.time {
  font-size: 14px;
  color: #a1a1a1;
}

.test_panel_title>.time>span+span {
  margin-left: 10px;
}

.test_panel_box {
  width: 100%;
  display: flex;
  align-items: center;
  padding: 20px 20px;
  box-sizing: border-box;
}

.test_panel_box>.detail {
  width: calc(100% - 350px - 20px);
  margin-right: 20px;
  color: #a1a1a1;
  font-size: 14px;
  line-height: 24px;
  word-break: break-all;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.test_panel_box>.panel {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 350px;
  min-width: 350px;
}

.test_panel_box>.panel>.score {
  height: 110px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  border: 1px solid #dbdbdb;
  background: rgb(252, 252, 252);
  width: 120px;
  border-radius: 5px;
}

.test_panel_box>.panel>.score:nth-child(1) {
  display: flex;
}

.test_panel_box>.panel>.score>div:nth-child(1)>span:nth-child(1) {
  font-size: 30px;
  font-weight: 700;
}

.test_panel_box>.panel>.score>div:nth-child(1)>span:nth-child(2) {
  margin-left: 5px;
}

.test_panel_box>.panel>.score>div:nth-child(2) {
  font-size: 14px;
  margin-top: 10px;
  color: #a1a1a1;
}

.test_panel_box>.panel>.btn {
  height: 100px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.test_panel_box>.panel>.btn>div {
  display: flex;
  color: rgb(69, 141, 255);
  align-items: center;
  cursor: pointer;
  font-size: 14px;
}

/* .test_panel_box > .panel >.btn > div + div{
      margin: 15px 0 0 0;
    } */
.test_panel_box>.panel>.btn>div>span:nth-child(1) {
  display: block;
  width: 13px;
  height: 13px;
  background-size: 100% 100%;
  margin-right: 7px;
}

.test_panel_box>.panel>.btn>div:nth-child(1)>span:nth-child(1) {
  background-image: url('../../../../assets/icon/test/edit_icon.png');
}

.test_panel_box>.panel>.btn>div:nth-child(2)>span:nth-child(1) {
  background-image: url('../../../../assets/icon/test/check_icon.png');
}

.test_panel_box>.panel>.btn>div:nth-child(3)>span:nth-child(1) {
  background-image: url('../../../../assets/icon/test/paste_icon.png');
}

.test_add_box {
  height: 160px;
  width: 100%;
  padding: 0 20px;
  border-top: 2px solid #f0f0f0;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  overflow: auto;
}


.test_add_box>.test {
  width: 120px;
  min-width: 120px;
  height: 120px;
  border-radius: 5px;
  /* overflow: hidden; */
  position: relative;
}

.test_add_box>.test:hover .mask {
  display: flex;
}

.test_add_box>.test:hover .delete {
  display: block;
}

.test_add_box>.test>img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 5px;
}

.test_add_box>.test+.test {
  margin-left: 10px;
}

.test_add_box>.test>.time {
  position: absolute;
  width: 100%;
  height: 100%;
  flex-direction: column;
  display: flex;
  justify-content: center;
  align-items: center;
  top: 0;
  left: 0;
  color: #fff;
  background: rgba(0, 0, 0, 0.5);
  font-size: 14px;
  text-align: center;
  border-radius: 5px;
}

.test_add_box>.test>.time>span {
  margin-top: 5px;
}

.test_add_box>.test>.mask {
  position: absolute;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  /* display: flex; */
  flex-direction: column;
  justify-content: center;
  align-items: center;
  top: 0;
  left: 0;
  color: rgb(69, 141, 255);
  display: none;
  border-radius: 5px;
}

.test_add_box>.test>.delete {
  position: absolute;
  width: 20px;
  height: 20px;
  right: -5px;
  top: -5px;
  cursor: pointer;
  z-index: 2;
  display: none;
}

.test_add_box>.test>.mask>div {
  display: flex;
  color: #fff;
  align-items: center;
  cursor: pointer;
  font-size: 14px;
}

.test_add_box>.test>.mask>div+div {
  margin: 10px 0 0 0;
}

/* 
.test_add_box>.test>.mask>div>span:nth-child(1) {
  display: block;
  width: 13px;
  height: 13px;
  background-size: 100% 100%;
  margin-right: 7px;
}

.test_add_box>.test>.mask>div:nth-child(1)>span:nth-child(1) {
  background-image: url('../../../../assets/icon/test/edit_icon.png');
}

.test_add_box>.test>.mask>div:nth-child(2)>span:nth-child(1) {
  background-image: url('../../../../assets/icon/test/check_icon.png');
}

.test_add_box>.test>.mask>div:nth-child(3)>span:nth-child(1) {
  background-image: url('../../../../assets/icon/test/paste_icon.png');
} */

.bgColor {
  background: #466b99;
}</style>
