|
@@ -96,22 +96,22 @@
|
|
|
<el-option v-for="item in temp_join_type" :key="item.value" :label="item.label" :value="item.value" />
|
|
<el-option v-for="item in temp_join_type" :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="res">
|
|
|
<el-select v-model="queryParams.res" placeholder="请选择审核状态" clearable style="width: 180px">
|
|
<el-select v-model="queryParams.res" placeholder="请选择审核状态" clearable style="width: 180px">
|
|
|
<el-option v-for="item in cpy_res_status" :key="item.value" :label="item.label" :value="item.value" />
|
|
<el-option v-for="item in cpy_res_status" :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="payStatus">
|
|
|
<el-select v-model="queryParams.payStatus" placeholder="请选择支付状态" clearable style="width: 180px">
|
|
<el-select v-model="queryParams.payStatus" placeholder="请选择支付状态" clearable style="width: 180px">
|
|
|
<el-option v-for="item in dm_pay_status" :key="item.value" :label="item.label" :value="item.value" />
|
|
<el-option v-for="item in dm_pay_status" :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="payType">
|
|
|
<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="hasInvoice">
|
|
|
<el-select v-model="queryParams.hasInvoice" 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>
|
|
@@ -138,7 +138,12 @@
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
</vxe-column>
|
|
</vxe-column>
|
|
|
- <vxe-column title="姓名" field="name" min-width="100" :formatter="colNoData" />
|
|
|
|
|
|
|
+ <vxe-column title="姓名" field="name" min-width="100" :formatter="colNoData">
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <div class="f-w-5">{{ row?.name }}</div>
|
|
|
|
|
+ <div class="f-w-5">{{ row?.extendInfo?.tags }}</div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
<!-- <vxe-column title="职务" field="position" min-width="100" :formatter="colNoData" /> -->
|
|
<!-- <vxe-column title="职务" field="position" min-width="100" :formatter="colNoData" /> -->
|
|
|
<vxe-column title="联系方式" field="contact" min-width="100" :formatter="colNoData" />
|
|
<vxe-column title="联系方式" field="contact" min-width="100" :formatter="colNoData" />
|
|
|
<vxe-column title="备注" field="remark" min-width="100" :formatter="colNoData" />
|
|
<vxe-column title="备注" field="remark" min-width="100" :formatter="colNoData" />
|
|
@@ -215,6 +220,9 @@
|
|
|
<el-upload v-if="form?.trainingStatus == '2' && +row.joinFee && +row?.hasInvoice && +row?.invoiceStatus && row.payStatus == '1' &&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-upload v-if="form?.trainingStatus == '2' && +row.joinFee && +row?.hasInvoice && +row?.invoiceStatus && row.payStatus == '1' &&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>
|
|
|
|
|
+ <el-button @click="openPersonnelLabel(row?.id)">设置人员标签</el-button>
|
|
|
|
|
+ <el-button @click="opencontactPerson(row?.id,row)" v-if="!+row?.extendInfo?.contactInfo?.specifyConcatTel">设置联系人</el-button>
|
|
|
|
|
+ <el-button @click="opencontactPerson(row?.id,row)" v-else>查看联系人</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
</vxe-column>
|
|
</vxe-column>
|
|
|
</vxe-table>
|
|
</vxe-table>
|
|
@@ -303,10 +311,49 @@
|
|
|
<div>{{ invoiceData?.bankAccount || '-'}}</div>
|
|
<div>{{ invoiceData?.bankAccount || '-'}}</div>
|
|
|
</div>
|
|
</div>
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
+ <el-dialog v-model="personnelLabel" title="设置人员标签" width="600" center>
|
|
|
|
|
+ <el-checkbox-group v-model="radioLabel">
|
|
|
|
|
+ <el-checkbox v-for="(item,index) in signup_tags_type" :key="index" :label="item?.label" :value="item.value" />
|
|
|
|
|
+ </el-checkbox-group>
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <div class="dialog-footer">
|
|
|
|
|
+ <el-button @click="personnelLabel = false">取消</el-button>
|
|
|
|
|
+ <el-button type="primary" @click="confirmPersonnelLabel()">确认添加</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-dialog>
|
|
|
|
|
+ <el-dialog v-model="contactPerson" title="设置1对1联系人" width="600" center>
|
|
|
|
|
+ <template #header="{titleId }">
|
|
|
|
|
+ <div class="my-header">
|
|
|
|
|
+ <div :id="titleId" class="f-s-20">为{{contactData?.name}}({{ contactData?.contact}})设置1对1联系人</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <el-form :model="contactPersonData">
|
|
|
|
|
+ <el-form-item prop="contactName" :rules="[{ required: true, message: '请填写指定联系人名称' }]">
|
|
|
|
|
+ <div class="d-flex a-c">
|
|
|
|
|
+ <div class="pr-20">指定联系人名称</div>
|
|
|
|
|
+ <el-input v-model="contactPersonData.contactName" style="width: 300px;"></el-input>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item prop="contactTel" :rules="[{ required: true, message: '请填写指定联系人电话' }]">
|
|
|
|
|
+ <div class="d-flex pt-20 a-c">
|
|
|
|
|
+ <div class="pr-20">指定联系人电话</div>
|
|
|
|
|
+ <el-input v-model.number="contactPersonData.contactTel" style="width: 300px;"></el-input>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <div class="dialog-footer">
|
|
|
|
|
+ <el-button @click="contactPerson = false">取消</el-button>
|
|
|
|
|
+ <el-button type="primary" @click="confirmContactPerson()" v-if="!+contactData?.extendInfo?.contactInfo?.specifyConcatTel">确认添加</el-button>
|
|
|
|
|
+ <el-button type="primary" @click="confirmContactPerson()" v-else>确认修改</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-dialog>
|
|
|
<registrationInfo v-if="showTemporary" v-model:show="showTemporary" :info="temporaryRegistration"></registrationInfo>
|
|
<registrationInfo v-if="showTemporary" v-model:show="showTemporary" :info="temporaryRegistration"></registrationInfo>
|
|
|
</template>
|
|
</template>
|
|
|
<script setup name="MeetingDetailInfo" lang="ts">
|
|
<script setup name="MeetingDetailInfo" lang="ts">
|
|
|
-import { exportTrainingMembers, signupApproval, signupCount, trainingMembers,editPrice,confirmSigPublicPay,uploadInvoice} from '@/api/training';
|
|
|
|
|
|
|
+import { exportTrainingMembers, signupApproval, signupCount, trainingMembers,editPrice,confirmSigPublicPay,uploadInvoice,markTags,signupContact} from '@/api/training';
|
|
|
import { colNoData } from '@/utils/noData';
|
|
import { colNoData } from '@/utils/noData';
|
|
|
import { searchTabs } from '@/views/models';
|
|
import { searchTabs } from '@/views/models';
|
|
|
import { debounce } from 'lodash';
|
|
import { debounce } from 'lodash';
|
|
@@ -314,9 +361,8 @@ import { onMounted, reactive, ref ,ComponentPublicInstance} from 'vue';
|
|
|
import registrationInfo from './registration-info.vue';
|
|
import registrationInfo from './registration-info.vue';
|
|
|
import { AreaCascader } from '@/views/components';
|
|
import { AreaCascader } from '@/views/components';
|
|
|
import { globalHeaders } from '@/utils/request';
|
|
import { globalHeaders } from '@/utils/request';
|
|
|
-import { isWindow } from 'element-plus/es/utils';
|
|
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
-const { cpy_res_status, lm_signup_status_app_show, dm_check_join_type,temp_join_type,dm_pay_status,lm_signup_status_app_query} = toRefs<any>(proxy?.useDict('cpy_res_status', 'lm_signup_status_app_show', 'dm_check_join_type','temp_join_type','dm_pay_status',"lm_signup_status_app_query"));
|
|
|
|
|
|
|
+const { cpy_res_status, lm_signup_status_app_show, dm_check_join_type,temp_join_type,dm_pay_status,lm_signup_status_app_query,signup_tags_type} = toRefs<any>(proxy?.useDict('cpy_res_status', 'lm_signup_status_app_show', 'dm_check_join_type','temp_join_type','dm_pay_status',"lm_signup_status_app_query","signup_tags_type"));
|
|
|
// 获取详情
|
|
// 获取详情
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
|
form: {
|
|
form: {
|
|
@@ -353,6 +399,43 @@ const fromvalue = ref<any>({
|
|
|
msg: ''
|
|
msg: ''
|
|
|
})
|
|
})
|
|
|
const collectiontype =ref()
|
|
const collectiontype =ref()
|
|
|
|
|
+const personnelLabel = ref(false)
|
|
|
|
|
+const radioLabel = ref()
|
|
|
|
|
+const radioLabelId = ref()
|
|
|
|
|
+const contactPerson = ref(false)
|
|
|
|
|
+const contactId = ref()
|
|
|
|
|
+const contactData = ref()
|
|
|
|
|
+const contactPersonData = ref({
|
|
|
|
|
+ contactName:'',
|
|
|
|
|
+ contactTel:''
|
|
|
|
|
+})
|
|
|
|
|
+const openPersonnelLabel = (id)=>{
|
|
|
|
|
+ radioLabel.value = []
|
|
|
|
|
+ personnelLabel.value = true
|
|
|
|
|
+ radioLabelId.value = id
|
|
|
|
|
+}
|
|
|
|
|
+const confirmPersonnelLabel = async()=>{
|
|
|
|
|
+ personnelLabel.value = false
|
|
|
|
|
+ await markTags({id:radioLabelId.value,tags:radioLabel.value.join(',')})
|
|
|
|
|
+ radioLabel.value = []
|
|
|
|
|
+}
|
|
|
|
|
+const opencontactPerson = (id,data)=>{
|
|
|
|
|
+ contactId.value = id
|
|
|
|
|
+ contactData.value= data
|
|
|
|
|
+ contactPerson.value = true
|
|
|
|
|
+ if(data?.extendInfo?.contactInfo?.specifyContact && data?.extendInfo?.contactInfo?.specifyConcatTel){
|
|
|
|
|
+ contactPersonData.value.contactName = data.extendInfo.contactInfo.specifyContact
|
|
|
|
|
+ contactPersonData.value.contactTel = data.extendInfo.contactInfo.specifyConcatTel
|
|
|
|
|
+ }else{
|
|
|
|
|
+ contactPersonData.value.contactName = ''
|
|
|
|
|
+ contactPersonData.value.contactTel = ''
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+const confirmContactPerson = async()=>{
|
|
|
|
|
+ await signupContact({id:contactId.value,contactInfo:{specifyConcatTel:contactPersonData.value?.contactTel,specifyContact:contactPersonData.value?.contactName}})
|
|
|
|
|
+ contactPerson.value = false
|
|
|
|
|
+}
|
|
|
const checkInvoiceData = (row)=>{
|
|
const checkInvoiceData = (row)=>{
|
|
|
invoicingInformation.value = true
|
|
invoicingInformation.value = true
|
|
|
invoiceData.value = row
|
|
invoiceData.value = row
|