1 line
12 KiB
JSON
1 line
12 KiB
JSON
{"remainingRequest":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/account/center/index.vue?vue&type=script&lang=js","dependencies":[{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/src/views/account/center/index.vue","mtime":1742646402775},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/babel-loader/lib/index.js","mtime":1743264596348},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/cache-loader/dist/cjs.js","mtime":1743264595665},{"path":"/Users/shuguang/Desktop/毕设/CodeMaster/CodeMaster/node_modules/vue-loader/lib/index.js","mtime":1743264596512}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CmltcG9ydCBQYWdlVmlldyBmcm9tICcuLi8uLi8uLi9sYXlvdXRzL1BhZ2VWaWV3LnZ1ZScKaW1wb3J0IFJvdXRlVmlldyBmcm9tICcuLi8uLi8uLi9sYXlvdXRzL1JvdXRlVmlldy52dWUnCmltcG9ydCB7IEFwcFBhZ2UsIEFydGljbGVQYWdlLCBQcm9qZWN0UGFnZSB9IGZyb20gJy4vcGFnZScKaW1wb3J0IHsgbWFwR2V0dGVycyB9IGZyb20gJ3Z1ZXgnCgpleHBvcnQgZGVmYXVsdCB7CiAgY29tcG9uZW50czogewogICAgUm91dGVWaWV3LAogICAgUGFnZVZpZXcsCiAgICBBcHBQYWdlLAogICAgQXJ0aWNsZVBhZ2UsCiAgICBQcm9qZWN0UGFnZQogIH0sCiAgZGF0YSAoKSB7CiAgICByZXR1cm4gewoJCQl1c2VyaW1nOnRoaXMuJHN0b3JlLnN0YXRlLmF2YXRhciwKICAgICAgdGFnczogWyflvojmnInmg7Pms5XnmoQnLCAn5LiT5rOo6K6+6K6hJywgJ+eoi+W6j+eMvyddLAogICAgICB0YWdJbnB1dFZpc2libGU6IGZhbHNlLAogICAgICB0YWdJbnB1dFZhbHVlOiAnJywKICAgICAgdGVhbXM6IFtdLAogICAgICB0ZWFtU3Bpbm5pbmc6IHRydWUsCgkJCXNoZW5mZW46JycsCiAgICAgIHRhYkxpc3ROb1RpdGxlOiBbCiAgICAgICAgewogICAgICAgICAga2V5OiAnYXJ0aWNsZScsCiAgICAgICAgICB0YWI6ICfmiJHnmoTmlofnq6AnCiAgICAgICAgfSwKICAgICAgXSwKICAgICAgbm9UaXRsZUtleTogJ2FwcCcsCgkJCS8vIOavlOi1mwoJCQltYXRjaHM6W10sCgkJCWNvbG9yczpbJ3JlZCcsJ2dyZWVuJywnb3JhbmdlJywncGluaycsJ2N5YW4nXQogICAgfQogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIC4uLm1hcEdldHRlcnMoWyduaWNrbmFtZScsICdhdmF0YXInXSkKICB9LAoJbW91bnRlZCAoKSB7CiAgaWYgKHRoaXMuJHN0b3JlLnN0YXRlLnVzZXIudXNlclByaXZpbGVnZXMgPT0gMCkgewogICAgdGhpcy5zaGVuZmVuID0gIueuoeeQhuWRmCIKICB9IGVsc2UgaWYgKHRoaXMuJHN0b3JlLnN0YXRlLnVzZXIudXNlclByaXZpbGVnZXMgPT0gMSkgewogICAgdGhpcy5zaGVuZmVuID0gIuaVmeW4iCIKICB9IGVsc2UgewogICAgdGhpcy5zaGVuZmVuID0gIuWtpueUnyIKICB9CiAgdGhpcy5NeSgpCiAgdGhpcy5ub1RpdGxlS2V5ID0gJ2FydGljbGUnOyAvLyDlnKjpobXpnaLliqDovb3lrozmiJDlkI7nm7TmjqXliIfmjaLliLAgIuaIkeeahOaWh+eroCIg6YCJ6aG55Y2hCn0sCiAgbWV0aG9kczogewoJCU15KCl7CgkJCXRoaXMuJGFwaS5SZWdpc3RyYXRpb25BbGwoKS50aGVuKHJlcz0+ewoJCQkJdGhpcy5tYXRjaHM9cmVzLmRhdGEuZmlsdGVyKG1hdGNoPT57CgkJCQkJcmV0dXJuIG1hdGNoLnN0dWRlbnRJZD09dGhpcy4kc3RvcmUuc3RhdGUudXNlci51c2VySWQ7CgkJCQl9KQoJCQkJdGhpcy50ZWFtU3Bpbm5pbmc9ZmFsc2U7CgkJCX0pCgkJfSwKCiAgICBoYW5kbGVUYWJDaGFuZ2UgKGtleSwgdHlwZSkgewogICAgICB0aGlzW3R5cGVdID0ga2V5CiAgICB9LAoKICAgIGhhbmRsZVRhZ0Nsb3NlIChyZW1vdmVUYWcpIHsKICAgICAgY29uc3QgdGFncyA9IHRoaXMudGFncy5maWx0ZXIodGFnID0+IHRhZyAhPT0gcmVtb3ZlVGFnKQogICAgICB0aGlzLnRhZ3MgPSB0YWdzCiAgICB9LAoKICAgIHNob3dUYWdJbnB1dCAoKSB7CiAgICAgIHRoaXMudGFnSW5wdXRWaXNpYmxlID0gdHJ1ZQogICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7CiAgICAgICAgdGhpcy4kcmVmcy50YWdJbnB1dC5mb2N1cygpCiAgICAgIH0pCiAgICB9LAoKICAgIGhhbmRsZUlucHV0Q2hhbmdlIChlKSB7CiAgICAgIHRoaXMudGFnSW5wdXRWYWx1ZSA9IGUudGFyZ2V0LnZhbHVlCiAgICB9LAoKICAgIGhhbmRsZVRhZ0lucHV0Q29uZmlybSAoKSB7CiAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSB0aGlzLnRhZ0lucHV0VmFsdWUKICAgICAgbGV0IHRhZ3MgPSB0aGlzLnRhZ3MKICAgICAgaWYgKGlucHV0VmFsdWUgJiYgIXRhZ3MuaW5jbHVkZXMoaW5wdXRWYWx1ZSkpIHsKICAgICAgICB0YWdzID0gWy4uLnRhZ3MsIGlucHV0VmFsdWVdCiAgICAgIH0KCiAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgewogICAgICAgIHRhZ3MsCiAgICAgICAgdGFnSW5wdXRWaXNpYmxlOiBmYWxzZSwKICAgICAgICB0YWdJbnB1dFZhbHVlOiAnJwogICAgICB9KQogICAgfQogIH0KfQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AAoFA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/account/center","sourcesContent":["<template>\n <div class=\"page-header-index-wide page-header-wrapper-grid-content-main\">\n <a-row :gutter=\"24\">\n <a-col :md=\"24\" :lg=\"7\">\n <a-card :bordered=\"false\">\n <div class=\"account-center-avatarHolder\">\n <div class=\"avatar\">\n <img :src=userimg>\n </div>\n <div class=\"username\">{{ $store.state.user.userName }}</div>\n <div class=\"bio\">身份:{{ shenfen }}</div>\n </div>\n <a-divider/>\n <div class=\"account-center-tags\">\n <div class=\"tagsTitle\">标签</div>\n <div>\n <template v-for=\"(tag, index) in tags\">\n <a-tooltip v-if=\"tag.length > 20\" :key=\"tag\" :title=\"tag\">\n <a-tag\n :key=\"tag\"\n :closable=\"index !== 0\"\n :close=\"() => handleTagClose(tag)\"\n >{{ `${tag.slice(0, 20)}...` }}</a-tag>\n </a-tooltip>\n <a-tag\n v-else\n :key=\"tag\"\n :closable=\"index !== 0\"\n :close=\"() => handleTagClose(tag)\"\n >{{ tag }}</a-tag>\n </template>\n <a-input\n v-if=\"tagInputVisible\"\n ref=\"tagInput\"\n type=\"text\"\n size=\"small\"\n :style=\"{ width: '78px' }\"\n :value=\"tagInputValue\"\n @change=\"handleInputChange\"\n @blur=\"handleTagInputConfirm\"\n @keyup.enter=\"handleTagInputConfirm\"\n />\n <a-tag v-else @click=\"showTagInput\" style=\"background: #fff; borderStyle: dashed;\">\n <a-icon type=\"plus\"/>New Tag\n </a-tag>\n </div>\n </div>\n <a-divider :dashed=\"true\"/>\n\n <div class=\"account-center-team\">\n <div class=\"teamTitle\">我的比赛</div>\n <a-spin :spinning=\"teamSpinning\" v-for=\"(item, index) in matchs\" :key=\"index\">\n <div class=\"members\">\n <a-row>\n <a-col>\n <a-tag :color=\"colors[index]\" style=\"margin: 5px;\">\n 竞赛名称:{{ item.competitionName }} {{ item.competitionType }}\n </a-tag>\n\t\t\t\t\t\t\t\t\t\t<a-tag :color=\"colors[index]\" style=\"margin: 5px;\">\n 类型: {{ item.competitionType }}\n </a-tag> \n </a-col>\n </a-row>\n </div>\n </a-spin>\n </div>\n </a-card>\n </a-col>\n <a-col :md=\"24\" :lg=\"17\">\n <a-card\n style=\"width:100%\"\n :bordered=\"false\"\n :tabList=\"tabListNoTitle\"\n :activeTabKey=\"noTitleKey\"\n @tabChange=\"key => handleTabChange(key, 'noTitleKey')\"\n >\n <article-page v-if=\"noTitleKey === 'article'\"></article-page>\n </a-card>\n </a-col>\n </a-row>\n </div>\n</template>\n\n<script>\nimport PageView from '../../../layouts/PageView.vue'\nimport RouteView from '../../../layouts/RouteView.vue'\nimport { AppPage, ArticlePage, ProjectPage } from './page'\nimport { mapGetters } from 'vuex'\n\nexport default {\n components: {\n RouteView,\n PageView,\n AppPage,\n ArticlePage,\n ProjectPage\n },\n data () {\n return {\n\t\t\tuserimg:this.$store.state.avatar,\n tags: ['很有想法的', '专注设计', '程序猿'],\n tagInputVisible: false,\n tagInputValue: '',\n teams: [],\n teamSpinning: true,\n\t\t\tshenfen:'',\n tabListNoTitle: [\n {\n key: 'article',\n tab: '我的文章'\n },\n ],\n noTitleKey: 'app',\n\t\t\t// 比赛\n\t\t\tmatchs:[],\n\t\t\tcolors:['red','green','orange','pink','cyan']\n }\n },\n computed: {\n ...mapGetters(['nickname', 'avatar'])\n },\n\tmounted () {\n if (this.$store.state.user.userPrivileges == 0) {\n this.shenfen = \"管理员\"\n } else if (this.$store.state.user.userPrivileges == 1) {\n this.shenfen = \"教师\"\n } else {\n this.shenfen = \"学生\"\n }\n this.My()\n this.noTitleKey = 'article'; // 在页面加载完成后直接切换到 \"我的文章\" 选项卡\n},\n methods: {\n\t\tMy(){\n\t\t\tthis.$api.RegistrationAll().then(res=>{\n\t\t\t\tthis.matchs=res.data.filter(match=>{\n\t\t\t\t\treturn match.studentId==this.$store.state.user.userId;\n\t\t\t\t})\n\t\t\t\tthis.teamSpinning=false;\n\t\t\t})\n\t\t},\n\n handleTabChange (key, type) {\n this[type] = key\n },\n\n handleTagClose (removeTag) {\n const tags = this.tags.filter(tag => tag !== removeTag)\n this.tags = tags\n },\n\n showTagInput () {\n this.tagInputVisible = true\n this.$nextTick(() => {\n this.$refs.tagInput.focus()\n })\n },\n\n handleInputChange (e) {\n this.tagInputValue = e.target.value\n },\n\n handleTagInputConfirm () {\n const inputValue = this.tagInputValue\n let tags = this.tags\n if (inputValue && !tags.includes(inputValue)) {\n tags = [...tags, inputValue]\n }\n\n Object.assign(this, {\n tags,\n tagInputVisible: false,\n tagInputValue: ''\n })\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.page-header-wrapper-grid-content-main {\n width: 100%;\n height: 100%;\n min-height: 100%;\n transition: 0.3s;\n\n .account-center-avatarHolder {\n text-align: center;\n margin-bottom: 24px;\n\n & > .avatar {\n margin: 0 auto;\n width: 104px;\n height: 104px;\n margin-bottom: 20px;\n border-radius: 50%;\n overflow: hidden;\n img {\n height: 100%;\n width: 100%;\n }\n }\n\n .username {\n color: rgba(0, 0, 0, 0.85);\n font-size: 20px;\n line-height: 28px;\n font-weight: 500;\n margin-bottom: 4px;\n }\n }\n\n .account-center-detail {\n p {\n margin-bottom: 8px;\n padding-left: 26px;\n position: relative;\n }\n\n i {\n position: absolute;\n height: 14px;\n width: 14px;\n left: 0;\n top: 4px;\n background: url(https://gw.alipayobjects.com/zos/rmsportal/pBjWzVAHnOOtAUvZmZfy.svg);\n }\n\n .title {\n background-position: 0 0;\n }\n .group {\n background-position: 0 -22px;\n }\n .address {\n background-position: 0 -44px;\n }\n }\n\n .account-center-tags {\n .ant-tag {\n margin-bottom: 8px;\n }\n }\n\n .account-center-team {\n .members {\n a {\n display: block;\n margin: 12px 0;\n line-height: 24px;\n height: 24px;\n .member {\n font-size: 14px;\n color: rgba(0, 0, 0, 0.65);\n line-height: 24px;\n max-width: 100px;\n vertical-align: top;\n margin-left: 12px;\n transition: all 0.3s;\n display: inline-block;\n }\n &:hover {\n span {\n color: #1890ff;\n }\n }\n }\n }\n }\n\n .tagsTitle,\n .teamTitle {\n font-weight: 500;\n color: rgba(0, 0, 0, 0.85);\n margin-bottom: 12px;\n }\n}\n</style>\n"]}]} |