提交 7b210237 authored 作者: lhh's avatar lhh

11.27需求开发

上级 76da5682
...@@ -43,7 +43,7 @@ const formRef = $ref<FormInstance>() ...@@ -43,7 +43,7 @@ const formRef = $ref<FormInstance>()
const form = reactive({ const form = reactive({
id: '', id: '',
name: '', name: '',
client_id: '', client_id: 'client_1',
host_unit_id: '', host_unit_id: '',
organizer_ids: [], organizer_ids: [],
technical_support_unit_id: '', technical_support_unit_id: '',
...@@ -61,20 +61,24 @@ const form = reactive({ ...@@ -61,20 +61,24 @@ const form = reactive({
datetimeRange2: undefined, datetimeRange2: undefined,
is_switchable_theory_practice: 0, is_switchable_theory_practice: 0,
is_customer_anti_cheat: 0, is_customer_anti_cheat: 0,
practical_competition_tag_name: '',
practical_environment_tag_name: '',
practical_answer_tag_name: '',
practical_report_abel_ame: '',
train_platform_configs: [ train_platform_configs: [
{ name: appConfig.xTrainLabel || '1+X理论考试', is_show: '1', type: '1', url: '', platform_key: 'x_exam' }, // { name: appConfig.xTrainLabel || '1+X理论考试', is_show: '1', type: '1', url: '', platform_key: 'x_exam' },
{ // {
name: appConfig.labTrainLabel || '商业数据分析实验', // name: appConfig.labTrainLabel || '商业数据分析实验',
is_show: '0', // is_show: '0',
type: '2', // type: '2',
url: '', // url: '',
platform_key: 'career_data_analysis' // platform_key: 'career_data_analysis'
}, // },
{ name: '数据营销实操', is_show: '0', type: '2', url: '', platform_key: 'data_marketing' } { name: '实操', is_show: '0', type: '2', url: '', platform_key: 'data_marketing' }
], ],
competition_platform_configs: [ competition_platform_configs: [
{ {
name: appConfig.xExamLabel || '1+X理论考试', name: appConfig.xExamLabel || '理论',
is_show: '1', is_show: '1',
type: '1', type: '1',
url: '', url: '',
...@@ -88,7 +92,7 @@ const form = reactive({ ...@@ -88,7 +92,7 @@ const form = reactive({
// url: '', // url: '',
// platform_key: 'career_data_analysis' // platform_key: 'career_data_analysis'
// }, // },
{ name: '数据营销实操', is_show: '0', type: '2', url: '', platform_key: 'data_marketing' } { name: '实操', is_show: '0', type: '2', url: '', platform_key: 'data_marketing' }
] ]
}) })
watchEffect(() => { watchEffect(() => {
...@@ -105,10 +109,22 @@ watchEffect(() => { ...@@ -105,10 +109,22 @@ watchEffect(() => {
new Date(props.data.operational_end_time * 1000) new Date(props.data.operational_end_time * 1000)
] ]
const is_switchable_theory_practice = parseInt(props.data.is_switchable_theory_practice) const is_switchable_theory_practice = parseInt(props.data.is_switchable_theory_practice)
const is_customer_anti_cheat = parseInt(props.data?.is_customer_anti_cheat) || 0
const type = props.data?.type + '' const type = props.data?.type + ''
const status = props.data?.status + '' const status = props.data?.status + ''
const apply_expiration_date = props.data.apply_expiration_date * 1000 const apply_expiration_date = props.data.apply_expiration_date * 1000
let is_customer_anti_cheat = 0
let practical_competition_tag_name = ''
let practical_environment_tag_name = ''
let practical_answer_tag_name = ''
let practical_report_abel_ame = ''
if (props.data.extended_field) {
is_customer_anti_cheat = props.data.extended_field?.is_customer_anti_cheat
practical_competition_tag_name = props.data.extended_field?.practical_competition_tag_name
practical_environment_tag_name = props.data.extended_field?.practical_environment_tag_name
practical_answer_tag_name = props.data.extended_field?.practical_answer_tag_name
practical_report_abel_ame = props.data.extended_field?.practical_report_abel_ame
}
Object.assign(form, props.data, { Object.assign(form, props.data, {
host_unit_id, host_unit_id,
organizer_ids, organizer_ids,
...@@ -120,9 +136,13 @@ watchEffect(() => { ...@@ -120,9 +136,13 @@ watchEffect(() => {
datetimeRange2, datetimeRange2,
apply_expiration_date, apply_expiration_date,
is_switchable_theory_practice, is_switchable_theory_practice,
is_customer_anti_cheat,
type, type,
status status,
is_customer_anti_cheat,
practical_competition_tag_name,
practical_environment_tag_name,
practical_answer_tag_name,
practical_report_abel_ame
}) })
}) })
const checkApplyExpirationDate = (rule: any, value: any, callback: any) => { const checkApplyExpirationDate = (rule: any, value: any, callback: any) => {
...@@ -197,6 +217,10 @@ const checkCompetitionPlatformConfigs = (rule: any, value: any, callback: any) = ...@@ -197,6 +217,10 @@ const checkCompetitionPlatformConfigs = (rule: any, value: any, callback: any) =
} }
const rules = ref<FormRules>({ const rules = ref<FormRules>({
name: [{ required: true, message: '请输入赛项名称' }], name: [{ required: true, message: '请输入赛项名称' }],
practical_competition_tag_name: [{ required: true, message: '请输入' }],
practical_environment_tag_name: [{ required: true, message: '请输入' }],
practical_answer_tag_name: [{ required: true, message: '请输入' }],
practical_report_abel_ame: [{ required: true, message: '请输入' }],
host_unit_id: [{ required: true, message: '请选择主办单位' }], host_unit_id: [{ required: true, message: '请选择主办单位' }],
organizer_ids: [{ type: 'array', required: true, message: '请选择承办单位' }], organizer_ids: [{ type: 'array', required: true, message: '请选择承办单位' }],
technical_support_unit_id: [{ required: true, message: '请选择技术支持单位' }], technical_support_unit_id: [{ required: true, message: '请选择技术支持单位' }],
...@@ -254,7 +278,14 @@ function handleSubmit() { ...@@ -254,7 +278,14 @@ function handleSubmit() {
end_at: dayjs(secondDatetime).year(year).month(month).date(date).unix(), end_at: dayjs(secondDatetime).year(year).month(month).date(date).unix(),
operational_start_time: dayjs(firstDatetime2).year(year).month(month).date(date).unix(), operational_start_time: dayjs(firstDatetime2).year(year).month(month).date(date).unix(),
operational_end_time: dayjs(secondDatetime2).year(year).month(month).date(date).unix(), operational_end_time: dayjs(secondDatetime2).year(year).month(month).date(date).unix(),
apply_expiration_date: dayjs(form.apply_expiration_date).endOf('date').unix() apply_expiration_date: dayjs(form.apply_expiration_date).endOf('date').unix(),
extended_field: JSON.stringify({
practical_competition_tag_name: form.practical_competition_tag_name,
practical_environment_tag_name: form.practical_environment_tag_name,
practical_answer_tag_name: form.practical_answer_tag_name,
practical_report_abel_ame: form.practical_report_abel_ame,
is_customer_anti_cheat: form.is_customer_anti_cheat
})
} }
// 判断正式比赛理论答题时间和选择的考试 // 判断正式比赛理论答题时间和选择的考试
...@@ -263,7 +294,6 @@ function handleSubmit() { ...@@ -263,7 +294,6 @@ function handleSubmit() {
const examEndTime = new Date(findExam?.end_time || '').getTime() const examEndTime = new Date(findExam?.end_time || '').getTime()
// console.log(containsNumber(examStartTime, mergedForm.start_at), containsNumber(examEndTime, mergedForm.end_at)) // console.log(containsNumber(examStartTime, mergedForm.start_at), containsNumber(examEndTime, mergedForm.end_at))
const findXItem = form.competition_platform_configs.find(item => item.type === '1') const findXItem = form.competition_platform_configs.find(item => item.type === '1')
console.log(findXItem, 'findXItem', form.competition_platform_configs)
if (findXItem?.is_show === '1') { if (findXItem?.is_show === '1') {
if ( if (
containsNumber(examStartTime, mergedForm.start_at) !== true || containsNumber(examStartTime, mergedForm.start_at) !== true ||
...@@ -298,9 +328,8 @@ function handleSubmit() { ...@@ -298,9 +328,8 @@ function handleSubmit() {
'train_platform_configs', 'train_platform_configs',
'competition_platform_configs', 'competition_platform_configs',
'is_switchable_theory_practice', 'is_switchable_theory_practice',
'is_customer_anti_cheat' 'extended_field'
]) ])
console.log(isUpdate, 'isUpdate')
isUpdate ? handleUpdate(params) : handleCreate(params) isUpdate ? handleUpdate(params) : handleCreate(params)
}) })
} }
...@@ -331,9 +360,14 @@ function handleDateRangeChange(value: any) { ...@@ -331,9 +360,14 @@ function handleDateRangeChange(value: any) {
} }
const clientList = [ const clientList = [
{ label: '商务数据分析师赛项', value: 'business_data_analyst' }, // { label: '商务数据分析师赛项', value: 'business_data_analyst' },
{ label: '全媒体运营师赛项', value: 'all_media_operator' }, // { label: '全媒体运营师赛项', value: 'all_media_operator' },
{ label: '网络主播赛项', value: 'network_anchor_competition' } // { label: '网络主播赛项', value: 'network_anchor_competition' }
{ label: '客户端1', value: 'client_1' },
{ label: '客户端2', value: 'client_2' },
{ label: '客户端3', value: 'client_3' },
{ label: '客户端4', value: 'client_4' },
{ label: '客户端5', value: 'client_5' }
] ]
let examList = $ref<Record<string, any>[]>([]) let examList = $ref<Record<string, any>[]>([])
...@@ -408,17 +442,17 @@ onMounted(() => { ...@@ -408,17 +442,17 @@ onMounted(() => {
<el-option v-for="item in teachers" :key="item.id" :label="item.name" :value="item.id"></el-option> <el-option v-for="item in teachers" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="实操赛题标签名称" prop="name"> <el-form-item label="实操赛题标签名称" prop="practical_competition_tag_name">
<el-input v-model="form.name" /> <el-input placeholder="请输入" v-model="form.practical_competition_tag_name" />
</el-form-item> </el-form-item>
<el-form-item label="实操环境标签名称" prop="name"> <el-form-item label="实操环境标签名称" prop="practical_environment_tag_name">
<el-input v-model="form.name" /> <el-input placeholder="请输入" v-model="form.practical_environment_tag_name" />
</el-form-item> </el-form-item>
<el-form-item label="实操报告标签名称" prop="name"> <el-form-item label="实操报告标签名称" prop="practical_answer_tag_name">
<el-input v-model="form.name" /> <el-input placeholder="请输入" v-model="form.practical_answer_tag_name" />
</el-form-item> </el-form-item>
<el-form-item label="实操答题标签名称" prop="name"> <el-form-item label="实操答题标签名称" prop="practical_report_abel_ame">
<el-input v-model="form.name" /> <el-input placeholder="请输入" v-model="form.practical_report_abel_ame" />
</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">
...@@ -449,9 +483,12 @@ onMounted(() => { ...@@ -449,9 +483,12 @@ onMounted(() => {
</el-radio-group> </el-radio-group>
</el-form-item> --> </el-form-item> -->
<el-form-item label="客户端标识" prop="client_id"> <el-form-item label="客户端标识" prop="client_id">
<el-select v-model="form.client_id" style="width: 100%" clearable> <!-- <el-select v-model="form.client_id" style="width: 100%" clearable>
<el-option v-for="item in clientList" :key="item.value" :label="item.label" :value="item.value"></el-option> <el-option v-for="item in clientList" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> </el-select> -->
<el-radio-group v-model="form.client_id">
<el-radio v-for="item in clientList" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="报名截止日期" prop="apply_expiration_date"> <el-form-item label="报名截止日期" prop="apply_expiration_date">
<el-date-picker type="date" v-model="form.apply_expiration_date" style="width: 100%" /> <el-date-picker type="date" v-model="form.apply_expiration_date" style="width: 100%" />
...@@ -490,7 +527,7 @@ onMounted(() => { ...@@ -490,7 +527,7 @@ onMounted(() => {
</div> </div>
</el-checkbox> </el-checkbox>
</el-form-item> </el-form-item>
<el-form-item label="是否允许客户端切换" prop="is_switchable_theory_practice"> <el-form-item label="客户端切换理论与实操" prop="is_switchable_theory_practice">
<el-radio-group v-model="form.is_switchable_theory_practice"> <el-radio-group v-model="form.is_switchable_theory_practice">
<el-radio :label="0"></el-radio> <el-radio :label="0"></el-radio>
<el-radio :label="1"></el-radio> <el-radio :label="1"></el-radio>
...@@ -502,12 +539,6 @@ onMounted(() => { ...@@ -502,12 +539,6 @@ onMounted(() => {
<el-radio :label="1"></el-radio> <el-radio :label="1"></el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="客户端切换理论与实操" prop="is_switchable_theory_practice">
<el-radio-group v-model="form.is_switchable_theory_practice">
<el-radio :label="0"></el-radio>
<el-radio :label="1"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="赛项LOGO" prop="logo"> <el-form-item label="赛项LOGO" prop="logo">
<AppUpload v-model="form.logo" accept="image/*"></AppUpload> <AppUpload v-model="form.logo" accept="image/*"></AppUpload>
......
...@@ -36,6 +36,7 @@ export interface ContestItem { ...@@ -36,6 +36,7 @@ export interface ContestItem {
competition_platform_configs: any[] competition_platform_configs: any[]
is_switchable_theory_practice: string, is_switchable_theory_practice: string,
is_customer_anti_cheat: string is_customer_anti_cheat: string
extended_field: any
} }
export interface ContestCreateParams { export interface ContestCreateParams {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论