lisy 4 hónapja
szülő
commit
0450f82ceb
2 módosított fájl, 121 hozzáadás és 14 törlés
  1. 119 12
      src/views/training/meeting-add/index.vue
  2. 2 2
      vite.config.ts

+ 119 - 12
src/views/training/meeting-add/index.vue

@@ -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)

+ 2 - 2
vite.config.ts

@@ -26,8 +26,8 @@ export default defineConfig(({ mode, command }: ConfigEnv): UserConfig => {
             proxy: {
                 [env.VITE_APP_BASE_API]: {
                     // target: 'https://www.shuziyunyao.com/dm-api',
-                    target: 'http://dm.yujin.shuziyunyao.com/api',
-                    // target: 'http://192.168.1.68:8080',
+                    // target: 'http://dm.yujin.shuziyunyao.com/api',
+                    target: 'http://192.168.1.68:8080',
                     changeOrigin: true,
                     ws: true,
                     rewrite: (path) => path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')