|
|
@@ -137,16 +137,6 @@
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="是否电子手签" prop="eleSignature">
|
|
|
- <div class="d-flex a-c">
|
|
|
- <el-radio-group v-model="form.eleSignature" style="flex-wrap: nowrap">
|
|
|
- <el-radio label="1">是</el-radio>
|
|
|
- <el-radio label="0">否</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
<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">
|
|
|
@@ -163,6 +153,63 @@
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
</el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="是否收取参会费用" prop="meetingCharge.hasFee">
|
|
|
+ <div class="d-flex a-c">
|
|
|
+ <el-radio-group v-model="form.meetingCharge.hasFee" style="flex-wrap: nowrap">
|
|
|
+ <el-radio label="0">否</el-radio>
|
|
|
+ <el-radio label="1">是</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item prop="meetingCharge.pricing" v-if="form.meetingCharge.hasFee == '1'">
|
|
|
+ <div class="d-flex">
|
|
|
+ <div class="c-#606266 f-w-6" style="">收费标准:</div>
|
|
|
+ <el-input class="flex1 pl-5" v-model.number="form.meetingCharge.pricing" maxlength="20" placeholder="请输入收费标准" clearable style="max-width: 200px;" />
|
|
|
+ <div class="pl-10">元/人</div>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item v-if="form.meetingCharge.hasFee == '1'" prop="meetingCharge.hasFlatFee">
|
|
|
+ <div>
|
|
|
+ <el-radio-group v-model="form.meetingCharge.hasFlatFee" style="display: flex;flex-direction: column;align-items: flex-start;">
|
|
|
+ <el-radio label="0">所有人统一收取标准费用</el-radio>
|
|
|
+ <el-radio label="1">按报名人员类型收取,不同人员收取不同费用</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ <div class="d-flex flex-cln" v-if="form?.meetingCharge?.hasFee == '1'&& form?.meetingCharge?.hasFlatFee =='1'">
|
|
|
+ <div class="pl-10 pr-10 pt-5 pb-5 border">
|
|
|
+ <template v-for="(item, index) in form.meetingCharge.typeCharge" :key="index">
|
|
|
+ <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(dm_check_join_type, item.vipLevel, ',') + '每个单位参会人员'" size="large" />
|
|
|
+ <el-select v-model="item.certType" placeholder="" clearable style="width: 100px">
|
|
|
+ <el-option v-for="item in hasPartialFree" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
+ <div class="pl-10 f-s-14">免费</div>
|
|
|
+ <div v-if="+item?.certType" class="d-flex a-c">
|
|
|
+ <div v-if="item.vipLevel != 'P'" class="pl-10 f-s-14" style="white-space: nowrap;">每个单位免费</div>
|
|
|
+ <div v-else class="pl-10 f-s-14" style="white-space: nowrap;">免费</div>
|
|
|
+ <el-input class="pl-10" v-model="item.total" maxlength="20" placeholder="请输入免费人数" style="width: 150px" />
|
|
|
+ <div class="f-s-14" style="white-space: nowrap;">人,其余每人收费</div>
|
|
|
+ <el-input class="pl-10" v-model="item.cost" maxlength="20" placeholder="请输入费用" style="width: 150px" />
|
|
|
+ <div f-s-14>元</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <el-empty :image-size="20" description="请先选择报名人员类型" v-if="checkedVipLevels.length == 0" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="6">
|
|
|
+ <el-form-item label="是否电子手签" prop="eleSignature">
|
|
|
+ <div class="d-flex a-c">
|
|
|
+ <el-radio-group v-model="form.eleSignature" style="flex-wrap: nowrap">
|
|
|
+ <el-radio label="1">是</el-radio>
|
|
|
+ <el-radio label="0">否</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
@@ -251,7 +298,6 @@
|
|
|
</template>
|
|
|
</template>
|
|
|
</div>
|
|
|
-
|
|
|
<div class="w-50% d-flex flex-cln j-c a-c pl-20">
|
|
|
<el-button type="primary" class="w-100%" plain style="height: 70px; margin-bottom: 20px;" @click="showSignIn = true">点击去编辑报名信息></el-button>
|
|
|
<div class="w-400 h-700 border over-auto">
|
|
|
@@ -317,6 +363,13 @@ const fixedField = ref<FieldDefinition[]>([{
|
|
|
label: '联系方式', type: '1', readonly: '0',
|
|
|
required: '1'
|
|
|
}])
|
|
|
+const hasPartialFree = ref([{
|
|
|
+ label: '全部',
|
|
|
+ value: '0'
|
|
|
+}, {
|
|
|
+ label: '部分',
|
|
|
+ value: '1'
|
|
|
+}])
|
|
|
const scrollOptions = {
|
|
|
block: 'center',
|
|
|
behavior: 'smooth'
|
|
|
@@ -418,6 +471,50 @@ const form = ref<any>({
|
|
|
check: "0",
|
|
|
total: ''
|
|
|
}]
|
|
|
+ },
|
|
|
+ // 收取参会费用
|
|
|
+ meetingCharge: {
|
|
|
+ hasFee: null,//是否收取参会费用
|
|
|
+ pricing: null,//收费标准
|
|
|
+ hasFlatFee: null,//所有人是否统一收取标准费用
|
|
|
+ typeCharge: [{
|
|
|
+ vipLevel: '0',
|
|
|
+ check: "0",
|
|
|
+ total: '',//免费的人数
|
|
|
+ certType: '1',//全部免费还是部分免费 0全部 1部分
|
|
|
+ cost: null //每人收费多少
|
|
|
+ }, {
|
|
|
+ vipLevel: '1',
|
|
|
+ check: "0",
|
|
|
+ total: '',
|
|
|
+ certType: '1',
|
|
|
+ cost: null
|
|
|
+ }, {
|
|
|
+ vipLevel: '3',
|
|
|
+ check: "0",
|
|
|
+ total: '',
|
|
|
+ certType: '1',
|
|
|
+ cost: null
|
|
|
+ }, {
|
|
|
+ vipLevel: '4',
|
|
|
+ check: "0",
|
|
|
+ total: '',
|
|
|
+ certType: '1',
|
|
|
+ cost: null
|
|
|
+ }, {
|
|
|
+ vipLevel: '5',
|
|
|
+ check: "0",
|
|
|
+ total: '',
|
|
|
+ certType: '1',
|
|
|
+ cost: null
|
|
|
+ },
|
|
|
+ {
|
|
|
+ vipLevel: "P",
|
|
|
+ check: "0",
|
|
|
+ total: '',
|
|
|
+ certType: '1',
|
|
|
+ cost: null
|
|
|
+ }],
|
|
|
}
|
|
|
});
|
|
|
|
|
|
@@ -465,6 +562,12 @@ const rules = reactive({
|
|
|
trigger: 'change' // 触发校验的时机
|
|
|
}
|
|
|
],
|
|
|
+ 'meetingCharge.hasFee': [{ required: true, message: '请选择是否收取参会费用', trigger: 'change' }],
|
|
|
+ 'meetingCharge.pricing': [{ required: true, message: '请输入收费标准', trigger: 'blur' }, {
|
|
|
+ type: 'number', // 正确的配置方式:作为单独的验证规则
|
|
|
+ message: '收费标准必须为数字'
|
|
|
+ }],
|
|
|
+ 'meetingCharge.hasFlatFee': [{ required: true, message: '请选择收费标准', trigger: 'change' }],
|
|
|
certFlag: [{ required: true, message: '请选择是否颁发证书', trigger: 'change' }],
|
|
|
certificateInfo: [{ required: true, message: '请选择证书名称', trigger: 'change' }],
|
|
|
description: [{ required: true, message: '请输入会议详情', trigger: 'blur' }],
|
|
|
@@ -535,9 +638,13 @@ const getMeetingDetail = async () => {
|
|
|
...res.data,
|
|
|
trainingTime: res.data?.trainingStart && res.data?.trainingEnd ? [res.data.trainingStart, res.data.trainingEnd] : undefined,
|
|
|
signupsTime: res.data?.signupStart && res.data?.signupEnd ? [res.data.signupStart, res.data.signupEnd] : undefined,
|
|
|
- conditions: (res.data?.conditions?.typeCheck == null) ? form.value.conditions : (res.data?.conditions || form.value.conditions)
|
|
|
+ conditions: (res.data?.conditions?.typeCheck == null) ? form.value.conditions : (res.data?.conditions || form.value.conditions),
|
|
|
+ meetingCharge: res.data?.meetingCharge || form.value.meetingCharge
|
|
|
};
|
|
|
fields.value = res.data.questions
|
|
|
+ if(form.value?.meetingCharge.pricing && typeof form.value?.meetingCharge.pricing === 'string'){
|
|
|
+ form.value.meetingCharge.pricing = Number(form.value?.meetingCharge.pricing)
|
|
|
+ }
|
|
|
form.value?.conditions?.typeCheck?.forEach((i) => {
|
|
|
if (i.check == '1') {
|
|
|
checkedVipLevels.value.push(i)
|