markdown修复

dev_review
yujialong 1 year ago
parent 8082bc6975
commit 354171d454
  1. 30
      src/components/quill/index.vue
  2. 2
      src/setting.js
  3. 19
      src/views/customer/AddCustomer.vue
  4. 211
      src/views/match/manage/matchInfo.vue
  5. 12
      src/views/serve/projectAdd.vue

@ -2,13 +2,13 @@
<div> <div>
<el-radio-group v-if="!readonly" <el-radio-group v-if="!readonly"
class="type-radio" class="type-radio"
v-model="type" v-model="editorType"
@change="typeChange"> @change="typeChange">
<el-radio :label="0">富文本</el-radio> <el-radio label="0">富文本</el-radio>
<el-radio :label="1">markdown</el-radio> <el-radio label="1">markdown</el-radio>
</el-radio-group> </el-radio-group>
<div v-show="!type" <div v-show="editorType == 0"
class="quill" class="quill"
ref="quill" ref="quill"
:class="classes"> :class="classes">
@ -26,7 +26,7 @@
</div> </div>
<mavon-editor class="md" <mavon-editor class="md"
v-model="mdVal" v-model="mdVal"
v-show="type" v-show="editorType == 1"
ref="md" ref="md"
:ishljs="true" :ishljs="true"
:subfield="false" :subfield="false"
@ -79,14 +79,19 @@ export default {
*/ */
elseRead: { elseRead: {
type: String, default: 'false' type: String, default: 'false'
} },
//
type: {
type: String,
default: '0'
},
}, },
data () { data () {
return { return {
headers: { headers: {
token: sessionStorage.getItem('token') token: sessionStorage.getItem('token')
}, },
type: 0, editorType: '0',
mdVal: '', mdVal: '',
Quill: null, Quill: null,
currentValue: '', currentValue: '',
@ -136,17 +141,23 @@ export default {
}, },
watch: { watch: {
type: {
handler (val) {
this.editorType = val
},
immediate: true
},
value: { value: {
handler (val) { handler (val) {
if (!this.type) { if (this.type == 0) {
if (val !== this.currentValue) { if (val !== this.currentValue) {
this.currentValue = val; this.currentValue = val;
if (this.Quill) { if (this.Quill) {
this.Quill.pasteHTML(this.value); this.Quill.pasteHTML(this.value);
} }
} }
if (!this.mdVal) this.mdVal = val
} }
if (!this.mdVal) this.mdVal = val
}, },
immediate: true immediate: true
} }
@ -169,6 +180,7 @@ export default {
methods: { methods: {
// //
typeChange (val) { typeChange (val) {
this.$emit('update:type', val)
if (!this.mdVal) this.mdVal = this.value if (!this.mdVal) this.mdVal = this.value
}, },

@ -12,7 +12,7 @@ if (isDev) {
host = 'http://121.37.12.51/' host = 'http://121.37.12.51/'
// host = 'https://huorantech.cn/' // host = 'https://huorantech.cn/'
// host = 'http://192.168.31.217:9000/'// 榕 // host = 'http://192.168.31.217:9000/'// 榕
// host = 'http://192.168.31.51:9000/'// 赓 host = 'http://192.168.31.51:9000/'// 赓
} else if (isPro) { } else if (isPro) {
jumpPath = 'https://www.huorantech.cn/judgmentPoint/' jumpPath = 'https://www.huorantech.cn/judgmentPoint/'
} }

@ -992,8 +992,7 @@ export default {
this.customerVisible = false this.customerVisible = false
this.submiting = false this.submiting = false
this.$message.success('添加成功') this.$message.success('添加成功')
this.form.schoolId = res.schoolId this.getSchoolData(res.schoolId)
this.getSchoolData()
}).catch((res) => { }).catch((res) => {
this.submiting = false this.submiting = false
}) })
@ -1136,14 +1135,24 @@ export default {
this.form.customerName = '' this.form.customerName = ''
}, },
// / // /
getSchoolData () { getSchoolData (schoolId) {
let data = { let data = {
schoolName: '', schoolName: '',
provinceId: '', provinceId: '',
cityId: '' cityId: ''
} }
this.$get(this.api.querySchoolData).then(res => { this.$get(this.api.querySchoolData).then(({ list }) => {
this.schoolList = res.list this.schoolList = list
// schoolId
if (schoolId) {
const item = list.find(e => e.schoolId == schoolId)
if (item) {
this.form.schoolId = schoolId
this.form.provinceId = item.provinceId
this.getCityData()
this.form.cityId = item.cityId
}
}
}).catch(res => { }); }).catch(res => { });
}, },
// //

@ -1,27 +1,35 @@
<template> <template>
<div style="padding: 0 100px;"> <div style="padding: 0 100px;">
<el-card shadow="hover" class="m-b-20 head-card"> <el-card shadow="hover"
class="m-b-20 head-card">
<div class="flex-between"> <div class="flex-between">
<el-page-header @back="$router.back()" content="参赛信息与成绩"></el-page-header> <el-page-header @back="$router.back()"
content="参赛信息与成绩"></el-page-header>
</div> </div>
</el-card> </el-card>
<el-card shadow="hover" class="m-b-20"> <el-card shadow="hover"
class="m-b-20">
<div style="display: flex;align-items: center"> <div style="display: flex;align-items: center">
<table v-if="form.completeCompetitionSetup.competitionType" class="table m-b-20 m-r-10"> <table v-if="form.completeCompetitionSetup.competitionType"
class="table m-b-20 m-r-10">
<tr> <tr>
<th width="150">团队名称</th> <th width="150">团队名称</th>
<td> <td>
<el-input :disabled="!editing" v-model="info.team.teamName"></el-input> <el-input :disabled="!editing"
v-model="info.team.teamName"></el-input>
</td> </td>
<th width="150">团队邀请码</th> <th width="150">团队邀请码</th>
<td> <td>
<el-input :disabled="!editing" v-model="info.team.invitationCode"></el-input> <el-input :disabled="!editing"
v-model="info.team.invitationCode"></el-input>
</td> </td>
</tr> </tr>
</table> </table>
<div v-if="form.completeCompetitionSetup.competitionType && status < 4" class="m-b-20 text-center"> <div v-if="form.completeCompetitionSetup.competitionType && status < 4"
<el-button type="primary" @click="edit(1)">{{ editing ? '保存' : '编辑' }}</el-button> class="m-b-20 text-center">
<el-button type="primary"
@click="edit(1)">{{ editing ? '保存' : '编辑' }}</el-button>
</div> </div>
</div> </div>
<table class="table"> <table class="table">
@ -48,7 +56,9 @@
<tr> <tr>
<th>团队成员</th> <th>团队成员</th>
<td> <td>
<el-tag v-for="(item, i) in info.teamDetail" :key="i" style="margin-right: 5px">{{ item.userName }}</el-tag> <el-tag v-for="(item, i) in info.teamDetail"
:key="i"
style="margin-right: 5px">{{ item.userName }}</el-tag>
</td> </td>
</tr> </tr>
</template> </template>
@ -56,17 +66,40 @@
<tr> <tr>
<th width="130">指导老师</th> <th width="130">指导老师</th>
<td> <td>
<div v-if="status < 5" class="plus"> <div v-if="status < 5"
<i class="el-icon-circle-plus-outline icon" @click="addAdvisor"></i> class="plus">
<i class="el-icon-circle-plus-outline icon"
@click="addAdvisor"></i>
</div> </div>
<div v-for="(item, i) in info.teamInstructors" :key="i" class="line"> <div v-for="(item, i) in info.teamInstructors"
<el-input placeholder="请输入姓名" v-model="item.name" clearable size="mini" :disabled="!item.edit"></el-input> :key="i"
<el-input placeholder="请输入职务" maxlength="10" v-model="item.position" clearable size="mini" :disabled="!item.edit"></el-input> class="line">
<el-input placeholder="请输入手机号" maxlength="11" v-model="item.phone" clearable size="mini" :disabled="!item.edit"></el-input> <el-input placeholder="请输入姓名"
v-model="item.name"
clearable
size="mini"
:disabled="!item.edit"></el-input>
<el-input placeholder="请输入职务"
maxlength="10"
v-model="item.position"
clearable
size="mini"
:disabled="!item.edit"></el-input>
<el-input placeholder="请输入手机号"
maxlength="11"
v-model="item.phone"
clearable
size="mini"
:disabled="!item.edit"></el-input>
<template v-if="status < 5"> <template v-if="status < 5">
<i v-if="item.edit" class="el-icon-check icon" @click="submitAdvisor(item)"></i> <i v-if="item.edit"
<i v-else class="el-icon-edit icon" @click="editAdvisor(item)"></i> class="el-icon-check icon"
<i class="el-icon-delete icon" @click="delAdvisor(item, i)"></i> @click="submitAdvisor(item)"></i>
<i v-else
class="el-icon-edit icon"
@click="editAdvisor(item)"></i>
<i class="el-icon-delete icon"
@click="delAdvisor(item, i)"></i>
</template> </template>
</div> </div>
</td> </td>
@ -86,15 +119,15 @@
<th>竞赛成绩</th> <th>竞赛成绩</th>
</tr> </tr>
<template v-if="info.stages.length"> <template v-if="info.stages.length">
<tr v-for="(item, i) in info.stages" :key="i"> <tr v-for="(item, i) in info.stages"
:key="i">
<td>{{ i + 1 }}</td> <td>{{ i + 1 }}</td>
<td>{{ item.stageName }}</td> <td>{{ item.stageName }}</td>
<template v-if="form.completeCompetitionSetup.competitionType"> <template v-if="form.completeCompetitionSetup.competitionType">
<td>{{ item.teamNumLimit || '不限制' }}</td> <td>{{ item.teamNumLimit || '不限制' }}</td>
<td> <td>
<template v-if="item.participants"> <template v-if="item.participants">
<el-tag <el-tag v-for="tag in item.participants"
v-for="tag in item.participants"
:key="tag.name" :key="tag.name"
class="m-r-5" class="m-r-5"
closable closable
@ -102,14 +135,20 @@
{{tag.name}} {{tag.name}}
</el-tag> </el-tag>
</template> </template>
<span v-else class="m-r-5"></span> <span v-else
<i class="el-icon-edit icon" @click="selectPar(item)"></i> class="m-r-5"></span>
<i class="el-icon-edit icon"
@click="selectPar(item)"></i>
</td> </td>
</template> </template>
<td v-if="form.rule === 0 && !i" :rowspan="info.stages.length">{{ info.totalScore }}</td> <td v-if="form.rule === 0 && !i"
:rowspan="info.stages.length">{{ info.totalScore }}</td>
<td> <td>
<span v-if="item.score >= 0" class="m-r-10">分数{{item.score}}</span> <span v-if="item.score >= 0"
<el-button type="text" :disabled="item.resultsDetails === 1 || (form.completeCompetitionSetup.competitionType && !item.reportId) || (form.completeCompetitionSetup.competitionType === 0 && !item.reportId)" @click="show(item)">查看成绩详情</el-button> class="m-r-10">分数{{item.score}}</span>
<el-button type="text"
:disabled="item.resultsDetails === 1 || (form.completeCompetitionSetup.competitionType && !item.reportId) || (form.completeCompetitionSetup.competitionType === 0 && !item.reportId)"
@click="show(item)">查看成绩详情</el-button>
</td> </td>
</tr> </tr>
</template> </template>
@ -117,8 +156,7 @@
<td colspan="6">暂无数据</td> <td colspan="6">暂无数据</td>
</tr> </tr>
</table> </table>
<el-alert <el-alert v-if="form.completeCompetitionSetup.competitionType"
v-if="form.completeCompetitionSetup.competitionType"
style="margin-top: 10px;" style="margin-top: 10px;"
:title="'注:请团长(团队创建人)设置各阶段参赛成员,只有被选择的允许参赛成员可进入对应阶段比赛' + (info.teamLimit ? ',每个团队成员只能参加一个赛项阶段' : '') + '!'" :title="'注:请团长(团队创建人)设置各阶段参赛成员,只有被选择的允许参赛成员可进入对应阶段比赛' + (info.teamLimit ? ',每个团队成员只能参加一个赛项阶段' : '') + '!'"
type="warning" type="warning"
@ -132,43 +170,86 @@
<div class="l-title m-t-20">团队成员</div> <div class="l-title m-t-20">团队成员</div>
<div class="flex-center"> <div class="flex-center">
<p>队长{{ info.caption.userName }}</p> <p>队长{{ info.caption.userName }}</p>
<el-button type="primary" @click="transfer">转让队长</el-button> <el-button type="primary"
@click="transfer">转让队长</el-button>
</div> </div>
<el-table :data="info.teamDetail" stripe header-align="center"> <el-table :data="info.teamDetail"
<el-table-column prop="userName" label="成员姓名" min-width="100" align="center"></el-table-column> stripe
<el-table-column prop="schoolName" label="学校" min-width="100" align="center"></el-table-column> header-align="center">
<el-table-column prop="workNumber" label="学号" min-width="100" align="center"></el-table-column> <el-table-column prop="userName"
<el-table-column prop="createTime" label="加入时间" width="180" align="center"></el-table-column> label="成员姓名"
<el-table-column label="操作" align="center" width="160"> min-width="100"
align="center"></el-table-column>
<el-table-column prop="schoolName"
label="学校"
min-width="100"
align="center"></el-table-column>
<el-table-column prop="workNumber"
label="学号"
min-width="100"
align="center"></el-table-column>
<el-table-column prop="createTime"
label="加入时间"
width="180"
align="center"></el-table-column>
<el-table-column label="操作"
align="center"
width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-if="scope.row.captain" type="text" @click="removeLine(scope.row)">踢出团队</el-button> <el-button v-if="scope.row.captain"
type="text"
@click="removeLine(scope.row)">踢出团队</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</template> </template>
</el-card> </el-card>
<el-dialog title="选择参赛成员" :visible.sync="transferVisible" :close-on-click-modal="false" width="400px"> <el-dialog title="选择参赛成员"
:visible.sync="transferVisible"
:close-on-click-modal="false"
width="400px">
<template v-for="(item, i) in info.teamDetail"> <template v-for="(item, i) in info.teamDetail">
<el-radio v-if="item.captain" :key="i" v-model="checkedPlayer" :label="item.teamId">{{ item.userName }}</el-radio> <el-radio v-if="item.captain"
:key="i"
v-model="checkedPlayer"
:label="item.teamId">{{ item.userName }}</el-radio>
</template> </template>
<span slot="footer" class="dialog-footer"> <span slot="footer"
<el-button size="small" type="primary" @click="transferSubmit">确定</el-button> class="dialog-footer">
<el-button size="small" @click="transferVisible = false">取消</el-button> <el-button size="small"
type="primary"
@click="transferSubmit">确定</el-button>
<el-button size="small"
@click="transferVisible = false">取消</el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog title="选择参赛成员" :visible.sync="chooseVisible" :close-on-click-modal="false" width="400px"> <el-dialog title="选择参赛成员"
:visible.sync="chooseVisible"
:close-on-click-modal="false"
width="400px">
<el-checkbox-group v-model="checkedMembers"> <el-checkbox-group v-model="checkedMembers">
<el-checkbox v-for="(item, i) in chooses" :key="i" :label="item.accountId">{{ item.userName }}</el-checkbox> <el-checkbox v-for="(item, i) in chooses"
:key="i"
:label="item.accountId">{{ item.userName }}</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
<p v-if="info.teamLimit && curRow.teamNumLimit" style="margin-top: 15px;font-size: 12px;">当前阶段限制{{ curRow.teamNumLimit }}人参赛且此竞赛每个成员只能参加一个阶段赛项</p> <p v-if="info.teamLimit && curRow.teamNumLimit"
<span slot="footer" class="dialog-footer"> style="margin-top: 15px;font-size: 12px;">当前阶段限制{{ curRow.teamNumLimit }}人参赛且此竞赛每个成员只能参加一个阶段赛项</p>
<el-button size="small" type="primary" @click="chooseSubmit">确定</el-button> <span slot="footer"
<el-button size="small" @click="chooseVisible = false">取消</el-button> class="dialog-footer">
<el-button size="small"
type="primary"
@click="chooseSubmit">确定</el-button>
<el-button size="small"
@click="chooseVisible = false">取消</el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog title="团队得分详情" :visible.sync="memberVisible" width="900px" :close-on-click-modal="false"> <el-dialog title="团队得分详情"
<h6 v-if="members.length" style="margin-bottom: 10px;font-size: 16px;">团队名称{{ members[0].teamName }} 阶段名称{{ curRow.stageName }}</h6> :visible.sync="memberVisible"
width="900px"
:close-on-click-modal="false">
<h6 v-if="members.length"
style="margin-bottom: 10px;font-size: 16px;">团队名称{{ members[0].teamName }} 阶段名称{{ curRow.stageName }}</h6>
<table class="table tc"> <table class="table tc">
<tr> <tr>
<th width="60">序号</th> <th width="60">序号</th>
@ -179,14 +260,16 @@
<th width="100">得分详情</th> <th width="100">得分详情</th>
</tr> </tr>
<template v-if="members.length"> <template v-if="members.length">
<tr v-for="(item, i) in members" :key="i"> <tr v-for="(item, i) in members"
:key="i">
<td>{{ i + 1 }}</td> <td>{{ i + 1 }}</td>
<td>{{ item.userName }}</td> <td>{{ item.userName }}</td>
<td>{{ item.schoolName }}</td> <td>{{ item.schoolName }}</td>
<td>{{ item.timeSum }}min</td> <td>{{ item.timeSum }}min</td>
<td>{{ item.score }}</td> <td>{{ item.score }}</td>
<td> <td>
<el-button type="text" @click="toReport(item)">查看</el-button> <el-button type="text"
@click="toReport(item)">查看</el-button>
</td> </td>
</tr> </tr>
</template> </template>
@ -194,8 +277,11 @@
<td colspan="6">暂无数据</td> <td colspan="6">暂无数据</td>
</tr> </tr>
</table> </table>
<span slot="footer" class="dialog-footer"> <span slot="footer"
<el-button size="small" type="primary" @click="memberVisible = false">确定</el-button> class="dialog-footer">
<el-button size="small"
type="primary"
@click="memberVisible = false">确定</el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
@ -444,13 +530,13 @@ export default {
// //
const now = new Date() const now = new Date()
let start = 0 let start = 0
for (const e of this.form.competitionStage) { // for (const e of this.form.competitionStage) {
if (now >= new Date(e.startTime) && now <= new Date(e.endTime)) { // if (now >= new Date(e.startTime) && now <= new Date(e.endTime)) {
util.errorMsg('比赛已经开始,无法踢出成员!') // util.errorMsg('')
start = 1 // start = 1
break // break
} // }
} // }
if (!start) { if (!start) {
let include let include
for (const e of this.info.stages) { for (const e of this.info.stages) {
@ -582,7 +668,8 @@ export default {
.table { .table {
width: 100%; width: 100%;
border-collapse: collapse; border-collapse: collapse;
th, td { th,
td {
padding: 12px; padding: 12px;
border: 1px solid #ebeef5; border: 1px solid #ebeef5;
} }
@ -599,7 +686,7 @@ export default {
color: #7a7a7a; color: #7a7a7a;
cursor: pointer; cursor: pointer;
&:hover { &:hover {
color: #007EFF; color: #007eff;
} }
} }
.plus { .plus {

@ -70,6 +70,7 @@
<quill :border="true" <quill :border="true"
:readonly="isDetail" :readonly="isDetail"
v-model="projectManage.experimentTarget" v-model="projectManage.experimentTarget"
:type.sync="projectManage.experimentTargetType"
:minHeight="150" :minHeight="150"
:height="150" /> :height="150" />
</el-form-item> </el-form-item>
@ -90,6 +91,7 @@
<quill :border="true" <quill :border="true"
:readonly="isDetail" :readonly="isDetail"
v-model="projectManage.experimentDescription" v-model="projectManage.experimentDescription"
:type.sync="projectManage.experimentDescriptionType"
:minHeight="150" :minHeight="150"
:height="150" /> :height="150" />
</el-form-item> </el-form-item>
@ -241,6 +243,7 @@
<quill :border="true" <quill :border="true"
:readonly="isDetail" :readonly="isDetail"
v-model="projectManage.experimentHint" v-model="projectManage.experimentHint"
:type.sync="projectManage.experimentHintType"
:minHeight="150" :minHeight="150"
:height="150" /> :height="150" />
</el-form-item> </el-form-item>
@ -337,7 +340,10 @@ export default {
state: 0, // (0稿 1) state: 0, // (0稿 1)
isOpen: 0, // (0 1 0) isOpen: 0, // (0 1 0)
ztOpen: 0, // (0 1 0) ztOpen: 0, // (0 1 0)
isDel: 0 // (0 1 0) isDel: 0, // (0 1 0)
experimentTargetType: '0',
experimentDescriptionType: '0',
experimentHintType: '0',
}, },
projectJudgmentData: [], //() projectJudgmentData: [], //()
oriPer: '', // oriPer: '', //
@ -431,6 +437,9 @@ export default {
this.$get(`${this.api.getProjectDetail}?projectId=${this.projectId}`).then(res => { this.$get(`${this.api.getProjectDetail}?projectId=${this.projectId}`).then(res => {
let { projectManage, projectJudgmentVos } = res; let { projectManage, projectJudgmentVos } = res;
if (!projectManage.remark) projectManage.remark = projectManage.projectName // if (!projectManage.remark) projectManage.remark = projectManage.projectName //
if (!projectManage.experimentDescriptionType) projectManage.experimentDescriptionType = '0'
if (!projectManage.experimentHintType) projectManage.experimentHintType = '0'
if (!projectManage.experimentTargetType) projectManage.experimentTargetType = '0'
this.projectManage = projectManage; this.projectManage = projectManage;
this.projectJudgmentData = projectJudgmentVos; this.projectJudgmentData = projectJudgmentVos;
this.oriPer = projectManage.permissions this.oriPer = projectManage.permissions
@ -529,6 +538,7 @@ export default {
this.submiting = true this.submiting = true
this.$store.dispatch("setSystemId", this.projectManage.systemId); this.$store.dispatch("setSystemId", this.projectManage.systemId);
this.projectManage.state = state; this.projectManage.state = state;
console.log("🚀 ~ file: projectAdd.vue:537 ~ handleSubmit ~ this.projectManage:", this.projectManage)
this.projectManage.ztOpen = state ? 0 : 1 this.projectManage.ztOpen = state ? 0 : 1
let { systemId } = this.projectManage; let { systemId } = this.projectManage;
if (this.projectId) { if (this.projectId) {

Loading…
Cancel
Save