oss全部替换完成

dev_202412
yujialong 1 year ago
parent fcedab589f
commit ae39cf9b44
  1. 5
      package-lock.json
  2. 1
      package.json
  3. 11
      src/api/index.js
  4. 411
      src/components/quill/index.vue
  5. 2
      src/components/upload/index.vue
  6. 2
      src/components/upload/upload.js
  7. 2
      src/libs/util.js
  8. 849
      src/pages/activity/manage/add/index.vue
  9. 311
      src/pages/activity/manage/manage/noticeDetail.vue
  10. 136
      src/pages/match/details/index.vue
  11. 128
      src/pages/match/list/index.vue
  12. 31
      src/pages/touristMatch/list/index.vue
  13. 4
      src/setting.js

5
package-lock.json generated

@ -9436,6 +9436,11 @@
"minimist": "^1.2.5"
}
},
"moment": {
"version": "2.29.4",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
},
"move-concurrently": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",

@ -20,6 +20,7 @@
"js-cookie": "^2.2.1",
"jspdf": "^2.5.1",
"mavon-editor": "^2.10.4",
"moment": "^2.29.4",
"tinymce": "^6.7.3",
"vue": "^2.7.10",
"vue-cropperjs": "^3.0.0",

@ -19,6 +19,11 @@ export default {
fileUploadNakadai: `${host}nakadai/nakadai/oss/fileUpload`,
refreshPageNotification : `nakadai/message/refreshPageNotification`,
getUserInfo : `users/users/userInfo/getUserInfo`,
getCurrentTime : `competition/competition/management/getCurrentTime`,
// 阿里云文件/视频管理
getPlayAuth: `${uploadURL}oss/manage/getPlayAuth`, // 获取播放凭证
getPlayAuthNakadai: `nakadai/nakadai/oss/getPlayAuth`, // 获取播放凭证
platformLogList: `nakadai/nakadai/log/platformLogList`,
logNotification: `nakadai/nakadai/log/logNotification`,
@ -180,12 +185,6 @@ export default {
collectionActivity: `occupationlab/occupationlab/activity/collectionActivity`,
concernedActivity: `occupationlab/occupationlab/activity/concernedActivity`,
// 阿里云文件/视频管理
fileDeletion: `${uploadURL}oss/manage/fileDeletion`, // 删除OSS文件
fileupload: `${uploadURL}oss/manage/fileupload`, // 文件上传
getPlayAuth: `${uploadURL}oss/manage/getPlayAuth`, // 获取播放凭证
getPlayAuthNakadai: `nakadai/nakadai/oss/getPlayAuth`, // 获取播放凭证
queryProvince: `nakadai/nakadai/province/queryProvince`, //查询省份
queryCity: `nakadai/nakadai/city/queryCity`, //查询城市
querySchool: `nakadai/nakadai/school/querySchool`, //根据学校名称查询学校信息

@ -1,17 +1,22 @@
<template>
<div class="quill" ref="quill" :class="classes">
<div ref="editor" :style="styles" v-loading="loading"></div>
<div class="quill"
ref="quill"
:class="classes">
<div ref="editor"
:style="styles"
v-loading="loading"></div>
<el-upload
:headers="headers"
:action="this.api.fileupload"
:before-upload="beforeUpload"
:on-success="editorUploadSuccess"
style="display: none"
>
<el-button :id="'editorUpload' + index" type="primary">点击上传</el-button>
</el-upload>
</div>
<Upload :max-size="1000"
:limit="100"
@beforeUpload="beforeUpload"
@onSuccess="editorUploadSuccess"
style="display: none">
<div slot="trigger">
<el-button :id="'editorUpload' + index"
type="primary">点击上传</el-button>
</div>
</Upload>
</div>
</template>
<script>
@ -22,210 +27,211 @@ import "quill/dist/quill.core.css";
import "quill/dist/quill.snow.css";
import "quill/dist/quill.bubble.css";
import toolbarOptions from "./options";
import Upload from '@/components/upload';
import Oss from '@/components/upload/upload.js'
export default {
name: "quill",
props: {
value: {
type: String,
default: ""
},
readonly: {
type: Boolean,
default: false
},
toTop: {
type: Boolean,
default: true
},
border: {
type: Boolean,
default: false
},
height: {
type: Number
},
minHeight: {
type: Number
},
/*
* 原本的readOnly失效,对比其他项目发现是quill版本不同导致
* 使用props传入elseRead = 'true'手动隐藏工具栏
*/
elseRead: {
type: String, default: "false"
},
//
index: {
type: Number,
default: 0
},
name: "quill",
components: {
Upload,
},
props: {
value: {
type: String,
default: ""
},
data() {
const that = this
return {
headers: {
token: util.local.get(Setting.tokenKey)
},
Quill: null,
currentValue: "",
options: {
theme: "snow",
bounds: document.body,
debug: "warn",
modules: {
toolbar: {
container: toolbarOptions,
handlers: {
"image": function(value) {
if (value) {
// iview
document.querySelector("#editorUpload" + that.index).click();
} else {
this.Quill.format("image", false);
}
}
}
}
},
placeholder: "",
readOnly: this.readonly
},
loading: false,
};
readonly: {
type: Boolean,
default: false
},
computed: {
classes() {
return [
{
"quill-no-border": !this.border
}
];
},
styles() {
let style = {};
if (this.minHeight) {
style.minHeight = `${this.minHeight}px`;
}
if (this.height) {
style.height = `${this.height}px`;
}
return style;
}
toTop: {
type: Boolean,
default: true
},
watch: {
value: {
handler(val) {
if (val !== this.currentValue) {
this.currentValue = val;
if (this.Quill) {
this.Quill.pasteHTML(this.value);
}
}
},
immediate: true
}
border: {
type: Boolean,
default: false
},
created() {
height: {
type: Number
},
mounted() {
this.init();
//
if (this.elseRead === "true") {
let children = this.$refs.quill.children[0].style;
children.padding = "0";
children.overflow = "hidden";
children.height = "0";
children.borderTop = "0";
}
minHeight: {
type: Number
},
beforeDestroy() {
//
this.Quill = null;
/*
* 原本的readOnly失效,对比其他项目发现是quill版本不同导致
* 使用props传入elseRead = 'true'手动隐藏工具栏
*/
elseRead: {
type: String, default: "false"
},
methods: {
init () {
const editor = this.$refs.editor;
//
this.Quill = new Quill(editor, this.options);
const ins = this.Quill
//
ins.pasteHTML(this.currentValue);
if(this.toTop){
this.$nextTick(() => {
window.scrollTo(0,0)
})
}
//
ins.on('text-change', (delta, oldDelta, source) => {
const html = this.$refs.editor.children[0].innerHTML;
const text = ins.getText();
const quill = this.Quill;
//
this.currentValue = html;
// v-model
this.$emit('input', html);
//
this.$emit('on-change', { html, text, quill });
});
// quill
ins.on('text-change', (delta, oldDelta, source) => {
this.$emit('on-text-change', delta, oldDelta, source);
});
ins.on('selection-change', (range, oldRange, source) => {
this.$emit('on-selection-change', range, oldRange, source);
});
ins.on('editor-change', (eventName, ...args) => {
this.$emit('on-editor-change', eventName, ...args);
});
//
ins.root.addEventListener('paste', evt => {
if (evt.clipboardData && evt.clipboardData.files && evt.clipboardData.files.length) {
evt.preventDefault();
//
[].forEach.call(evt.clipboardData.files, file => {
if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) {
return
}
const param = new FormData()
param.append('file', file)
// base64
this.$post(this.api.fileupload, param, {
headers: { "Content-Type": "multipart/form-data" }
}).then(res => {
var range = ins.getSelection()
if (range) {
//
ins.insertEmbed(range.index, 'image', res.data.filesResult.fileUrl)
//
ins.setSelection(range.index + 1)
}
}).catch(res => {})
});
//
index: {
type: Number,
default: 0
},
},
data () {
const that = this
return {
headers: {
token: util.local.get(Setting.tokenKey)
},
Quill: null,
currentValue: "",
options: {
theme: "snow",
bounds: document.body,
debug: "warn",
modules: {
toolbar: {
container: toolbarOptions,
handlers: {
"image": function (value) {
if (value) {
// iview
document.querySelector("#editorUpload" + that.index).click();
} else {
this.Quill.format("image", false);
}
}, false)
},
beforeUpload(file) {
this.loading = true;
}
}
}
},
editorUploadSuccess(res) {
//
let quill = this.Quill;
//
if (res.data.filesResult.fileUrl) {
//
let length = quill.getSelection().index;
// res
quill.insertEmbed(length, "image", res.data.filesResult.fileUrl);
//
quill.setSelection(length + 1);
} else {
util.successMsg("图片插入失败");
placeholder: "",
readOnly: this.readonly
},
loading: false,
};
},
computed: {
classes () {
return [
{
"quill-no-border": !this.border
}
];
},
styles () {
let style = {};
if (this.minHeight) {
style.minHeight = `${this.minHeight}px`;
}
if (this.height) {
style.height = `${this.height}px`;
}
return style;
}
},
watch: {
value: {
handler (val) {
if (val !== this.currentValue) {
this.currentValue = val;
if (this.Quill) {
this.Quill.pasteHTML(this.value);
}
}
},
immediate: true
}
},
created () {
},
mounted () {
this.init();
//
if (this.elseRead === "true") {
let children = this.$refs.quill.children[0].style;
children.padding = "0";
children.overflow = "hidden";
children.height = "0";
children.borderTop = "0";
}
},
beforeDestroy () {
//
this.Quill = null;
},
methods: {
init () {
const editor = this.$refs.editor;
//
this.Quill = new Quill(editor, this.options);
const ins = this.Quill
//
ins.pasteHTML(this.currentValue);
if (this.toTop) {
this.$nextTick(() => {
window.scrollTo(0, 0)
})
}
//
ins.on('text-change', (delta, oldDelta, source) => {
const html = this.$refs.editor.children[0].innerHTML;
const text = ins.getText();
const quill = this.Quill;
//
this.currentValue = html;
// v-model
this.$emit('input', html);
//
this.$emit('on-change', { html, text, quill });
});
// quill
ins.on('text-change', (delta, oldDelta, source) => {
this.$emit('on-text-change', delta, oldDelta, source);
});
ins.on('selection-change', (range, oldRange, source) => {
this.$emit('on-selection-change', range, oldRange, source);
});
ins.on('editor-change', (eventName, ...args) => {
this.$emit('on-editor-change', eventName, ...args);
});
//
ins.root.addEventListener('paste', evt => {
if (evt.clipboardData && evt.clipboardData.files && evt.clipboardData.files.length) {
evt.preventDefault();
//
[].forEach.call(evt.clipboardData.files, file => {
if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) {
return
}
this.loading = false;
// base64
Oss.upload(file).then(res => {
var range = ins.getSelection()
if (range) {
//
ins.insertEmbed(range.index, 'image', res.url)
//
ins.setSelection(range.index + 1)
}
})
});
}
}, false)
},
beforeUpload (file) {
this.loading = true;
},
editorUploadSuccess (file) {
//
let quill = this.Quill;
//
if (file.url) {
//
let length = quill.getSelection().index;
// res
quill.insertEmbed(length, "image", file.url);
//
quill.setSelection(length + 1);
} else {
util.successMsg("图片插入失败");
}
this.loading = false;
}
}
};
</script>
<style lang="scss" scoped>
@ -257,5 +263,4 @@ export default {
transform: translateY(10px);
}
}
</style>

@ -102,7 +102,7 @@ export default {
this.uploading = true
this.showFiles = false
// oss
const { name } = await this.client.multipartUpload(file.name, file, {
const { name } = await this.client.multipartUpload(Date.now() + '.' + Util.getFileExt(file.name), file, {
progress: this.handleProgress
});

@ -17,7 +17,7 @@ export default {
return new Promise(async (resolve, reject) => {
try {
// 上传到阿里云oss
const res = await client.multipartUpload(file.name, file);
const res = await client.multipartUpload(Date.now() + '.' + Util.getFileExt(file.name), file);
resolve({
format: Util.getFileExt(file.name),
name: file.name,

@ -181,7 +181,7 @@ const util = {
});
}
}
}
},
};
export default util;

@ -1,401 +1,447 @@
<template>
<div>
<el-card v-if="!id" shadow="hover" class="m-b-20">
<div class="flex-between">
<el-page-header @back="back" :content="'创建项目'"></el-page-header>
<div>
<el-card v-if="!id"
shadow="hover"
class="m-b-20">
<div class="flex-between">
<el-page-header @back="back"
:content="'创建项目'"></el-page-header>
</div>
</el-card>
<div class="page">
<div class="page-content">
<el-form label-width="170px"
label-suffix=":"
size="small">
<el-form-item label="项目封面(选填)">
<el-upload class="avatar-uploader"
accept=".jpg,.png,.jpeg,.gif"
:limit="1"
:on-exceed="handleExceed"
:before-remove="beforeRemove"
:on-remove="handleRemove"
:on-error="uploadError"
action=""
:http-request="handleRequest">
<img v-if="form.coverUrl"
:src="form.coverUrl"
class="avatar">
<div class="uploader-default"
v-else>
<i class="el-icon-plus"></i>
<p>上传封面</p>
</div>
<div slot="tip"
class="el-upload__tip">
<p>展示宽度为220高度140JPG/PNG/GIF3MB以内</p>
</div>
</el-upload>
</el-form-item>
<el-form-item label="项目封面长图(选填)">
<el-upload class="avatar-uploader avatar-uploader-lg"
accept=".jpg,.png,.jpeg,.gif"
:limit="1"
:on-exceed="handleExceed"
:before-remove="beforeRemove"
:on-remove="handleCarouselRemove"
:on-error="uploadError"
action=""
:http-request="handleRequestLg">
<img v-if="form.carouselUrl"
:src="form.carouselUrl"
class="avatar-lg">
<div class="uploader-default"
v-else>
<i class="el-icon-plus"></i>
<p>上传封面</p>
</div>
<div slot="tip"
class="el-upload__tip">
<p>展示宽度为1920高度300JPG/PNG/GIF3MB以内</p>
</div>
</el-upload>
</el-form-item>
<el-form-item class="req"
label="项目名称">
<div class="d-inline-block">
<el-input placeholder="请输入项目名称"
v-model="form.projectName"
clearable></el-input>
</div>
</el-card>
<div class="page">
<div class="page-content">
<el-form label-width="170px" label-suffix=":" size="small">
<el-form-item label="项目封面(选填)">
<el-upload
class="avatar-uploader"
accept=".jpg,.png,.jpeg,.gif"
:on-success="uploadSuccess"
:action="this.api.fileupload"
:headers="headers"
:limit="1"
:on-exceed="handleExceed"
:before-remove="beforeRemove"
:on-remove="handleRemove"
:on-error="uploadError"
name="file"
>
<img v-if="form.coverUrl" :src="form.coverUrl" class="avatar">
<div class="uploader-default" v-else>
<i class="el-icon-plus"></i>
<p>上传封面</p>
</div>
<div slot="tip" class="el-upload__tip">
<p>展示宽度为220高度140JPG/PNG/GIF3MB以内</p>
</div>
</el-upload>
</el-form-item>
<el-form-item label="项目封面长图(选填)">
<el-upload
class="avatar-uploader avatar-uploader-lg"
accept=".jpg,.png,.jpeg,.gif"
:on-success="uploadLgSuccess"
:action="this.api.fileupload"
:headers="headers"
:limit="1"
:on-exceed="handleExceed"
:before-remove="beforeRemove"
:on-remove="handleCarouselRemove"
:on-error="uploadError"
name="file"
>
<img v-if="form.carouselUrl" :src="form.carouselUrl" class="avatar-lg">
<div class="uploader-default" v-else>
<i class="el-icon-plus"></i>
<p>上传封面</p>
</div>
<div slot="tip" class="el-upload__tip">
<p>展示宽度为1920高度300JPG/PNG/GIF3MB以内</p>
</div>
</el-upload>
</el-form-item>
<el-form-item class="req" label="项目名称">
<div class="d-inline-block">
<el-input placeholder="请输入项目名称" v-model="form.projectName" clearable></el-input>
</div>
</el-form-item>
<el-form-item class="req" label="发起方">
<div class="inline-input">
<div class="input-wrap" v-for="(item,index) in sponsorList" :key="index">
<el-input placeholder="发起方名称" v-model="sponsorList[index]"></el-input>
<i v-if="sponsorList.length > 1" class="remove" @click="delSponsor(index)"></i>
<button v-if="index == 0" class="add-btn" type="button" @click="addSponsor">
<i class="el-icon-plus"></i>
<span>添加</span>
</button>
</div>
</div>
</el-form-item>
<el-form-item class="req" label="报名时间">
<el-date-picker v-model="signupTime" value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
:picker-options="pickerOptions"></el-date-picker>
</el-form-item>
<el-form-item class="req" label="项目时间">
<el-date-picker v-model="playTime" value-format="yyyy-MM-dd HH:mm:ss" type="datetimerange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
:picker-options="pickerOptions"></el-date-picker>
</el-form-item>
<el-form-item class="req" label="发布范围">
<div>
<el-radio v-model="scope" :label="0" disabled>本校内</el-radio>
</div>
</el-form-item>
<el-form-item class="req" label="报名人数上限">
<div class="input-center">
<el-input placeholder="请输入人数" v-model.number="form.maximumNumber" type="number"></el-input>
</div>
</el-form-item>
<el-form-item class="req" label="报名邀请码">
<div class="input-center" style="width: 550px;">
<el-radio v-model="form.isNeedCode" :label="0">不需要</el-radio>
<el-radio v-model="form.isNeedCode" :label="1">需要</el-radio>
<el-input style="width: 250px" placeholder="请输入4位邀请码或点击随机生成" v-model="form.invitationCode" :disabled="form.isNeedCode === 0"></el-input>
<el-button v-if="form.isNeedCode === 1" @click="randomInv">随机</el-button>
</div>
</el-form-item>
<el-form-item class="req" label="项目详情">
<quill ref="quill" :border="true" v-model="form.projectDescribe" :height="400" />
</el-form-item>
<el-form-item label="附件">
<el-upload
:on-remove="handleAnnexRemove"
:on-error="uploadError"
:before-upload="beforeUpload"
:on-success="uploadAnnexSuccess"
:on-exceed="handleExceedAnnex"
:limit="5"
:action="this.api.fileupload"
:headers="headers"
:file-list="form.activityFileList"
name="file"
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">
<p>支持扩展名.rar .zip .doc .docx .pdf .jpg...</p>
</div>
</el-upload>
</el-form-item>
</el-form>
<div class="btns">
<el-button @click="save(0)">保存</el-button>
<el-button type="primary" @click="save(1)">发布</el-button>
<el-button type="danger" @click="preview">预览</el-button>
<el-button @click="back">取消</el-button>
</el-form-item>
<el-form-item class="req"
label="发起方">
<div class="inline-input">
<div class="input-wrap"
v-for="(item,index) in sponsorList"
:key="index">
<el-input placeholder="发起方名称"
v-model="sponsorList[index]"></el-input>
<i v-if="sponsorList.length > 1"
class="remove"
@click="delSponsor(index)"></i>
<button v-if="index == 0"
class="add-btn"
type="button"
@click="addSponsor">
<i class="el-icon-plus"></i>
<span>添加</span>
</button>
</div>
</div>
</el-form-item>
<el-form-item class="req"
label="报名时间">
<el-date-picker v-model="signupTime"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"></el-date-picker>
</el-form-item>
<el-form-item class="req"
label="项目时间">
<el-date-picker v-model="playTime"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
:picker-options="pickerOptions"></el-date-picker>
</el-form-item>
<el-form-item class="req"
label="发布范围">
<div>
<el-radio v-model="scope"
:label="0"
disabled>本校内</el-radio>
</div>
</el-form-item>
<el-form-item class="req"
label="报名人数上限">
<div class="input-center">
<el-input placeholder="请输入人数"
v-model.number="form.maximumNumber"
type="number"></el-input>
</div>
</div>
</el-form-item>
<el-form-item class="req"
label="报名邀请码">
<div class="input-center"
style="width: 550px;">
<el-radio v-model="form.isNeedCode"
:label="0">不需要</el-radio>
<el-radio v-model="form.isNeedCode"
:label="1">需要</el-radio>
<el-input style="width: 250px"
placeholder="请输入4位邀请码或点击随机生成"
v-model="form.invitationCode"
:disabled="form.isNeedCode === 0"></el-input>
<el-button v-if="form.isNeedCode === 1"
@click="randomInv">随机</el-button>
</div>
</el-form-item>
<el-form-item class="req"
label="项目详情">
<quill ref="quill"
:border="true"
v-model="form.projectDescribe"
:height="400" />
</el-form-item>
<el-form-item label="附件">
<Upload :limit="5"
:file-list.sync="form.activityFileList"
:changeFileList="false"
:on-remove="handleAnnexRemove"
@onSuccess="uploadAnnexSuccess" />
</el-form-item>
</el-form>
<div class="btns">
<el-button @click="save(0)">保存</el-button>
<el-button type="primary"
@click="save(1)">发布</el-button>
<el-button type="danger"
@click="preview">预览</el-button>
<el-button @click="back">取消</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import util from "@/libs/util";
import quill from "@/components/quill";
import Setting from "@/setting";
import Upload from '@/components/upload';
import Oss from '@/components/upload/upload.js'
export default {
data() {
return {
id: this.$route.query.id || '',
headers: {
token: util.local.get(Setting.tokenKey)
},
scope: 0,
form: {
id: this.$route.query.id || '',
founder: 2,
isOpen: 0, // (0 1 0)
maximumNumber: '',
carouselUrl: '',
coverUrl: '',
activityFileList: [], //
initiator: '',
isNeedCode: 0,
invitationCode: '',
maximumNumber: 0,
signUpStartTime: '',
signUpEndTime: '',
playStartTime: '',
playEndTime: '',
projectDescribe: '',
projectName: '',
publishStatus: 0,
},
pickerOptions: {
disabledDate: time => {
return this.$route.query.id ? false : time.getTime() < new Date().getTime() - 86400000;
}
},
fileName: '',
signupTime: [],
playTime: [],
sponsorList: [""],
fileList: [],
submiting: false,
pass: false,
updateTime: 0,
};
},
components: {
quill,
},
watch: {
// ,
form: {
handler(){
this.updateTime++
},
deep:true
},
signupTime: function(val) {
const { form } = this
if (val) {
form.signUpStartTime = val[0];
form.signUpEndTime = val[1];
} else {
form.signUpStartTime = ''
form.signUpEndTime = ''
}
},
playTime: function(val) {
const { form } = this
if (val) {
form.playStartTime = val[0]
form.playEndTime = val[1]
} else {
form.playStartTime = ''
form.playEndTime = ''
}
data () {
return {
id: this.$route.query.id || '',
headers: {
token: util.local.get(Setting.tokenKey)
},
scope: 0,
form: {
id: this.$route.query.id || '',
founder: 2,
isOpen: 0, // (0 1 0)
maximumNumber: '',
carouselUrl: '',
coverUrl: '',
activityFileList: [], //
initiator: '',
isNeedCode: 0,
invitationCode: '',
maximumNumber: 0,
signUpStartTime: '',
signUpEndTime: '',
playStartTime: '',
playEndTime: '',
projectDescribe: '',
projectName: '',
publishStatus: 0,
},
pickerOptions: {
disabledDate: time => {
return this.$route.query.id ? false : time.getTime() < new Date().getTime() - 86400000;
}
},
fileName: '',
signupTime: [],
playTime: [],
sponsorList: [""],
fileList: [],
submiting: false,
pass: false,
updateTime: 0,
};
},
components: {
quill,
Upload
},
watch: {
// ,
form: {
handler () {
this.updateTime++
},
deep: true
},
signupTime: function (val) {
const { form } = this
if (val) {
form.signUpStartTime = val[0];
form.signUpEndTime = val[1];
} else {
form.signUpStartTime = ''
form.signUpEndTime = ''
}
},
//
beforeRouteLeave(to, from, next) {
if (this.submiting) {
playTime: function (val) {
const { form } = this
if (val) {
form.playStartTime = val[0]
form.playEndTime = val[1]
} else {
form.playStartTime = ''
form.playEndTime = ''
}
}
},
//
beforeRouteLeave (to, from, next) {
if (this.submiting) {
next()
} else if (!this.pass) {
//
if (this.updateTime) {
this.$confirm(`所填写内容暂未保存,是否保存?`, '提示', {
type: 'warning'
}).then(() => {
this.save(this.form.publishStatus)
}).catch(() => {
next()
})
} else {
next()
} else if (!this.pass) {
//
if (this.updateTime) {
this.$confirm(`所填写内容暂未保存,是否保存?`, '提示', {
type: 'warning'
}).then(() => {
this.save(this.form.publishStatus)
}).catch(() => {
next()
}
} else {
next()
}
},
mounted () {
this.getData()
},
methods: {
getData () {
const { id } = this.form
id && this.$post(`${this.api.findByIdActivity}?id=${id}`).then(({ data }) => {
if (data.signUpStartTime) this.signupTime = [data.signUpStartTime, data.signUpEndTime]
if (data.playStartTime) this.playTime = [data.playStartTime, data.playEndTime]
this.sponsorList = data.initiator.split(",")
//
const fileList = data.activityFileList
if (fileList) {
fileList.map(e => {
e.name = e.fileName
e.url = e.filePath
})
} else {
next()
data.activityFileList = []
}
this.form = data
this.$nextTick(() => {
this.updateTime = 0
})
}).catch(err => { })
},
handleExceed (files, fileList) {
util.warningMsg(`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!`);
},
beforeRemove (file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
},
handleRemove () {
Oss.del(this.form.coverUrl)
this.form.coverUrl = ''
},
handleCarouselRemove () {
Oss.del(this.form.carouselUrl)
this.form.carouselUrl = ''
},
uploadError (err, file, fileList) {
this.$message({
message: "上传出错,请重试!",
type: "error",
center: true
})
},
//
async handleRequest ({ file }) {
Oss.upload(file).then(res => {
this.form.coverUrl = res.url
})
},
//
async handleRequestLg ({ file }) {
Oss.upload(file).then(res => {
this.form.carouselUrl = res.url
})
},
//
uploadAnnexSuccess (file) {
const url = file.url
const data = {
activityId: this.form.id || '',
fileName: file.name,
name: file.name,
filePath: url,
url
}
this.form.activityFileList.push(data)
},
handleExceedAnnex (files, fileList) {
util.warningMsg(`当前限制选择 5 个文件,如需更换,请删除一个文件再重新选择!`);
},
//
beforeUpload (file) {
const isLt2M = file.size / 1024 / 1024 < 10
if (!isLt2M) util.warningMsg('请上传小于10MB的附件!')
if (isLt2M) {
this.fileName = file.name
return true
} else {
next()
return false
}
},
mounted() {
this.getData()
handleAnnexRemove (file, fileList) {
Oss.del(file.url)
this.form.activityFileList = fileList
},
methods: {
getData() {
const { id } = this.form
id && this.$post(`${this.api.findByIdActivity}?id=${id}`).then(({ data }) => {
if (data.signUpStartTime) this.signupTime = [data.signUpStartTime, data.signUpEndTime]
if (data.playStartTime) this.playTime = [data.playStartTime, data.playEndTime]
this.sponsorList = data.initiator.split(",")
//
const fileList = data.activityFileList
if (fileList) {
fileList.map(e => {
e.name = e.fileName
e.url = e.filePath
})
} else {
data.activityFileList = []
}
this.form = data
this.$nextTick(() => {
this.updateTime = 0
})
}).catch(err => {})
},
handleExceed(files, fileList) {
util.warningMsg(`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!`);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
},
handleRemove(file, fileList) {
this.form.coverUrl = ''
},
handleCarouselRemove(file, fileList) {
this.form.carouselUrl = ''
},
uploadError(err, file, fileList) {
this.$message({
message: "上传出错,请重试!",
type: "error",
center: true
})
},
uploadSuccess(res) {
this.form.coverUrl = res.data.filesResult.fileUrl
},
uploadLgSuccess(res) {
this.form.carouselUrl = res.data.filesResult.fileUrl
},
//
uploadAnnexSuccess(res) {
const file = res.data.filesResult
const url = file.fileUrl || file.fileId
const data = {
activityId: this.form.id || '',
fileName: this.fileName,
name: this.fileName,
filePath: url,
url
}
this.form.activityFileList.push(data)
},
handleExceedAnnex(files, fileList) {
util.warningMsg(`当前限制选择 5 个文件,如需更换,请删除一个文件再重新选择!`);
},
//
beforeUpload(file) {
const isLt2M = file.size / 1024 / 1024 < 10
if (!isLt2M) util.warningMsg('请上传小于10MB的附件!')
if (isLt2M) {
this.fileName = file.name
return true
} else {
return false
}
},
handleAnnexRemove(file, fileList) {
this.form.activityFileList = fileList
},
//
randomInv() {
let result = ''
for (let i = 0; i < 4; i++) {
result += Math.floor(Math.random() * 10);
}
this.form.invitationCode = result
},
//
save(status) {
const { form } = this
form.initiator = this.sponsorList.filter(d => d).join();
if (!form.projectName) return util.warningMsg("请填写项目名称");
//
if (status) {
if (!form.initiator) return util.warningMsg("请填写发起方");
if (!form.signUpStartTime) return util.warningMsg("请选择报名时间");
let now = new Date().getTime();
let signUpStartTime = new Date(form.signUpStartTime).getTime();
let signUpEndTime = new Date(form.signUpEndTime).getTime();
let playStartTime = new Date(form.playStartTime).getTime();
// if (signUpStartTime && now > signUpStartTime) return util.warningMsg("");
if (!form.playStartTime) return util.warningMsg("请选择项目时间");
if (playStartTime && signUpEndTime && playStartTime < signUpEndTime) return util.warningMsg("项目时间不能早于报名结束时间");
if (form.isNeedCode && (!form.invitationCode || form.invitationCode.length !== 4)) return util.warningMsg('请填写四位数邀请码')
if (!form.projectDescribe) return util.warningMsg("请填写项目详情");
}
form.publishStatus = status
form.id = this.$route.query.id
if (this.submiting) return false
this.submiting = true
if (form.id) {
this.$post(this.api.updateActivity, form).then(res => {
this.backList()
util.successMsg("修改成功");
}).catch(err => {
this.submiting = false
});
} else {
this.$post(this.api.saveActivity, form).then(res => {
this.backList()
util.successMsg("创建成功");
}).catch(err => {
this.submiting = false
});
}
},
//
preview() {
util.local.set('activity', this.form)
window.open(this.$router.resolve('/activity/preview').href)
},
addSponsor() {
this.sponsorList.push("");
},
delSponsor(index) {
this.sponsorList.splice(index, 1);
},
backList() {
this.pass = true
this.updateTime = 0
this.$router.back()
},
back() {
this.pass = true
//
if (this.updateTime) {
this.$confirm(`编辑的内容未保存,是否保存?`, '提示', {
type: 'warning'
}).then(() => {
this.save(this.form.publishStatus)
}).catch(() => {
this.backList()
})
} else {
//
randomInv () {
let result = ''
for (let i = 0; i < 4; i++) {
result += Math.floor(Math.random() * 10);
}
this.form.invitationCode = result
},
//
save (status) {
const { form } = this
form.initiator = this.sponsorList.filter(d => d).join();
if (!form.projectName) return util.warningMsg("请填写项目名称");
//
if (status) {
if (!form.initiator) return util.warningMsg("请填写发起方");
if (!form.signUpStartTime) return util.warningMsg("请选择报名时间");
let now = new Date().getTime();
let signUpStartTime = new Date(form.signUpStartTime).getTime();
let signUpEndTime = new Date(form.signUpEndTime).getTime();
let playStartTime = new Date(form.playStartTime).getTime();
// if (signUpStartTime && now > signUpStartTime) return util.warningMsg("");
if (!form.playStartTime) return util.warningMsg("请选择项目时间");
if (playStartTime && signUpEndTime && playStartTime < signUpEndTime) return util.warningMsg("项目时间不能早于报名结束时间");
if (form.isNeedCode && (!form.invitationCode || form.invitationCode.length !== 4)) return util.warningMsg('请填写四位数邀请码')
if (!form.projectDescribe) return util.warningMsg("请填写项目详情");
}
form.publishStatus = status
form.id = this.$route.query.id
if (this.submiting) return false
this.submiting = true
if (form.id) {
this.$post(this.api.updateActivity, form).then(res => {
this.backList()
}
},
}
util.successMsg("修改成功");
}).catch(err => {
this.submiting = false
});
} else {
this.$post(this.api.saveActivity, form).then(res => {
this.backList()
util.successMsg("创建成功");
}).catch(err => {
this.submiting = false
});
}
},
//
preview () {
util.local.set('activity', this.form)
window.open(this.$router.resolve('/activity/preview').href)
},
addSponsor () {
this.sponsorList.push("");
},
delSponsor (index) {
this.sponsorList.splice(index, 1);
},
backList () {
this.pass = true
this.updateTime = 0
this.$router.back()
},
back () {
this.pass = true
//
if (this.updateTime) {
this.$confirm(`编辑的内容未保存,是否保存?`, '提示', {
type: 'warning'
}).then(() => {
this.save(this.form.publishStatus)
}).catch(() => {
this.backList()
})
} else {
this.backList()
}
},
}
};
</script>
@ -482,7 +528,8 @@ $upload-lg-height: 150px;
/deep/ .d-inline-block {
width: 216px;
.el-select, .el-input {
.el-select,
.el-input {
width: 100%;
}
}
@ -501,7 +548,7 @@ $upload-lg-height: 150px;
.remove {
width: 16px;
height: 16px;
background: url("../../../../assets/img/close.png") 0 0/cover no-repeat;
background: url('../../../../assets/img/close.png') 0 0 / cover no-repeat;
cursor: pointer;
}
}
@ -531,40 +578,40 @@ $upload-lg-height: 150px;
}
}
.range-check {
display: inline-block;
margin: 0 0 10px 10px;
display: inline-block;
margin: 0 0 10px 10px;
}
/deep/.range-cas {
.el-tag {
display: none;
}
.el-tag {
display: none;
}
}
.input-center {
display: flex;
align-items: center;
width: 216px;
white-space: nowrap;
.el-input {
margin-right: 5px;
}
display: flex;
align-items: center;
width: 216px;
white-space: nowrap;
.el-input {
margin-right: 5px;
}
}
.el-steps {
justify-content: center;
justify-content: center;
}
/deep/.req {
.el-form-item__label {
&:before {
content: '*';
margin-right: 5px;
font-size: 18px;
vertical-align: middle;
color: #f00;
.el-form-item__label {
&:before {
content: '*';
margin-right: 5px;
font-size: 18px;
vertical-align: middle;
color: #f00;
}
}
}
}
.btns {
display: flex;
justify-content: center;
text-align: center;
display: flex;
justify-content: center;
text-align: center;
}
</style>

@ -1,174 +1,168 @@
<template>
<!-- 大赛详情 -->
<div>
<el-card shadow="hover" style="margin-bottom: 20px">
<div class="flex-between">
<el-page-header @back="back" :content="(form.id ? '编辑' : '创建') + '公告'"></el-page-header>
</div>
</el-card>
<div class="page">
<div class="page-content">
<el-form label-width="170px" label-suffix=":" size="small">
<el-form-item label="公告标题">
<div class="d-inline-block">
<el-input placeholder="请输入公告名称" v-model="form.announcementTitle" clearable></el-input>
</div>
</el-form-item>
<el-form-item label="正文">
<quill :border="true" v-model="form.announcementText" :height="400" />
</el-form-item>
<el-form-item label="附件">
<el-upload
:on-remove="handleRemove"
:on-error="uploadError"
:on-success="uploadSuccess"
:before-upload="beforeUpload"
:before-remove="beforeRemove"
:limit="5"
:on-exceed="handleExceed"
:action="this.api.fileupload"
:headers="headers"
:file-list="fileList"
name="file"
>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">
<p>支持扩展名.rar .zip .doc .docx .pdf .jpg...</p>
</div>
</el-upload>
</el-form-item>
<el-form-item>
<el-button v-if="!form.id" @click="save(0)">草稿</el-button>
<el-button type="primary" @click="save(1)">发布</el-button>
<el-button @click="back">取消</el-button>
</el-form-item>
</el-form>
</div>
<!-- 大赛详情 -->
<div>
<el-card shadow="hover"
style="margin-bottom: 20px">
<div class="flex-between">
<el-page-header @back="back"
:content="(form.id ? '编辑' : '创建') + '公告'"></el-page-header>
</div>
</el-card>
<div class="page">
<div class="page-content">
<el-form label-width="170px"
label-suffix=":"
size="small">
<el-form-item label="公告标题">
<div class="d-inline-block">
<el-input placeholder="请输入公告名称"
v-model="form.announcementTitle"
clearable></el-input>
</div>
</el-form-item>
<el-form-item label="正文">
<quill :border="true"
v-model="form.announcementText"
:height="400" />
</el-form-item>
<el-form-item label="附件">
<Upload :limit="5"
:file-list="fileList"
:on-remove="handleRemove"
@onSuccess="uploadSuccess" />
</el-form-item>
<el-form-item>
<el-button v-if="!form.id"
@click="save(0)">草稿</el-button>
<el-button type="primary"
@click="save(1)">发布</el-button>
<el-button @click="back">取消</el-button>
</el-form-item>
</el-form>
</div>
</div>
</div>
</template>
<script>
import quill from "@/components/quill";
import util from "@/libs/util";
import Setting from "@/setting";
import Upload from '@/components/upload';
import Oss from '@/components/upload/upload.js'
export default {
name: "matchDetail",
data() {
return {
headers: {
token: util.local.get(Setting.tokenKey)
},
form: {
id: this.$route.query.id,
activityId: this.$route.query.activityId,
announcementText: '',
announcementTitle: '',
announcementAnnexList: [],
isOpen: 1
},
updateTime: 0,
fileName: '',
fileList: [],
};
name: "matchDetail",
data () {
return {
headers: {
token: util.local.get(Setting.tokenKey)
},
form: {
id: this.$route.query.id,
activityId: this.$route.query.activityId,
announcementText: '',
announcementTitle: '',
announcementAnnexList: [],
isOpen: 1
},
updateTime: 0,
fileName: '',
fileList: [],
};
},
components: {
quill,
Upload
},
watch: {
// ,
form: {
handler () {
this.updateTime++
},
deep: true
},
components: {
quill
},
mounted () {
this.form.id && this.getData()
},
methods: {
getData () {
this.$post(`${this.api.findActivityAnnouncement}?id=${this.form.id}`).then(({ data }) => {
this.form = data
//
const fileList = data.announcementAnnexList
if (fileList) {
const files = []
fileList.map(e => {
files.push({
name: e.fileName,
url: e.filePath
})
})
this.fileList = files
} else {
data.announcementAnnexList = []
}
}).catch(err => { })
},
watch: {
// ,
form: {
handler(){
this.updateTime++
},
deep:true
},
//
save (status) {
const form = this.form
if (!form.announcementTitle) return util.warningMsg('请填写公告标题')
if (!form.announcementText) return util.warningMsg('请填写正文')
form.status = status
if (form.id) {
form.isOpen = 0
delete form.announcementAnnexList
this.$post(this.api.updateActivityAnnouncement, form).then(res => {
util.successMsg("修改成功")
this.$router.back()
}).catch(err => { })
} else {
form.isOpen = status ? 0 : 1
this.$post(this.api.addActivityAnnouncement, form).then(res => {
util.successMsg("创建成功")
this.$router.back()
}).catch(err => { })
}
},
mounted() {
this.form.id && this.getData()
handleExceed (files, fileList) {
util.warningMsg(`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!`);
},
methods: {
getData() {
this.$post(`${this.api.findActivityAnnouncement}?id=${this.form.id}`).then(({ data }) => {
this.form = data
//
const fileList = data.announcementAnnexList
if (fileList) {
const files = []
fileList.map(e => {
files.push({
name: e.fileName,
url: e.filePath
})
})
this.fileList = files
} else {
data.announcementAnnexList = []
}
}).catch(err => {})
},
//
save(status) {
const form = this.form
if (!form.announcementTitle) return util.warningMsg('请填写公告标题')
if (!form.announcementText) return util.warningMsg('请填写正文')
form.status = status
if (form.id) {
form.isOpen = 0
delete form.announcementAnnexList
this.$post(this.api.updateActivityAnnouncement, form).then(res => {
util.successMsg("修改成功")
this.$router.back()
}).catch(err => {})
} else {
form.isOpen = status ? 0 : 1
this.$post(this.api.addActivityAnnouncement, form).then(res => {
util.successMsg("创建成功")
this.$router.back()
}).catch(err => {})
}
},
handleExceed(files, fileList) {
util.warningMsg(`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!`);
},
//
uploadSuccess(res) {
const file = res.data.filesResult
const { id } = this.form
const data = {
announcementId: id || '',
fileName: this.fileName,
filePath: file.fileUrl || file.fileId
}
this.form.announcementAnnexList.push(data)
//
id && this.$post(this.api.saveActivityAnnouncementAnnex, data).then(res => {}).catch(res => {})
},
//
beforeUpload(file) {
this.fileName = file.name
},
uploadError(err, file, fileList) {
this.$message({
message: "上传出错,请重试!",
type: "error",
center: true
});
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
},
handleRemove(file, fileList) {
if (file.url) {
this.$del(`${this.api.fileDeletion}?keys=${file.url}`).then(res => {}).catch(res => {})
const id = this.form.announcementAnnexList.find(e => e.fileName === file.name).id
this.$post(`${this.api.delActivityAnnouncementAnnex}?id=${id}`).then(res => {}).catch(res => {})
}
},
back() {
this.$router.back()
}
//
uploadSuccess (file) {
const { id } = this.form
const data = {
announcementId: id || '',
fileName: file.name,
filePath: file.url
}
this.form.announcementAnnexList.push(data)
//
id && this.$post(this.api.saveActivityAnnouncementAnnex, data).then(res => { }).catch(res => { })
},
uploadError (err, file, fileList) {
this.$message({
message: "上传出错,请重试!",
type: "error",
center: true
});
},
beforeRemove (file, fileList) {
return this.$confirm(`确定移除 ${file.name}`);
},
handleRemove (file, fileList) {
if (file.url) {
Oss.del(file.url)
const id = this.form.announcementAnnexList.find(e => e.fileName === file.name).id
this.$post(`${this.api.delActivityAnnouncementAnnex}?id=${id}`).then(res => { }).catch(res => { })
}
},
back () {
this.$router.back()
}
}
};
</script>
@ -255,7 +249,8 @@ $upload-lg-height: 150px;
/deep/ .d-inline-block {
width: 216px;
.el-select, .el-input {
.el-select,
.el-input {
width: 100%;
}
}
@ -275,7 +270,7 @@ $upload-lg-height: 150px;
.remove {
width: 16px;
height: 16px;
background: url("../../../../assets/img/close.png") 0 0/cover no-repeat;
background: url('../../../../assets/img/close.png') 0 0 / cover no-repeat;
cursor: pointer;
}
}

@ -23,7 +23,7 @@
<em>{{ end }}</em>
</p>
<div class="m-l-20">
<p v-if="status && status !== 5"
<p v-if="status"
:class="['sign-status', {signing: status == 2,signed: status == 1,playing: status == 4}]">{{ form.competitionRegistration ? '已报名' : '未报名' }}</p>
<el-dropdown v-if="playingStages.length > 1"
@command="chooseStage">
@ -690,7 +690,7 @@
<script>
import { mapState, mapMutations } from "vuex";
import breadcrumb from '@/components/breadcrumb'
import util from '@/libs/util'
import Util from '@/libs/util'
import Setting from "@/setting"
import Const from '@/const/match'
import OSS from 'ali-oss'
@ -701,9 +701,9 @@ export default {
data () {
return {
headers: {
token: util.local.get(Setting.tokenKey)
token: Util.local.get(Setting.tokenKey)
},
token: util.local.get(Setting.tokenKey),
token: Util.local.get(Setting.tokenKey),
id: +this.$route.query.id,
end: '',
status: '',
@ -819,6 +819,7 @@ export default {
client: null,
uploading: false,
uploadProgress: 0,
now: ''
};
},
computed: {
@ -851,13 +852,13 @@ export default {
]),
getData () { //
clearInterval(this.timer)
this.$post(`${this.api.getCompetition}?competitionId=${this.id}`).then(({ competition }) => {
this.$post(`${this.api.getCompetition}?competitionId=${this.id}`).then(async ({ competition }) => {
const list = competition.competitionAnnexList
//
if (list) {
list.map(e => {
const { filePath } = e
e.canPreview = util.canPreview(filePath.substr(filePath.lastIndexOf('.') + 1))
e.canPreview = Util.canPreview(filePath.substr(filePath.lastIndexOf('.') + 1))
})
}
@ -891,8 +892,13 @@ export default {
}
this.$refs.breadcrumb.update('全部赛事/' + competition.name)
const res = await this.$get(this.api.getCurrentTime)
this.now = new Date(res.currentTime)
this.handleStatus()
this.timer = setInterval(this.handleStatus, 1000)
this.timer = setInterval(() => {
this.now = new Date(this.now.setSeconds(this.now.getSeconds() + 1))
this.handleStatus()
}, 1000)
}).catch(err => { })
},
//
@ -905,7 +911,7 @@ export default {
let signUpEndTime = new Date(this.core.dateCompatible(form.signUpEndTime)) //
let playStartTime = new Date(this.core.dateCompatible(form.playStartTime)) //
let playEndTime = new Date(this.core.dateCompatible(form.playEndTime)) //
const now = new Date()
const { now } = this
if (now < signUpStartTime) { //
status = 0
total = signUpStartTime - now
@ -1061,7 +1067,7 @@ export default {
}).then(res => {
this.editing = false
this.getInfo()
showMsg && util.successMsg('保存成功')
showMsg && Util.successMsg('保存成功')
}).catch(res => { })
} else {
this.editing = !this.editing
@ -1088,11 +1094,11 @@ export default {
preview (item) {
const { filePath } = item
const suffix = filePath.substr(filePath.lastIndexOf('.') + 1)
window.open((util.isDoc(suffix) ? 'https://view.officeapps.live.com/op/view.aspx?src=' : '') + item.filePath)
window.open((Util.isDoc(suffix) ? 'https://view.officeapps.live.com/op/view.aspx?src=' : '') + item.filePath)
},
//
download (item) {
util.downloadFile(item.fileName, item.filePath)
Util.downloadFile(item.fileName, item.filePath)
},
// tab
typeChange () {
@ -1169,7 +1175,7 @@ export default {
type: 'warning'
}).then(() => {
this.$post(`${this.api.deleteAnAdvisor}?id=${row.id}`).then(res => {
util.successMsg('删除成功')
Util.successMsg('删除成功')
this.getInfo()
}).catch(res => { })
}).catch(() => { })
@ -1179,7 +1185,7 @@ export default {
},
//
addAdvisor () {
if (this.info.teamInstructors.length > 4) return util.errorMsg('指导老师仅限添加5个!')
if (this.info.teamInstructors.length > 4) return Util.errorMsg('指导老师仅限添加5个!')
this.info.teamInstructors.push(JSON.parse(JSON.stringify(this.originIns)))
},
//
@ -1188,9 +1194,9 @@ export default {
},
//
submitAdvisor (row) {
if (!row.name) return util.errorMsg('请输入姓名')
if (!row.name) return Util.errorMsg('请输入姓名')
const { phone } = row
if (phone && !/^1[3456789]\d{9}$/.test(phone)) return util.errorMsg('请输入正确手机号格式')
if (phone && !/^1[3456789]\d{9}$/.test(phone)) return Util.errorMsg('请输入正确手机号格式')
this.$post(this.api.addAnAdvisor, {
name: row.name,
competitionId: this.id,
@ -1199,7 +1205,7 @@ export default {
phone: row.phone,
position: row.position,
}).then(res => {
util.successMsg((row.id ? '修改' : '新增') + '成功')
Util.successMsg((row.id ? '修改' : '新增') + '成功')
this.getInfo()
}).catch(res => { })
},
@ -1210,7 +1216,7 @@ export default {
let start = 0
for (const e of this.form.competitionStage) {
if (now >= new Date(e.startTime) && now <= new Date(e.endTime)) {
util.errorMsg('比赛已经开始,无法转让队长!')
Util.errorMsg('比赛已经开始,无法转让队长!')
start = 1
break
}
@ -1219,13 +1225,13 @@ export default {
},
//
transferSubmit () {
if (!this.checkedPlayer) return util.errorMsg('请选择成员')
if (!this.checkedPlayer) return Util.errorMsg('请选择成员')
this.$post(this.api.captainOfTransfer, {
captainId: this.info.caption.teamId,
playerId: this.checkedPlayer
}).then(res => {
this.checkedPlayer = ''
util.successMsg('转让成功')
Util.successMsg('转让成功')
this.transferVisible = false
this.getInfo()
}).catch(res => { })
@ -1237,7 +1243,7 @@ export default {
let start = 0
for (const e of this.form.competitionStage) {
if (now >= new Date(e.startTime) && now <= new Date(e.endTime)) {
util.errorMsg('比赛已经开始,无法踢出成员!')
Util.errorMsg('比赛已经开始,无法踢出成员!')
start = 1
break
}
@ -1257,7 +1263,7 @@ export default {
type: 'warning'
}).then(() => {
this.$post(`${this.api.removeTheLine}?teamId=${this.info.teamId}&competitionId=${this.id}&accountId=${row.accountId}`).then(res => {
util.successMsg('移除成功')
Util.successMsg('移除成功')
this.getInfo()
}).catch(res => { })
}).catch(() => { })
@ -1270,7 +1276,7 @@ export default {
//
const now = new Date()
if (now >= new Date(item.startTime) && now <= new Date(item.endTime)) {
return util.errorMsg('该阶段比赛已经开始,无法修改允许参赛人员!')
return Util.errorMsg('该阶段比赛已经开始,无法修改允许参赛人员!')
} else {
this.$confirm('确定要移除该成员吗?', '提示', {
type: 'warning'
@ -1281,7 +1287,7 @@ export default {
stageId: stage.stageId,
teamId: this.info.teamId
}).then(res => {
util.successMsg('移除成功')
Util.successMsg('移除成功')
this.getInfo()
}).catch(res => { })
}).catch(() => { })
@ -1295,7 +1301,7 @@ export default {
//
const now = new Date()
if (now >= new Date(item.startTime) && now <= new Date(item.endTime)) {
return util.errorMsg('该阶段比赛已经开始,无法修改允许参赛人员!')
return Util.errorMsg('该阶段比赛已经开始,无法修改允许参赛人员!')
} else {
const { teamLimit, stages, teamDetail } = this.info
// teamLimit=truestagesparticipantAccountIdsaccountId
@ -1324,9 +1330,9 @@ export default {
//
chooseSubmit () {
const accountIds = this.checkedMembers
if (!accountIds.length) return util.errorMsg('请选择参赛成员!')
if (!accountIds.length) return Util.errorMsg('请选择参赛成员!')
const limit = this.curRow.teamNumLimit //
if (limit && accountIds.length > limit) return util.errorMsg(`请选择${limit}个以下参赛成员!`) //
if (limit && accountIds.length > limit) return Util.errorMsg(`请选择${limit}个以下参赛成员!`) //
this.$post(this.api.stageSelectParticipants, {
accountIds,
competitionId: this.id,
@ -1334,7 +1340,7 @@ export default {
teamId: this.info.teamId
}).then(res => {
this.checkedMembers = []
util.successMsg('修改成功')
Util.successMsg('修改成功')
this.getInfo()
this.chooseVisible = false
}).catch(res => { })
@ -1382,14 +1388,14 @@ export default {
//
enterSubmit () {
const form = this.enterForm
if (!form.teamId) return util.errorMsg('请选择团队')
if (!form.invitationCode) return util.errorMsg('请输入团队邀请码')
if (this.form.completeCompetitionSetup.isNeedCode && !form.registrationInvitationCode) return util.errorMsg('请输入大赛邀请码')
if (!form.teamId) return Util.errorMsg('请选择团队')
if (!form.invitationCode) return Util.errorMsg('请输入团队邀请码')
if (this.form.completeCompetitionSetup.isNeedCode && !form.registrationInvitationCode) return Util.errorMsg('请输入大赛邀请码')
this.$post(this.api.joinCompetitionTeam, form).then(res => {
this.status = 1
this.enterVisible = false
this.getData()
util.successMsg('报名成功!')
Util.successMsg('报名成功!')
}).catch(res => { })
},
//
@ -1420,15 +1426,15 @@ export default {
//
teamSubmit () {
const form = this.teamForm
if (!form.teamName) return util.errorMsg('请输入团队名称')
if (this.teamNameRepeat) return util.errorMsg('团队名称重复,请重新输入')
if (form.invitationCode.length !== 6) return util.errorMsg('请输入6位数团队邀请码')
if (this.form.completeCompetitionSetup.isNeedCode && !form.registrationInvitationCode) return util.errorMsg('请输入大赛邀请码')
if (!form.teamName) return Util.errorMsg('请输入团队名称')
if (this.teamNameRepeat) return Util.errorMsg('团队名称重复,请重新输入')
if (form.invitationCode.length !== 6) return Util.errorMsg('请输入6位数团队邀请码')
if (this.form.completeCompetitionSetup.isNeedCode && !form.registrationInvitationCode) return Util.errorMsg('请输入大赛邀请码')
this.$post(this.api.addCompetitionTeam, form).then(({ status, data, message }) => {
this.teamVisible = false
this.enterVisible = false
this.getData()
util.successMsg('报名成功!')
Util.successMsg('报名成功!')
}).catch(res => { })
},
//
@ -1448,7 +1454,7 @@ export default {
//
beforeUpload (file) {
const oversize = file.size / 1024 / 1024 < 1000
if (!oversize) util.warningMsg('请上传小于1GB的附件!')
if (!oversize) Util.warningMsg('请上传小于1GB的附件!')
if (oversize) {
return true
} else {
@ -1466,7 +1472,7 @@ export default {
this.uploadProgress = 0
this.uploading = true
// ossurl
const { name } = await this.client.multipartUpload(file.name, file, {
const { name } = await this.client.multipartUpload(Date.now() + '.' + Util.getFileExt(file.name), file, {
progress: this.handleProgress
});
@ -1480,7 +1486,7 @@ export default {
// url
const res = await this.$post(this.api.cCompetitionStageFileSave, {
competitionId: this.id,
fileFormat: util.getFileExt(file.name),
fileFormat: Util.getFileExt(file.name),
fileName: file.name,
filePath: url,
fileSize: file.size,
@ -1488,7 +1494,7 @@ export default {
teamId: this.form.competitionRegistration.teamId
})
this.curFileId = res.message
util.successMsg(`上传成功!`);
Util.successMsg(`上传成功!`);
} catch (error) { }
},
@ -1503,7 +1509,7 @@ export default {
return this.$confirm(`确定移除 ${file.name}`);
},
handleExceed (files, fileList) {
util.warningMsg(`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!`);
Util.warningMsg(`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!`);
},
//
handleRemove (file) {
@ -1552,7 +1558,7 @@ export default {
signup () {
const { status, form } = this
//
if (util.local.get(Setting.tokenKey)) {
if (Util.local.get(Setting.tokenKey)) {
const { competitionType } = form.completeCompetitionSetup
if (status == 4) { //
// 线(handleStatus)
@ -1587,8 +1593,8 @@ export default {
}
} else {
//
if (this.curStage && this.curStage.count) return util.errorMsg('您已经参加过该阶段竞赛!')
if (form.competitionRegistration.isDisable === 1) return util.errorMsg('当前用户已被禁赛,如有疑问,请联系平台管理员。') //
if (this.curStage && this.curStage.count) return Util.errorMsg('您已经参加过该阶段竞赛!')
if (form.competitionRegistration.isDisable === 1) return Util.errorMsg('当前用户已被禁赛,如有疑问,请联系平台管理员。') //
//
if (competitionType) {
this.$post(this.api.isParticipant, {
@ -1647,26 +1653,26 @@ export default {
// python
toPython () {
const form = this.curStage
let token = util.local.get(Setting.tokenKey);
util.cookies.set('assessmentId', '', -1)
util.cookies.set('startTime', '', -1)
util.cookies.set('stopTime', '', -1)
util.cookies.set('projectId', form.projectId)
util.cookies.set('token', token)
util.cookies.set('courseId', form.cid)
util.cookies.set('curriculumName', encodeURIComponent(form.systemName))
util.cookies.set('systemId', form.systemId)
util.cookies.set('isSubmit', '', -1)
util.cookies.set('className', '', -1)
util.cookies.set('competitionId', this.form.id)
util.cookies.set('stageId', form.stageId)
util.cookies.set('teamId', this.form.competitionRegistration.teamId)
util.cookies.set('stopTime', form.endTime)
util.cookies.set('resultsDetails', form.resultsDetails)
util.cookies.set('resultAnnouncementTime', form.resultAnnouncementTime)
util.cookies.set('mallId', form.mallId)
util.cookies.set('fromManager', '', -1)
util.cookies.set('language', '', -1)
let token = Util.local.get(Setting.tokenKey);
Util.cookies.set('assessmentId', '', -1)
Util.cookies.set('startTime', '', -1)
Util.cookies.set('stopTime', '', -1)
Util.cookies.set('projectId', form.projectId)
Util.cookies.set('token', token)
Util.cookies.set('courseId', form.cid)
Util.cookies.set('curriculumName', encodeURIComponent(form.systemName))
Util.cookies.set('systemId', form.systemId)
Util.cookies.set('isSubmit', '', -1)
Util.cookies.set('className', '', -1)
Util.cookies.set('competitionId', this.form.id)
Util.cookies.set('stageId', form.stageId)
Util.cookies.set('teamId', this.form.competitionRegistration.teamId)
Util.cookies.set('stopTime', form.endTime)
Util.cookies.set('resultsDetails', form.resultsDetails)
Util.cookies.set('resultAnnouncementTime', form.resultAnnouncementTime)
Util.cookies.set('mallId', form.mallId)
Util.cookies.set('fromManager', '', -1)
Util.cookies.set('language', '', -1)
// 8pythoncookiesystemId
location.href = process.env.NODE_ENV === 'development' ?
`http://${location.hostname}:8085/#/` :
@ -1680,7 +1686,7 @@ export default {
const { systemId, projectId, cid, stageId, startTime, endTime, mallId } = this.curStage
const competitionId = form.id
const teamId = form.competitionRegistration.teamId
let token = util.local.get(Setting.tokenKey);
let token = Util.local.get(Setting.tokenKey);
if (systemId == 11) {
//
location.href = `${Setting.systemPath}/#/index/list?curriculumName=${this.curriculumName}&token=${token}&cid=${cid}&systemId=${systemId}&projectId=${projectId}&competitionId=${competitionId}&stageId=${stageId}&teamId=${teamId}&assessmentId=&classId=&stopTime=&test=true`

@ -109,8 +109,8 @@
<div>
<span class="label">比赛时间</span><span class="val">{{ item.playStartTime}} ~ {{ item.playEndTime }}</span>
</div>
<div :title="item.locations">
<span class="label">比赛范围</span><span class="val">{{ item.locations }}</span>
<div :title="item.locations || item.range">
<span class="label">比赛范围</span><span class="val">{{ item.locations || item.range }}</span>
</div>
<div>
<span class="label">比赛类型</span><span class="val">{{ item.competitionType ? '团体赛' : '个人赛' }}</span>
@ -122,7 +122,7 @@
</div>
</div>
<div class="right">
<p v-if="item.status && item.status !== 5"
<p v-if="item.status"
:class="['sign-status', {signing: item.status == 2, signed: item.status == 1, playing: item.status == 4 && item.curStage}]">{{ item.whetherToSignUp === 0 ? '已报名' : '未报名' }}</p>
<el-dropdown v-if="item.playingStages && item.playingStages.length > 1"
@click.stop="stageClick"
@ -336,7 +336,7 @@
import { mapState, mapMutations } from "vuex";
import { Loading } from "element-ui";
import Setting from "@/setting"
import util from "@/libs/util"
import Util from "@/libs/util"
import Bus from '@/libs/bus'
import OSS from 'ali-oss'
import OssConfig from '@/components/upload/config.js'
@ -346,10 +346,10 @@ export default {
data () {
return {
headers: {
token: util.local.get(Setting.tokenKey)
token: Util.local.get(Setting.tokenKey)
},
timer: null,
token: util.local.get(Setting.tokenKey),
token: Util.local.get(Setting.tokenKey),
statusList: ["待报名", "取消报名", "马上报名", "报名截止", "进入初赛", "已结束"],
endList: ["报名开始", "报名截止", "报名截止", "竞赛开始", "竞赛结束", ""],
typeList: [
@ -467,6 +467,8 @@ export default {
client: null,
uploading: false,
uploadProgress: 0,
now: '',
timer: null,
};
},
computed: {
@ -505,7 +507,7 @@ export default {
...mapMutations('match', [
'SET_TYPE'
]),
getData () {
async getData () {
this.clearTimer()
const { form } = this
const { eventType, competitionScope } = form
@ -521,23 +523,23 @@ export default {
}
if (eventType === 2 && !competitionScope) form.competitionScope = 3 // 广competitionScope=03广
if (eventType !== 1) data.competitionScope = form.competitionScope //
this.$post(this.api.competitionAfterLogin, data).then(({ data }) => {
this.$post(this.api.competitionAfterLogin, data).then(async ({ data }) => {
this.listData = data.records
this.totals = data.total
const res = await this.$get(this.api.getCurrentTime)
this.now = new Date(res.currentTime)
this.statusInterval()
// this.loadIns.close();
}).catch(res => {
// this.loadIns.close()
})
this.timer = setInterval(() => {
this.now = new Date(this.now.setSeconds(this.now.getSeconds() + 1))
this.statusInterval()
}, 1000)
}).catch(res => { })
},
statusInterval () {
async statusInterval () {
this.listData.map(item => {
if (item.signUpStartTime && item.signUpEndTime && item.playStartTime && item.playEndTime) {
this.handleStatus(item)
let timer = setInterval(() => {
this.handleStatus(item)
}, 1000)
this.timerList.push(timer)
}
})
},
@ -550,7 +552,7 @@ export default {
let signUpEndTime = new Date(this.core.dateCompatible(item.signUpEndTime)) //
let playStartTime = new Date(this.core.dateCompatible(item.playStartTime)) //
let playEndTime = new Date(this.core.dateCompatible(item.playEndTime)) //
const now = new Date()
const { now } = this
if (now < signUpStartTime) { //
status = 0
total = signUpStartTime - now
@ -613,6 +615,7 @@ export default {
this.$set(item, 'status', status)
total = total / 1000
--total
console.log("🚀 ~ file: index.vue:621 ~ handleStatus ~ now.getSeconds():", now, now.getSeconds())
if (total > 86400) { //
this.$set(item, 'end', Math.floor(total / 86400) + '天')
} else if (total > 0) { //
@ -625,10 +628,7 @@ export default {
},
//
clearTimer () {
this.timerList.forEach(n => {
clearInterval(n)
})
this.timerList = []
clearInterval(this.timer)
},
initData () {
this.page = 1
@ -671,6 +671,10 @@ export default {
//
changeScope (type) {
this.form.competitionScope = type
if (type !== 2) {
this.form.provinceId = ''
this.form.cityId = ''
}
this.initData()
},
//
@ -701,13 +705,13 @@ export default {
//
enterSubmit () {
const form = this.enterForm
if (!form.teamId) return util.errorMsg('请选择团队')
if (!form.invitationCode) return util.errorMsg('请输入团队邀请码')
if (this.curItem.isNeedCode && !form.registrationInvitationCode) return util.errorMsg('请输入大赛邀请码')
if (!form.teamId) return Util.errorMsg('请选择团队')
if (!form.invitationCode) return Util.errorMsg('请输入团队邀请码')
if (this.curItem.isNeedCode && !form.registrationInvitationCode) return Util.errorMsg('请输入大赛邀请码')
this.$post(this.api.joinCompetitionTeam, form).then(res => {
this.enterVisible = false
this.getData()
util.successMsg('报名成功!')
Util.successMsg('报名成功!')
}).catch(res => { })
},
@ -735,15 +739,15 @@ export default {
//
teamSubmit () {
const form = this.teamForm
if (!form.teamName) return util.errorMsg('请输入团队名称')
if (this.teamNameRepeat) return util.errorMsg('团队名称重复,请重新输入')
if (form.invitationCode.length !== 6) return util.errorMsg('请输入6位数团队邀请码')
if (this.curItem.isNeedCode && !form.registrationInvitationCode) return util.errorMsg('请输入大赛邀请码')
if (!form.teamName) return Util.errorMsg('请输入团队名称')
if (this.teamNameRepeat) return Util.errorMsg('团队名称重复,请重新输入')
if (form.invitationCode.length !== 6) return Util.errorMsg('请输入6位数团队邀请码')
if (this.curItem.isNeedCode && !form.registrationInvitationCode) return Util.errorMsg('请输入大赛邀请码')
this.$post(this.api.addCompetitionTeam, form).then(res => {
this.teamVisible = false
this.enterVisible = false
this.getData()
util.successMsg('报名成功!')
Util.successMsg('报名成功!')
}).catch(res => { })
},
// 线
@ -760,7 +764,7 @@ export default {
//
beforeUpload (file) {
const oversize = file.size / 1024 / 1024 < 1000
if (!oversize) util.warningMsg('请上传小于1GB的附件!')
if (!oversize) Util.warningMsg('请上传小于1GB的附件!')
if (oversize) {
return true
} else {
@ -778,7 +782,7 @@ export default {
this.uploadProgress = 0
this.uploading = true
// ossurl
const { name } = await this.client.multipartUpload(file.name, file, {
const { name } = await this.client.multipartUpload(Date.now() + '.' + Util.getFileExt(file.name), file, {
progress: this.handleProgress
});
@ -792,7 +796,7 @@ export default {
// url
const res = await this.$post(this.api.cCompetitionStageFileSave, {
competitionId: this.curItem.id,
fileFormat: util.getFileExt(file.name),
fileFormat: Util.getFileExt(file.name),
fileName: file.name,
filePath: url,
fileSize: file.size,
@ -800,7 +804,7 @@ export default {
teamId: this.curItem.teamId
})
this.curFileId = res.message
util.successMsg(`上传成功!`);
Util.successMsg(`上传成功!`);
} catch (error) { }
},
@ -815,7 +819,7 @@ export default {
return this.$confirm(`确定移除 ${file.name}`);
},
handleExceed (files, fileList) {
util.warningMsg(`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!`);
Util.warningMsg(`当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!`);
},
//
handleRemove (file) {
@ -843,7 +847,7 @@ export default {
stageId: this.curStageItem.stageId,
teamId: this.curItem.teamId
}).then(res => {
util.successMsg('提交成功!')
Util.successMsg('提交成功!')
}).catch(res => { })
},
@ -859,7 +863,7 @@ export default {
},
//
download (item) {
util.downloadFile(item.fileName, item.filePath)
Util.downloadFile(item.fileName, item.filePath)
},
// 线<>
toOffline () {
@ -893,7 +897,7 @@ export default {
const { status, id } = item
const { competitionType } = item
//
if (util.local.get(Setting.tokenKey)) {
if (Util.local.get(Setting.tokenKey)) {
this.curItem = item
if (status == 4) { //
// 线(handleStatus)
@ -929,8 +933,8 @@ export default {
}
} else {
//
if (item.curStage.count) return util.errorMsg('您已经参加过该阶段竞赛!')
if (item.isDisable === 1) return util.errorMsg('当前用户已被禁赛,如有疑问,请联系平台管理员。') //
if (item.curStage.count) return Util.errorMsg('您已经参加过该阶段竞赛!')
if (item.isDisable === 1) return Util.errorMsg('当前用户已被禁赛,如有疑问,请联系平台管理员。') //
//
if (competitionType) {
this.$post(this.api.isParticipant, {
@ -992,26 +996,26 @@ export default {
// python
toPython () {
const form = this.curItem.curStage
let token = util.local.get(Setting.tokenKey);
util.cookies.set('assessmentId', '', -1)
util.cookies.set('startTime', '', -1)
util.cookies.set('stopTime', '', -1)
util.cookies.set('projectId', form.projectId)
util.cookies.set('token', token)
util.cookies.set('courseId', form.cid)
util.cookies.set('curriculumName', encodeURIComponent(form.systemName))
util.cookies.set('systemId', form.systemId)
util.cookies.set('competitionId', this.curItem.id)
util.cookies.set('stageId', form.stageId)
util.cookies.set('teamId', this.curItem.teamId)
util.cookies.set('stopTime', form.endTime)
util.cookies.set('resultsDetails', form.resultsDetails)
util.cookies.set('resultAnnouncementTime', form.resultAnnouncementTime)
util.cookies.set('mallId', form.mallId)
util.cookies.set('fromManager', '', -1)
util.cookies.set('isSubmit', '', -1)
util.cookies.set('language', '', -1)
util.cookies.set('className', '', -1)
let token = Util.local.get(Setting.tokenKey);
Util.cookies.set('assessmentId', '', -1)
Util.cookies.set('startTime', '', -1)
Util.cookies.set('stopTime', '', -1)
Util.cookies.set('projectId', form.projectId)
Util.cookies.set('token', token)
Util.cookies.set('courseId', form.cid)
Util.cookies.set('curriculumName', encodeURIComponent(form.systemName))
Util.cookies.set('systemId', form.systemId)
Util.cookies.set('competitionId', this.curItem.id)
Util.cookies.set('stageId', form.stageId)
Util.cookies.set('teamId', this.curItem.teamId)
Util.cookies.set('stopTime', form.endTime)
Util.cookies.set('resultsDetails', form.resultsDetails)
Util.cookies.set('resultAnnouncementTime', form.resultAnnouncementTime)
Util.cookies.set('mallId', form.mallId)
Util.cookies.set('fromManager', '', -1)
Util.cookies.set('isSubmit', '', -1)
Util.cookies.set('language', '', -1)
Util.cookies.set('className', '', -1)
// 8pythoncookiesystemId
location.href = process.env.NODE_ENV === 'development' ?
`http://${location.hostname}:8085/#/` :
@ -1025,7 +1029,7 @@ export default {
const { systemId, projectId, cid, stageId, startTime, endTime, mallId } = form.curStage
const competitionId = form.id
const teamId = form.teamId
let token = util.local.get(Setting.tokenKey);
let token = Util.local.get(Setting.tokenKey);
if (systemId == 11) {
//
location.href = `${Setting.systemPath}/#/index/list?curriculumName=${this.curriculumName}&token=${token}&cid=${cid}&systemId=${systemId}&projectId=${projectId}&competitionId=${competitionId}&stageId=${stageId}&teamId=${teamId}&assessmentId=&classId=&stopTime=&test=true`

@ -93,8 +93,8 @@
<div>
<span class="label">比赛时间</span><span class="val">{{ item.playStartTime}} ~ {{ item.playEndTime }}</span>
</div>
<div :title="item.locations">
<span class="label">比赛范围</span><span class="val">{{ item.locations }}</span>
<div :title="item.locations || item.range">
<span class="label">比赛范围</span><span class="val">{{ item.locations || item.range }}</span>
</div>
<div>
<span class="label">比赛类型</span><span class="val">{{ item.competitionType ? '团体赛' : '个人赛' }}</span>
@ -346,7 +346,9 @@ export default {
peopleSignupForm: {
registrationInvitationCode: ''
},
curRow: {}
curRow: {},
now: '',
timer: null,
};
},
computed: {
@ -386,31 +388,33 @@ export default {
sequence: form.sequence || null,
keyWord: this.keyword
}
this.$post(this.api[util.local.get(Setting.tokenKey) ? 'competitionAfterLogin' : 'notLoggedInBeforeStudentEvents'], data).then(({ data }) => {
this.$post(this.api[util.local.get(Setting.tokenKey) ? 'competitionAfterLogin' : 'notLoggedInBeforeStudentEvents'], data).then(async ({ data }) => {
this.listData = data.records
this.totals = data.total
const res = await this.$get(this.api.getCurrentTime)
this.now = new Date(res.currentTime)
this.statusInterval()
this.timer = setInterval(() => {
this.now = new Date(this.now.setSeconds(this.now.getSeconds() + 1))
this.statusInterval()
}, 1000)
this.loadIns.close()
}).catch(res => {
this.loadIns.close()
})
},
//
statusInterval () {
async statusInterval () {
this.listData.map(item => {
if (item.signUpStartTime && item.signUpEndTime && item.playStartTime && item.playEndTime) {
this.handleStatus(item)
let timer = setInterval(() => {
this.handleStatus(item)
}, 1000)
this.timerList.push(timer)
}
})
},
//
handleStatus (item) {
console.log("🚀 ~ file: index.vue:413 ~ handleStatus ~ item:", item)
let total = ''
let time = ''
let status = ''
@ -418,7 +422,7 @@ export default {
let signUpEndTime = new Date(this.core.dateCompatible(item.signUpEndTime)) //
let playStartTime = new Date(this.core.dateCompatible(item.playStartTime)) //
let playEndTime = new Date(this.core.dateCompatible(item.playEndTime)) //
const now = new Date()
const { now } = this
if (now < signUpStartTime) { //
status = 0
total = signUpStartTime - now
@ -496,10 +500,7 @@ export default {
},
//
clearTimer () {
this.timerList.forEach(n => {
clearInterval(n)
})
this.timerList = []
clearInterval(this.timer)
},
getData () {
this.loadIns = Loading.service()

@ -31,9 +31,9 @@ if (isPro) {
sandPath = `http://${location.hostname}:9520`
uploadURL = `http://121.37.12.51/`
host = "http://121.37.12.51/"; // 测试服
// host = 'https://www.occupationlab.com/' // 正式服
host = 'https://www.occupationlab.com/' // 正式服
// host = "http://192.168.31.217:9000/"; // 榕
host = "http://192.168.31.51:9000/"; // 赓
// host = "http://192.168.31.51:9000/"; // 赓
} else if (isSq) {
zcPath = `10.20.100.204:8883`
}

Loading…
Cancel
Save