Bladeren bron

Merge branch 'master-charge' of http://git.yujin.shuziyunyao.com/yujin/digital-medicine-front into master-charge

huangxw 4 maanden geleden
bovenliggende
commit
bbed0f5b1f
3 gewijzigde bestanden met toevoegingen van 130 en 11 verwijderingen
  1. 11 3
      src/api/training/index.ts
  2. 43 1
      src/views/training/meeting/index.vue
  3. 76 7
      src/views/training/models/meeting-detail-attend.vue

+ 11 - 3
src/api/training/index.ts

@@ -116,10 +116,10 @@ export const editPrice = (data: any): AxiosPromise => {
     });
 };
 // 开关会议临时状态
-export const confirmSigPublicPay = (id: any): AxiosPromise => {
+export const confirmSigPublicPay = (id: any,payType:any): AxiosPromise => {
     return request({
-        url: `/dgtmedicine/trainingSignup/confirmSigPublicPay/${id}`,
-        method: 'get',
+        url: `/dgtmedicine/trainingSignup/confirmSigPublicPay/${id}?payType=${payType}`,
+        method: 'get'
     });
 };
 // 上传发票
@@ -130,3 +130,11 @@ export const uploadInvoice = (data: any): AxiosPromise => {
         data
     });
 };
+// 会议门户开关
+export const switchPage = (params: any): AxiosPromise => {
+    return request({
+        url: `/dgtmedicine/training/switchPage`,
+        method: 'get',
+        params
+    });
+};

+ 43 - 1
src/views/training/meeting/index.vue

@@ -79,6 +79,12 @@
                         <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="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">
                             <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>
@@ -130,10 +136,20 @@
     </div>
     <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>
+    <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>
 
 <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 { searchTabs } from '@/views/models';
 import { SignInCode, TemporaryRegistration } from '../models';
@@ -157,6 +173,8 @@ const data = reactive<any>({
     },
     rules: {}
 });
+const dialogVisible = ref(false)
+const training = ref<any>({})
 const temporaryRegistration = ref()
 const showTemporary = ref(false)
 const { queryParams, form } = toRefs(data);
@@ -287,6 +305,30 @@ const temporary = (row: any) => {
 
     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(() => {
     getMeetingCount();
     getList();

+ 76 - 7
src/views/training/models/meeting-detail-attend.vue

@@ -252,14 +252,28 @@
             </div>
         </template>
     </el-dialog>
-    <el-dialog v-model="showTransfer" title="系统提示" width="360" center>
-        <div class="d-flex a-c">
-            <span>确认收款后将直接改为已支付状态,并进入报名审核流程,操作无法撤回请慎重操作。是否确认收款?</span>
+    <el-dialog v-model="showTransfer" title="系统提示" width="760" center>
+        <template #header="{ titleId, titleClass }">
+            <div :id="titleId" :class="titleClass" class="titleClass">系统提示</div>
+        </template>
+        <div class="d-flex a-c flex-cln" style="align-items: flex-start;">
+            <div class="f-s-26" style="margin-bottom: 40px;margin-top: 20px;">请选择具体的收款人方式:</div>
+            <!-- <el-form-item label="" prop="res">
+                <el-radio-group v-model="collectiontype">
+                    <el-radio size="large" value="3" border :class="{ 'orange-radio': collectiontype === '4' }" style="height: 100px;width: 300px;">对公转账收款</el-radio>
+                    <el-radio size="large" value="4" border style="height: 100px;width: 300px;">现场支付</el-radio>
+                </el-radio-group>
+            </el-form-item> -->
+            <div class="d-flex">
+                <div class="orange-button" :class="{'orange-active': collectiontype === '4'}" @click="collectiontype = '4'">对公转账收款</div>
+                <div class="green-button" :class="{'green-active': collectiontype === '3'}" @click="collectiontype = '3'">现场收款</div>
+            </div>
+            <div class="f-s-24">确认收款后将直接改为已支付状态,并进入报名审核流程,操作无法撤回请慎重操作。</div>
         </div>
         <template #footer>
             <div class="dialog-footer">
-                <el-button @click="showTransfer = false">我再看看</el-button>
-                <el-button type="primary" @click="confirmTransfer">确认收到转账</el-button>
+                <el-button @click="showTransfer = false" size="large" class="mr-20">我再看看</el-button>
+                <el-button type="primary" @click="confirmTransfer" size="large">确认收款</el-button>
             </div>
         </template>
     </el-dialog>
@@ -338,6 +352,7 @@ const fromvalue = ref<any>({
     targetId: '',
     msg: ''
 })
+const collectiontype =ref()
 const checkInvoiceData = (row)=>{
     invoicingInformation.value = true
     invoiceData.value = row
@@ -415,7 +430,7 @@ const openTransfer = (row)=>{
     editPricedata.value = row
 }
 const confirmTransfer = async()=>{
-    await confirmSigPublicPay(editPricedata.value?.id)
+    await confirmSigPublicPay(editPricedata.value?.id,collectiontype)
     showTransfer.value = false
      getList();
 }
@@ -471,7 +486,9 @@ onMounted(() => {
 .reject-radio :deep(.el-radio__label) {
     color: #F56C6C;
 }
-
+.orange-radio :deep(.el-radio__label) {
+    color: orange;
+}
 .reject-radio :deep(.el-radio__inner) {
     border-color: #F56C6C;
     background: #F56C6C;
@@ -491,4 +508,56 @@ onMounted(() => {
     width: 200px;
     left: 70px;
 }
+.orange-button{
+    border:1px solid #d7d7d7;
+    height: 100px;
+    width: 300px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    cursor: pointer;
+    font-size: 36px;
+    margin-right: 40px;
+    margin-bottom: 40px;
+    font-weight: 600;
+}
+.orange-button:hover{
+    color: white;
+    background-color: orange;
+    border: 1px solid orange;
+    opacity: 0.5;
+}
+.green-button:hover{
+    color: white;
+    background-color: green;
+    border: 1px solid green;
+    opacity: 0.5;
+}
+.green-button{
+    border:1px solid #d7d7d7;
+    height: 100px;
+    width: 300px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    cursor: pointer;
+    font-size: 36px;
+    margin-right: 40px;
+    margin-bottom: 40px;
+    font-weight: 600;
+}
+
+.orange-active{
+    color: white;
+    background-color: orange;
+    border: 1px solid orange;
+}
+.green-active{
+    color: white;
+    background-color: green;
+    border: 1px solid green;
+}
+.titleClass{
+    font-size: 30px !important;
+}
 </style>