|
@@ -1,54 +1,59 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="flex1 over-auto">
|
|
<div class="flex1 over-auto">
|
|
|
<div class="pd-16 ov-hd">
|
|
<div class="pd-16 ov-hd">
|
|
|
- <div><span class="c-primary">|</span> 会议基本信息</div>
|
|
|
|
|
|
|
+ <div class="info-title f-s-18 c-333 f-w-7 pb-10">会议基本信息</div>
|
|
|
<el-descriptions :column="4">
|
|
<el-descriptions :column="4">
|
|
|
<el-descriptions-item label="会议名称:">{{ form?.trainingName || '-' }}</el-descriptions-item>
|
|
<el-descriptions-item label="会议名称:">{{ form?.trainingName || '-' }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="培训时间:">{{ form?.trainingStart }}~{{ form?.trainingEnd
|
|
|
|
|
- }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="报名时间:">{{ form?.signupStart }}~{{ form?.signupEnd
|
|
|
|
|
- }}</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="会议时间:">{{ form?.trainingStart }}~{{ form?.trainingEnd}}</el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label="报名时间:">{{ form?.signupStart }}~{{ form?.signupEnd }}</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="联系人:">{{ form?.contactName || '-' }}</el-descriptions-item>
|
|
<el-descriptions-item label="联系人:">{{ form?.contactName || '-' }}</el-descriptions-item>
|
|
|
<el-descriptions-item label="联系电话:">{{ form?.tel || '-' }}</el-descriptions-item>
|
|
<el-descriptions-item label="联系电话:">{{ form?.tel || '-' }}</el-descriptions-item>
|
|
|
- <el-descriptions-item label="报名人数:" v-if="form?.conditions.totalCheck
|
|
|
|
|
- == '1'">限制 {{
|
|
|
|
|
- form?.conditions.total }}</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="报名人数:" v-else> 不限制</el-descriptions-item>
|
|
|
|
|
- <el-descriptions-item label="限制条件:" v-if="form?.conditions">{{ form?.conditions?.levelTotalCheck == '1'
|
|
|
|
|
- ?
|
|
|
|
|
- '按盟员单位等级限制' : '' }} {{
|
|
|
|
|
- form.conditions.cpyTotalCheck == '1'
|
|
|
|
|
- ? '按每家企业人数限制' : '' }}</el-descriptions-item>
|
|
|
|
|
|
|
+ <el-descriptions-item label="报名人数:" v-if="form?.conditions.totalCheck == '1'">
|
|
|
|
|
+ 限制
|
|
|
|
|
+ {{form?.conditions.total }}
|
|
|
|
|
+ </el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label="报名人数:" v-else>不限制</el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label="限制条件:" v-if="form?.conditions">
|
|
|
|
|
+ {{ form?.conditions?.levelTotalCheck == '1'?'按盟员单位等级限制' : '' }}
|
|
|
|
|
+ {{form.conditions.cpyTotalCheck == '1'? '按每家企业人数限制' : '' }}
|
|
|
|
|
+ </el-descriptions-item>
|
|
|
<el-descriptions-item label="是否电子手签:">{{ form?.eleSignature == '1' ? "是" : '否' }}</el-descriptions-item>
|
|
<el-descriptions-item label="是否电子手签:">{{ form?.eleSignature == '1' ? "是" : '否' }}</el-descriptions-item>
|
|
|
<el-descriptions-item label="创建人:">{{ form?.createByName || '-' }}</el-descriptions-item>
|
|
<el-descriptions-item label="创建人:">{{ form?.createByName || '-' }}</el-descriptions-item>
|
|
|
<el-descriptions-item label="创建时间:">{{ form?.createTime || '-' }}</el-descriptions-item>
|
|
<el-descriptions-item label="创建时间:">{{ form?.createTime || '-' }}</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
</el-descriptions>
|
|
|
|
|
+ <el-descriptions :column="4">
|
|
|
|
|
+ <el-descriptions-item label="会议详情:">{{ form?.description || '-' }}</el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label=""></el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label=""></el-descriptions-item>
|
|
|
|
|
+ <el-descriptions-item label="与会须知:">{{ form?.notice || '-' }}</el-descriptions-item>
|
|
|
|
|
+ </el-descriptions>
|
|
|
<div class="d-flex f-s-14 c-666 mb-10">
|
|
<div class="d-flex f-s-14 c-666 mb-10">
|
|
|
<div class="flex1">
|
|
<div class="flex1">
|
|
|
- <div class="c-333 mb-10">培训详情:</div>
|
|
|
|
|
- <div>{{ form?.description || '-' }}</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="flex1">
|
|
|
|
|
- <div class="c-333 mb-10">与会须知:</div>
|
|
|
|
|
- <div>{{ form?.notice || '-' }}</div>
|
|
|
|
|
- </div>
|
|
|
|
|
- <div class="flex1">
|
|
|
|
|
- <div class="c-333 mb-10">会议备注:</div>
|
|
|
|
|
- <div>{{ form?.remark || '-' }}</div>
|
|
|
|
|
|
|
+ <div class="c-333 mb-10">
|
|
|
|
|
+ 会议备注:
|
|
|
|
|
+ <span v-if="!form?.remark">-</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div v-if="form?.remark">{{ form?.remark || '-' }}</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div v-if="form?.attachments" class="flex1">
|
|
<div v-if="form?.attachments" class="flex1">
|
|
|
- <div class="c-333 mb-10">相关文件:</div>
|
|
|
|
|
- <FileLook v-model="form.attachments" :span="12"></FileLook>
|
|
|
|
|
|
|
+ <div class="c-333 mb-10">
|
|
|
|
|
+ 相关文件:
|
|
|
|
|
+ <span v-if="form?.attachments.length==0">-</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <FileLook v-if="form?.attachments.length!==0" v-model="form.attachments" :span="12"></FileLook>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="d-flex f-s-14 c-666">
|
|
<div class="d-flex f-s-14 c-666">
|
|
|
- <div v-if="form?.attachments" class="flex1">
|
|
|
|
|
- <div class="c-333 mb-10">微信群聊二维码:</div>
|
|
|
|
|
- <div class="d-flex flex-wrap">
|
|
|
|
|
|
|
+ <div class="flex1">
|
|
|
|
|
+ <div class="c-333 mb-10">
|
|
|
|
|
+ 微信群聊二维码:
|
|
|
|
|
+ <span v-if="form?.attachments.length==0">-</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="d-flex flex-wrap" v-if="form?.attachments.length!==0">
|
|
|
<template v-for="(item, index) in form?.wechatQrCode" :key="index">
|
|
<template v-for="(item, index) in form?.wechatQrCode" :key="index">
|
|
|
<div class="mr-10 mb-10">
|
|
<div class="mr-10 mb-10">
|
|
|
<ImagePreview :src="item" :width="100" :height="100"></ImagePreview>
|
|
<ImagePreview :src="item" :width="100" :height="100"></ImagePreview>
|
|
@@ -57,14 +62,20 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="flex1">
|
|
<div class="flex1">
|
|
|
- <div class="c-333 mb-10">封面图:</div>
|
|
|
|
|
- <div>
|
|
|
|
|
|
|
+ <div class="c-333 mb-10">
|
|
|
|
|
+ 封面图:
|
|
|
|
|
+ <span v-if="!form?.coverImgUrl">-</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div v-if="form?.coverImgUrl">
|
|
|
<ImagePreview :src="form?.coverImgUrl" :width="100" :height="100"></ImagePreview>
|
|
<ImagePreview :src="form?.coverImgUrl" :width="100" :height="100"></ImagePreview>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div v-if="form?.attachments" class="flex1">
|
|
|
|
|
- <div class="c-333 mb-10">会议图:</div>
|
|
|
|
|
- <div class="d-flex flex-wrap">
|
|
|
|
|
|
|
+ <div class="flex1">
|
|
|
|
|
+ <div class="c-333 mb-10">
|
|
|
|
|
+ 会议图:
|
|
|
|
|
+ <span v-if="form?.trainingImg.length == 0">-</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="d-flex flex-wrap" v-if="form?.trainingImg.length !== 0">
|
|
|
<template v-for="(item, index) in form?.trainingImg" :key="index">
|
|
<template v-for="(item, index) in form?.trainingImg" :key="index">
|
|
|
<div class="mr-10 mb-10">
|
|
<div class="mr-10 mb-10">
|
|
|
<ImagePreview :src="item" :width="100" :height="100"></ImagePreview>
|
|
<ImagePreview :src="item" :width="100" :height="100"></ImagePreview>
|
|
@@ -90,12 +101,35 @@
|
|
|
</vxe-column>
|
|
</vxe-column>
|
|
|
</vxe-table>
|
|
</vxe-table>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <div class="f-s-14">
|
|
|
|
|
+ <div class="c-333 mb-10">报名信息:</div>
|
|
|
|
|
+ <div class="w-400 h-700 border over-auto">
|
|
|
|
|
+ <div class="pd-10 border bg-#fafafa">
|
|
|
|
|
+ <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-red">此页面为意向人报名时所见页面:</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <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">
|
|
|
|
|
+ <div class="meeting-custom-wrapper">
|
|
|
|
|
+ <meetingCustomPreview :field="field" style="pointer-events: none" v-if="field" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup name="MeetingDetailInfo" lang="ts">
|
|
<script setup name="MeetingDetailInfo" lang="ts">
|
|
|
|
|
+import { ref, onMounted } from 'vue';
|
|
|
import { FileLook } from '@/views/models';
|
|
import { FileLook } from '@/views/models';
|
|
|
|
|
+import { FieldDefinition } from './type'
|
|
|
|
|
+import meetingCustomPreview from './meeting-custom-preview.vue'
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
const { dm_training_join_type, yes_no, dm_training_cert, dm_training_status, dm_training_signup_status_list } = toRefs<any>(proxy?.useDict('dm_training_join_type', 'yes_no', 'dm_training_cert', 'dm_training_status', 'dm_training_signup_status_list'));
|
|
const { dm_training_join_type, yes_no, dm_training_cert, dm_training_status, dm_training_signup_status_list } = toRefs<any>(proxy?.useDict('dm_training_join_type', 'yes_no', 'dm_training_cert', 'dm_training_status', 'dm_training_signup_status_list'));
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
@@ -104,7 +138,37 @@ const props = defineProps({
|
|
|
default: () => ({})
|
|
default: () => ({})
|
|
|
},
|
|
},
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
|
|
+const fields = ref<FieldDefinition[]>([])
|
|
|
|
|
+const fixedField = ref<FieldDefinition[]>([{
|
|
|
|
|
+ name: `ent-${generateSecureRandomString()}`,
|
|
|
|
|
+ label: '企业名称', type: '1',
|
|
|
|
|
+ required: '1', readonly: '0',
|
|
|
|
|
+}, {
|
|
|
|
|
+ name: `name-${generateSecureRandomString()}`,
|
|
|
|
|
+ label: '姓名', type: '1', readonly: '0',
|
|
|
|
|
+ required: '1'
|
|
|
|
|
+}, {
|
|
|
|
|
+ name: `pos-${generateSecureRandomString()}`,
|
|
|
|
|
+ label: '职务', type: '1', readonly: '0',
|
|
|
|
|
+ required: '1'
|
|
|
|
|
+}, {
|
|
|
|
|
+ name: `Con-${generateSecureRandomString()}`,
|
|
|
|
|
+ label: '联系方式', type: '1', readonly: '0',
|
|
|
|
|
+ required: '1'
|
|
|
|
|
+}])
|
|
|
|
|
+function generateSecureRandomString(length = 8) {
|
|
|
|
|
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
|
|
|
|
|
+ const randomValues = new Uint32Array(length);
|
|
|
|
|
+ window.crypto.getRandomValues(randomValues);
|
|
|
|
|
+ let result = '';
|
|
|
|
|
+ randomValues.forEach((value) => {
|
|
|
|
|
+ result += chars[value % chars.length];
|
|
|
|
|
+ });
|
|
|
|
|
+ return result;
|
|
|
|
|
+}
|
|
|
|
|
+onMounted(() => {
|
|
|
|
|
+ fields.value = props.form.questions
|
|
|
|
|
+});
|
|
|
</script>
|
|
</script>
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
|
.tabs-item {
|
|
.tabs-item {
|
|
@@ -127,4 +191,8 @@ const props = defineProps({
|
|
|
.border-botttom {
|
|
.border-botttom {
|
|
|
border-bottom: 1px solid #d7d7d7;
|
|
border-bottom: 1px solid #d7d7d7;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+.border {
|
|
|
|
|
+ border: 1px solid #dcdfe6;
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|