提交 3c3ff73d authored 作者: 王鹏飞's avatar 王鹏飞

bump deps

上级 edc74df4
{ {
"globals": { "globals": {
"$": true,
"$$": true,
"$computed": true,
"$customRef": true,
"$ref": true,
"$shallowRef": true,
"$toRef": true,
"Component": true, "Component": true,
"ComponentPublicInstance": true, "ComponentPublicInstance": true,
"ComputedRef": true, "ComputedRef": true,
"EffectScope": true, "EffectScope": true,
"ExtractDefaultPropTypes": true,
"ExtractPropTypes": true,
"ExtractPublicPropTypes": true,
"InjectionKey": true, "InjectionKey": true,
"PropType": true, "PropType": true,
"Ref": true, "Ref": true,
"VNode": true, "VNode": true,
"WritableComputedRef": true,
"asyncComputed": true, "asyncComputed": true,
"autoResetRef": true, "autoResetRef": true,
"computed": true, "computed": true,
...@@ -106,6 +103,7 @@ ...@@ -106,6 +103,7 @@
"toReactive": true, "toReactive": true,
"toRef": true, "toRef": true,
"toRefs": true, "toRefs": true,
"toValue": true,
"triggerRef": true, "triggerRef": true,
"tryOnBeforeMount": true, "tryOnBeforeMount": true,
"tryOnBeforeUnmount": true, "tryOnBeforeUnmount": true,
...@@ -297,7 +295,6 @@ ...@@ -297,7 +295,6 @@
"watchThrottled": true, "watchThrottled": true,
"watchTriggerable": true, "watchTriggerable": true,
"watchWithFilter": true, "watchWithFilter": true,
"whenever": true, "whenever": true
"toValue": true
} }
} }
/* eslint-disable */ /* eslint-disable */
/* prettier-ignore */ /* prettier-ignore */
// @ts-nocheck // @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import // Generated by unplugin-auto-import
export {} export {}
declare global { declare global {
const $: typeof import('vue/macros')['$']
const $$: typeof import('vue/macros')['$$']
const $computed: typeof import('vue/macros')['$computed']
const $customRef: typeof import('vue/macros')['$customRef']
const $ref: typeof import('vue/macros')['$ref']
const $shallowRef: typeof import('vue/macros')['$shallowRef']
const $toRef: typeof import('vue/macros')['$toRef']
const EffectScope: typeof import('vue')['EffectScope'] const EffectScope: typeof import('vue')['EffectScope']
const asyncComputed: typeof import('@vueuse/core')['asyncComputed'] const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
const autoResetRef: typeof import('@vueuse/core')['autoResetRef'] const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
...@@ -300,5 +294,6 @@ declare global { ...@@ -300,5 +294,6 @@ declare global {
// for type re-export // for type re-export
declare global { declare global {
// @ts-ignore // @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue' export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
import('vue')
} }
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
"cert": "node ./cert.js" "cert": "node ./cert.js"
}, },
"dependencies": { "dependencies": {
"@element-plus/icons-vue": "^2.0.10", "@element-plus/icons-vue": "^2.3.1",
"@tinymce/tinymce-vue": "^5.0.0", "@tinymce/tinymce-vue": "^5.0.0",
"@vant/area-data": "^1.4.0", "@vant/area-data": "^1.5.1",
"@vueuse/core": "^9.13.0", "@vueuse/core": "^9.13.0",
"@vueuse/head": "^1.0.26", "@vueuse/head": "^1.0.26",
"@vueuse/integrations": "^9.13.0", "@vueuse/integrations": "^9.13.0",
...@@ -26,23 +26,24 @@ ...@@ -26,23 +26,24 @@
"blueimp-md5": "^2.19.0", "blueimp-md5": "^2.19.0",
"countup.js": "^2.6.2", "countup.js": "^2.6.2",
"dayjs": "^1.11.7", "dayjs": "^1.11.7",
"element-plus": "^2.2.32", "element-plus": "^2.4.4",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"filesize": "^10.0.7", "filesize": "^10.0.7",
"html-to-image": "^1.11.11", "html-to-image": "^1.11.11",
"html2pdf.js": "^0.10.1", "html2pdf.js": "^0.10.1",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"pinia": "^2.1.4", "pinia": "^2.1.7",
"print-js": "^1.6.0", "print-js": "^1.6.0",
"ua-parser-js": "^1.0.33", "ua-parser-js": "^1.0.33",
"universal-cookie": "^4.0.4", "universal-cookie": "^4.0.4",
"video.js": "^7.21.1", "video.js": "^7.21.1",
"vue": "^3.3.4", "vue": "^3.4.24",
"vue-router": "^4.2.2", "vue-router": "^4.3.2",
"vuedraggable": "^4.1.0" "vuedraggable": "^4.1.0"
}, },
"devDependencies": { "devDependencies": {
"@rushstack/eslint-patch": "^1.2.0", "@rushstack/eslint-patch": "^1.2.0",
"@tsconfig/node20": "^20.1.4",
"@types/ali-oss": "^6.16.8", "@types/ali-oss": "^6.16.8",
"@types/blueimp-md5": "^2.18.0", "@types/blueimp-md5": "^2.18.0",
"@types/file-saver": "^2.0.5", "@types/file-saver": "^2.0.5",
...@@ -50,17 +51,18 @@ ...@@ -50,17 +51,18 @@
"@types/node": "^20.3.1", "@types/node": "^20.3.1",
"@types/ua-parser-js": "^0.7.36", "@types/ua-parser-js": "^0.7.36",
"@types/video.js": "^7.3.52", "@types/video.js": "^7.3.52",
"@vitejs/plugin-vue": "^4.2.3", "@vitejs/plugin-vue": "^4.6.2",
"@vue/eslint-config-typescript": "^11.0.3", "@vue-macros/reactivity-transform": "^0.4.4",
"@vue/tsconfig": "^0.1.3", "@vue/eslint-config-typescript": "^12.0.0",
"@vue/tsconfig": "^0.5.1",
"chalk": "^5.2.0", "chalk": "^5.2.0",
"eslint": "^8.34.0", "eslint": "^8.34.0",
"eslint-plugin-vue": "^9.9.0", "eslint-plugin-vue": "^9.25.0",
"sass": "^1.58.3", "sass": "^1.58.3",
"typescript": "~4.9.5", "typescript": "~5.4.5",
"unplugin-auto-import": "^0.16.4", "unplugin-auto-import": "^0.17.5",
"vite": "^4.3.9", "vite": "^4.5.3",
"vite-plugin-checker": "^0.6.0", "vite-plugin-checker": "^0.6.4",
"vue-tsc": "^1.6.5" "vue-tsc": "^1.8.27"
} }
} }
...@@ -56,7 +56,7 @@ const qaURL = import.meta.env.VITE_QA_CENTER_URL ...@@ -56,7 +56,7 @@ const qaURL = import.meta.env.VITE_QA_CENTER_URL
</script> </script>
<template> <template>
<el-dialog title="评分" :close-on-click-modal="false" width="700px" @update:modelValue="$emit('update:modelValue')"> <el-dialog title="评分" :close-on-click-modal="false" width="700px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form label-suffix=":" v-if="detail"> <el-form label-suffix=":" v-if="detail">
<el-form-item label="赛项名称">{{ detail.competition_id_name }}</el-form-item> <el-form-item label="赛项名称">{{ detail.competition_id_name }}</el-form-item>
<el-form-item label="选手姓名">{{ detail.student_name }}</el-form-item> <el-form-item label="选手姓名">{{ detail.student_name }}</el-form-item>
......
...@@ -118,7 +118,7 @@ function handleUpdate() { ...@@ -118,7 +118,7 @@ function handleUpdate() {
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="80px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="报名赛项"> <el-form-item label="报名赛项">
<el-input v-model="form.competition_name" :disabled="isUpdate" /> <el-input v-model="form.competition_name" :disabled="isUpdate" />
......
...@@ -78,7 +78,7 @@ function handleSubmit() { ...@@ -78,7 +78,7 @@ function handleSubmit() {
</script> </script>
<template> <template>
<el-dialog title="大赛训练答疑" :close-on-click-modal="false" @update:modelValue="$emit('update:modelValue')"> <el-dialog title="大赛训练答疑" :close-on-click-modal="false" @update:modelValue="value => $emit('update:modelValue', value)">
<div class="discuss-scroll" ref="scrollRef"> <div class="discuss-scroll" ref="scrollRef">
<DiscussItem :info="detail.info" :list="detail.list" v-if="detail.info"></DiscussItem> <DiscussItem :info="detail.info" :list="detail.list" v-if="detail.info"></DiscussItem>
<div class="tips" v-if="isLoading"> <div class="tips" v-if="isLoading">
...@@ -90,13 +90,7 @@ function handleSubmit() { ...@@ -90,13 +90,7 @@ function handleSubmit() {
<div class="tips" v-if="!hasMore">没有更多了</div> <div class="tips" v-if="!hasMore">没有更多了</div>
</div> </div>
<el-form <el-form ref="formRef" :rules="rules" :model="form" style="margin-top: 40px" v-permission="'v1-teacher-discussion-comment'">
ref="formRef"
:rules="rules"
:model="form"
style="margin-top: 40px"
v-permission="'v1-teacher-discussion-comment'"
>
<el-form-item prop="content"> <el-form-item prop="content">
<el-input type="textarea" v-model="form.content" :autosize="{ minRows: 4, maxRows: 6 }" :maxlength="200" /> <el-input type="textarea" v-model="form.content" :autosize="{ minRows: 4, maxRows: 6 }" :maxlength="200" />
</el-form-item> </el-form-item>
......
...@@ -97,7 +97,7 @@ function handleUpdate() { ...@@ -97,7 +97,7 @@ function handleUpdate() {
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="120px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
<el-form-item label="所属部门/学校" prop="organization_id"> <el-form-item label="所属部门/学校" prop="organization_id">
<el-select v-model="form.organization_id" style="width: 100%" :disabled="isUpdate"> <el-select v-model="form.organization_id" style="width: 100%" :disabled="isUpdate">
......
...@@ -247,7 +247,7 @@ function handleDateRangeChange(value: any) { ...@@ -247,7 +247,7 @@ function handleDateRangeChange(value: any) {
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" align-center width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" align-center width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="110px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
<el-form-item label="赛项名称" prop="name"> <el-form-item label="赛项名称" prop="name">
<el-input v-model="form.name" :disabled="isUpdate" /> <el-input v-model="form.name" :disabled="isUpdate" />
......
...@@ -53,7 +53,7 @@ function handleSubmit() { ...@@ -53,7 +53,7 @@ function handleSubmit() {
</script> </script>
<template> <template>
<el-dialog title="添加专家" width="500px" @update:modelValue="$emit('update:modelValue')"> <el-dialog title="添加专家" width="500px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-position="right" label-width="100px" label-suffix=":"> <el-form ref="formRef" :model="form" :rules="rules" label-position="right" label-width="100px" label-suffix=":">
<el-form-item label="赛项名称">{{ detail.name }}</el-form-item> <el-form-item label="赛项名称">{{ detail.name }}</el-form-item>
<el-form-item label="角色" prop="role"> <el-form-item label="角色" prop="role">
......
...@@ -100,7 +100,7 @@ function handleRemoveClass(index: number) { ...@@ -100,7 +100,7 @@ function handleRemoveClass(index: number) {
</script> </script>
<template> <template>
<el-dialog title="评分专家列表" :close-on-click-modal="false" @update:modelValue="$emit('update:modelValue')"> <el-dialog title="评分专家列表" :close-on-click-modal="false" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form :disabled="disabled"> <el-form :disabled="disabled">
<AppList v-bind="listOptions" ref="appList"> <AppList v-bind="listOptions" ref="appList">
<template #header-buttons> <template #header-buttons>
......
...@@ -106,11 +106,7 @@ function handleUpdate(params: ContestBookUpdateParams) { ...@@ -106,11 +106,7 @@ function handleUpdate(params: ContestBookUpdateParams) {
</script> </script>
<template> <template>
<el-dialog <el-dialog title="编辑评分细则" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
title="编辑评分细则"
:close-on-click-modal="false"
width="600px"
@update:modelValue="$emit('update:modelValue')">
<el-form ref="formRef" :model="form" :rules="rules" label-width="124px" :disabled="disabled"> <el-form ref="formRef" :model="form" :rules="rules" label-width="124px" :disabled="disabled">
<el-form-item label="评分细则文件" prop="files"> <el-form-item label="评分细则文件" prop="files">
<AppUpload <AppUpload
......
...@@ -149,7 +149,7 @@ function handleRatioChange(row: any, index: number) { ...@@ -149,7 +149,7 @@ function handleRatioChange(row: any, index: number) {
</script> </script>
<template> <template>
<el-dialog title="评分规则" :close-on-click-modal="false" width="800px" @update:modelValue="$emit('update:modelValue')"> <el-dialog title="评分规则" :close-on-click-modal="false" width="800px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="170px" :disabled="disabled"> <el-form ref="formRef" :model="form" :rules="rules" label-width="170px" :disabled="disabled">
<el-form-item label="赛项名称"> <el-form-item label="赛项名称">
<el-input v-model="form.name" disabled /> <el-input v-model="form.name" disabled />
......
...@@ -119,7 +119,7 @@ getPlatformKeysList() ...@@ -119,7 +119,7 @@ getPlatformKeysList()
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="124px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="124px">
<el-form-item label="训练指导书文件" prop="files"> <el-form-item label="训练指导书文件" prop="files">
<AppUpload <AppUpload
...@@ -127,8 +127,7 @@ getPlatformKeysList() ...@@ -127,8 +127,7 @@ getPlatformKeysList()
:limit="1" :limit="1"
:beforeUpload="handleBeforeUpload" :beforeUpload="handleBeforeUpload"
accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,.pdf,application/pdf,.ppt,.pptx,application/vnd.ms-powerpoint,.csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" accept=".doc,.docx,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,.pdf,application/pdf,.ppt,.pptx,application/vnd.ms-powerpoint,.csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
@success="handleUploadSuccess" @success="handleUploadSuccess">
>
<template #tip>训练指导书文件支持格式包含:doc docx xls xlsx pdf ppt pptx,大小不超过50M</template> <template #tip>训练指导书文件支持格式包含:doc docx xls xlsx pdf ppt pptx,大小不超过50M</template>
</AppUpload> </AppUpload>
</el-form-item> </el-form-item>
...@@ -141,9 +140,7 @@ getPlatformKeysList() ...@@ -141,9 +140,7 @@ getPlatformKeysList()
</el-form-item> </el-form-item>
<el-form-item label="关联实验"> <el-form-item label="关联实验">
<el-radio-group v-model="form.platform_key"> <el-radio-group v-model="form.platform_key">
<el-radio v-for="item in platformKeys" :key="item.platform_key" :label="item.platform_key">{{ <el-radio v-for="item in platformKeys" :key="item.platform_key" :label="item.platform_key">{{ item.name }}</el-radio>
item.name
}}</el-radio>
<!-- <el-radio :key="1" label="1">商业数据分析实验</el-radio> <!-- <el-radio :key="1" label="1">商业数据分析实验</el-radio>
<el-radio :key="1" label="2">数字营销实操</el-radio> --> <el-radio :key="1" label="2">数字营销实操</el-radio> -->
</el-radio-group> </el-radio-group>
......
...@@ -65,7 +65,7 @@ function handleUpdate(params: any) { ...@@ -65,7 +65,7 @@ function handleUpdate(params: any) {
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="90px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="90px">
<el-form-item label="考试类型" prop="type"> <el-form-item label="考试类型" prop="type">
<el-radio-group v-model="form.type" :disabled="isUpdate"> <el-radio-group v-model="form.type" :disabled="isUpdate">
......
...@@ -77,7 +77,7 @@ function handleUpdate(params: any) { ...@@ -77,7 +77,7 @@ function handleUpdate(params: any) {
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="90px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="90px">
<el-form-item label="试卷类型" prop="type"> <el-form-item label="试卷类型" prop="type">
<el-radio-group v-model="form.type"> <el-radio-group v-model="form.type">
......
...@@ -119,7 +119,7 @@ getPlatformKeysList() ...@@ -119,7 +119,7 @@ getPlatformKeysList()
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="124px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="124px">
<el-form-item label="大赛试题文件" prop="files"> <el-form-item label="大赛试题文件" prop="files">
<AppUpload <AppUpload
...@@ -140,9 +140,7 @@ getPlatformKeysList() ...@@ -140,9 +140,7 @@ getPlatformKeysList()
</el-form-item> </el-form-item>
<el-form-item label="关联实验"> <el-form-item label="关联实验">
<el-radio-group v-model="form.platform_key"> <el-radio-group v-model="form.platform_key">
<el-radio v-for="item in platformKeys" :key="item.platform_key" :label="item.platform_key">{{ <el-radio v-for="item in platformKeys" :key="item.platform_key" :label="item.platform_key">{{ item.name }}</el-radio>
item.name
}}</el-radio>
<!-- <el-radio :key="1" label="1">商业数据分析实验</el-radio> <!-- <el-radio :key="1" label="1">商业数据分析实验</el-radio>
<el-radio :key="1" label="2">数字营销实操</el-radio> --> <el-radio :key="1" label="2">数字营销实操</el-radio> -->
</el-radio-group> </el-radio-group>
......
...@@ -59,10 +59,7 @@ const title = $computed(() => { ...@@ -59,10 +59,7 @@ const title = $computed(() => {
function handleBeforeUpload() { function handleBeforeUpload() {
if (form.source_id) { if (form.source_id) {
return ElMessageBox.confirm( return ElMessageBox.confirm('系统仅支持1个训练操作视频,此操作将覆盖原有训练操作视频文件,确认上传新文件吗?', '提示')
'系统仅支持1个训练操作视频,此操作将覆盖原有训练操作视频文件,确认上传新文件吗?',
'提示'
)
} }
return true return true
} }
...@@ -96,7 +93,7 @@ function handleUpdate(params: ContestVideoUpdateParams) { ...@@ -96,7 +93,7 @@ function handleUpdate(params: ContestVideoUpdateParams) {
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="140px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="140px">
<el-form-item label="训练操作视频文件" prop="source_id"> <el-form-item label="训练操作视频文件" prop="source_id">
<UploadVideo :beforeUpload="handleBeforeUpload" @success="handleUploadSuccess"> <UploadVideo :beforeUpload="handleBeforeUpload" @success="handleUploadSuccess">
......
<script setup lang="ts"> <script setup lang="ts">
import type { ContestScoreItem } from '../types' import type { ContestScoreItem } from '../types'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { publishScore } from '../api' import { publishScore } from '../api'
interface Props { interface Props {
data: ContestScoreItem data: ContestScoreItem
}
const props = defineProps<Props>()
const emit = defineEmits<{
(e: 'update'): void
(e: 'update:modelValue', visible: boolean): void
}>()
// 发布
function handleSubmit() {
publishScore({ id: props.data.id }).then(() => {
ElMessage.success('发布成功')
emit('update')
emit('update:modelValue', false)
})
}
</script>
<template>
<el-dialog title="发布成绩" width="500px" :close-on-click-modal="false" @update:modelValue="value => $emit('update:modelValue', value)">
<div class="content">
<p>请确认赛项成绩之后再进行发布成绩!</p>
<p>
赛项名称:<b>{{ data.name }}</b>
</p>
<br />
<p>
<span>报名人数:{{ data.all_competitor_count }}</span>
<span>完赛人数:{{ data.complete_competitor_count }}</span>
<span>已评分人数:{{ data.checked_competitor_count }}</span>
</p>
<br />
<p>请确认是否发布成绩!</p>
</div>
<el-row justify="center" style="margin-top: 40px">
<el-button type="primary" round auto-insert-space @click="handleSubmit">发布</el-button>
<el-button round auto-insert-space @click="$emit('update:modelValue', false)">取消</el-button>
</el-row>
</el-dialog>
</template>
<style lang="scss" scoped>
.content {
text-align: center;
p {
margin: 10px 0;
} }
const props = defineProps<Props>() b {
color: var(--main-color);
const emit = defineEmits<{
(e: 'update'): void
(e: 'update:modelValue', visible: boolean): void
}>()
// 发布
function handleSubmit() {
publishScore({ id: props.data.id }).then(() => {
ElMessage.success('发布成功')
emit('update')
emit('update:modelValue', false)
})
} }
</script> span + span {
margin-left: 40px;
<template>
<el-dialog
title="发布成绩"
width="500px"
:close-on-click-modal="false"
@update:modelValue="$emit('update:modelValue')">
<div class="content">
<p>请确认赛项成绩之后再进行发布成绩!</p>
<p>
赛项名称:<b>{{ data.name }}</b>
</p>
<br />
<p>
<span>报名人数:{{ data.all_competitor_count }}</span>
<span>完赛人数:{{ data.complete_competitor_count }}</span>
<span>已评分人数:{{ data.checked_competitor_count }}</span>
</p>
<br />
<p>请确认是否发布成绩!</p>
</div>
<el-row justify="center" style="margin-top: 40px">
<el-button type="primary" round auto-insert-space @click="handleSubmit">发布</el-button>
<el-button round auto-insert-space @click="$emit('update:modelValue', false)">取消</el-button>
</el-row>
</el-dialog>
</template>
<style lang="scss" scoped>
.content {
text-align: center;
p {
margin: 10px 0;
}
b {
color: var(--main-color);
}
span + span {
margin-left: 40px;
}
} }
</style> }
</style>
\ No newline at end of file
...@@ -105,7 +105,7 @@ function handleUpdate(params: BookCreateItem) { ...@@ -105,7 +105,7 @@ function handleUpdate(params: BookCreateItem) {
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="124px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="124px">
<el-form-item label="实验指导书文件" prop="files"> <el-form-item label="实验指导书文件" prop="files">
<AppUpload <AppUpload
......
...@@ -112,7 +112,7 @@ function handleUpdate(params: CaseUpdateItem) { ...@@ -112,7 +112,7 @@ function handleUpdate(params: CaseUpdateItem) {
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="124px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="124px">
<el-form-item label="案例原文文件" prop="files"> <el-form-item label="案例原文文件" prop="files">
<AppUpload <AppUpload
......
...@@ -78,7 +78,7 @@ function handleSubmit() { ...@@ -78,7 +78,7 @@ function handleSubmit() {
</script> </script>
<template> <template>
<el-dialog title="实验话题讨论" :close-on-click-modal="false" @update:modelValue="$emit('update:modelValue')"> <el-dialog title="实验话题讨论" :close-on-click-modal="false" @update:modelValue="value => $emit('update:modelValue', value)">
<div class="discuss-scroll" ref="scrollRef"> <div class="discuss-scroll" ref="scrollRef">
<DiscussItem :info="detail.info" :list="detail.list" v-if="detail.info"></DiscussItem> <DiscussItem :info="detail.info" :list="detail.list" v-if="detail.info"></DiscussItem>
<div class="tips" v-if="isLoading"> <div class="tips" v-if="isLoading">
...@@ -90,13 +90,7 @@ function handleSubmit() { ...@@ -90,13 +90,7 @@ function handleSubmit() {
<div class="tips" v-if="!hasMore">没有更多了</div> <div class="tips" v-if="!hasMore">没有更多了</div>
</div> </div>
<el-form <el-form ref="formRef" :rules="rules" :model="form" style="margin-top: 40px" v-permission="'v1-teacher-discussion-comment'">
ref="formRef"
:rules="rules"
:model="form"
style="margin-top: 40px"
v-permission="'v1-teacher-discussion-comment'"
>
<el-form-item prop="content"> <el-form-item prop="content">
<el-input type="textarea" v-model="form.content" :autosize="{ minRows: 4, maxRows: 6 }" :maxlength="200" /> <el-input type="textarea" v-model="form.content" :autosize="{ minRows: 4, maxRows: 6 }" :maxlength="200" />
</el-form-item> </el-form-item>
......
...@@ -118,7 +118,7 @@ function handleSubmit() { ...@@ -118,7 +118,7 @@ function handleSubmit() {
</script> </script>
<template> <template>
<el-dialog title="配置数字营销实验" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog title="配置数字营销实验" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" label-suffix=":"> <el-form ref="formRef" :model="form" label-suffix=":">
<el-row justify="space-between"> <el-row justify="space-between">
<el-form-item label="实验名称">{{ data.name }}</el-form-item> <el-form-item label="实验名称">{{ data.name }}</el-form-item>
......
...@@ -111,7 +111,7 @@ function handleUpdate(params: ExperimentCreateItem) { ...@@ -111,7 +111,7 @@ function handleUpdate(params: ExperimentCreateItem) {
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="145px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="145px">
<el-form-item label="实验所属部门/学校" prop="organ_id"> <el-form-item label="实验所属部门/学校" prop="organ_id">
<el-select v-model="form.organ_id" style="width: 100%" :disabled="isUpdate" @change="handleOrgChange"> <el-select v-model="form.organ_id" style="width: 100%" :disabled="isUpdate" @change="handleOrgChange">
...@@ -143,40 +143,16 @@ function handleUpdate(params: ExperimentCreateItem) { ...@@ -143,40 +143,16 @@ function handleUpdate(params: ExperimentCreateItem) {
<el-input-number v-model="form.score" :min="1" :max="150" step-strictly style="width: 100%" /> <el-input-number v-model="form.score" :min="1" :max="150" step-strictly style="width: 100%" />
</el-form-item> </el-form-item>
<el-form-item label="实验目的" prop="purpose"> <el-form-item label="实验目的" prop="purpose">
<el-input <el-input v-model="form.purpose" :autosize="{ minRows: 4 }" type="textarea" maxlength="200" show-word-limit placeholder="请输入实验目的" />
v-model="form.purpose"
:autosize="{ minRows: 4 }"
type="textarea"
maxlength="200"
show-word-limit
placeholder="请输入实验目的" />
</el-form-item> </el-form-item>
<el-form-item label="实验要求" prop="requirements"> <el-form-item label="实验要求" prop="requirements">
<el-input <el-input v-model="form.requirements" :autosize="{ minRows: 4 }" type="textarea" maxlength="200" show-word-limit placeholder="请输入实验要求" />
v-model="form.requirements"
:autosize="{ minRows: 4 }"
type="textarea"
maxlength="200"
show-word-limit
placeholder="请输入实验要求" />
</el-form-item> </el-form-item>
<el-form-item label="实验内容及原理" prop="content"> <el-form-item label="实验内容及原理" prop="content">
<el-input <el-input v-model="form.content" :autosize="{ minRows: 4 }" type="textarea" maxlength="200" show-word-limit placeholder="请输入实验内容及原理" />
v-model="form.content"
:autosize="{ minRows: 4 }"
type="textarea"
maxlength="200"
show-word-limit
placeholder="请输入实验内容及原理" />
</el-form-item> </el-form-item>
<el-form-item label="实验步骤及过程" prop="procedure"> <el-form-item label="实验步骤及过程" prop="procedure">
<el-input <el-input v-model="form.procedure" :autosize="{ minRows: 4 }" type="textarea" maxlength="200" show-word-limit placeholder="请输入实验步骤及过程" />
v-model="form.procedure"
:autosize="{ minRows: 4 }"
type="textarea"
maxlength="200"
show-word-limit
placeholder="请输入实验步骤及过程" />
</el-form-item> </el-form-item>
<el-form-item label="有效状态" prop="status"> <el-form-item label="有效状态" prop="status">
<el-radio-group v-model="form.status"> <el-radio-group v-model="form.status">
......
...@@ -19,12 +19,7 @@ const selectAnswer = ['302', '202'] ...@@ -19,12 +19,7 @@ const selectAnswer = ['302', '202']
</script> </script>
<template> <template>
<el-dialog <el-dialog title="2023商业数据分析大赛决赛试题" :close-on-click-modal="false" width="50%" @update:modelValue="value => $emit('update:modelValue', value)">
title="2023商业数据分析大赛决赛试题"
:close-on-click-modal="false"
width="50%"
@update:modelValue="$emit('update:modelValue')"
>
<el-card class="box-card" v-for="(item, index) in list" :key="item.id"> <el-card class="box-card" v-for="(item, index) in list" :key="item.id">
<template #header> <template #header>
<div class="card-header"> <div class="card-header">
...@@ -32,9 +27,7 @@ const selectAnswer = ['302', '202'] ...@@ -32,9 +27,7 @@ const selectAnswer = ['302', '202']
<el-form-item label="本题分值" style="margin: 0"> {{ item.score }} </el-form-item> <el-form-item label="本题分值" style="margin: 0"> {{ item.score }} </el-form-item>
</div> </div>
</template> </template>
<div class="text item"> <div class="text item">正确答案:{{ ['302', '202'].includes(item.type) ? item.answer_info?.name : item?.answer || '上传成功' }}</div>
正确答案:{{ ['302', '202'].includes(item.type) ? item.answer_info?.name : item?.answer || '上传成功' }}
</div>
</el-card> </el-card>
</el-dialog> </el-dialog>
</template> </template>
......
...@@ -42,13 +42,11 @@ function handleSubmit() { ...@@ -42,13 +42,11 @@ function handleSubmit() {
} }
</script> </script>
<template> <template>
<el-dialog title="关联班级" @update:modelValue="$emit('update:modelValue')"> <el-dialog title="关联班级" @update:modelValue="value => $emit('update:modelValue', value)">
<p>所属机构/学校:{{ detail.organ_id_name }}</p> <p>所属机构/学校:{{ detail.organ_id_name }}</p>
<AppList v-bind="listOptions" @selection-change="handleSelectionChange"></AppList> <AppList v-bind="listOptions" @selection-change="handleSelectionChange"></AppList>
<el-row justify="center"> <el-row justify="center">
<el-button type="primary" round :disabled="!multipleSelection.length" @click="handleSubmit" <el-button type="primary" round :disabled="!multipleSelection.length" @click="handleSubmit">关联选择班级</el-button>
>关联选择班级</el-button
>
<el-button round auto-insert-space @click="$emit('update:modelValue', false)">取消</el-button> <el-button round auto-insert-space @click="$emit('update:modelValue', false)">取消</el-button>
</el-row> </el-row>
</el-dialog> </el-dialog>
......
...@@ -42,12 +42,10 @@ function handleSubmit() { ...@@ -42,12 +42,10 @@ function handleSubmit() {
} }
</script> </script>
<template> <template>
<el-dialog title="添加小组成员" @update:modelValue="$emit('update:modelValue')"> <el-dialog title="添加小组成员" @update:modelValue="value => $emit('update:modelValue', value)">
<AppList v-bind="listOptions" @selection-change="handleSelectionChange"></AppList> <AppList v-bind="listOptions" @selection-change="handleSelectionChange"></AppList>
<el-row justify="center"> <el-row justify="center">
<el-button type="primary" round :disabled="!multipleSelection.length" @click="handleSubmit" <el-button type="primary" round :disabled="!multipleSelection.length" @click="handleSubmit">添加选择学生</el-button>
>添加选择学生</el-button
>
<el-button round auto-insert-space @click="$emit('update:modelValue', false)">取消</el-button> <el-button round auto-insert-space @click="$emit('update:modelValue', false)">取消</el-button>
</el-row> </el-row>
</el-dialog> </el-dialog>
......
...@@ -38,11 +38,7 @@ const handleCreate = () => { ...@@ -38,11 +38,7 @@ const handleCreate = () => {
</script> </script>
<template> <template>
<el-dialog <el-dialog title="新增实验分组" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
title="新增实验分组"
:close-on-click-modal="false"
width="600px"
@update:modelValue="$emit('update:modelValue')">
<el-form ref="formRef" :model="form" :rules="rules" label-width="110px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
<el-form-item label="实验名称">{{ detail.name }}</el-form-item> <el-form-item label="实验名称">{{ detail.name }}</el-form-item>
<el-form-item label="实验小组名称" prop="name"> <el-form-item label="实验小组名称" prop="name">
......
...@@ -149,7 +149,7 @@ function getOperationUrl(type: number) { ...@@ -149,7 +149,7 @@ function getOperationUrl(type: number) {
</script> </script>
<template> <template>
<el-dialog title="学生实验评分" :close-on-click-modal="false" width="800px" @update:modelValue="$emit('update:modelValue')"> <el-dialog title="学生实验评分" :close-on-click-modal="false" width="800px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form label-width="120px" label-suffix=":" v-if="detail"> <el-form label-width="120px" label-suffix=":" v-if="detail">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
...@@ -212,7 +212,7 @@ function getOperationUrl(type: number) { ...@@ -212,7 +212,7 @@ function getOperationUrl(type: number) {
<el-table-column label="操作" prop="commit_score" align="center"> <el-table-column label="操作" prop="commit_score" align="center">
<template #default="{ row }"> <template #default="{ row }">
<template v-if="row.type === 1"> <template v-if="row.type === 1">
<el-button text type="primary" @click="$emit('update:modelValue')" v-if="experiment.report_upload_way === 2"> <el-button text type="primary" v-if="experiment.report_upload_way === 2">
<a :href="getOperationUrl(row.type)" target="_blank">批改</a> <a :href="getOperationUrl(row.type)" target="_blank">批改</a>
</el-button> </el-button>
<template v-if="experiment.report_upload_way === 1"> <template v-if="experiment.report_upload_way === 1">
......
...@@ -65,10 +65,7 @@ const title = $computed(() => { ...@@ -65,10 +65,7 @@ const title = $computed(() => {
function handleBeforeUpload() { function handleBeforeUpload() {
if (form.source_id) { if (form.source_id) {
return ElMessageBox.confirm( return ElMessageBox.confirm('系统仅支持1个实验操作视频,此操作将覆盖原有实验操作视频文件,确认上传新文件吗?', '提示')
'系统仅支持1个实验操作视频,此操作将覆盖原有实验操作视频文件,确认上传新文件吗?',
'提示'
)
} }
return true return true
} }
...@@ -102,7 +99,7 @@ function handleUpdate(params: VideoCreateItem) { ...@@ -102,7 +99,7 @@ function handleUpdate(params: VideoCreateItem) {
</script> </script>
<template> <template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')"> <el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-form ref="formRef" :model="form" :rules="rules" label-width="140px"> <el-form ref="formRef" :model="form" :rules="rules" label-width="140px">
<el-form-item label="实验操作视频文件" prop="source_id"> <el-form-item label="实验操作视频文件" prop="source_id">
<UploadVideo :beforeUpload="handleBeforeUpload" @success="handleUploadSuccess"> <UploadVideo :beforeUpload="handleBeforeUpload" @success="handleUploadSuccess">
......
...@@ -56,11 +56,7 @@ const update = () => { ...@@ -56,11 +56,7 @@ const update = () => {
</script> </script>
<template> <template>
<el-dialog <el-dialog title="上传实验报告" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
title="上传实验报告"
:close-on-click-modal="false"
width="600px"
@update:modelValue="$emit('update:modelValue')">
<el-form ref="formRef" :model="form" :rules="rules"> <el-form ref="formRef" :model="form" :rules="rules">
<el-form-item label="实验报告文件" prop="files"> <el-form-item label="实验报告文件" prop="files">
<AppUpload <AppUpload
......
...@@ -49,7 +49,7 @@ function handleRemove(row) { ...@@ -49,7 +49,7 @@ function handleRemove(row) {
</script> </script>
<template> <template>
<el-dialog append-to-body title="关联截图" width="800px" @update:modelValue="$emit('update:modelValue')"> <el-dialog append-to-body title="关联截图" width="800px" @update:modelValue="value => $emit('update:modelValue', value)">
<el-table :data="currentPictures" stripe> <el-table :data="currentPictures" stripe>
<el-table-column prop="name"> <el-table-column prop="name">
<template #default="{ row }"> <template #default="{ row }">
......
...@@ -48,12 +48,7 @@ const update = () => { ...@@ -48,12 +48,7 @@ const update = () => {
</script> </script>
<template> <template>
<el-dialog <el-dialog append-to-body title="实验准备" :close-on-click-modal="false" width="800px" @update:modelValue="value => $emit('update:modelValue', value)">
append-to-body
title="实验准备"
:close-on-click-modal="false"
width="800px"
@update:modelValue="$emit('update:modelValue')">
<el-form ref="formRef" :model="form" :rules="rules" label-suffix=":"> <el-form ref="formRef" :model="form" :rules="rules" label-suffix=":">
<el-form-item label="实验名称">{{ data.name }} </el-form-item> <el-form-item label="实验名称">{{ data.name }} </el-form-item>
<el-form-item prop="detail"> <el-form-item prop="detail">
......
...@@ -45,11 +45,7 @@ const update = () => { ...@@ -45,11 +45,7 @@ const update = () => {
</script> </script>
<template> <template>
<el-dialog <el-dialog title="上传实验报告" :close-on-click-modal="false" width="600px" @update:modelValue="value => $emit('update:modelValue', value)">
title="上传实验报告"
:close-on-click-modal="false"
width="600px"
@update:modelValue="$emit('update:modelValue')">
<el-form ref="formRef" :model="form" :rules="rules"> <el-form ref="formRef" :model="form" :rules="rules">
<el-form-item label="实验报告文件" prop="files"> <el-form-item label="实验报告文件" prop="files">
<AppUpload <AppUpload
......
...@@ -48,12 +48,7 @@ const update = () => { ...@@ -48,12 +48,7 @@ const update = () => {
</script> </script>
<template> <template>
<el-dialog <el-dialog append-to-body title="实验结果" :close-on-click-modal="false" width="800px" @update:modelValue="value => $emit('update:modelValue', value)">
append-to-body
title="实验结果"
:close-on-click-modal="false"
width="800px"
@update:modelValue="$emit('update:modelValue')">
<el-form ref="formRef" :model="form" :rules="rules" label-suffix=":"> <el-form ref="formRef" :model="form" :rules="rules" label-suffix=":">
<el-form-item label="实验名称">{{ data.name }} </el-form-item> <el-form-item label="实验名称">{{ data.name }} </el-form-item>
<el-form-item prop="detail"> <el-form-item prop="detail">
......
{ {
"extends": "@vue/tsconfig/tsconfig.node.json", "extends": "@tsconfig/node20/tsconfig.json",
"include": ["vite.config.*", "vitest.config.*", "cypress.config.*"], "include": ["vite.config.*", "vitest.config.*", "cypress.config.*", "playwright.config.*"],
"compilerOptions": { "compilerOptions": {
"composite": true, "composite": true,
"types": ["node"] "types": ["node"]
......
{ {
"extends": "@vue/tsconfig/tsconfig.web.json", "extends": "@vue/tsconfig/tsconfig.json",
"include": ["auto-imports.d.ts", "env.d.ts", "src/**/*", "src/**/*.vue"], "include": ["auto-imports.d.ts", "env.d.ts", "src/**/*", "src/**/*.vue"],
"compilerOptions": { "compilerOptions": {
"allowJs": true, "allowJs": true,
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
"paths": { "paths": {
"@/*": ["./src/*"] "@/*": ["./src/*"]
}, },
"types": ["element-plus/global"] "types": ["element-plus/global", "@vue-macros/reactivity-transform/macros-global"]
}, },
"references": [ "references": [
......
...@@ -6,16 +6,18 @@ import { defineConfig } from 'vite' ...@@ -6,16 +6,18 @@ import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue' import vue from '@vitejs/plugin-vue'
// import checker from 'vite-plugin-checker' // import checker from 'vite-plugin-checker'
import AutoImport from 'unplugin-auto-import/vite' import AutoImport from 'unplugin-auto-import/vite'
import ReactivityTransform from '@vue-macros/reactivity-transform/vite'
export default defineConfig(({ mode }) => ({ export default defineConfig(({ mode }) => ({
base: mode === 'prod' ? 'https://webapp-pub.ezijing.com/website/prod/saas-lab/' : '/', base: mode === 'prod' ? 'https://webapp-pub.ezijing.com/website/prod/saas-lab/' : '/',
plugins: [ plugins: [
vue({ reactivityTransform: true, script: { defineModel: true } }), vue({ reactivityTransform: true, script: { defineModel: true } }),
AutoImport({ AutoImport({
imports: ['vue', 'vue/macros', 'vue-router', '@vueuse/core', '@vueuse/math'], imports: ['vue', 'vue-router', '@vueuse/core', '@vueuse/math'],
dts: true, dts: true,
eslintrc: { enabled: true } eslintrc: { enabled: true }
}) }),
ReactivityTransform()
// checker({ vueTsc: true, eslint: { lintCommand: 'eslint "./src/**/*.{vue,js,jsx,ts,tsx}"' } }) // checker({ vueTsc: true, eslint: { lintCommand: 'eslint "./src/**/*.{vue,js,jsx,ts,tsx}"' } })
], ],
server: { server: {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论