lisy 5 месяцев назад
Родитель
Сommit
cb19c551e2

+ 2 - 0
src/components/ImagePreview/index.vue

@@ -27,6 +27,8 @@ const realSrc = computed(() => {
     if (!props.src) {
         return;
     }
+    console.log(props.src);
+    
     let real_src = props.src.split(',')[0];
     return real_src;
 });

+ 5 - 4
src/views/training/meeting-add/index.vue

@@ -255,11 +255,12 @@
                                     <div class="pt-10  f-s-20 f-w-6 d-flex j-c a-c flex-cln ">
                                         报名信息
                                     </div>
-                                    <div class="f-s-12 f-w-4 d-flex j-start c-#BBBBBB">此页面为意向人报名时所见页面:</div>
+                                    <div class="f-s-12 f-w-4 d-flex j-start c-red">此页面为意向人报名时所见页面:</div>
                                 </div>
-                                <template v-for="(field, index) in fixedField" :key="index">
-                                    <div class="meeting-custom-wrapper">
-                                        <MeetingCustom :field="field" @click="showSignIn = true" v-if="field" />
+                                <template v-for="(item, index) in fixedField" :key="index">
+                                    <div class="pd-15 border1 c-#D7D7D7 d-flex j-sb">
+                                        <span class="c-#606266 f-s-16 f-w-6">{{ item.label }}</span>
+                                        <span class="f-s-14">请输入</span>
                                     </div>
                                 </template>
                                 <template v-for="(field, index) in fields" :key="index">

+ 2 - 1
src/views/training/models/index.ts

@@ -2,4 +2,5 @@ export { default as SignInCode } from './sign-in-code.vue'; // 查看签到码
 export { default as MeetingDetailInfo } from './meeting-detail-info.vue';
 export { default as MeetingDetailattend } from './meeting-detail-attend.vue';
 export { default as temporaryRegistration } from './temporary-registration.vue'; // 查看签到码
-export { default as MeetingCustom } from './meeting-custom.vue'; // 查看签到码
+export { default as MeetingCustom } from './meeting-custom.vue'; // 查看签到码
+export { default as registrationInfo } from './registration-info.vue'; 

+ 117 - 38
src/views/training/models/meeting-custom.vue

@@ -4,33 +4,37 @@
             :scroll-to-error="true">
             <template v-if="field.type === '1' || field.type === '7' || field.type === '10'">
                 <el-form-item v-if="field.name.includes('text1-')" prop="label">
-                    <el-tag type="primary" size="small">单行文本</el-tag>
-                    <el-input class="pd-5" v-model="field.label" :placeholder="'请输入标题'" style="width: 340px" />
-                    <el-input class="pd-5" v-model="field.value" :placeholder="'请输入内容'" style="width: 340px"
-                        :disabled="true" />
+                    <el-tag type="info" size="small">单行文本</el-tag>
+                    <el-input class="pd-5 no-disabled-input" v-model="field.label" :placeholder="'请输入标题'"
+                        style="width: 340px;font-size: 16px;" clearable />
+                    <el-input class="pd-5 disabled-input" :placeholder="'请输入'"
+                        style="width: 340px; pointer-events: none ;" />
                 </el-form-item>
                 <el-form-item v-else-if="field.name.includes('text2-')" prop="label">
-                    <el-tag type="primary" size="small">多行文本</el-tag>
-                    <el-input class="pd-5" v-model="field.label" :placeholder="'请输入标题'" style="width: 340px" />
-                    <el-input class="pd-5" v-model="field.value" :placeholder="'请输入内容'" type="textarea" :disabled="true"
+                    <el-tag type="info" size="small">多行文本</el-tag>
+                    <el-input class="pd-5 no-disabled-input" v-model="field.label" :placeholder="'请输入标题'"
                         style="width: 340px" />
+                    <el-input class="pd-5 disabled-input" v-model="field.value" :placeholder="'请输入'" type="textarea"
+                        :disabled="true" style="width: 340px; pointer-events: none ;" />
                 </el-form-item>
-                <el-form-item v-else-if="field.name.includes('desc1-')" prop="defValue">
-                    <el-tag type="primary" size="small">文本描述</el-tag>
-                    <el-input class="pd-5" v-model="field.defValue" :placeholder="'请输入内容'" type="textarea"
-                        style="width: 340px" />
+                <el-form-item v-else-if="field.name.includes('desc1-')" prop="defValue"
+                    :rules="[{ required: true, message: '请输入描述', trigger: 'blur' }]">
+                    <el-tag type="info" size="small">文本描述</el-tag>
+                    <el-input class="pd-5" v-model="field.defValue" :placeholder="'请输入'" type="textarea"
+                        style="width: 340px;font-weight: 600;" />
                 </el-form-item>
                 <div class="d-flex flex-cln" v-else>
-                    <div class="pb-5">{{ field.label }}</div>
-                    <el-input v-model="field.value" :placeholder="'请输入' + field.label" :disabled="true"
-                        style="width: 340px" />
+                    <div class="pb-5 f-s-16 f-w-6">{{ field.label }}</div>
+                    <el-input class="pd-5 disabled-input" :placeholder="'请输入'"
+                        style="width: 340px; pointer-events: none ;" />
                 </div>
             </template>
             <template v-if="field.type === '4' || field.type === '5'">
                 <el-form-item v-if="field.name.includes('rad-')" prop="label"
                     :rules="[{ required: true, message: '请输入标题', trigger: 'blur' }]">
-                    <el-tag type="primary" size="small">单选</el-tag>
-                    <el-input class="pd-5" v-model="field.label" :placeholder="'请输入标题'" style="width: 340px" />
+                    <el-tag type="info" size="small">单选</el-tag>
+                    <el-input class="pd-5 no-disabled-input" v-model="field.label" :placeholder="'请输入标题'"
+                        style="width: 340px" />
                 </el-form-item>
                 <el-form-item v-if="field.name.includes('rad-')" v-for="(item, index) in field.options" :key="index"
                     :prop="'options.' + index + '.label'" :rules="{
@@ -39,19 +43,22 @@
                         trigger: 'blur',
                     }">
                     <div class="pd-1 p-rtv">
-                        <el-radio-group v-model="field.value" :disabled="true">
-                            <el-radio></el-radio>
+                        <el-radio-group v-model="field.value" style="pointer-events: none ;">
+                            <el-radio :label="1"> <span></span></el-radio>
                         </el-radio-group>
                         <el-input type="text" v-model="item.label" style="width: 310px" :placeholder="'请输入选项内容'"
                             @input="val => { item.label = val; item.value = val; }" />
-                        <img class="ml-10 delete-btn" :src="shanchu" @click="removeOption(index)">
+                        <el-icon class="ml-10 delete-btn" color="red" @click="removeOption(index)">
+                            <Close />
+                        </el-icon>
                     </div>
                 </el-form-item>
                 <el-button v-if="field.name.includes('rad-')" type="primary" plain class="w-100% mt-10"
                     @click="addOption()">新增选项</el-button>
                 <el-form-item v-if="field.name.includes('che-')" prop="label">
-                    <el-tag type="primary" size="small">多选</el-tag>
-                    <el-input class="pd-5" v-model="field.label" :placeholder="'请输入标题'" style="width: 340px" />
+                    <el-tag type="info" size="small">多选</el-tag>
+                    <el-input class="pd-5 no-disabled-input" v-model="field.label" :placeholder="'请输入标题'"
+                        style="width: 340px" />
                 </el-form-item>
                 <el-form-item v-if="field.name.includes('che-')" v-for="(item, index) in field.options" :key="index"
                     :prop="'options.' + index + '.label'" :rules="{
@@ -60,10 +67,13 @@
                         trigger: 'blur',
                     }">
                     <div class="pd-1 p-rtv">
-                        <el-checkbox class="pd-5" :disabled="true"></el-checkbox>
+                        <el-checkbox class="pd-5" :label="1" style="pointer-events: none ;"><span></span></el-checkbox>
                         <el-input type="text" v-model="item.label" style="width: 310px" :placeholder="'请输入选项内容'"
                             @input="val => { item.label = val; item.value = val; }" />
-                        <img class="ml-10 delete-btn" :src="shanchu" @click="removeOption(index)">
+
+                        <el-icon class="ml-10 delete-btn" color="red" @click="removeOption(index)">
+                            <Close />
+                        </el-icon>
                     </div>
                 </el-form-item>
                 <el-button v-if="field.name.includes('che-')" type="primary" plain class="w-100% mt-10"
@@ -72,34 +82,34 @@
                     <div class="pb-5">{{ field.label }}</div>
                     <el-radio-group :disabled="true">
                         <el-radio value="1" v-for="(item, index) in field.options" :key="index">{{ item.label
-                            }}</el-radio>
+                        }}</el-radio>
                     </el-radio-group>
                 </div>
             </template>
             <template v-if="field.type === '3'">
                 <div class="pb-5">出生日期</div>
                 <el-time-select v-if="field.label == '出生日期'" style="width: 340px" start="08:30" step="00:15" end="18:30"
-                    placeholder="Select time" :disabled="true" />
+                    placeholder="请选择出生日期" :disabled="true" />
             </template>
             <template v-if="field.type === '6' || field.type === '8' || field.type === '9'">
                 <el-form-item prop="label">
-                    <el-tag type="primary" class="" size="small" v-if="field.name.includes('pic1-')">图片</el-tag>
-                    <el-tag type="primary" size="small" v-else-if="field.name.includes('file1-')">文件</el-tag>
-                    <el-tag type="primary" size="small" v-else>图文描述</el-tag>
-                    <el-input class="pd-5 pl-0" v-model="field.label" :placeholder="'请输入标题'" style="width: 340px"
-                        props="label" />
-                    <div v-if="!field.name.includes('pic2')" class="pd-5 h-50 w-50 bg-#fafafa d-flex a-c j-c"> +
-                    </div>
+                    <el-tag type="info" class="" size="small" v-if="field.name.includes('pic1-')">图片</el-tag>
+                    <el-tag type="info" size="small" v-else-if="field.name.includes('file1-')">文件</el-tag>
+                    <el-tag type="info" size="small" v-else>图文描述</el-tag>
+                    <el-input class="pd-5 pl-0 no-disabled-input" v-model="field.label" :placeholder="'请输入内容'"
+                        style="width: 340px" props="label" clearable />
                 </el-form-item>
+                <ImageUpload v-if="!field.name.includes('pic2')" v-model="field.defValue" :limit="1" isString class="pl-5 noup">
+                </ImageUpload>
                 <el-form-item prop="defValue" v-if="field.name.includes('pic2')">
                     <div>
-                        <ImageUpload v-model="field.defValue" :limit="3" isString class="pl-5">
+                        <ImageUpload v-model="field.defValue" :limit="3" isString class="pl-5 up">
                         </ImageUpload>
                     </div>
                 </el-form-item>
-                <div class="f-s-12 c-999">参会者点击可上传文件/图片</div>
-                <div class="f-s-12 c-999">单个图片/文件大小不超过100MB;</div>
-                <div class="f-s-12 c-999">
+                <div class="f-s-12 c-999 pl-5">参会者点击可上传文件/图片</div>
+                <div class="f-s-12 c-999 pl-5">单个图片/文件大小不超过100MB;</div>
+                <div class="f-s-12 c-999 pl-5">
                     支持格式:gif、png、jpg、jpeg、bmp、doc、docx、pdf、xls、xlsx、ppt.pptx、txt、zip、gzip、rar、mp4、mov</div>
             </template>
         </el-form>
@@ -130,8 +140,8 @@ const addOption = () => {
         prop.field.options = []
     }
     prop.field.options.push({
-        label: '',
-        value: ``
+        label: '新增选项',
+        value: `新增选项`
     })
 }
 defineExpose({
@@ -163,4 +173,73 @@ defineExpose({
     padding: 0 0px;
     font-size: 12px;
 }
+
+.no-interaction {
+    pointer-events: none;
+}
+
+.no-interaction .el-input__inner {
+    background-color: #fff;
+    color: #606266;
+    cursor: default;
+}
+
+.no-interaction:hover {
+    cursor: default;
+}
+
+:deep(.disabled-input .el-input__inner) {
+    cursor: not-allowed;
+    /* 鼠标变成禁止符号 */
+    background-color: #fff !important;
+    /* 避免默认的灰色背景 */
+    color: #606266;
+    /* 保持文字颜色 */
+    border-color: #dcdfe6;
+    /* 保持边框颜色 */
+
+}
+
+:deep(.disabled-input .el-textarea__inner) {
+    cursor: not-allowed;
+    /* 鼠标变成禁止符号 */
+    background-color: #fff;
+    /* 避免默认的灰色背景 */
+    color: #606266;
+    /* 保持文字颜色 */
+    border-color: #dcdfe6;
+    /* 保持边框颜色 */
+    /* font-weight: bold !important; */
+}
+
+/* 去除 hover 效果 */
+/* .disabled-input .el-input__inner:hover {
+    border-color: #dcdfe6 !important;
+} */
+
+:deep(.no-disabled-input .el-input__inner) {
+    font-weight: bold !important;
+}
+
+:deep(.no-disabled-input .el-input__wrapper) {
+    box-shadow: none !important;
+    font-weight: bold !important;
+    border-radius: 0;
+    border: 1px solid transparent !important;
+    /* 透明边框,避免高度变化 */
+    font-size: 16px;
+}
+
+:deep(.no-disabled-input .el-input__wrapper.is-focus) {
+    box-shadow: none !important;
+    border: 1px solid #dcdfe6 !important;
+}
+
+:deep(.up .el-upload.el-upload--picture-card) {
+    border-color: #333
+}
+:deep(.noup .el-upload.el-upload--picture-card) {
+    border-color: transparent;
+    pointer-events: none ;
+}
 </style>

+ 17 - 3
src/views/training/models/meeting-detail-attend.vue

@@ -27,8 +27,9 @@
         <div class="d-flex mb-16 ">
             <div class="info-title">
                 <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?.joinCount || 0 }}人 |
+                    签到:{{
+                        form?.signCount || 0 }}人 | 领取证书:{{ form?.certCount || 0 }}人)</span>
             </div>
         </div>
 
@@ -74,6 +75,11 @@
             <vxe-column title="联系方式" field="contact" min-width="100" :formatter="colNoData" />
             <vxe-column title="备注" field="remark" min-width="100" :formatter="colNoData" />
             <vxe-column title="报名时间" align="center" field="createTime" min-width="100" :formatter="colNoData" />
+            <vxe-column title="报名信息" min-width="100" fixed="right">
+                <template #default="{ row }">
+                    <div class="c-s-p"> <u @click="checkRegostrationInfo(row)">查看报名信息</u></div>
+                </template>
+            </vxe-column>
             <vxe-column title="参会状态" min-width="100" fixed="right">
                 <template #default="{ row }">
                     <DictTag :options="dm_training_signup_status_list" :value="row?.signupStatusForPc">
@@ -109,12 +115,15 @@
             </div>
         </template>
     </el-dialog>
+    <registrationInfo v-if="showTemporary" v-model:show="showTemporary" :info="temporaryRegistration">
+    </registrationInfo>
 </template>
 <script setup name="MeetingDetailInfo" lang="ts">
 import { ref, reactive, onMounted } from 'vue';
 import { signupCount, trainingMembers, signupApproval } from '@/api/training';
 import { searchTabs } from '@/views/models';
 import { colNoData } from '@/utils/noData';
+import registrationInfo from './registration-info.vue'
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { cpy_res_status, dm_training_signup_status_list, vip_level } = toRefs<any>(proxy?.useDict('cpy_res_status', 'dm_training_signup_status_list', 'vip_level'));
 // 获取详情
@@ -124,10 +133,15 @@ const props = defineProps({
         default: () => ({})
     },
 });
-
+const showTemporary = ref(false)
 const dialogVisible = ref(false)
 const dialoginput = ref()
 const currentRow = ref()
+const temporaryRegistration = ref()
+const checkRegostrationInfo = (row) => {
+    temporaryRegistration.value = row
+    showTemporary.value = true
+}
 const openDialog = (row) => {
     currentRow.value = row;  // 保存当前行数据
     dialogVisible.value = true;

+ 3 - 3
src/views/training/models/meeting-detail-info.vue

@@ -51,7 +51,7 @@
                     <div class="d-flex flex-wrap">
                         <template v-for="(item, index) in form?.wechatQrCode" :key="index">
                             <div class="mr-10 mb-10">
-                                <ImagePreview :src="item" :width="100"></ImagePreview>
+                                <ImagePreview :src="item" :width="100" :height="100"></ImagePreview>
                             </div>
                         </template>
                     </div>
@@ -59,7 +59,7 @@
                 <div class="flex1">
                     <div class="c-333 mb-10">封面图:</div>
                     <div>
-                        <ImagePreview :src="form?.coverImgUrl" :width="100"></ImagePreview>
+                        <ImagePreview :src="form?.coverImgUrl" :width="100" :height="100"></ImagePreview>
                     </div>
                 </div>
                 <div v-if="form?.attachments" class="flex1">
@@ -67,7 +67,7 @@
                     <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>
+                                <ImagePreview :src="item" :width="100" :height="100"></ImagePreview>
                             </div>
                         </template>
                     </div>

+ 30 - 31
src/views/training/models/meeting-editors.vue

@@ -14,38 +14,38 @@
                             <div class="pl-10 d-flex f-w-w">
                                 <el-button class="mb-25 ml-10 w-80" @click="addCustoms({
                                     name: `id-${generateSecureRandomString()}`,
-                                    label: '身份证', type: '1', required: '0', readonly: '0',
+                                    label: '身份证', type: '1', required: '1', readonly: '0',
                                     pattern: '^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$'
                                 })">身份证</el-button>
                                 <el-button class="mb-25 w-80" @click="addCustoms({
-                                    name: `birth-${generateSecureRandomString()}`, readonly: '0', required: '0',
+                                    name: `birth-${generateSecureRandomString()}`, readonly: '0', required: '1',
                                     label: '出生日期', type: '3'
                                 })">出生日期</el-button>
                                 <el-button class="mb-25 w-80" @click="addCustoms({
                                     name: `sex-${generateSecureRandomString()}`,
-                                    label: '性别', type: '4', required: '0', readonly: '0',
+                                    label: '性别', type: '4', required: '1', readonly: '0',
                                     options: [
-                                        { label: '男', value: '' }, { label: '女', value: '' }
+                                        { label: '男', value: '' }, { label: '女', value: '' }
                                     ]
                                 })">性别</el-button>
                                 <el-button class="mb-25 w-80" @click="addCustoms({
-                                    name: `old-${generateSecureRandomString()}`, required: '0', readonly: '0',
+                                    name: `old-${generateSecureRandomString()}`, required: '1', readonly: '0',
                                     label: '年龄', type: '1',
                                 })">年龄</el-button>
                                 <el-button class="mb-25 w-80" @click="addCustoms({
-                                    name: `edu-${generateSecureRandomString()}`, required: '0', readonly: '0',
+                                    name: `edu-${generateSecureRandomString()}`, required: '1', readonly: '0',
                                     label: '学历', type: '1',
                                 })">学历</el-button>
                                 <el-button class="mb-25 w-80" @click="addCustoms({
-                                    name: `uni-${generateSecureRandomString()}`, required: '0', readonly: '0',
+                                    name: `uni-${generateSecureRandomString()}`, required: '1', readonly: '0',
                                     label: '大学', type: '1',
                                 })">大学</el-button>
                                 <el-button class="mb-25 w-80" @click="addCustoms({
-                                    name: `pro-${generateSecureRandomString()}`, required: '0', readonly: '0',
+                                    name: `pro-${generateSecureRandomString()}`, required: '1', readonly: '0',
                                     label: '专业', type: '1',
                                 })">专业</el-button>
                                 <el-button class="mb-25 w-80" @click="addCustoms({
-                                    name: `ind-${generateSecureRandomString()}`, required: '0', readonly: '0',
+                                    name: `ind-${generateSecureRandomString()}`, required: '1', readonly: '0',
                                     label: '行业', type: '1',
                                 })">行业</el-button>
                             </div>
@@ -53,20 +53,20 @@
                         <div class="pd-10 f-s-16">联系方式</div>
                         <div class="pl-10 d-flex f-w-w">
                             <el-button class="mb-25 ml-10 w-80" @click="addCustoms({
-                                name: `wx-${generateSecureRandomString()}`, required: '0', readonly: '0',
+                                name: `wx-${generateSecureRandomString()}`, required: '1', readonly: '0',
                                 label: '微信号', type: '1',
                             })">微信号</el-button>
                             <el-button class="mb-25 w-80" @click="addCustoms({
-                                name: `qq-${generateSecureRandomString()}`, required: '0', readonly: '0',
+                                name: `qq-${generateSecureRandomString()}`, required: '1', readonly: '0',
                                 label: 'QQ号', type: '1',
                             })">QQ号</el-button>
                             <el-button class="mb-25 w-80" @click="addCustoms({
-                                name: `eml-${generateSecureRandomString()}`, required: '0', readonly: '0',
+                                name: `eml-${generateSecureRandomString()}`, required: '1', readonly: '0',
                                 label: '邮箱', type: '1',
                                 pattern: '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
                             })">邮箱</el-button>
                             <el-button class="mb-25 w-80" @click="addCustoms({
-                                name: `add-${generateSecureRandomString()}`, required: '0', readonly: '0',
+                                name: `add-${generateSecureRandomString()}`, required: '1', readonly: '0',
                                 label: '地址', type: '1',
                             })">地址</el-button>
                         </div>
@@ -74,40 +74,40 @@
                         <div class="pd-10 f-s-16">选择</div>
                         <div class="pl-10 d-flex f-w-w">
                             <el-button class="mb-25 ml-10 w-80" @click="addCustoms({
-                                name: `rad-${generateSecureRandomString()}`, required: '0', readonly: '0',
-                                label: '', type: '4', options: [
-                                    { label: '', value: '' }, { label: '', value: '' }, { label: '', value: '' }
+                                name: `rad-${generateSecureRandomString()}`, required: '1', readonly: '0',
+                                label: '请输入标题', type: '4', options: [
+                                    { label: '选项一', value: '选项一' }, { label: '选项二', value: '选项二' }, { label: '选项三', value: '选项三' }
                                 ]
                             })">单选</el-button>
                             <el-button class="mb-25 w-80" @click="addCustoms({
-                                name: `che-${generateSecureRandomString()}`, required: '0', readonly: '0',
-                                label: '', type: '5', options: [
-                                    { label: '', value: '' }, { label: '', value: '' }, { label: '', value: '' }
+                                name: `che-${generateSecureRandomString()}`, required: '1', readonly: '0',
+                                label: '请输入标题', type: '5', options: [
+                                    { label: '选项一', value: '选项一' }, { label: '选项二', value: '选项二' }, { label: '选项三', value: '选项三' }
                                 ]
                             })">多选</el-button>
                         </div>
                         <div class="pd-10 f-s-16">文本输入</div>
                         <div class="pl-10 d-flex f-w-w">
                             <el-button class="mb-25 ml-10 w-80" @click="addCustoms({
-                                name: `text1-${generateSecureRandomString()}`, type: '1', required: '0', readonly: '0',
+                                name: `text1-${generateSecureRandomString()}`, type: '1', required: '1', readonly: '0', label: '请输入标题',
                             })">单行文本</el-button>
                             <el-button class="mb-25 w-80" @click="addCustoms({
-                                name: `text2-${generateSecureRandomString()}`, type: '7', required: '0', readonly: '0',
+                                name: `text2-${generateSecureRandomString()}`, type: '7', required: '1', readonly: '0', label: '请输入标题',
                             })">多行文本</el-button>
                             <el-button class="mb-25 w-80" @click="addCustoms({
-                                name: `desc1-${generateSecureRandomString()}`, type: '10', readonly: '1', required: '0', label: '文本描述'
+                                name: `desc1-${generateSecureRandomString()}`, type: '10', readonly: '1', required: '0', label: '文本描述', defValue: '请输入内容',
                             })">文本描述</el-button>
                         </div>
                         <div class="pd-10 f-s-16">其他</div>
                         <div class="pl-10 d-flex f-w-w">
                             <el-button class="mb-25 ml-10 w-80" @click="addCustoms({
-                                name: `pic1-${generateSecureRandomString()}`, type: '8', required: '0', readonly: '0',
+                                name: `pic1-${generateSecureRandomString()}`, type: '8', required: '1', readonly: '0', label: '请输入标题'
                             })">图片</el-button>
                             <el-button class="mb-25 w-80" @click="addCustoms({
-                                name: `file1-${generateSecureRandomString()}`, type: '6', required: '0', readonly: '0',
+                                name: `file1-${generateSecureRandomString()}`, type: '6', required: '1', readonly: '0', label: '请输入标题'
                             })">文件</el-button>
                             <el-button class="mb-25 w-80" @click="addCustoms({
-                                name: `pic2-${generateSecureRandomString()}`, type: '9', required: '0', readonly: '0',
+                                name: `pic2-${generateSecureRandomString()}`, type: '9', required: '0', readonly: '0', label: '请输入内容'
                             })">图文描述</el-button>
                         </div>
                     </div>
@@ -117,12 +117,12 @@
                             <div class="pt-10  f-s-20 f-w-6 d-flex j-c a-c flex-cln ">
                                 报名信息
                             </div>
-                            <div class="f-s-12 f-w-4 d-flex j-start c-#BBBBBB">此页面为意向人报名时所见页面:</div>
+                            <div class="f-s-12 f-w-4 d-flex j-start c-red">此页面为意向人报名时所见页面:</div>
                         </div>
                         <template v-for="(item, index) in fixedField" :key="index">
                             <div class="pd-15 border1 c-#D7D7D7 d-flex j-sb">
                                 <span>{{ item.label }}</span>
-                                <span>(不可编辑)</span>
+                                <span>(固定字段,不可编辑)</span>
                             </div>
                         </template>
                         <VueDraggable ref="el" v-model="fields">
@@ -130,9 +130,7 @@
                                 <div class="meeting-custom-wrapper" :class="{ 'active-border': activeField === field }"
                                     @click="setActive(field)">
                                     <MeetingCustom :field="field" ref="childRef" v-if="field" />
-                                    <el-button class="delete-btn" type="danger" text @click.stop="removeField(index)">
-                                        删除
-                                    </el-button>
+                                    <img class="ml-10 delete-btn" :src="shanchu" @click.stop="removeField(index)">
                                 </div>
                             </template>
                         </VueDraggable>
@@ -148,6 +146,7 @@
 </template>
 
 <script setup name="lmmeeting-meeting-add" lang="ts">
+import shanchu from '@/assets/images/shanchu.png'
 import { VueDraggable } from 'vue-draggable-plus'
 import { ref, reactive, onMounted, watch } from 'vue';
 import { debounce } from 'lodash';
@@ -296,7 +295,7 @@ watch(
 
 .delete-btn {
     position: absolute;
-    top: 5px;
+    top: 15px;
     right: 5px;
     padding: 0 5px;
     font-size: 12px;

+ 92 - 0
src/views/training/models/registration-info.vue

@@ -0,0 +1,92 @@
+<template>
+    <vxe-modal v-model="dialogVisible" :title="title" show-zoom resize show-footer destroy-on-close transfer
+        @hide="close" :width="width" :z-index="1002">
+        <template #default>
+            <div>
+                <div v-if="info" ref="codeImgRef" style="width: 400px; margin: 0 auto;">
+                    <div class="mb-6 f-w-6 f-s-16 c-333">报名信息</div>
+                    <div class="mb-6">企业名称:{{ info?.company || '-' }}</div>
+                    <div class="mb-6">姓名:{{ info?.name || '-' }}</div>
+                    <div class="mb-6">职务{{ info?.position || '-' }}</div>
+                    <div class="mb-6">联系电话:{{ info?.contact || '-' }}</div>
+                    <div v-for="item, index in info.questionAnswer" :key="index" class="d-flex"
+                        :style="['6', '8', '9', '10'].includes(item.type) ? { 'flex-direction': 'column' } : {}">
+                        <div class="d-flex mb-6">
+                            <div class=" f-s-14" v-if="item.type !== '10'">{{ item.label }}:</div>
+                        </div>
+                        <div class="ov-hd mb-6  f-s-14" v-if="!['5', '6', '8', '9', '10'].includes(item.type)">{{
+                            item?.value || '-' }}
+                        </div>
+                        <div class="ov-hd mb-6  f-s-14" v-if="item.type == '5'">{{
+                            item?.value.join(',') || '-' }}
+                        </div>
+                        <div class="ov-hd mb-6  f-s-14" v-if="item.type == '6'">
+                            <FileLook v-model="item.value" :span="24"></FileLook>
+                        </div>
+                        <div class=" mb-6  f-s-14 d-flex flex-wrap" v-if="item.type == '8'">
+                            <template v-for="(items, index) in item.value" :key="index">
+                                <div class="mr-10 mb-10">
+                                    <ImagePreview :src="items" :width="100" :height="100"></ImagePreview>
+                                </div>
+                            </template>
+                        </div>
+                        <div class="ov-hd mb-6  f-s-14 pt-10 pb-10 d-flex flex-wrap" v-if="item.type == '9'">
+                            <template v-for="(items, index) in item.defValue.split(',')" :key="index">
+                                <div class="mr-10 mb-10">
+                                    <ImagePreview :src="items" :width="100" :height="100"></ImagePreview>
+                                </div>
+                            </template>
+                        </div>
+                        <div class="ov-hd mb-6  f-s-14 pt-10 pb-10" v-if="item.type == '10'">
+                            {{ item?.defValue }}
+                        </div>
+                    </div>
+
+                </div>
+            </div>
+            <div class="d-flex j-c">
+            </div>
+        </template>
+    </vxe-modal>
+</template>
+
+<script setup name="SignInCode" lang="ts">
+import { propTypes } from '@/utils/propTypes';
+import html2canvas from 'html2canvas';
+import { FileLook } from '@/views/models';
+const emit = defineEmits(['update:show', 'close', 'success']);
+const props = defineProps({
+    show: propTypes.bool.def(false),
+    title: propTypes.string.def(' '),
+    width: propTypes.number.def(500),
+    info: propTypes.any.def(null),
+    dict: propTypes.object.def({})
+});
+
+const dialogVisible = ref(false);
+const close = () => {
+    emit('update:show', false);
+    emit('close', false);
+};
+const codeImgRef = ref<HTMLElement | null>(null);
+const saveImg = () => {
+    html2canvas(codeImgRef.value, {
+        useCORS: true,
+        allowTaint: false,
+        scale: 2
+    }).then((canvas) => {
+        const url = canvas.toDataURL('image/png');
+        const a: any = document.createElement('a');
+        a.download = `${props?.info?.trainingName}-临时报名二维码.png`;
+        a.href = url;
+        a.click();
+    });
+};
+watch(
+    () => props.show,
+    (val) => {
+        dialogVisible.value = val;
+    },
+    { immediate: true }
+);
+</script>