|
@@ -2,52 +2,52 @@
|
|
|
<div class="create-box light-iview-form">
|
|
|
<Loading v-show="isLoading"></Loading>
|
|
|
<Steps :current="current">
|
|
|
- <Step title="基本信息" content=""></Step>
|
|
|
+ <Step :title="$t('activity.basicInfo')" content=""></Step>
|
|
|
<!-- <Step title="活动单位" content=""></Step> -->
|
|
|
- <Step title="模块配置" content=""></Step>
|
|
|
- <Step title="发布活动" content=""></Step>
|
|
|
+ <Step :title="$t('activity.basicInfo')" content=""></Step>
|
|
|
+ <Step :title="$t('homework.publish')" content=""></Step>
|
|
|
</Steps>
|
|
|
<div style="height: 95%;">
|
|
|
<vuescroll>
|
|
|
<div>
|
|
|
<Form ref="createData" :model="createData" :rules="createDataRule" :label-width="80" v-show="current === 0" class="create-form">
|
|
|
- <FormItem label="名称" prop="name">
|
|
|
- <Input v-special-char v-model="createData.name" placeholder="请输入活动名称" />
|
|
|
+ <FormItem :label="$t('abilitymgmt.name')" prop="name">
|
|
|
+ <Input v-special-char v-model="createData.name" :placeholder="$t('homework.modifyAcNameTip')" />
|
|
|
</FormItem>
|
|
|
- <FormItem label="主题" prop="subject">
|
|
|
- <Input v-special-char v-model="createData.subject" placeholder="清输入活动主题" />
|
|
|
+ <FormItem :label="$t('td.td59')" prop="subject">
|
|
|
+ <Input v-special-char v-model="createData.subject" :placeholder="$t('activity.placeholder.field1')" />
|
|
|
</FormItem>
|
|
|
- <FormItem label="简介">
|
|
|
- <Input v-special-char type="textarea" v-model="createData.description" placeholder="请输入活动简介" />
|
|
|
+ <FormItem :label="$t('activity.profile')">
|
|
|
+ <Input v-special-char type="textarea" v-model="createData.description" :placeholder="$t('activity.placeholder.field2')" />
|
|
|
</FormItem>
|
|
|
- <FormItem label="地点">
|
|
|
- <Input v-special-char v-model="createData.address" placeholder="请输入活动地点" />
|
|
|
+ <FormItem :label="$t('studentWeb.place')">
|
|
|
+ <Input v-special-char v-model="createData.address" :placeholder="$t('activity.placeholder.field3')" />
|
|
|
</FormItem>
|
|
|
- <FormItem label="时间" prop="stime">
|
|
|
+ <FormItem :label="$t('ability.video.time')" prop="stime">
|
|
|
<DatePicker v-model="actAllTime[0]" :editable="false" @on-change="(date, type) => setActTime(date, type, 0)" type="datetimerange" :options="beforeToday" format="yyyy-MM-dd HH:mm:ss" :placeholder="$t('train.create.timeHolder')" style="width: 500px"></DatePicker>
|
|
|
</FormItem>
|
|
|
- <FormItem label="主办" class="unit-box">
|
|
|
+ <FormItem :label="$t('activity.host')" class="unit-box">
|
|
|
<div v-for="(item, index) in createData.zb" :key="index">
|
|
|
- <Input v-special-char v-model="createData.zb[index]" placeholder="请输入主办单位名称" style="width: calc(100% - 30px);" />
|
|
|
+ <Input v-special-char v-model="createData.zb[index]" :placeholder="$t('activity.placeholder.field4')" style="width: calc(100% - 30px);" />
|
|
|
<Icon type="md-trash" size="20" color="#6e6e6e" v-show="index" @click="editUnit('delete', 'zb', index)" />
|
|
|
</div>
|
|
|
<Icon type="md-add-circle" size="20" color="#6e6e6e" @click="editUnit('add', 'zb')" />
|
|
|
</FormItem>
|
|
|
- <FormItem label="承办" class="unit-box">
|
|
|
+ <FormItem :label="$t('activity.undertake')" class="unit-box">
|
|
|
<div v-for="(item, index) in createData.cb" :key="index">
|
|
|
- <Input v-special-char v-model="createData.cb[index]" placeholder="请输入承办单位名称" style="width: calc(100% - 30px);" />
|
|
|
+ <Input v-special-char v-model="createData.cb[index]" :placeholder="$t('activity.placeholder.field5')" style="width: calc(100% - 30px);" />
|
|
|
<Icon type="md-trash" size="20" color="#6e6e6e" v-show="index" @click="editUnit('delete', 'cb', index)" />
|
|
|
</div>
|
|
|
<Icon type="md-add-circle" size="20" color="#6e6e6e" @click="editUnit('add', 'cb')" />
|
|
|
</FormItem>
|
|
|
- <FormItem label="类型" prop="scope">
|
|
|
+ <FormItem :label="$t('courseManage.classroom.studentTableC8')" prop="scope">
|
|
|
<RadioGroup v-model="createData.scope">
|
|
|
- <Radio label="public" border v-show="isTMD && isArea">{{ '公开' }}</Radio>
|
|
|
- <Radio label="area" border v-show="isArea">{{ '区级' }}</Radio>
|
|
|
- <Radio label="school" border v-show="!isArea">{{ '校级' }}</Radio>
|
|
|
+ <Radio label="public" border v-show="isTMD && isArea">{{ $t('activity.scope.open') }}</Radio>
|
|
|
+ <Radio label="area" border v-show="isArea">{{ $t('activity.scope.area') }}</Radio>
|
|
|
+ <Radio label="school" border v-show="!isArea">{{ $t('activity.scope.school') }}</Radio>
|
|
|
</RadioGroup>
|
|
|
</FormItem>
|
|
|
- <FormItem label="学校" v-show="isArea">
|
|
|
+ <FormItem :label="$t('answerSheet.dp.school')" v-show="isArea">
|
|
|
<Select v-model="selSchools" multiple filterable>
|
|
|
<Option :value="item.id" v-for="(item) in showSchools" :key="item.id">
|
|
|
{{ item.name }}
|
|
@@ -55,48 +55,48 @@
|
|
|
</Select>
|
|
|
<p>
|
|
|
<Icon type="md-alert" color="#ffad16" size="18" />
|
|
|
- 不选学校则表示所有学校都可参加该活动
|
|
|
+ {{ $t('activity.prompt.field1') }}
|
|
|
</p>
|
|
|
<p v-show="(createData.scope === 'public' && selSchools.length) || createData.scope != 'public'">
|
|
|
<Icon type="ios-alert-outline" color="#ffad16" size="18" />
|
|
|
- 发布活动后,需学校先确认参与活动,老师才可报名参与
|
|
|
+ {{ $t('activity.prompt.field2') }}
|
|
|
</p>
|
|
|
</FormItem>
|
|
|
- <FormItem label="报名" prop="joinMode">
|
|
|
+ <FormItem :label="$t('activity.enrollLabel')" prop="joinMode">
|
|
|
<RadioGroup v-model="createData.joinMode">
|
|
|
- <Radio label="enroll">{{ '报名制' }}</Radio>
|
|
|
- <Radio label="invite" :disabled="createData.scope === 'public' && !selSchools.length">{{ '邀请制' }}</Radio>
|
|
|
+ <Radio label="enroll">{{ $t('activity.enroll') }}</Radio>
|
|
|
+ <Radio label="invite" :disabled="createData.scope === 'public' && !selSchools.length">{{ $t('activity.invite') }}</Radio>
|
|
|
<span v-show="createData.joinMode === 'invite'" v-if="isArea">
|
|
|
<Icon type="md-alert" color="#ffad16" size="18" />
|
|
|
- 由学校选择老师参与活动
|
|
|
+ {{ $t('activity.prompt.field3') }}
|
|
|
</span>
|
|
|
</RadioGroup>
|
|
|
</FormItem>
|
|
|
- <FormItem label="老师" v-show="!isArea && createData.joinMode === 'invite'">
|
|
|
+ <FormItem :label="$t('jyzx.application.teacher')" v-show="!isArea && createData.joinMode === 'invite'">
|
|
|
<Select v-model="selTeachers" multiple filterable>
|
|
|
<Option :value="item.id" v-for="(item) in showTeachers" :key="item.id">
|
|
|
{{ item.name }}
|
|
|
</Option>
|
|
|
</Select>
|
|
|
</FormItem>
|
|
|
- <FormItem label="免责声明">
|
|
|
- <Input v-special-char type="textarea" v-model="createData.mzsm" placeholder="请输入免责申明..." />
|
|
|
+ <FormItem :label="$t('activity.disclaimer')">
|
|
|
+ <Input v-special-char type="textarea" v-model="createData.mzsm" :placeholder="$t('activity.placeholder.field6')" />
|
|
|
</FormItem>
|
|
|
- <FormItem label="封面">
|
|
|
+ <FormItem :label="$t('cusMgt.rcd.cover.cover')">
|
|
|
<Upload v-show="!posterFile.url" multiple type="drag" action="" :before-upload="customUpload" :show-upload-list="false" accept=".jpg, .jpeg, .png, .gif">
|
|
|
<div style="padding: 20px 0">
|
|
|
<Icon type="ios-cloud-upload" size="52" style="color: #3399ff"></Icon>
|
|
|
- <p>上传主题图片</p>
|
|
|
+ <p>{{ $t('activity.placeholder.field7') }}</p>
|
|
|
</div>
|
|
|
</Upload>
|
|
|
<img v-if="posterFile.url" :src="posterFile.url" alt="" width="500">
|
|
|
<p v-show="posterFile.url" class="repeat-upload" @click="repeatUpload">{{$t('td.td58')}}</p>
|
|
|
</FormItem>
|
|
|
- <FormItem label="附件">
|
|
|
+ <FormItem :label="$t('cusMgt.rcd.file')">
|
|
|
<Upload multiple type="drag" action="" :before-upload="customUploadFile" :show-upload-list="false" :accept="accept">
|
|
|
<div style="padding: 20px 0">
|
|
|
<Icon type="ios-cloud-upload" size="52" style="color: #3399ff"></Icon>
|
|
|
- <p>上传活动文件</p>
|
|
|
+ <p>{{ $t('activity.placeholder.field8') }}</p>
|
|
|
</div>
|
|
|
</Upload>
|
|
|
<template v-if="attachment.length">
|
|
@@ -120,24 +120,24 @@
|
|
|
</CheckboxGroup>
|
|
|
<Tabs v-model="tabName">
|
|
|
<div style="width: 85%; margin-top: 30px;">
|
|
|
- <EmptyData v-if="!tabListShow.length" textContent="请选择本次活动需要添加的模块"></EmptyData>
|
|
|
+ <EmptyData v-if="!tabListShow.length" :textContent="$t('activity.prompt.field4')"></EmptyData>
|
|
|
</div>
|
|
|
<TabPane v-for="(item,index) in tabListShow" :key="index" :label="item.label" :name="item.name">
|
|
|
<div v-if="item.name === 'Contest'">
|
|
|
<div class="content-box">
|
|
|
<div>
|
|
|
<Form ref="contestData" :model="contestData.sign" :rules="contestRule" :label-width="80">
|
|
|
- <FormItem label="报名时间" prop="stime">
|
|
|
+ <FormItem :label="$t('activity.timeList.enroll')" prop="stime">
|
|
|
<DatePicker v-model="actAllTime[1]" :editable="false" :options="beforeAct" @on-change="(date, type) => setActTime(date, type, 1)" type="datetimerange" format="yyyy-MM-dd HH:mm:ss" :placeholder="$t('train.create.timeHolder')" style="width: 500px"></DatePicker>
|
|
|
</FormItem>
|
|
|
- <FormItem label="报名人数">
|
|
|
+ <FormItem :label="$t('activity.enrollNum')">
|
|
|
<InputNumber :min="0" v-model="contestData.sign.limit" />
|
|
|
<span>
|
|
|
<Icon type="md-alert" color="#ffad16" size="17" />
|
|
|
- 0:默认不限制
|
|
|
+ {{ $t('activity.prompt.field5') }}
|
|
|
</span>
|
|
|
</FormItem>
|
|
|
- <FormItem label="填报信息" prop="fields">
|
|
|
+ <FormItem :label="$t('activity.fillInfo')" prop="fields">
|
|
|
<CheckboxGroup v-model="fields">
|
|
|
<Checkbox v-for="(item, index) in infoArr" :key="index" :label="item.field">
|
|
|
<span>
|
|
@@ -149,7 +149,7 @@
|
|
|
<Icon type="md-add-circle" @click="changeFiled(1)" size="18" />
|
|
|
</CheckboxGroup>
|
|
|
</FormItem>
|
|
|
- <FormItem label="参赛方式">
|
|
|
+ <FormItem :label="$t('activity.entryType')">
|
|
|
<RadioGroup v-model="contestData.sign.type">
|
|
|
<Radio v-for="(item, index) in joinType" :key="index" :label="item.value">{{ item.label }}</Radio>
|
|
|
<!-- 先不考虑团队赛人数限制 -->
|
|
@@ -165,16 +165,16 @@
|
|
|
</p> -->
|
|
|
<div v-show="skWork">
|
|
|
<Form ref="contestUpload" :model="contestUpload" :rules="contestRuleUpload" :label-width="80">
|
|
|
- <FormItem label="上传时间" prop="stime">
|
|
|
+ <FormItem :label="$t('activity.timeList.upload')" prop="stime">
|
|
|
<DatePicker v-model="actAllTime[2]" ref="workPicker" :editable="false" :options="beforeAct" @on-change="(date, type) => setActTime(date, type, 2)" type="datetimerange" format="yyyy-MM-dd HH:mm:ss" :placeholder="$t('train.create.timeHolder')" style="width: 500px"></DatePicker>
|
|
|
</FormItem>
|
|
|
- <FormItem label="作品类型">
|
|
|
+ <FormItem :label="$t('activity.workType')">
|
|
|
<RadioGroup v-model="contestUpload.type">
|
|
|
- <Radio label="file">{{ '文件' }}</Radio>
|
|
|
- <Radio label="sokrates">{{ '苏格拉底影片' }}</Radio>
|
|
|
+ <Radio label="file">{{ $t('studentWeb.courseContent.type.file') }}</Radio>
|
|
|
+ <Radio label="sokrates">{{ $t('auth.attr2') }}</Radio>
|
|
|
</RadioGroup>
|
|
|
</FormItem>
|
|
|
- <FormItem label="文件类型" v-if="contestUpload.type === 'file'" prop="fileType">
|
|
|
+ <FormItem :label="$t('studentWeb.homework.table3')" v-if="contestUpload.type === 'file'" prop="fileType">
|
|
|
<!-- <CheckboxGroup v-model="contestUpload.fileType" class="tab-check"> -->
|
|
|
<div class="tab-check">
|
|
|
<div v-for="(item, index) in fileType" :key="index" class="file-box">
|
|
@@ -182,20 +182,20 @@
|
|
|
{{ item.label }}
|
|
|
</Checkbox>
|
|
|
<div v-if="item.isCheck">
|
|
|
- <Select v-model="formatType[index]" multiple size="small" style="width: 400px" placeholder="不限格式">
|
|
|
+ <Select v-model="formatType[index]" multiple size="small" style="width: 400px" :placeholder="$t('activity.placeholder.field9')">
|
|
|
<Option v-for="(format, index) in item.format" :value="format" :key="index">{{ format }}</Option>
|
|
|
</Select>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</FormItem>
|
|
|
- <FormItem label="文件说明">
|
|
|
- <Input v-special-char type="textarea" v-model="contestUpload.desc" placeholder="请输入作品要求..." />
|
|
|
+ <FormItem :label="$t('activity.fileDes')">
|
|
|
+ <Input v-special-char type="textarea" v-model="contestUpload.desc" :placeholder="$t('activity.placeholder.field10')" />
|
|
|
</FormItem>
|
|
|
- <FormItem label="上传方式">
|
|
|
+ <FormItem :label="$t('activity.uploadType')">
|
|
|
<RadioGroup v-model="contestUpload.captainUpload">
|
|
|
- <Radio :label="0">{{ '个人上传作品' }}</Radio>
|
|
|
- <Radio :label="1" :disabled="contestData.sign.type != 1">{{ '由队长统一上传' }}</Radio>
|
|
|
+ <Radio :label="0">{{ $t('activity.prompt.field6') }}</Radio>
|
|
|
+ <Radio :label="1" :disabled="contestData.sign.type != 1">{{ $t('activity.prompt.field7') }}</Radio>
|
|
|
</RadioGroup>
|
|
|
</FormItem>
|
|
|
</Form>
|
|
@@ -203,21 +203,20 @@
|
|
|
</div>
|
|
|
<div class="content-box">
|
|
|
<p>
|
|
|
- <Checkbox v-model="skReview" @on-change="contestChange('review', skReview)">作品评审</Checkbox>
|
|
|
+ <Checkbox v-model="skReview" @on-change="contestChange('review', skReview)">{{ $t('activity.reviewTitle') }}</Checkbox>
|
|
|
</p>
|
|
|
<div v-show="skReview">
|
|
|
<Form ref="contestReview" :model="contestReview" :rules="contestRuleReview" :label-width="80">
|
|
|
- <FormItem label="评审时间" prop="stime">
|
|
|
+ <FormItem :label="$t('activity.timeList.review')" prop="stime">
|
|
|
<DatePicker v-model="actAllTime[3]" ref="reviewPicker" :editable="false" :options="beforeAct" type="datetimerange" format="yyyy-MM-dd HH:mm:ss"
|
|
|
:placeholder="$t('train.create.timeHolder')" transfer style="width: 500px" @on-change="(date, type) => setActTime(date, type, 3)">
|
|
|
</DatePicker>
|
|
|
</FormItem>
|
|
|
- <FormItem label="评审规则" prop="rule">
|
|
|
+ <FormItem :label="$t('activity.reviewRule')" prop="rule">
|
|
|
<Select v-model="reviewSel" transfer style="width: calc(100% - 30px);" clearable>
|
|
|
<Option v-for="(item, index) in reviewList" :value="index" :key="index" :label="item.name" class="review-sel">
|
|
|
{{ item.name }}
|
|
|
- <Tag color="green" v-show="item.currentUse">当前活动使用</Tag>
|
|
|
- <!-- <span v-if="item.currentUse" style="color: #2d870e;">({{ '当前活动使用' }})</span> -->
|
|
|
+ <Tag color="green" v-show="item.currentUse">{{ $t('activity.prompt.field8') }}</Tag>
|
|
|
<Icon type="md-eye" size="18" color="#077fd8" @click.native="reviewEditRule(index, 'preview')" />
|
|
|
<Icon type="ios-copy" size="18" color="#5a5a5a" @click.native="reviewEditRule(index, 'copy')" v-show="!item.isAdd && !item.currentUse" />
|
|
|
<Icon type="md-create" size="18" color="orange" @click.native="reviewEditRule(index, 'edit')" v-show="item.isAdd || item.currentUse" />
|
|
@@ -231,12 +230,12 @@
|
|
|
</div>
|
|
|
<div class="content-box">
|
|
|
<p>
|
|
|
- <Checkbox v-model="skPublic" :disabled="!skReview" @on-change="contestChange('score', skPublic)">成绩公示</Checkbox>
|
|
|
- <span v-show="!skReview" style="color: #cd0000; font-size: 13px;">请先勾选作品评审</span>
|
|
|
+ <Checkbox v-model="skPublic" :disabled="!skReview" @on-change="contestChange('score', skPublic)">{{ $t('activity.scoreTitle') }}</Checkbox>
|
|
|
+ <span v-show="!skReview" style="color: #cd0000; font-size: 13px;">{{ $t('activity.prompt.field9') }}</span>
|
|
|
</p>
|
|
|
<div v-show="skPublic">
|
|
|
<Form ref="contestScore" :model="contestScore" :rules="contestRuleUpload" :label-width="80">
|
|
|
- <FormItem label="公示时间" prop="stime">
|
|
|
+ <FormItem :label="$t('activity.timeList.score')" prop="stime">
|
|
|
<DatePicker v-model="actAllTime[4]" ref="scorePicker" :editable="false" :options="beforeAct" @on-change="(date, type) => setActTime(date, type, 4)" type="datetimerange" format="yyyy-MM-dd HH:mm:ss" :placeholder="$t('train.create.timeHolder')" transfer style="width: 500px"></DatePicker>
|
|
|
</FormItem>
|
|
|
</Form>
|
|
@@ -257,33 +256,33 @@
|
|
|
<img :src="posterFile.url" alt="" v-show="posterFile.url">
|
|
|
<img src="@/assets/image/no-poster-cn1.png" alt="" v-show="!posterFile.url">
|
|
|
<div class="submit-content">
|
|
|
- <p>主题:{{ createData.subject }}</p>
|
|
|
- <p>简介:{{ createData.description || '-' }}</p>
|
|
|
- <p>地点:{{ createData.address || '-' }}</p>
|
|
|
- <p>时间:{{ actAllTime[0][0] }} - {{ actAllTime[0][1] }}</p>
|
|
|
- <p>主办:
|
|
|
+ <p>{{ $t('td.td59') }}:{{ createData.subject }}</p>
|
|
|
+ <p>{{ $t('activity.profile') }}:{{ createData.description || '-' }}</p>
|
|
|
+ <p>{{ $t('studentWeb.place') }}:{{ createData.address || '-' }}</p>
|
|
|
+ <p>{{ $t('ability.video.time') }}:{{ actAllTime[0][0] }} - {{ actAllTime[0][1] }}</p>
|
|
|
+ <p>{{ $t('activity.host') }}:
|
|
|
<span v-for="(item, index) in createData.zb" :key="index" class="multiple-box">
|
|
|
{{ item || '-' }}
|
|
|
</span>
|
|
|
</p>
|
|
|
- <p>承办:
|
|
|
+ <p>{{ $t('activity.undertake') }}:
|
|
|
<span v-for="(item, index) in createData.cb" :key="index" class="multiple-box">
|
|
|
{{ item || '-' }}
|
|
|
</span>
|
|
|
</p>
|
|
|
- <p v-if="isArea">学校:
|
|
|
+ <p v-if="isArea">{{ $t('answerSheet.dp.school') }}:
|
|
|
<span v-if="createData.invitedSchools.length">
|
|
|
<span v-for="(item, index) in createData.invitedSchools" :key="index" class="multiple-box">
|
|
|
{{ item.name }}
|
|
|
</span>
|
|
|
</span>
|
|
|
<span v-else>
|
|
|
- 所有学校
|
|
|
+ {{ $t('td.td55') }}
|
|
|
</span>
|
|
|
</p>
|
|
|
- <p>免责声明:{{ createData.mzsm || '-' }}</p>
|
|
|
+ <p>{{ $t('activity.disclaimer') }}:{{ createData.mzsm || '-' }}</p>
|
|
|
<div style="display: flex;">
|
|
|
- <p style="min-width: 50px;">附件:</p>
|
|
|
+ <p style="min-width: 50px;">{{ $t('cusMgt.rcd.file') }}:</p>
|
|
|
<div v-if="attachment.length">
|
|
|
<span v-for="(item, index) in attachment" :key="index" class="multiple-box">
|
|
|
{{ item.name || '-' }}
|
|
@@ -292,45 +291,45 @@
|
|
|
<span v-else>-</span>
|
|
|
</div>
|
|
|
<p v-if="createData.modules && createData.modules.length">
|
|
|
- 模块:
|
|
|
+ {{ $t('activity.module') }}:
|
|
|
<span v-for="(item, index) in createData.modules" :key="index">
|
|
|
- {{ item === 'Contest' ? '赛课活动' : (item === 'Training' ? '教培活动' : '教研活动') }}
|
|
|
+ {{ $t(`activity.module.${item}`) }}
|
|
|
</span>
|
|
|
</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <Button style="margin-top: 16px; margin-right: 16px;" @click="last" v-show="current">上一步</Button>
|
|
|
- <Button style="margin-top: 16px;" type="primary" @click="nextNew()">{{ current === 2 ? '发布活动' : '下一步'}}</Button>
|
|
|
+ <Button style="margin-top: 16px; margin-right: 16px;" @click="last" v-show="current">{{ $t('train.create.lastStep') }}</Button>
|
|
|
+ <Button style="margin-top: 16px;" type="primary" @click="nextNew()">{{ current === 2 ? $t('train.create.publishTitle') : $t('train.create.nextStep') }}</Button>
|
|
|
</vuescroll>
|
|
|
</div>
|
|
|
- <Drawer title="评审规则" :width="50" :mask-closable="false" v-model="ruleDrawer" class="light-iview-form" @on-close="closeRule()">
|
|
|
+ <Drawer :title="$t('activity.reviewRule')" :width="50" :mask-closable="false" v-model="ruleDrawer" class="light-iview-form" @on-close="closeRule()">
|
|
|
<RuleDrawer :ruleDrawerAdd="ruleDrawerAdd" :ruleInfoParent="ruleInfo" @saveRule="saveRule" :needEdit="ruleDrawerAdd === 1 ? 2 : 0" />
|
|
|
</Drawer>
|
|
|
- <Modal v-model="modalType" title="自定义填报信息" class="light-iview-form" @on-ok="addInform()">
|
|
|
+ <Modal v-model="modalType" :title="$t('activity.customFields')" class="light-iview-form" @on-ok="addInform()">
|
|
|
<Form :label-width="100" :model="addInfoForm">
|
|
|
- <FormItem label="信息名称">
|
|
|
- <Input v-special-char v-model.trim="addInfoForm.label" :disabled="addInfoType === 2" placeholder="自定义填报的信息" style="width: 300px" />
|
|
|
+ <FormItem :label="$t('activity.customTitle')">
|
|
|
+ <Input v-special-char v-model.trim="addInfoForm.label" :disabled="addInfoType === 2" :placeholder="$t('activity.placeholder.field11')" style="width: 300px" />
|
|
|
</FormItem>
|
|
|
- <FormItem label="报名时展示的填报格式">
|
|
|
+ <FormItem :label="$t('activity.prompt.field10')">
|
|
|
<RadioGroup v-model="addInfoForm.type">
|
|
|
<Radio label="text">
|
|
|
- <span>文本</span>
|
|
|
+ <span>{{ $t('activity.word') }}</span>
|
|
|
</Radio>
|
|
|
<Radio label="select">
|
|
|
- <span>选择器</span>
|
|
|
+ <span>{{ $t('activity.select') }}</span>
|
|
|
</Radio>
|
|
|
</RadioGroup>
|
|
|
</FormItem>
|
|
|
<!-- <p v-show="addInfoForm.type === 'select'">请创建选项,无需选择,所有选项都会为老师展示</p> -->
|
|
|
- <FormItem label="报名时可供选择的内容" v-show="addInfoForm.type === 'select'">
|
|
|
+ <FormItem :label="$t('activity.prompt.field11')" v-show="addInfoForm.type === 'select'">
|
|
|
<div>
|
|
|
- <Input v-special-char v-model="addInfo" placeholder="请输入选项内容" style="width: 300px" />
|
|
|
+ <Input v-special-char v-model="addInfo" :placeholder="$t('activity.placeholder.field12')" style="width: 300px" />
|
|
|
<Icon type="md-add-circle" size="18" color="#1db40f" style="margin: 0 10px; cursor: pointer;" @click="changeFormValue('add')" />
|
|
|
<!-- <Icon type="md-checkmark-circle" size="18" color="#1db40f" style="margin: 0 10px; cursor: pointer;" @click="changeFormValue('add')" /> -->
|
|
|
</div>
|
|
|
- <span>报名时展示的内容:</span>
|
|
|
- <Select v-model="selectFileds" placeholder="仅作展示" style="width:300px" @on-select="selectFiledChange">
|
|
|
+ <span>{{ $t('activity.prompt.field12') }}:</span>
|
|
|
+ <Select v-model="selectFileds" :placeholder="$t('activity.placeholder.field13')" style="width:300px" @on-select="selectFiledChange">
|
|
|
<Option v-for="(item, index) in addInfoForm.item" :value="item" :key="index">
|
|
|
{{ item }}
|
|
|
<Icon type="md-trash" size="16" color="#9a9a9a" @click.stop.native.prevent="changeFormValue('delete', index)" />
|
|
@@ -387,17 +386,17 @@ export default {
|
|
|
accept: '',
|
|
|
ruleColumns: [
|
|
|
{
|
|
|
- title: '规则',
|
|
|
+ title: this.$t('activity.ruleInfo.rule'),
|
|
|
key: 'name',
|
|
|
width: 200,
|
|
|
tree: true
|
|
|
},
|
|
|
{
|
|
|
- title: '描述',
|
|
|
+ title: this.$t('ability.mgmt.desc'),
|
|
|
key: 'describe',
|
|
|
},
|
|
|
{
|
|
|
- title: '分值',
|
|
|
+ title: this.$t('totalAnalysis.ka_table_text4'),
|
|
|
key: 'score',
|
|
|
width: 100,
|
|
|
align: 'center',
|
|
@@ -410,25 +409,25 @@ export default {
|
|
|
infoArr: [
|
|
|
{
|
|
|
field: 'name',
|
|
|
- label: '姓名',
|
|
|
+ label: this.$t('assessment.header1'),
|
|
|
type: "text",
|
|
|
item: []
|
|
|
},
|
|
|
{
|
|
|
field: 'sex',
|
|
|
- label: '性别',
|
|
|
+ label: this.$t('auth.ctFmText4'),
|
|
|
type: "radio",
|
|
|
item: []
|
|
|
},
|
|
|
{
|
|
|
field: 'phone',
|
|
|
- label: '手机号码',
|
|
|
+ label: this.$t('studentWeb.tmManagement.phone'),
|
|
|
type: "text",
|
|
|
item: []
|
|
|
},
|
|
|
{
|
|
|
field: 'email',
|
|
|
- label: '电子邮箱',
|
|
|
+ label: this.$t('auth.ctFmText23'),
|
|
|
type: "text",
|
|
|
item: []
|
|
|
},
|
|
@@ -446,13 +445,13 @@ export default {
|
|
|
}, */
|
|
|
{
|
|
|
field: 'period',
|
|
|
- label: '学段',
|
|
|
+ label: this.$t('courseManage.classroom.studentTableC3'),
|
|
|
type: "text",
|
|
|
item: []
|
|
|
},
|
|
|
{
|
|
|
field: 'subject',
|
|
|
- label: '学科',
|
|
|
+ label: this.$t('newCusMgt.subject'),
|
|
|
type: "text",
|
|
|
item: []
|
|
|
},
|
|
@@ -460,31 +459,31 @@ export default {
|
|
|
fileType: [
|
|
|
{
|
|
|
value: 'documentType',
|
|
|
- label: '文档类',
|
|
|
+ label: this.$t('ability.points.doc'),
|
|
|
isCheck: false,
|
|
|
format: ['doc', 'docx', 'txt', 'ppt', 'pptx', 'xls', 'xlsx', 'pdf']
|
|
|
},
|
|
|
{
|
|
|
value: 'audio',
|
|
|
- label: '音频类',
|
|
|
+ label: this.$t('ability.points.audio'),
|
|
|
isCheck: false,
|
|
|
format: ['mp3', 'wav', 'wma']
|
|
|
},
|
|
|
{
|
|
|
value: 'video',
|
|
|
- label: '视频类',
|
|
|
+ label: this.$t('ability.points.video'),
|
|
|
isCheck: false,
|
|
|
format: ['mp4', 'webm']
|
|
|
},
|
|
|
{
|
|
|
value: 'img',
|
|
|
- label: '图片类',
|
|
|
+ label: this.$t('ability.points.image'),
|
|
|
isCheck: false,
|
|
|
format: ['jpg', 'jpeg', 'png', 'gif']
|
|
|
},
|
|
|
{
|
|
|
value: 'winrar',
|
|
|
- label: '压缩包类',
|
|
|
+ label: this.$t('ability.points.gzip'),
|
|
|
isCheck: false,
|
|
|
format: ['zip', 'rar', '7zip']
|
|
|
},
|
|
@@ -493,15 +492,15 @@ export default {
|
|
|
tabList: [
|
|
|
{
|
|
|
name: 'Contest',
|
|
|
- label: "赛课活动"
|
|
|
+ label: this.$t('activity.module.Contest')
|
|
|
},
|
|
|
{
|
|
|
name: 'Training',
|
|
|
- label: "教培活动"
|
|
|
+ label: this.$t('activity.module.Training')
|
|
|
},
|
|
|
{
|
|
|
name: 'Research',
|
|
|
- label: "教研活动"
|
|
|
+ label: this.$t('activity.module.Research')
|
|
|
}
|
|
|
],
|
|
|
tabListShow: [],
|
|
@@ -606,11 +605,11 @@ export default {
|
|
|
joinType: [
|
|
|
{
|
|
|
value: 0,
|
|
|
- label: '个人赛',
|
|
|
+ label: this.$t('activity.joinType.person'),
|
|
|
},
|
|
|
{
|
|
|
value: 1,
|
|
|
- label: '团队赛',
|
|
|
+ label: this.$t('activity.joinType.team'),
|
|
|
},
|
|
|
],
|
|
|
ruleInfo: undefined, //展示的评审规则
|
|
@@ -619,23 +618,23 @@ export default {
|
|
|
ruleDrawerAdd: 0, //0(展示) 1(编辑) 2(新增)
|
|
|
areaInfo: undefined,
|
|
|
createDataRule: {
|
|
|
- name: [{ required: true, message: '活动名称不能为空', trigger: 'blur' }],
|
|
|
- subject: [{ required: true, message: '活动主题不能为空', trigger: 'blur' }],
|
|
|
- scope: [{ required: true, message: '请选择类型', trigger: 'blur' }],
|
|
|
- stime: [{ required: true, type: 'number', message: '请选择活动时间', trigger: 'blur' }],
|
|
|
- joinMode: [{ required: true, message: '请选择报名方式', trigger: 'blur' }],
|
|
|
+ name: [{ required: true, message: this.$t('activity.message.field1'), trigger: 'blur' }],
|
|
|
+ subject: [{ required: true, message: this.$t('activity.message.field2'), trigger: 'blur' }],
|
|
|
+ scope: [{ required: true, message: this.$t('activity.message.field3'), trigger: 'blur' }],
|
|
|
+ stime: [{ required: true, type: 'number', message: this.$t('activity.message.field3'), trigger: 'blur' }],
|
|
|
+ joinMode: [{ required: true, message: this.$t('activity.message.field4'), trigger: 'blur' }],
|
|
|
},
|
|
|
contestRule: {
|
|
|
- stime: [{ required: true, type: 'number', message: '请选择活动时间', trigger: 'blur' }],
|
|
|
- fields: [{ required: true, message: '请选择填报信息', trigger: 'blur', validator: validateFields }],
|
|
|
+ stime: [{ required: true, type: 'number', message: this.$t('activity.message.field4'), trigger: 'blur' }],
|
|
|
+ fields: [{ required: true, message: this.$t('activity.message.field6'), trigger: 'blur', validator: validateFields }],
|
|
|
},
|
|
|
contestRuleUpload: {
|
|
|
- stime: [{ required: true, type: 'number', message: '请选择活动时间', trigger: 'blur' }],
|
|
|
- fileType: [{ required: true, message: '请选择填报信息', trigger: 'blur', validator: validateFileType }],
|
|
|
+ stime: [{ required: true, type: 'number', message: this.$t('activity.message.field4'), trigger: 'blur' }],
|
|
|
+ fileType: [{ required: true, message: this.$t('activity.message.field6'), trigger: 'blur', validator: validateFileType }],
|
|
|
},
|
|
|
contestRuleReview: {
|
|
|
- stime: [{ required: true, type: 'number', message: '请选择活动时间', trigger: 'blur' }],
|
|
|
- rule: [{ required: true, message: '请选择评审规则', trigger: 'blur', validator: validateReviewRule }],
|
|
|
+ stime: [{ required: true, type: 'number', message: this.$t('activity.message.field4'), trigger: 'blur' }],
|
|
|
+ rule: [{ required: true, message: this.$t('activity.message.field7'), trigger: 'blur', validator: validateReviewRule }],
|
|
|
},
|
|
|
beforeToday: {
|
|
|
disabledDate (date) {
|
|
@@ -953,15 +952,15 @@ export default {
|
|
|
if(!this.isArea && this.createData.joinMode === 'invite') {
|
|
|
let types = await this.saveTeacher()
|
|
|
}
|
|
|
- this.$Message.success('创建成功!')
|
|
|
+ this.$Message.success(this.$t('activity.message.field8'))
|
|
|
this.$router.push({
|
|
|
name: this.isArea ? 'areaActivityProcess' : 'activityManage',
|
|
|
})
|
|
|
} else {
|
|
|
if(res.code === 25 || res.code === 26 || res.code === 27) {
|
|
|
- this.$Message.warning('填报信息未配置学段、学科,无法进行作品分配!')
|
|
|
+ this.$Message.warning(this.$t('activity.message.field9'))
|
|
|
} else {
|
|
|
- this.$Message.warning('保存失败')
|
|
|
+ this.$Message.warning(this.$t('auth.ctFmText19'))
|
|
|
}
|
|
|
if(params.Activity.poster || params.Activity.attachment.length) {
|
|
|
this.$api.blob.deletePrefix({
|
|
@@ -969,7 +968,7 @@ export default {
|
|
|
"prefix": `activity/${this.createData.id}`
|
|
|
}).then(res => {
|
|
|
if(res.status) {
|
|
|
- console.log('删除成功');
|
|
|
+ console.log(this.$t('evaluation.deleteSuc'));
|
|
|
}
|
|
|
})
|
|
|
}
|
|
@@ -1033,7 +1032,7 @@ export default {
|
|
|
if(this.attachDel.length) {
|
|
|
let delType = await this.deleteBlob(this.attachDel)
|
|
|
if(!delType) {
|
|
|
- this.$Message.warning('保存失败!')
|
|
|
+ this.$Message.warning(this.$t('auth.ctFmText19'))
|
|
|
return
|
|
|
}
|
|
|
}
|
|
@@ -1078,14 +1077,14 @@ export default {
|
|
|
this.$refs['contestData'][0].validate((valid) => {
|
|
|
console.log(valid);
|
|
|
if (!valid) {
|
|
|
- this.$Message.error('请完善基本信息!')
|
|
|
+ this.$Message.error(this.$t('activity.message.field10'))
|
|
|
needBreak = true
|
|
|
}
|
|
|
})
|
|
|
if(this.contestData.modules.includes('upload')) {
|
|
|
this.$refs['contestUpload'][0].validate((valid) => {
|
|
|
if (!valid) {
|
|
|
- this.$Message.error('请完善上传信息!');
|
|
|
+ this.$Message.error(this.$t('activity.message.field11'));
|
|
|
needBreak = true
|
|
|
}
|
|
|
})
|
|
@@ -1093,7 +1092,7 @@ export default {
|
|
|
if(this.contestData.modules.includes('review')) {
|
|
|
this.$refs['contestReview'][0].validate((valid) => {
|
|
|
if (!valid) {
|
|
|
- this.$Message.error('请完善评审信息!');
|
|
|
+ this.$Message.error(this.$t('activity.message.field12'));
|
|
|
needBreak = true
|
|
|
}
|
|
|
})
|
|
@@ -1101,14 +1100,14 @@ export default {
|
|
|
if(this.contestData.modules.includes('score')) {
|
|
|
this.$refs['contestScore'][0].validate((valid) => {
|
|
|
if (!valid) {
|
|
|
- this.$Message.error('请完善公示信息!');
|
|
|
+ this.$Message.error(this.$t('activity.message.field13'));
|
|
|
needBreak = true
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
if(!this.createData.modules.length) {
|
|
|
- this.$Message.warning('请先选择一个模块')
|
|
|
+ this.$Message.warning(this.$t('activity.message.field14'))
|
|
|
break
|
|
|
}
|
|
|
if(needBreak) break
|
|
@@ -1132,7 +1131,7 @@ export default {
|
|
|
case 0:
|
|
|
this.$refs['createData'].validate((valid) => {
|
|
|
if (!valid) {
|
|
|
- this.$Message.error('请完善信息!');
|
|
|
+ this.$Message.error(this.$t('activity.message.field15'));
|
|
|
needBreak = true
|
|
|
}
|
|
|
})
|
|
@@ -1229,11 +1228,11 @@ export default {
|
|
|
case 2:
|
|
|
if(actTime.length > 1 && !this.contestData.sign.etime) {
|
|
|
// this.$refs.workPicker[0].handleClear()
|
|
|
- this.$Message.warning('请先设置报名时间')
|
|
|
+ this.$Message.warning(this.$t('activity.message.field16'))
|
|
|
this.spliceTime(['upload'])
|
|
|
} else if(actTime.length > 1 && (new Date(actTime[1])).getTime() < this.contestData.sign.etime) {
|
|
|
// this.$refs.workPicker[0].handleClear()
|
|
|
- this.$Message.warning('上传结束时间不能早于报名时间')
|
|
|
+ this.$Message.warning(this.$t('activity.message.field17'))
|
|
|
this.spliceTime(['upload'])
|
|
|
} else if(actTime.length > 1) {
|
|
|
this.contestUpload.stime = actTime.length > 1 ? (new Date(actTime[0])).getTime() : null
|
|
@@ -1245,11 +1244,11 @@ export default {
|
|
|
case 3:
|
|
|
if(actTime.length > 1 && (!this.contestData.sign.etime || !this.contestUpload.etime)) {
|
|
|
// this.$refs.reviewPicker[0].handleClear()
|
|
|
- this.$Message.warning('请先设置报名时间、上传时间')
|
|
|
+ this.$Message.warning(this.$t('activity.message.field18'))
|
|
|
this.spliceTime(['review'])
|
|
|
} else if(actTime.length > 1 && ((new Date(actTime[0])).getTime() < this.contestData.sign.etime || (new Date(actTime[0])).getTime() < this.contestUpload.etime)) {
|
|
|
// this.$refs.reviewPicker[0].handleClear()
|
|
|
- this.$Message.warning('评审必须在报名、上传结束后进行')
|
|
|
+ this.$Message.warning(this.$t('activity.message.field19'))
|
|
|
this.spliceTime(['review'])
|
|
|
} else if(actTime.length > 1) {
|
|
|
this.contestReview.stime = actTime.length > 1 ? (new Date(actTime[0])).getTime() : null
|
|
@@ -1261,11 +1260,11 @@ export default {
|
|
|
case 4:
|
|
|
if(actTime.length > 1 && !this.contestReview.etime) {
|
|
|
// this.$refs.scorePicker[0].handleClear()
|
|
|
- this.$Message.warning('请先设置评审时间')
|
|
|
+ this.$Message.warning(this.$t('activity.message.field20'))
|
|
|
this.spliceTime(['score'])
|
|
|
} else if(actTime.length > 1 && (new Date(actTime[0])).getTime() < this.contestReview.etime) {
|
|
|
// this.$refs.scorePicker[0].handleClear()
|
|
|
- this.$Message.warning('公示必须在评审结束后进行')
|
|
|
+ this.$Message.warning(this.$t('activity.message.field21'))
|
|
|
this.spliceTime(['score'])
|
|
|
} else if(actTime.length > 1) {
|
|
|
this.contestScore.stime = actTime.length > 1 ? (new Date(actTime[0])).getTime() : null
|
|
@@ -1346,7 +1345,7 @@ export default {
|
|
|
if(this.attachment.find(item => {
|
|
|
return item.name === file.name
|
|
|
})) {
|
|
|
- this.$Message.warning('存在相同文件,请重新上传!')
|
|
|
+ this.$Message.warning(this.$t('activity.message.field22'))
|
|
|
return
|
|
|
}
|
|
|
let newFile = {
|
|
@@ -1410,7 +1409,7 @@ export default {
|
|
|
return item.label === this.addInfoForm.label
|
|
|
})
|
|
|
if(isHold && this.addInfoType === 1) {
|
|
|
- this.$Message.warning('该信息已存在!')
|
|
|
+ this.$Message.warning(this.$t('activity.message.field23'))
|
|
|
} else {
|
|
|
if(this.addInfoType === 1) {
|
|
|
this.addInfoForm.field = this.addInfoForm.label
|
|
@@ -1469,7 +1468,7 @@ export default {
|
|
|
this.ruleInfo = this._.cloneDeep(this.reviewList[index])
|
|
|
if(type === 'copy') {
|
|
|
this.ruleInfo.isAdd = true
|
|
|
- this.ruleInfo.name = this.ruleInfo.name + '(复制)'
|
|
|
+ this.ruleInfo.name = this.ruleInfo.name + '(' + this.$t('learnActivity.mgtScEv.copy') +')'
|
|
|
}
|
|
|
}
|
|
|
this.ruleDrawerAdd = type === 'edit' ? 1 : 2
|
|
@@ -1494,8 +1493,8 @@ export default {
|
|
|
},
|
|
|
delRule(data, index) {
|
|
|
this.$Modal.confirm({
|
|
|
- title: '删除评审规则',
|
|
|
- content: `确认删除${data.name}吗?`,
|
|
|
+ title: this.$t('activity.modal.text1'),
|
|
|
+ content: `${this.$t('cusMgt.delGroupContent')}${data.name}?`,
|
|
|
onOk: () => {
|
|
|
if(data.isAdd) {
|
|
|
this.reviewList.splice(index, 1)
|