lisy hai 4 meses
pai
achega
3f72f28d24

+ 18 - 7
src/views/training/meeting-add/index.vue

@@ -163,7 +163,6 @@
                                     </div>
                                     </div>
                                 </el-form-item>
                                 </el-form-item>
                             </el-col>
                             </el-col>
-                            
                             <el-col :span="24">
                             <el-col :span="24">
                                 <el-form-item label="是否收取参会费用" prop="meetingCharge.hasFee">
                                 <el-form-item label="是否收取参会费用" prop="meetingCharge.hasFee">
                                     <div class="d-flex a-c">
                                     <div class="d-flex a-c">
@@ -191,20 +190,20 @@
                                         </el-radio-group>
                                         </el-radio-group>
                                     </div>
                                     </div>
                                 </el-form-item>
                                 </el-form-item>
-                                <div class="d-flex flex-cln" v-if="form?.meetingCharge?.hasFee == '1'&& form?.meetingCharge?.hasFlatFee =='1'">
+                                <div ref="hasFee" 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">
                                     <div class="pl-10 pr-10 pt-5 pb-5 border">
                                         <template v-for="(item, index) in form.meetingCharge.typeCharge" :key="index">
                                         <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)">
                                             <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-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" :disabled="!+item.check">
                                                 <el-select v-model="item.certType" placeholder="" clearable style="width: 100px" :disabled="!+item.check">
-                                                    <el-option v-for="items in hasPartialFree" :key="items.value" :label="items.label" :value="items.value"/>
+                                                    <el-option v-for="items in hasPartialFree" :key="items.value" :label="items.label" :value="items.value" />
                                                 </el-select>
                                                 </el-select>
                                                 <div class="d-flex a-c">
                                                 <div class="d-flex a-c">
                                                     <div v-if="item.vipLevel != 'P'" class="pl-10 f-s-14" style="white-space: nowrap;">每个单位免费</div>
                                                     <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>
                                                     <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: 130px" :disabled="!+item.check || item?.certType !=='1'" />
+                                                    <el-input class="pl-10" v-model="item.total" maxlength="20" placeholder="请输入免费人数" style="width: 130px" :disabled="!+item.check || item?.certType !== '1'" />
                                                     <div class="f-s-14" style="white-space: nowrap;">人,其余每人收费</div>
                                                     <div class="f-s-14" style="white-space: nowrap;">人,其余每人收费</div>
-                                                    <el-input class="pl-10" v-model="item.cost" maxlength="20" placeholder="请输入费用" style="width: 130px" :disabled="!+item.check || item?.certType!=='1'" />
+                                                    <el-input class="pl-10" v-model="item.cost" maxlength="20" placeholder="请输入费用" style="width: 130px" :disabled="!+item.check || item?.certType !== '1'" />
                                                     <div f-s-14>元</div>
                                                     <div f-s-14>元</div>
                                                 </div>
                                                 </div>
                                             </div>
                                             </div>
@@ -213,7 +212,6 @@
                                     </div>
                                     </div>
                                 </div>
                                 </div>
                             </el-col>
                             </el-col>
-                           
                         </el-row>
                         </el-row>
                         <el-row :gutter="20">
                         <el-row :gutter="20">
                             <el-col :span="12">
                             <el-col :span="12">
@@ -350,6 +348,7 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { lm_training_join_type, yes_no, dm_training_cert, dm_check_join_type } = toRefs<any>(proxy?.useDict('lm_training_join_type', 'yes_no', 'dm_training_cert', 'dm_check_join_type'));
 const { lm_training_join_type, yes_no, dm_training_cert, dm_check_join_type } = toRefs<any>(proxy?.useDict('lm_training_join_type', 'yes_no', 'dm_training_cert', 'dm_check_join_type'));
 const fields = ref<FieldDefinition[]>([])
 const fields = ref<FieldDefinition[]>([])
 const showSignIn = ref(false);
 const showSignIn = ref(false);
+const hasFee = ref<any>()
 const fixedField = ref<FieldDefinition[]>([{
 const fixedField = ref<FieldDefinition[]>([{
     name: `ent-${generateSecureRandomString()}`,
     name: `ent-${generateSecureRandomString()}`,
     label: '企业名称', type: '1',
     label: '企业名称', type: '1',
@@ -582,6 +581,18 @@ const rules = reactive({
 const formRef = ref();
 const formRef = ref();
 const save = debounce(async () => {
 const save = debounce(async () => {
     await formRef.value.validate();
     await formRef.value.validate();
+    if (+form.value?.meetingCharge?.hasFee && +form.value?.meetingCharge?.hasFlatFee) {
+        form.value.meetingCharge.typeCharge.forEach((i) => {
+            if (+i.check && +i.certType) {
+                if (!+i.cost || !+i.total) {
+                    hasFee.value.scrollIntoView({
+                        behavior: 'smooth',
+                        block: 'nearest'
+                    })
+                }
+            }
+        })
+    }
     form?.value?.conditions?.typeCheck?.forEach(typeItem => {
     form?.value?.conditions?.typeCheck?.forEach(typeItem => {
         if (typeItem.check === "0") {
         if (typeItem.check === "0") {
             // Update cpyCheck
             // Update cpyCheck
@@ -643,7 +654,7 @@ const getMeetingDetail = async () => {
             meetingCharge: res.data?.meetingCharge || form.value.meetingCharge
             meetingCharge: res.data?.meetingCharge || form.value.meetingCharge
         };
         };
         fields.value = res.data.questions
         fields.value = res.data.questions
-        if(form.value?.meetingCharge.pricing && typeof form.value?.meetingCharge.pricing === 'string'){
+        if (form.value?.meetingCharge.pricing && typeof form.value?.meetingCharge.pricing === 'string') {
             form.value.meetingCharge.pricing = Number(form.value?.meetingCharge.pricing)
             form.value.meetingCharge.pricing = Number(form.value?.meetingCharge.pricing)
         }
         }
         form.value?.conditions?.typeCheck?.forEach((i) => {
         form.value?.conditions?.typeCheck?.forEach((i) => {

+ 10 - 8
src/views/training/models/meeting-detail-attend.vue

@@ -71,7 +71,7 @@
         <div class="d-flex mb-16 ">
         <div class="d-flex mb-16 ">
             <div class="info-title">
             <div class="info-title">
                 <span>参会人员信息</span>
                 <span>参会人员信息</span>
-                <span class="f-s-14 c-666">(提交报名:{{ form?.submitCount || 0 }}人 | 审核通过:{{ form?.joinCount || 0 }}人 | 签到:{{ form?.signCount || 0 }}人 | 领取证书:{{ form?.certCount || 0 }}人)</span>
+                <span class="f-s-14 c-666">(提交报名:{{ form?.submitCount || 0 }}人 | 已缴费:{{ form?.payCoun || 0 }} 人 | 审核通过:{{ form?.joinCount || 0 }}人 | 签到:{{ form?.signCount || 0 }}人 | 领取证书:{{ form?.certCount || 0 }}人)</span>
             </div>
             </div>
         </div>
         </div>
         <div class="d-flex j-sb">
         <div class="d-flex j-sb">
@@ -102,12 +102,12 @@
                     </el-select>
                     </el-select>
                 </el-form-item>
                 </el-form-item>
                 <el-form-item label="支付方式:" prop="tempJoin">
                 <el-form-item label="支付方式:" prop="tempJoin">
-                    <el-select v-model="queryParams.payType" placeholder="请选择支付状态" clearable style="width: 180px">
+                    <el-select v-model="queryParams.payType" placeholder="请选择支付方式" clearable style="width: 180px">
                         <el-option v-for="item in [{value:'1',label:'微信支付'},{value:'2',label:'对公转账'}]" :key="item.value" :label="item.label" :value="item.value" />
                         <el-option v-for="item in [{value:'1',label:'微信支付'},{value:'2',label:'对公转账'}]" :key="item.value" :label="item.label" :value="item.value" />
                     </el-select>
                     </el-select>
                 </el-form-item>
                 </el-form-item>
                 <el-form-item label="是否需要开票:" prop="tempJoin">
                 <el-form-item label="是否需要开票:" prop="tempJoin">
-                    <el-select v-model="queryParams.invoiceStatus" placeholder="请选择支付状态" clearable style="width: 180px">
+                    <el-select v-model="queryParams.hasInvoice" placeholder="请选择" clearable style="width: 180px">
                         <el-option v-for="item in [{value:'0',label:'不需要'},{value:'1',label:'需要'}]" :key="item.value" :label="item.label" :value="item.value" />
                         <el-option v-for="item in [{value:'0',label:'不需要'},{value:'1',label:'需要'}]" :key="item.value" :label="item.label" :value="item.value" />
                     </el-select>
                     </el-select>
                 </el-form-item>
                 </el-form-item>
@@ -168,7 +168,7 @@
                 <template #default="{ row }">
                 <template #default="{ row }">
                     <div v-if="row.payStatus == '1'&& !+row?.invoiceStatus && +row?.hasInvoice" @click="checkInvoiceData(row.invoiceInfo)" class="pointer">查看</div>
                     <div v-if="row.payStatus == '1'&& !+row?.invoiceStatus && +row?.hasInvoice" @click="checkInvoiceData(row.invoiceInfo)" class="pointer">查看</div>
                     <div v-if="row.payStatus == '1' && +row?.invoiceStatus && +row?.hasInvoice" @click="checkInvoiceData(row.invoiceInfo)" class="pointer" style="color: red;">已开票,点击查看</div>
                     <div v-if="row.payStatus == '1' && +row?.invoiceStatus && +row?.hasInvoice" @click="checkInvoiceData(row.invoiceInfo)" class="pointer" style="color: red;">已开票,点击查看</div>
-                    <div v-if="!+row?.hasInvoice">{{ '-' }}</div>
+                    <div v-if="!+row?.hasInvoice">{{ '不需要' }}</div>
                 </template>
                 </template>
             </vxe-column>
             </vxe-column>
             <vxe-column title="特殊说明" min-width="100" fixed="right">
             <vxe-column title="特殊说明" min-width="100" fixed="right">
@@ -179,7 +179,7 @@
             <vxe-column v-if="form?.conditions?.totalCheck == '1'" title="审核状态" min-width="100" fixed="right">
             <vxe-column v-if="form?.conditions?.totalCheck == '1'" title="审核状态" min-width="100" fixed="right">
                 <template #default="{ row }">
                 <template #default="{ row }">
                     <div class="d-flex a-c" v-if="row?.res == '3'||row?.res == '4'||row?.res == '5'">
                     <div class="d-flex a-c" v-if="row?.res == '3'||row?.res == '4'||row?.res == '5'">
-                        <DictTag :class="{ 'c-red': row?.res === '0' }" :options="cpy_res_status" :value="row?.res" />
+                        <DictTag :class="{ 'c-red': row?.res === '0' }" :options="cpy_res_status" :value="row?.resShow" />
                         <el-tooltip class="box-item" effect="dark" :content="row?.msg" placement="top">
                         <el-tooltip class="box-item" effect="dark" :content="row?.msg" placement="top">
                             <el-icon v-show="row?.res == '2'">
                             <el-icon v-show="row?.res == '2'">
                                 <QuestionFilled />
                                 <QuestionFilled />
@@ -197,12 +197,14 @@
                     <el-button v-if="row.res== '5' && row?.payType=='2'" size="small" color="#81b337" style="color: white" @click="openTransfer(row)">确认收到转账</el-button>
                     <el-button v-if="row.res== '5' && row?.payType=='2'" size="small" color="#81b337" style="color: white" @click="openTransfer(row)">确认收到转账</el-button>
                     <div v-if="row.payStatus == '1' && row?.res == '0'&& form?.trainingStatus == '2'">用户报名未成功,请至微信商户号进行退款</div>
                     <div v-if="row.payStatus == '1' && row?.res == '0'&& form?.trainingStatus == '2'">用户报名未成功,请至微信商户号进行退款</div>
                     <div v-if="row.payStatus === '10'">该报名已退款</div>
                     <div v-if="row.payStatus === '10'">该报名已退款</div>
-                    <el-upload v-if="form?.trainingStatus == '2' && +row.joinFee && +row?.hasInvoice && !+row?.invoiceStatus && row.payType !== '10' &&form?.meetingCharge?.hasFee =='1'" class="upload-demo" :action="uploadFileUrl" multiple :limit="1" :on-success="handleSuccess" :headers="headers" :show-file-list="false" accept=".pdf,.PDF">
+                    <el-upload v-if="form?.trainingStatus == '2' && +row.joinFee && +row?.hasInvoice && !+row?.invoiceStatus && row.payType !== '10' &&form?.meetingCharge?.hasFee =='1' && row?.res !== '0' && row?.res !== '2'" class="upload-demo" :action="uploadFileUrl" multiple :limit="1" :on-success="handleSuccess" :headers="headers" :show-file-list="false" accept=".pdf,.PDF">
                         <el-button size="small" color="#33aeeb" style="color: white" @click=" invoiceId = row.id">上传发票</el-button>
                         <el-button size="small" color="#33aeeb" style="color: white" @click=" invoiceId = row.id">上传发票</el-button>
                     </el-upload>
                     </el-upload>
-                    <el-upload v-if="form?.trainingStatus == '2' && +row.joinFee && +row?.hasInvoice && +row?.invoiceStatus && row.payType !== '10' &&form?.meetingCharge?.hasFee =='1'" class="upload-demo" :action="uploadFileUrl" multiple :limit="1" :on-success="handleSuccess" :headers="headers" :show-file-list="false" accept=".pdf,.PDF">
+                    <el-upload v-if="form?.trainingStatus == '2' && +row.joinFee && +row?.hasInvoice && +row?.invoiceStatus && row.payType !== '10' &&form?.meetingCharge?.hasFee =='1'&& row?.res !== '0' && row?.res !== '2'" class="upload-demo" :action="uploadFileUrl" multiple :limit="1" :on-success="handleSuccess" :headers="headers" :show-file-list="false" accept=".pdf,.PDF">
                         <el-button type="primary" color="#33aeeb" style="color: white" @click=" invoiceId = row.id">重新上传</el-button>
                         <el-button type="primary" color="#33aeeb" style="color: white" @click=" invoiceId = row.id">重新上传</el-button>
                     </el-upload>
                     </el-upload>
+                    <div v-if="row.payStatus == '1' && row.res == '1' && form?.trainingStatus !== '2'">-</div>
+                    <div v-if="row.payStatus == '1' && row.res == '0' && form?.trainingStatus !== '2'">-</div>
                 </template>
                 </template>
             </vxe-column>
             </vxe-column>
         </vxe-table>
         </vxe-table>
@@ -321,7 +323,7 @@ const invoicingInformation = ref(false)
 const invoiceData = ref()
 const invoiceData = ref()
 const invoiceId = ref()
 const invoiceId = ref()
 const headers = ref(globalHeaders());
 const headers = ref(globalHeaders());
-const fromvalue = ref({
+const fromvalue = ref<any>({
     targetId: '',
     targetId: '',
     msg: ''
     msg: ''
 })
 })