huangxw před 7 měsíci
rodič
revize
2033daf541

+ 15 - 0
src/api/training/index.ts

@@ -60,3 +60,18 @@ export const unpublishTraining = (id: string): AxiosPromise => {
         method: 'get'
     });
 };
+// 会议详情
+export const trainingDetailById = (id: string): AxiosPromise => {
+    return request({
+        url: `/dgtmedicine/training/getInfo/${id}`,
+        method: 'get'
+    });
+};
+// 当前会议下报名成员
+export const trainingMembers = (params: any): AxiosPromise => {
+    return request({
+        url: `/dgtmedicine/trainingSignup/list`,
+        method: 'get',
+        params
+    });
+};

+ 113 - 2
src/views/training/meeting-detail/index.vue

@@ -1,4 +1,115 @@
 <template>
-    <div>xx</div>
+    <div class="p-3">
+        <div class="bg-fff flex1 ov-hd d-flex flex-cln">
+            <div class="d-flex a-c pd-16 border-bottom">
+                <div class="f-s-20 c-333 f-w-7 mr-10">会议详情</div>
+                <el-button @click="router.go(-1)" type="primary" text>
+                    <el-icon>
+                        <Back />
+                    </el-icon>
+                    返回上一级
+                </el-button>
+            </div>
+            <div class="flex1 over-auto">
+                <div class="pd-16">
+                    <el-descriptions :column="4">
+                        <el-descriptions-item label="会议名称:">{{ form?.trainingName || '-' }}</el-descriptions-item>
+                        <el-descriptions-item label="培训时间:">{{ form?.trainingStart }}~{{ form?.trainingEnd }}</el-descriptions-item>
+                        <el-descriptions-item label="培训方式:">{{ selectDictLabel(dm_training_join_type, form?.joinType) || '-' }}</el-descriptions-item>
+                        <el-descriptions-item label="培训地点:">{{ form?.trainingLocation || '-' }}</el-descriptions-item>
+                        <el-descriptions-item label="是否颁发证书:">{{ selectDictLabel(dm_training_join_type, form?.certFlag) || '-' }}</el-descriptions-item>
+                        <el-descriptions-item label="证书名称:">{{ selectDictLabels(dm_training_cert, form?.certificateInfo, ',') }}</el-descriptions-item>
+                        <el-descriptions-item label="创建人:">{{ form?.createByName || '-' }}</el-descriptions-item>
+                        <el-descriptions-item label="创建时间:">{{ form?.createTime || '-' }}</el-descriptions-item>
+                    </el-descriptions>
+                    <div class="d-flex f-s-14 c-666">
+                        <div class="flex1">
+                            <div class="c-333 mb-10">培训详情:</div>
+                            <div>{{ form?.description || '-' }}</div>
+                        </div>
+                        <div v-if="form?.attachments" class="flex1">
+                            <div class="c-333 mb-10">相关文件:</div>
+                            <FileLook v-model="form.attachments" :span="12"></FileLook>
+                        </div>
+                    </div>
+                    <el-divider />
+                    <div class="d-flex f-s-14 c-666">
+                        <div class="flex1">
+                            <div class="c-333 mb-10">封面图:</div>
+                            <div>
+                                <ImagePreview :src="form?.coverImgUrl" :width="100"></ImagePreview>
+                            </div>
+                        </div>
+                        <div v-if="form?.attachments" class="flex1">
+                            <div class="c-333 mb-10">会议图:</div>
+                            <div class="d-flex flex-wrap">
+                                <template v-for="(item, index) in form?.trainingImg" :key="index">
+                                    <div class="mr-10 mb-10">
+                                        <ImagePreview :src="item" :width="100"></ImagePreview>
+                                    </div>
+                                </template>
+                            </div>
+                        </div>
+                    </div>
+                    <el-divider />
+                    <div class="d-flex mb-16">
+                        <div class="info-title">
+                            <span>参会人员信息</span>
+                            <span class="f-s-14 c-666">(报名:288人 | 签到:255人 | 领取证书:250人)</span>
+                        </div>
+                        <div class="flex1"></div>
+                    </div>
+                    <vxe-table :loading="loading" border :data="list" min-height="0">
+                        <!-- 序号 -->
+                        <vxe-column type="seq" width="60" title="序号" align="center" />
+                        <vxe-column title="企业名称" align="center" field="name" min-width="100" :formatter="colNoData" />
+                    </vxe-table>
+                    <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
+                </div>
+            </div>
+        </div>
+    </div>
 </template>
-<script lang="tsx" setup></script>
+
+<script setup name="meeting-detail" lang="ts">
+import { ref, reactive, onMounted } from 'vue';
+import { debounce } from 'lodash';
+import router from '@/router';
+import { trainingDetailById, trainingMembers } from '@/api/training';
+import { FileLook } from '@/views/models';
+import { colNoData } from '@/utils/noData';
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const { dm_training_join_type, yes_no, dm_training_cert, dm_training_status } = toRefs<any>(proxy?.useDict('dm_training_join_type', 'yes_no', 'dm_training_cert', 'dm_training_status'));
+// 获取详情
+
+const form = ref<any>(null);
+const query = useRoute().query;
+const getDetail = async () => {
+    const res = await trainingDetailById(query?.id as string);
+    if (res.code === 200) {
+        form.value = res.data;
+    } else {
+        ElMessage.error(res.msg);
+    }
+};
+const queryParams = ref<any>({
+    pageNum: 1,
+    pageSize: 10,
+    trainingId: query?.id || ''
+});
+const loading = ref(false);
+const total = ref(0);
+const list = ref<any>([]);
+const getList = async () => {
+    loading.value = true;
+    const res = await trainingMembers(queryParams.value);
+    if (!res || res.code !== 200) return;
+    list.value = res.rows;
+    total.value = res.total;
+    loading.value = false;
+};
+onMounted(() => {
+    getDetail();
+    getList();
+});
+</script>

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

@@ -70,11 +70,9 @@
                                 <span></span>
                                 <el-button v-if="['3'].includes(row?.trainingStatus)" type="primary" @click="editRow(row)" text>编辑</el-button>
                                 <span></span>
-                                <el-button v-if="!['3'].includes(row?.trainingStatus)" style="color: #0079fe;" text>分享</el-button>
-                                <span></span>
                                 <el-button v-if="['1', '0'].includes(row?.trainingStatus)" @click="trainingSignIn(row)" style="color: #0079fe;" text>签到二维码</el-button>
                                 <span></span>
-                                <el-button style="color: #0079fe;" text>详情</el-button>
+                                <el-button @click="router.push({ path: 'meeting-detail', query: { id: row?.id } })" style="color: #0079fe;" text>详情</el-button>
                                 <span></span>
                                 <el-button text type="danger" @click="deleteRow(row)">删除</el-button>
                             </template>