|
@@ -53,6 +53,19 @@
|
|
|
<el-input v-model="form.tel" maxlength="20" placeholder="请输入联系电话" clearable />
|
|
<el-input v-model="form.tel" maxlength="20" placeholder="请输入联系电话" clearable />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="可报名人员类型" prop="tel">
|
|
|
|
|
+ <el-checkbox-group v-model="checkedVipLevels" @change="handleCheckedChange">
|
|
|
|
|
+ <el-checkbox v-for="city in form.conditions.typeCheck" :key="city" :label="city" :value="city">
|
|
|
|
|
+ {{ selectDictLabels(lm_check_join_type, city.vipLevel, ',') }}
|
|
|
|
|
+ </el-checkbox>
|
|
|
|
|
+ </el-checkbox-group>
|
|
|
|
|
+ <div @click="handleCheckAllChange(true)" v-if="!checkAll" class="pl-10 c-s-p">
|
|
|
|
|
+ <u>全选</u>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div @click="handleCheckAllChange(false)" v-else class="pl-10 c-s-p"><u>取消</u></div>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
|
<el-form-item label="报名人数" prop="conditions.totalCheck">
|
|
<el-form-item label="报名人数" prop="conditions.totalCheck">
|
|
|
<div class="d-flex a-c">
|
|
<div class="d-flex a-c">
|
|
@@ -77,45 +90,49 @@
|
|
|
<div class="c-#606266 f-w-6" style="">条件限制:</div>
|
|
<div class="c-#606266 f-w-6" style="">条件限制:</div>
|
|
|
<div class="d-flex">
|
|
<div class="d-flex">
|
|
|
<div class="d-flex flex-cln">
|
|
<div class="d-flex flex-cln">
|
|
|
- <el-checkbox v-model="form.conditions.levelTotalCheck" label="按盟员单位等级限制" size="large" true-value="1" false-value="0" />
|
|
|
|
|
|
|
+ <el-checkbox v-model="form.conditions.levelTotalCheck" label="按单位类型等级限制" size="large" true-value="1" false-value="0" />
|
|
|
<div v-if="form.conditions.levelTotalCheck == '1' && form.conditions.cpyTotalCheck == '0'" class="pl-10 pr-10 pt-5 pb-5 border">
|
|
<div v-if="form.conditions.levelTotalCheck == '1' && form.conditions.cpyTotalCheck == '0'" class="pl-10 pr-10 pt-5 pb-5 border">
|
|
|
<template v-for="(item, index) in form.conditions.levelCheck" :key="index">
|
|
<template v-for="(item, index) in form.conditions.levelCheck" :key="index">
|
|
|
- <div class="d-flex a-c">
|
|
|
|
|
- <el-checkbox v-model="item.check" true-value="1" false-value="0" :label="'所有' + selectDictLabels(vip_level, item.vipLevel, ',') + '参会人数≤'" size="large" />
|
|
|
|
|
|
|
+ <div class="d-flex a-c" v-if="checkedVipLevels.some(items => items.vipLevel === item.vipLevel)">
|
|
|
|
|
+ <el-checkbox v-model="item.check" true-value="1" false-value="0" :label="'所有' + selectDictLabels(lm_check_join_type, item.vipLevel, ',') + '参会人数≤'" size="large" />
|
|
|
<el-input class="pl-10" v-model="item.total" maxlength="20" placeholder="请输入报名人数" :disabled="!+item.check" />
|
|
<el-input class="pl-10" v-model="item.total" maxlength="20" placeholder="请输入报名人数" :disabled="!+item.check" />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
+ <el-empty :image-size="20" description="请先选择报名人员类型" v-if="checkedVipLevels.length == 0" />
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="d-flex flex-cln ml-20">
|
|
<div class="d-flex flex-cln ml-20">
|
|
|
<el-checkbox v-model="form.conditions.cpyTotalCheck" label="按每家单位人数限制" size="large" true-value="1" false-value="0" />
|
|
<el-checkbox v-model="form.conditions.cpyTotalCheck" label="按每家单位人数限制" size="large" true-value="1" false-value="0" />
|
|
|
<div v-if="form.conditions.cpyTotalCheck == '1' && form.conditions.levelTotalCheck == '0'" class="pl-10 pr-10 pt-5 pb-5 border">
|
|
<div v-if="form.conditions.cpyTotalCheck == '1' && form.conditions.levelTotalCheck == '0'" class="pl-10 pr-10 pt-5 pb-5 border">
|
|
|
<template v-for="(item, index) in form.conditions.cpyCheck" :key="index">
|
|
<template v-for="(item, index) in form.conditions.cpyCheck" :key="index">
|
|
|
- <div class="d-flex a-c">
|
|
|
|
|
- <el-checkbox v-model="item.check" :label="selectDictLabels(vip_level, item.vipLevel, ',') + '限制每家单位人数≤'" size="large" true-value="1" false-value="0" />
|
|
|
|
|
|
|
+ <div class="d-flex a-c" v-if="checkedVipLevels.some(items => items.vipLevel === item.vipLevel)">
|
|
|
|
|
+ <el-checkbox v-model="item.check" :label="selectDictLabels(lm_check_join_type, item.vipLevel, ',') + '限制每家单位人数≤'" size="large" true-value="1" false-value="0" />
|
|
|
<el-input class="pl-10" v-model="item.total" maxlength="20" placeholder="请输入报名人数" :disabled="!+item.check" />
|
|
<el-input class="pl-10" v-model="item.total" maxlength="20" placeholder="请输入报名人数" :disabled="!+item.check" />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
+ <el-empty :image-size="20" description="请先选择报名人员类型" v-if="checkedVipLevels.length == 0" />
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="d-flex border" v-if="form.conditions.levelTotalCheck == '1' && form.conditions.cpyTotalCheck == '1'">
|
|
<div class="d-flex border" v-if="form.conditions.levelTotalCheck == '1' && form.conditions.cpyTotalCheck == '1'">
|
|
|
<div class="pl-10 pr-10 pt-5 pb-5 ">
|
|
<div class="pl-10 pr-10 pt-5 pb-5 ">
|
|
|
<template v-for="(item, index) in form.conditions.levelCheck" :key="index">
|
|
<template v-for="(item, index) in form.conditions.levelCheck" :key="index">
|
|
|
- <div class="d-flex a-c">
|
|
|
|
|
- <el-checkbox v-model="item.check" :label="'所有' + selectDictLabels(vip_level, item.vipLevel, ',') + '参会人数≤'" size="large" true-value="1" false-value="0" />
|
|
|
|
|
|
|
+ <div class="d-flex a-c" v-if="checkedVipLevels.some(items => items.vipLevel === item.vipLevel)">
|
|
|
|
|
+ <el-checkbox v-model="item.check" :label="'所有' + selectDictLabels(lm_check_join_type, item.vipLevel, ',') + '参会人数≤'" size="large" true-value="1" false-value="0" />
|
|
|
<el-input class="pl-10" v-model="item.total" maxlength="20" placeholder="请输入报名人数" :disabled="!+item.check" />
|
|
<el-input class="pl-10" v-model="item.total" maxlength="20" placeholder="请输入报名人数" :disabled="!+item.check" />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="pl-10 pr-10 pt-5 pb-5">
|
|
<div class="pl-10 pr-10 pt-5 pb-5">
|
|
|
<template v-for="(item, index) in form.conditions.cpyCheck" :key="index">
|
|
<template v-for="(item, index) in form.conditions.cpyCheck" :key="index">
|
|
|
- <div class="d-flex a-c">
|
|
|
|
|
- <el-checkbox v-model="item.check" :label="selectDictLabels(vip_level, item.vipLevel, ',') + '限制每家单位人数≤'" size="large" true-value="1" false-value="0" />
|
|
|
|
|
|
|
+ <div class="d-flex a-c" v-if="checkedVipLevels.some(items => items.vipLevel === item.vipLevel)">
|
|
|
|
|
+ <el-checkbox v-model="item.check" :label="selectDictLabels(lm_check_join_type, item.vipLevel, ',') + '限制每家单位人数≤'" size="large" true-value="1" false-value="0" />
|
|
|
<el-input class="pl-10" v-model="item.total" maxlength="20" placeholder="请输入报名人数" :disabled="!+item.check" />
|
|
<el-input class="pl-10" v-model="item.total" maxlength="20" placeholder="请输入报名人数" :disabled="!+item.check" />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <div class="flex1 ml--10"><el-empty :image-size="20" description="请先选择报名人员类型" v-if="checkedVipLevels.length == 0" /></div>
|
|
|
|
|
+
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -130,6 +147,19 @@
|
|
|
</div>
|
|
</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
|
|
+ <el-col :span="6">
|
|
|
|
|
+ <div class="d-flex" style="align-items: flex-end;">
|
|
|
|
|
+ <el-form-item label="发放积分" prop="pointsFlag" class="">
|
|
|
|
|
+ <el-radio-group v-model="form.pointsFlag" style="flex-wrap: nowrap">
|
|
|
|
|
+ <el-radio label="1">是</el-radio>
|
|
|
|
|
+ <el-radio label="0">否</el-radio>
|
|
|
|
|
+ </el-radio-group>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item prop="points" v-if="form.pointsFlag == '1'" class="flex1 pl-10">
|
|
|
|
|
+ <el-input v-model="form.points" placeholder="每成功参会(签到成功)1人发放XXX(自填)个单位积分。" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
@@ -182,7 +212,7 @@
|
|
|
<el-form-item label="是否颁发证书" prop="certFlag">
|
|
<el-form-item label="是否颁发证书" prop="certFlag">
|
|
|
<el-radio-group v-model="form.certFlag">
|
|
<el-radio-group v-model="form.certFlag">
|
|
|
<el-radio v-for="item in yes_no" :key="item.value" :label="item.value">
|
|
<el-radio v-for="item in yes_no" :key="item.value" :label="item.value">
|
|
|
- {{item.label }}
|
|
|
|
|
|
|
+ {{ item.label }}
|
|
|
</el-radio>
|
|
</el-radio>
|
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -264,7 +294,7 @@ import { FieldDefinition } from '../models/type'
|
|
|
import meetingCustomPreview from '../models/meeting-custom-preview.vue'
|
|
import meetingCustomPreview from '../models/meeting-custom-preview.vue'
|
|
|
import MeetingEditors from '../models/meeting-editors.vue'
|
|
import MeetingEditors from '../models/meeting-editors.vue'
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
-const { lm_training_join_type, yes_no, lm_training_cert, vip_level } = toRefs<any>(proxy?.useDict('lm_training_join_type', 'yes_no', 'lm_training_cert', 'vip_level'));
|
|
|
|
|
|
|
+const { lm_training_join_type, yes_no, lm_training_cert, lm_check_join_type } = toRefs<any>(proxy?.useDict('lm_training_join_type', 'yes_no', 'lm_training_cert', 'lm_check_join_type'));
|
|
|
const fields = ref<FieldDefinition[]>([])
|
|
const fields = ref<FieldDefinition[]>([])
|
|
|
const showSignIn = ref(false);
|
|
const showSignIn = ref(false);
|
|
|
const fixedField = ref<FieldDefinition[]>([{
|
|
const fixedField = ref<FieldDefinition[]>([{
|
|
@@ -304,7 +334,41 @@ const form = ref<any>({
|
|
|
conditions: {
|
|
conditions: {
|
|
|
levelTotalCheck: '0',
|
|
levelTotalCheck: '0',
|
|
|
cpyTotalCheck: '0',
|
|
cpyTotalCheck: '0',
|
|
|
|
|
+ typeCheck: [
|
|
|
|
|
+ {
|
|
|
|
|
+ vipLevel: "1",
|
|
|
|
|
+ check: "1"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ vipLevel: "3",
|
|
|
|
|
+ check: "1"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ vipLevel: "5",
|
|
|
|
|
+ check: "1"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ vipLevel: "6",
|
|
|
|
|
+ check: "1"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ vipLevel: "7",
|
|
|
|
|
+ check: "1"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ vipLevel: "9",
|
|
|
|
|
+ check: "1"
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ vipLevel: "10",
|
|
|
|
|
+ check: "1"
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
levelCheck: [{
|
|
levelCheck: [{
|
|
|
|
|
+ vipLevel: '0',
|
|
|
|
|
+ check: "0",
|
|
|
|
|
+ total: ''
|
|
|
|
|
+ }, {
|
|
|
vipLevel: '1',
|
|
vipLevel: '1',
|
|
|
check: "0",
|
|
check: "0",
|
|
|
total: ''
|
|
total: ''
|
|
@@ -316,8 +380,30 @@ const form = ref<any>({
|
|
|
vipLevel: '5',
|
|
vipLevel: '5',
|
|
|
check: "0",
|
|
check: "0",
|
|
|
total: ''
|
|
total: ''
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ vipLevel: "6",
|
|
|
|
|
+ check: "0",
|
|
|
|
|
+ total: ''
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ vipLevel: "7",
|
|
|
|
|
+ check: "0",
|
|
|
|
|
+ total: ''
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ vipLevel: "9",
|
|
|
|
|
+ check: "0",
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ vipLevel: "10",
|
|
|
|
|
+ total: ''
|
|
|
}],
|
|
}],
|
|
|
cpyCheck: [{
|
|
cpyCheck: [{
|
|
|
|
|
+ vipLevel: '0',
|
|
|
|
|
+ check: "0",
|
|
|
|
|
+ total: ''
|
|
|
|
|
+ }, {
|
|
|
vipLevel: '1',
|
|
vipLevel: '1',
|
|
|
check: "0",
|
|
check: "0",
|
|
|
total: ''
|
|
total: ''
|
|
@@ -329,20 +415,56 @@ const form = ref<any>({
|
|
|
vipLevel: '5',
|
|
vipLevel: '5',
|
|
|
check: "0",
|
|
check: "0",
|
|
|
total: ''
|
|
total: ''
|
|
|
|
|
+ }, {
|
|
|
|
|
+ vipLevel: '6',
|
|
|
|
|
+ check: "0",
|
|
|
|
|
+ total: ''
|
|
|
|
|
+ }, {
|
|
|
|
|
+ vipLevel: '7',
|
|
|
|
|
+ check: "0",
|
|
|
|
|
+ total: ''
|
|
|
|
|
+ }, {
|
|
|
|
|
+ vipLevel: '9',
|
|
|
|
|
+ check: "0",
|
|
|
|
|
+ total: ''
|
|
|
|
|
+ }, {
|
|
|
|
|
+ vipLevel: '10',
|
|
|
|
|
+ check: "0",
|
|
|
|
|
+ total: ''
|
|
|
}]
|
|
}]
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+const checkAll = ref(false)
|
|
|
|
|
+const checkedVipLevels = ref([])
|
|
|
|
|
+// 选项变化时的处理
|
|
|
|
|
+const handleCheckedChange = (selectedValues: string[]) => {
|
|
|
|
|
+ // 更新typeCheck中的check状态
|
|
|
|
|
+ form.value.conditions.typeCheck.forEach(item => {
|
|
|
|
|
+ item.check = selectedValues.includes(item.vipLevel) ? "1" : "0"
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 全选/取消全选
|
|
|
|
|
+const handleCheckAllChange = (val: boolean) => {
|
|
|
|
|
+ checkedVipLevels.value = val
|
|
|
|
|
+ ? form.value.conditions.typeCheck.map(item => item)
|
|
|
|
|
+ : []
|
|
|
|
|
+ handleCheckedChange(checkedVipLevels.value)
|
|
|
|
|
+ checkAll.value = val
|
|
|
|
|
+}
|
|
|
const rules = reactive({
|
|
const rules = reactive({
|
|
|
// 自动生成全部
|
|
// 自动生成全部
|
|
|
trainingName: [{ required: true, message: '请输入会议名称', trigger: 'blur' }],
|
|
trainingName: [{ required: true, message: '请输入会议名称', trigger: 'blur' }],
|
|
|
trainingTime: [{ required: true, message: '请选择会议时间', trigger: 'blur' }],
|
|
trainingTime: [{ required: true, message: '请选择会议时间', trigger: 'blur' }],
|
|
|
joinType: [{ required: true, message: '请选择会议方式', trigger: 'change' }],
|
|
joinType: [{ required: true, message: '请选择会议方式', trigger: 'change' }],
|
|
|
trainingLocation: [{ required: true, message: '请输入会议地点', trigger: 'blur' }],
|
|
trainingLocation: [{ required: true, message: '请输入会议地点', trigger: 'blur' }],
|
|
|
- 'conditions.totalCheck':[{ required: true, message: '请选择是否限制报名人数', trigger: 'change' }],
|
|
|
|
|
|
|
+ 'conditions.totalCheck': [{ required: true, message: '请选择是否限制报名人数', trigger: 'change' }],
|
|
|
certFlag: [{ required: true, message: '请选择是否颁发证书', trigger: 'change' }],
|
|
certFlag: [{ required: true, message: '请选择是否颁发证书', trigger: 'change' }],
|
|
|
certificateInfo: [{ required: true, message: '请选择证书名称', trigger: 'change' }],
|
|
certificateInfo: [{ required: true, message: '请选择证书名称', trigger: 'change' }],
|
|
|
description: [{ required: true, message: '请输入培训详情', trigger: 'blur' }],
|
|
description: [{ required: true, message: '请输入培训详情', trigger: 'blur' }],
|
|
|
eleSignature: [{ required: true, message: '请选择是否电子手签', trigger: 'blur' }],
|
|
eleSignature: [{ required: true, message: '请选择是否电子手签', trigger: 'blur' }],
|
|
|
|
|
+ pointsFlag: [{ required: true, message: '请选择是否发放积分', trigger: 'blur' }],
|
|
|
// coverImg: [{ required: true, message: '请上传封面图', trigger: 'change' }],
|
|
// coverImg: [{ required: true, message: '请上传封面图', trigger: 'change' }],
|
|
|
// trainingImg: [{ required: true, message: '请上传会议图', trigger: 'change' }],
|
|
// trainingImg: [{ required: true, message: '请上传会议图', trigger: 'change' }],
|
|
|
contactName: [{ required: true, message: '请输入会议联系人', trigger: 'blur' }],
|
|
contactName: [{ required: true, message: '请输入会议联系人', trigger: 'blur' }],
|
|
@@ -350,8 +472,6 @@ const rules = reactive({
|
|
|
});
|
|
});
|
|
|
const formRef = ref();
|
|
const formRef = ref();
|
|
|
const save = debounce(async () => {
|
|
const save = debounce(async () => {
|
|
|
- console.log('123123');
|
|
|
|
|
-
|
|
|
|
|
await formRef.value.validate();
|
|
await formRef.value.validate();
|
|
|
const params = {
|
|
const params = {
|
|
|
...form.value,
|
|
...form.value,
|