|
@@ -43,12 +43,13 @@
|
|
{{ getDict(scope.row.final_confirm, 'final_confirm') || '暂无' }}
|
|
{{ getDict(scope.row.final_confirm, 'final_confirm') || '暂无' }}
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="order_no" align="center" label="排序"> </el-table-column>
|
|
|
|
|
|
+ <el-table-column prop="final_order_no" align="center" label="排序"> </el-table-column>
|
|
<el-table-column align="center" label="操作" width="160">
|
|
<el-table-column align="center" label="操作" width="160">
|
|
<template #default="{ row }">
|
|
<template #default="{ row }">
|
|
<el-link :underline="false" type="primary" size="mini" @click="toView(row, true)" style="margin-right: 10px">查看</el-link>
|
|
<el-link :underline="false" type="primary" size="mini" @click="toView(row, true)" style="margin-right: 10px">查看</el-link>
|
|
- <el-link :underline="false" v-if="info.ext_status == '5' && row.final_confirm == '0'" type="primary" size="mini" @click="toLink(row)">排序</el-link>
|
|
|
|
- <el-link :underline="false" v-if="info.ext_status == '7'" type="primary" size="mini" @click="toScore(row)">上传决赛分数</el-link>
|
|
|
|
|
|
+ <el-link :underline="false" v-if="info.ext_status == '5' && row.final_confirm == '0'" type="primary" size="mini" @click="toLink(row)" style="margin-right: 10px">排序</el-link>
|
|
|
|
+ <el-link :underline="false" v-if="info.ext_status == '7'" type="primary" size="mini" @click="toScore(row)" style="margin-right: 10px">上传决赛分数</el-link>
|
|
|
|
+ <el-link :underline="false" v-if="info.ext_status == '7'" type="primary" size="mini" @click="toTotalScore(row)">总分</el-link>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
@@ -97,14 +98,20 @@
|
|
</el-descriptions>
|
|
</el-descriptions>
|
|
</div>
|
|
</div>
|
|
<div v-else-if="dialog.type == '2'">
|
|
<div v-else-if="dialog.type == '2'">
|
|
- <el-form ref="scoreFormRef" :model="scoreForm" :rules="scoreRules" label-width="auto" class="form" label-position="left">
|
|
|
|
- <el-form-item label="决赛总分数" prop="final_score">
|
|
|
|
- <el-input v-model="scoreForm.final_score" type="number" placeholder="请输入决赛总分数" />
|
|
|
|
- </el-form-item>
|
|
|
|
- <div style="text-align: center">
|
|
|
|
- <el-button type="primary" @click="onSubmit(scoreFormRef)">保存初审分数</el-button>
|
|
|
|
- </div>
|
|
|
|
- </el-form>
|
|
|
|
|
|
+ <el-col :span="24" class="add">
|
|
|
|
+ <el-button type="primary" @click="addScore()">添加</el-button>
|
|
|
|
+ </el-col>
|
|
|
|
+ <el-table :data="detailsList" border>
|
|
|
|
+ <el-table-column type="index" label="序号" width="80" align="center"> </el-table-column>
|
|
|
|
+ <el-table-column prop="name" label="专家姓名" align="center"> </el-table-column>
|
|
|
|
+ <el-table-column prop="score" label="分数" align="center"> </el-table-column>
|
|
|
|
+ <el-table-column label="操作" align="center" width="200">
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <el-button size="mini" type="primary" @click="upadteScore(scope.row)">修改</el-button>
|
|
|
|
+ <el-button size="mini" type="danger" @click="delScore(scope.row)">删除</el-button>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
</div>
|
|
</div>
|
|
<div v-else-if="dialog.type == '3'">
|
|
<div v-else-if="dialog.type == '3'">
|
|
<el-table :data="supplementList" style="width: 100%" size="large" :header-cell-style="{ backgroundColor: '#edf3ff' }">
|
|
<el-table :data="supplementList" style="width: 100%" size="large" :header-cell-style="{ backgroundColor: '#edf3ff' }">
|
|
@@ -136,11 +143,50 @@
|
|
</div>
|
|
</div>
|
|
</el-form>
|
|
</el-form>
|
|
</div>
|
|
</div>
|
|
|
|
+ <div v-else-if="dialog.type == '5'">
|
|
|
|
+ <el-form ref="totalFormRef" :model="totalForm" :rules="totalRules" label-width="auto" class="form" label-position="left">
|
|
|
|
+ <el-form-item label="决赛总分数" prop="final_score">
|
|
|
|
+ <el-input v-model="totalForm.final_score" type="number" placeholder="请输入决赛总分数" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <div style="text-align: center">
|
|
|
|
+ <el-button type="primary" @click="onTSubmit(totalFormRef)">保存</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </el-form>
|
|
|
|
+ </div>
|
|
|
|
+ </el-dialog>
|
|
|
|
+ <el-dialog v-model="dialogVisible" title="分数信息填写" width="800" :destroy-on-close="false" @close="toSclose">
|
|
|
|
+ <el-form ref="scoreFormRef" :model="scoreForm" :rules="scoreRules" label-width="auto" class="form" label-position="left">
|
|
|
|
+ <el-form-item label="专家姓名" prop="name">
|
|
|
|
+ <el-input v-model="scoreForm.name" placeholder="请输入专家姓名" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="决赛分数" prop="score">
|
|
|
|
+ <el-input v-model="scoreForm.score" type="number" placeholder="请输入决赛分数" />
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <el-form-item label="维度" prop="details">
|
|
|
|
+ <el-table :data="scoreForm.details" border>
|
|
|
|
+ <el-table-column type="index" label="序号" width="80" align="center"> </el-table-column>
|
|
|
|
+ <el-table-column prop="title" label="维度名称" align="center">
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <el-input v-model="scope.row.title" placeholder="请输入维度名称" />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column prop="score" label="维度分数" align="center">
|
|
|
|
+ <template #default="scope">
|
|
|
|
+ <el-input v-model="scope.row.score" type="number" placeholder="请输入维度分数" />
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </el-form-item>
|
|
|
|
+ <div style="text-align: center">
|
|
|
|
+ <el-button type="primary" @click="onSubmit(scoreFormRef)">保存</el-button>
|
|
|
|
+ </div>
|
|
|
|
+ </el-form>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script setup>
|
|
<script setup>
|
|
-import { get } from 'lodash-es'
|
|
|
|
|
|
+import moment from 'moment'
|
|
|
|
+import { cloneDeep, get } from 'lodash-es'
|
|
const id = ref('')
|
|
const id = ref('')
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
info: { type: Object }
|
|
info: { type: Object }
|
|
@@ -184,13 +230,22 @@ const selectionList = ref([])
|
|
const is_look = ref(false)
|
|
const is_look = ref(false)
|
|
|
|
|
|
// 上传分数
|
|
// 上传分数
|
|
-const scoreForm = ref({})
|
|
|
|
|
|
+const scoreForm = ref({ details: [] })
|
|
// 表单
|
|
// 表单
|
|
const scoreFormRef = ref()
|
|
const scoreFormRef = ref()
|
|
const scoreRules = reactive({
|
|
const scoreRules = reactive({
|
|
- score: [{ required: true, message: '请输入初审分数', trigger: 'blur' }]
|
|
|
|
|
|
+ name: [{ required: true, message: '请输入专家姓名', trigger: 'blur' }],
|
|
|
|
+ score: [{ required: true, message: '请输入决赛分数', trigger: 'blur' }]
|
|
})
|
|
})
|
|
|
|
+const dialogVisible = ref(false)
|
|
|
|
|
|
|
|
+// 决赛总分数
|
|
|
|
+const totalForm = ref({ details: [] })
|
|
|
|
+// 表单
|
|
|
|
+const totalFormRef = ref()
|
|
|
|
+const totalRules = reactive({
|
|
|
|
+ final_score: [{ required: true, message: '请输入决赛总分数', trigger: 'blur' }]
|
|
|
|
+})
|
|
// 顺序
|
|
// 顺序
|
|
const orderForm = ref({})
|
|
const orderForm = ref({})
|
|
// 表单
|
|
// 表单
|
|
@@ -202,7 +257,10 @@ const orderRules = reactive({
|
|
// 补充人员列表
|
|
// 补充人员列表
|
|
const supplementList = ref([])
|
|
const supplementList = ref([])
|
|
|
|
|
|
-const emits = defineEmits(['step5Time', 'toExport', 'toMessage', 'toStep6', 'toPerson', 'toStep7', 'toStep8'])
|
|
|
|
|
|
+// 分数设置
|
|
|
|
+const detailsList = ref([])
|
|
|
|
+
|
|
|
|
+const emits = defineEmits(['step5Time', 'toExport', 'toMessage', 'toStep6', 'toPerson', 'toStep7', 'toStep8', 'step7Score', 'totalScore'])
|
|
|
|
|
|
const search = async (query = { skip, limit }) => {
|
|
const search = async (query = { skip, limit }) => {
|
|
skip = query.skip
|
|
skip = query.skip
|
|
@@ -282,9 +340,17 @@ const toLink = (data) => {
|
|
orderForm.value = data
|
|
orderForm.value = data
|
|
dialog.value = { type: '4', show: true, title: '排序' }
|
|
dialog.value = { type: '4', show: true, title: '排序' }
|
|
}
|
|
}
|
|
|
|
+// 总分
|
|
|
|
+const toTotalScore = (data) => {
|
|
|
|
+ totalForm.value = data
|
|
|
|
+ dialog.value = { type: '5', show: true, title: '总分' }
|
|
|
|
+}
|
|
// 上传决赛分数
|
|
// 上传决赛分数
|
|
const toScore = (data) => {
|
|
const toScore = (data) => {
|
|
- scoreForm.value = data
|
|
|
|
|
|
+ console.log(data)
|
|
|
|
+ form.value = data
|
|
|
|
+ if (data.final_score_details && data.final_score_details.length > 0) detailsList.value = data.final_score_details
|
|
|
|
+ if (match.value.ext_finals && match.value.ext_finals.length > 0) scoreForm.value.details = cloneDeep(match.value.ext_finals)
|
|
dialog.value = { type: '2', show: true, title: '上传决赛分数' }
|
|
dialog.value = { type: '2', show: true, title: '上传决赛分数' }
|
|
}
|
|
}
|
|
// 保存决赛分数
|
|
// 保存决赛分数
|
|
@@ -292,8 +358,28 @@ const onSubmit = async (formEl) => {
|
|
if (!formEl) return
|
|
if (!formEl) return
|
|
await formEl.validate((valid, fields) => {
|
|
await formEl.validate((valid, fields) => {
|
|
if (valid) {
|
|
if (valid) {
|
|
- const data = { id: id.value, reg_id: scoreForm.value.id, score: parseInt(scoreForm.value.score) }
|
|
|
|
- emits('step4Score', data)
|
|
|
|
|
|
+ const data = cloneDeep(scoreForm.value)
|
|
|
|
+ let details = detailsList.value.find((i) => i.sid == data.sid)
|
|
|
|
+ if (details) {
|
|
|
|
+ detailsList.value = detailsList.value.map((i) => {
|
|
|
|
+ if (i.sid == data.sid) return data
|
|
|
|
+ else return i
|
|
|
|
+ })
|
|
|
|
+ } else detailsList.value.push(data)
|
|
|
|
+ emits('step7Score', { id: form.value.id, final_score_details: detailsList.value })
|
|
|
|
+ toSclose()
|
|
|
|
+ } else {
|
|
|
|
+ console.log('error submit!', fields)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+// 决赛总分数
|
|
|
|
+const onTSubmit = async (formEl) => {
|
|
|
|
+ if (!formEl) return
|
|
|
|
+ await formEl.validate((valid, fields) => {
|
|
|
|
+ if (valid) {
|
|
|
|
+ const data = cloneDeep(totalForm.value)
|
|
|
|
+ emits('totalScore', { id: totalForm.value.id, final_score: data.final_score })
|
|
toClose()
|
|
toClose()
|
|
} else {
|
|
} else {
|
|
console.log('error submit!', fields)
|
|
console.log('error submit!', fields)
|
|
@@ -345,10 +431,32 @@ const toPerson = (data) => {
|
|
const toClose = async () => {
|
|
const toClose = async () => {
|
|
is_look.value = false
|
|
is_look.value = false
|
|
form.value = {}
|
|
form.value = {}
|
|
- scoreForm.value = {}
|
|
|
|
|
|
+ totalForm.value = {}
|
|
dialog.value = { show: false }
|
|
dialog.value = { show: false }
|
|
await search({ skip, limit })
|
|
await search({ skip, limit })
|
|
}
|
|
}
|
|
|
|
+const toSclose = async () => {
|
|
|
|
+ scoreForm.value = { details: [] }
|
|
|
|
+ if (match.value.ext_finals && match.value.ext_finals.length > 0) scoreForm.value.details = cloneDeep(match.value.ext_finals)
|
|
|
|
+ dialogVisible.value = false
|
|
|
|
+}
|
|
|
|
+// 添加
|
|
|
|
+const addScore = () => {
|
|
|
|
+ scoreForm.value = { sid: moment().valueOf(), name: '', score: 0, details: [] }
|
|
|
|
+ if (match.value.ext_finals && match.value.ext_finals.length > 0) scoreForm.value.details = cloneDeep(match.value.ext_finals)
|
|
|
|
+ dialogVisible.value = true
|
|
|
|
+}
|
|
|
|
+// 修改分数
|
|
|
|
+const upadteScore = (data) => {
|
|
|
|
+ scoreForm.value = data
|
|
|
|
+ dialogVisible.value = true
|
|
|
|
+}
|
|
|
|
+// 删除
|
|
|
|
+const delScore = async (e) => {
|
|
|
|
+ let list = detailsList.value.filter((i) => i.sid != e.sid)
|
|
|
|
+ detailsList.value = list
|
|
|
|
+ emits('step7Score', { id: form.value.id, final_score_details: detailsList.value })
|
|
|
|
+}
|
|
watch(
|
|
watch(
|
|
match,
|
|
match,
|
|
async (item) => {
|
|
async (item) => {
|
|
@@ -430,5 +538,8 @@ watch(
|
|
text-align: center;
|
|
text-align: center;
|
|
width: 10px !important; /* 设置你想要的宽度 */
|
|
width: 10px !important; /* 设置你想要的宽度 */
|
|
}
|
|
}
|
|
|
|
+ .add {
|
|
|
|
+ margin: 0 0 10px 0;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
</style>
|
|
</style>
|