yujialong 1 year ago
parent 340bfc7e42
commit bda8932ff0
  1. 13
      package-lock.json
  2. 2
      package.json
  3. 64
      src/pages/match/details/index.vue
  4. 15
      src/pages/match/list/index.vue
  5. 1
      vue.config.js

13
package-lock.json generated

@ -1228,6 +1228,14 @@
}
}
},
"@tinymce/tinymce-vue": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/@tinymce/tinymce-vue/-/tinymce-vue-5.1.1.tgz",
"integrity": "sha512-iO57HOWesFOhsaqjA5Ea6sDvQBmJJH3/dq00Uvg7metlct2kLF+ctRgoDsetLt6gmeZ7COPftr814/XzqnJ/dg==",
"requires": {
"tinymce": "^6.0.0 || ^5.5.1"
}
},
"@types/glob": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
@ -14075,6 +14083,11 @@
"integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
"dev": true
},
"tinymce": {
"version": "6.7.3",
"resolved": "https://registry.npmjs.org/tinymce/-/tinymce-6.7.3.tgz",
"integrity": "sha512-J7WmYIi/gt1RvZ6Ap2oQiUjzAoiS9pfV+d4GnKuZuPu8agmlAEAInNmMvMjfCNBzHv4JnZXY7qlHUAI0IuYQVA=="
},
"to-arraybuffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",

@ -8,6 +8,7 @@
"build": "vue-cli-service build"
},
"dependencies": {
"@tinymce/tinymce-vue": "^5.1.1",
"ali-oss": "^6.18.1",
"axios": "^0.26.1",
"babel-polyfill": "^6.26.0",
@ -19,6 +20,7 @@
"js-cookie": "^2.2.1",
"jspdf": "^2.5.1",
"mavon-editor": "^2.10.4",
"tinymce": "^6.7.3",
"vue": "^2.7.10",
"vue-cropperjs": "^3.0.0",
"vue-i18n": "^8.27.2",

@ -74,7 +74,7 @@
<template v-if="form.releaseType">
<div class="l-title"><img src="@/assets/img/label.png"
alt=""> 赛程规则与内容</div>
<h6 class="rule-title">{{ form.competitionStage.length }}个竞赛阶段同一个团队每个成员只能参加一个阶段赛项</h6>
<h6 class="rule-title">{{ form.competitionStage.length }}个竞赛阶段<template v-if="info.teamLimit">同一个团队每个成员只能参加一个阶段赛项</template></h6>
<div v-for="(rule, i) in form.competitionStage"
:key="i"
class="rule">
@ -617,16 +617,15 @@
</span>
</el-dialog>
<el-dialog title="阶段赛名称"
<el-dialog :title="curStage ? curStage.stageName : ''"
:visible.sync="stageVisible"
:close-on-click-modal="false"
width="600px"
@close="stageClose">
<template v-if="curStage && curStage.competitionStageContentSetting">
<div>
<div v-if="curStage.competitionStageContentSetting.systemLink">
<span class="fs-14">进入比赛</span>
<el-button v-if="curStage.competitionStageContentSetting.systemLink"
type="danger"
<el-button type="danger"
style="font-size: 13px"
@click="toOffline">进入{{ curStage.stageName }}</el-button>
</div>
@ -643,7 +642,7 @@
</div>
</div>
</div>
<!-- :http-request="handleRequest" -->
<div class="flex m-b-20">
<span class="fs-14">文件上传</span>
<el-upload :before-upload="beforeUpload"
@ -658,13 +657,14 @@
:file-list="fileList"
name="file">
<el-button size="small"
type="primary">上传文件</el-button>
type="primary"
:disabled="!!(fileList && fileList.length)">{{ fileList && fileList.length ? '已上传' : '上传文件' }}</el-button>
<div slot="tip"
class="el-upload__tip">
<el-progress v-if="showProgress"
<!-- <el-progress v-if="showProgress"
:stroke-width="3"
:percentage="progressPercent"></el-progress>
:percentage="progressPercent"></el-progress> -->
<p>请上传大小1G以内的文件支持常见文件格式</p>
<p>只允许上传一个文件如有多个文件则需打包再上传</p>
</div>
@ -689,6 +689,7 @@ import util from '@/libs/util'
import Setting from "@/setting"
import Const from '@/const/match'
import axios from 'axios'
import OSS from 'ali-oss'
export default {
name: 'matchdetail',
data () {
@ -922,7 +923,6 @@ export default {
const e = stages[i]
const startTime = new Date(e.startTime)
const endTime = new Date(e.endTime)
console.log("🚀 ~ file: index.vue:901 ~ //this.timer=setInterval ~ form.competitionRegistration:", stages, startTime, endTime, now >= startTime && now <= endTime)
if (now < startTime) { //
endText = '阶段开始'
total = startTime - now
@ -942,7 +942,6 @@ export default {
//
//
this.statusList[4] = '进入' + e.stageName
console.log("🚀 ~ file: index.vue:924 ~ //this.timer=setInterval ~ e:", e, this.playingStages)
curStage = e
}
endText = '阶段结束'
@ -1456,6 +1455,7 @@ export default {
},
//
handleRemove () {
this.fileList = []
this.curFileId && this.$post(this.api.cCompetitionStageFileDel, [this.curFileId]).then(res => {
this.curFileId = ''
}).catch(res => { })
@ -1464,6 +1464,10 @@ export default {
const result = res.filesResult
//
this.handleRemove()
this.fileList = [{
name: result.originalFileName,
url: result.fileUrl
}]
this.$post(this.api.cCompetitionStageFileSave, {
competitionId: this.id,
fileFormat: result.fileType,
@ -1478,6 +1482,44 @@ export default {
util.successMsg(`上传成功!`);
}).catch(res => { })
},
progress (p, _checkpoint) {
// Object
console.log(p);
//
console.log(_checkpoint);
},
//
async handleRequest (options) {
const { file } = options
const headers = {
// Object
'x-oss-storage-class': 'Standard',
// Object访
// 'x-oss-object-acl': 'private',
// URL访example.txt
// 'Content-Disposition': 'attachment; filename="example.txt"',
// Object
'x-oss-tagging': 'Tag1=1&Tag2=2',
// PutObjectObjecttrueObject
'x-oss-forbid-overwrite': 'true',
};
const client = new OSS({
region: 'oss-cn-shenzhen',
accessKeyId: 'LTAI4FzqQHnk4rozqLZ8jCNj',
accessKeySecret: 'mveW7B1OyFoKUkHm8WsxmrjHmkJWHq',
bucket: 'huoran'
})
const res = await client.multipartUpload(file.name, file, {
progress: this.progress,
// headers,
// metaObjectheadObjectmeta
meta: {
year: 2020,
people: 'test',
}
})
console.log("🚀 ~ file: index.vue:1505 ~ handleRequest ~ res:", res)
},
//
stageSubmit () {
if (this.submiting) return false

@ -264,16 +264,15 @@
</span>
</el-dialog>
<el-dialog title="阶段赛名称"
<el-dialog :title="curStageItem.stageName"
:visible.sync="stageVisible"
:close-on-click-modal="false"
width="600px"
@close="stageClose">
<template v-if="curStageItem && curStageItem.competitionStageContentSetting">
<div>
<div v-if="curStageItem.competitionStageContentSetting.systemLink">
<span class="fs-14">进入比赛</span>
<el-button v-if="curStageItem.competitionStageContentSetting.systemLink"
type="danger"
<el-button type="danger"
style="font-size: 13px"
@click="toOffline">进入{{ curStageItem.stageName }}</el-button>
</div>
@ -305,7 +304,8 @@
:file-list="fileList"
name="file">
<el-button size="small"
type="primary">上传文件</el-button>
type="primary"
:disabled="fileList && fileList.length">{{ fileList && fileList.length ? '已上传' : '上传文件' }}</el-button>
<div slot="tip"
class="el-upload__tip">
<p>请上传大小1G以内的文件支持常见文件格式</p>
@ -778,6 +778,7 @@ export default {
},
//
handleRemove () {
this.fileList = []
this.curFileId && this.$post(this.api.cCompetitionStageFileDel, [this.curFileId]).then(res => {
this.curFileId = ''
}).catch(res => { })
@ -786,6 +787,10 @@ export default {
const result = res.filesResult
//
this.handleRemove()
this.fileList = [{
name: result.originalFileName,
url: result.fileUrl
}]
this.$post(this.api.cCompetitionStageFileSave, {
competitionId: this.curItem.id,
fileFormat: result.fileType,

@ -13,6 +13,7 @@ module.exports = {
outputDir: Setting.outputDir,
assetsDir: Setting.assetsDir,
devServer: {
disableHostCheck: true,
// client: {
// webSocketURL: 'ws://0.0.0.0:8082/notice',
// },

Loading…
Cancel
Save