|
@@ -79,6 +79,12 @@
|
|
|
<vxe-column field="signCount" title="签到人数" width="60" class-name="f-w-600" />
|
|
<vxe-column field="signCount" title="签到人数" width="60" class-name="f-w-600" />
|
|
|
<vxe-column field="waitCount" title="待审核人数" width="60" class-name="f-w-600" />
|
|
<vxe-column field="waitCount" title="待审核人数" width="60" class-name="f-w-600" />
|
|
|
<vxe-column field="certCount" title="领取证书人数" width="80" />
|
|
<vxe-column field="certCount" title="领取证书人数" width="80" />
|
|
|
|
|
+ <vxe-column field="pageEnable" title="会议门户" width="80">
|
|
|
|
|
+ <template #default="{ row }">
|
|
|
|
|
+ <el-switch v-model="row.pageEnable" active-value="1" inactive-value="0" @change="changePageEnable(row.id,row?.pageEnable)"></el-switch>
|
|
|
|
|
+ <div v-if="+row.pageEnable" @click="ckeckpageEnable(row?.trainingName)">查看</div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </vxe-column>
|
|
|
<vxe-column field="certFlag" title="签到二维码" width="90" align="center">
|
|
<vxe-column field="certFlag" title="签到二维码" width="90" align="center">
|
|
|
<template #default="{ row }">
|
|
<template #default="{ row }">
|
|
|
<el-button @click="trainingSignIn(row)" :style="{ color: !['1', '0'].includes(row?.trainingStatus) ? '#999' : '#0079fe' }" text :disabled="!['1', '0'].includes(row?.trainingStatus)">查看</el-button>
|
|
<el-button @click="trainingSignIn(row)" :style="{ color: !['1', '0'].includes(row?.trainingStatus) ? '#999' : '#0079fe' }" text :disabled="!['1', '0'].includes(row?.trainingStatus)">查看</el-button>
|
|
@@ -130,10 +136,20 @@
|
|
|
</div>
|
|
</div>
|
|
|
<SignInCode v-if="showSignIn" v-model:show="showSignIn" :info="rowInfo" :dict="{ lm_training_join_type }"></SignInCode>
|
|
<SignInCode v-if="showSignIn" v-model:show="showSignIn" :info="rowInfo" :dict="{ lm_training_join_type }"></SignInCode>
|
|
|
<TemporaryRegistration v-if="showTemporary" v-model:show="showTemporary" :info="temporaryRegistration" :dict="{ lm_training_join_type }"></TemporaryRegistration>
|
|
<TemporaryRegistration v-if="showTemporary" v-model:show="showTemporary" :info="temporaryRegistration" :dict="{ lm_training_join_type }"></TemporaryRegistration>
|
|
|
|
|
+ <el-dialog v-model="dialogVisible" title="会议门户" width="500">
|
|
|
|
|
+ <div class="mb-20">会议名称:{{ training?.trainingName }}</div>
|
|
|
|
|
+ <div>访问地址:</div>
|
|
|
|
|
+ <template #footer>
|
|
|
|
|
+ <div style="display: flex;justify-content: space-around;">
|
|
|
|
|
+ <el-button type="primary" @click="router.push({ path: 'meeting-detail', query: { id: row?.id } })">编辑</el-button>
|
|
|
|
|
+ <el-button @click="copyToClipboard(`会议名称:${training?.trainingName } 访问地址:${training?.trainingName }`)">复制</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-dialog>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup name="meeting" lang="ts">
|
|
<script setup name="meeting" lang="ts">
|
|
|
-import { offOrNoTemp, publishTraining, queryTrainingCount, trainingDelete, trainingList, unpublishTraining } from '@/api/training';
|
|
|
|
|
|
|
+import { offOrNoTemp, publishTraining, queryTrainingCount, trainingDelete, trainingList, unpublishTraining,switchPage } from '@/api/training';
|
|
|
import { colNoData } from '@/utils/noData';
|
|
import { colNoData } from '@/utils/noData';
|
|
|
import { searchTabs } from '@/views/models';
|
|
import { searchTabs } from '@/views/models';
|
|
|
import { SignInCode, TemporaryRegistration } from '../models';
|
|
import { SignInCode, TemporaryRegistration } from '../models';
|
|
@@ -157,6 +173,8 @@ const data = reactive<any>({
|
|
|
},
|
|
},
|
|
|
rules: {}
|
|
rules: {}
|
|
|
});
|
|
});
|
|
|
|
|
+const dialogVisible = ref(false)
|
|
|
|
|
+const training = ref<any>({})
|
|
|
const temporaryRegistration = ref()
|
|
const temporaryRegistration = ref()
|
|
|
const showTemporary = ref(false)
|
|
const showTemporary = ref(false)
|
|
|
const { queryParams, form } = toRefs(data);
|
|
const { queryParams, form } = toRefs(data);
|
|
@@ -287,6 +305,30 @@ const temporary = (row: any) => {
|
|
|
|
|
|
|
|
showTemporary.value = true;
|
|
showTemporary.value = true;
|
|
|
};
|
|
};
|
|
|
|
|
+// 开关会议门户
|
|
|
|
|
+const changePageEnable = async(id,pageEnable)=>{
|
|
|
|
|
+ const res = await switchPage({id,pageEnable})
|
|
|
|
|
+}
|
|
|
|
|
+const ckeckpageEnable = (trainingName)=>{
|
|
|
|
|
+ training.value.trainingName = trainingName
|
|
|
|
|
+ console.log(training.value);
|
|
|
|
|
+
|
|
|
|
|
+ dialogVisible.value = true
|
|
|
|
|
+}
|
|
|
|
|
+{}
|
|
|
|
|
+// 复制文本到剪贴板
|
|
|
|
|
+const copyToClipboard = async (text)=>{
|
|
|
|
|
+ try {
|
|
|
|
|
+ await navigator.clipboard.writeText(text);
|
|
|
|
|
+ console.log('文本已成功复制到剪贴板');
|
|
|
|
|
+ return true;
|
|
|
|
|
+ } catch (err) {
|
|
|
|
|
+ console.error('无法复制文本: ', err);
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// 使用示例
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
getMeetingCount();
|
|
getMeetingCount();
|
|
|
getList();
|
|
getList();
|