|
@@ -13,6 +13,7 @@
|
|
|
<div class="flex1 over-auto">
|
|
<div class="flex1 over-auto">
|
|
|
<el-form ref="formRef" label-width="auto" label-position="top" :model="form" :rules="rules">
|
|
<el-form ref="formRef" label-width="auto" label-position="top" :model="form" :rules="rules">
|
|
|
<div class="pd-16 border-bottom ov-hd">
|
|
<div class="pd-16 border-bottom ov-hd">
|
|
|
|
|
+ <div class="info-title mb-10">会议信息</div>
|
|
|
<el-row :gutter="20">
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
|
<el-form-item label="会议名称" prop="trainingName">
|
|
<el-form-item label="会议名称" prop="trainingName">
|
|
@@ -38,17 +39,13 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
|
- <el-form-item label="是否颁发证书" prop="certFlag">
|
|
|
|
|
- <el-radio-group v-model="form.certFlag">
|
|
|
|
|
- <el-radio v-for="item in yes_no" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
|
|
|
|
- </el-radio-group>
|
|
|
|
|
|
|
+ <el-form-item label="会议联系人" prop="contactName">
|
|
|
|
|
+ <el-input v-model="form.contactName" maxlength="40" placeholder="请输入会议联系人" clearable />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col v-if="+form?.certFlag" :span="6">
|
|
|
|
|
- <el-form-item label="证书名称" prop="certificateInfo">
|
|
|
|
|
- <el-select v-model="form.certificateInfo" multiple placeholder="证书名称" clearable>
|
|
|
|
|
- <el-option v-for="item in dm_training_cert" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
|
- </el-select>
|
|
|
|
|
|
|
+ <el-col :span="6">
|
|
|
|
|
+ <el-form-item label="联系电话" prop="tel">
|
|
|
|
|
+ <el-input v-model="form.tel" maxlength="20" placeholder="请输入联系电话" clearable />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
@@ -58,6 +55,11 @@
|
|
|
<el-input v-model="form.description" :rows="4" type="textarea" placeholder="请输入培训详情" />
|
|
<el-input v-model="form.description" :rows="4" type="textarea" placeholder="请输入培训详情" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <el-form-item label="与会须知" prop="description">
|
|
|
|
|
+ <el-input v-model="form.notice" :rows="4" type="textarea" placeholder="请输入与会须知" />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
<el-col :span="12">
|
|
<el-col :span="12">
|
|
|
<el-form-item label="封面图" prop="coverImg">
|
|
<el-form-item label="封面图" prop="coverImg">
|
|
|
<ImageUpload v-model="form.coverImg" :limit="1"></ImageUpload>
|
|
<ImageUpload v-model="form.coverImg" :limit="1"></ImageUpload>
|
|
@@ -75,6 +77,41 @@
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <div class="pd-16 border-bottom">
|
|
|
|
|
+ <div class="info-title mb-10">证书信息</div>
|
|
|
|
|
+ <div class="d-flex j-sb a-c">
|
|
|
|
|
+ <el-form-item label="是否颁发证书" prop="certFlag">
|
|
|
|
|
+ <el-radio-group v-model="form.certFlag">
|
|
|
|
|
+ <el-radio v-for="item in yes_no" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
|
|
|
|
+ </el-radio-group>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <div v-if="+form.certFlag">
|
|
|
|
|
+ <el-button @click="addCertInfo">新增证书</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <template v-if="form.certFlag">
|
|
|
|
|
+ <template v-for="(item, index) in form.certificateInfo" :key="index">
|
|
|
|
|
+ <el-row :gutter="20">
|
|
|
|
|
+ <el-col :span="6">
|
|
|
|
|
+ <el-form-item label="证书名称" :prop="`certificateInfo.${index}.certType`" :rules="[{ required: true, message: '请选择证书名称', trigger: 'change' }]">
|
|
|
|
|
+ <el-select v-model="item.certType" placeholder="证书名称" clearable>
|
|
|
|
|
+ <el-option v-for="item in dm_training_cert" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="6">
|
|
|
|
|
+ <el-form-item :prop="`certificateInfo.${index}.certImg`" :rules="[{ required: true, message: '请上传证书图片', trigger: 'change' }]">
|
|
|
|
|
+ <template #label>
|
|
|
|
|
+ <span>证书模板图片</span>
|
|
|
|
|
+ <el-button @click="goEditor()" type="primary" text>去编辑模板图片</el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <ImageUpload v-model="item.certImg" :fileSize="40" :limit="1"></ImageUpload>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </div>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="d-flex a-c j-c pd-16">
|
|
<div class="d-flex a-c j-c pd-16">
|
|
@@ -108,6 +145,8 @@ const rules = reactive({
|
|
|
description: [{ required: true, message: '请输入培训详情', trigger: 'blur' }],
|
|
description: [{ required: true, message: '请输入培训详情', trigger: 'blur' }],
|
|
|
coverImg: [{ required: true, message: '请上传封面图', trigger: 'change' }],
|
|
coverImg: [{ required: true, message: '请上传封面图', trigger: 'change' }],
|
|
|
trainingImg: [{ required: true, message: '请上传会议图', trigger: 'change' }],
|
|
trainingImg: [{ required: true, message: '请上传会议图', trigger: 'change' }],
|
|
|
|
|
+ contactName: [{ required: true, message: '请输入会议联系人', trigger: 'blur' }],
|
|
|
|
|
+ tel: [{ required: true, message: '请输入联系电话', trigger: 'blur' }],
|
|
|
});
|
|
});
|
|
|
const formRef = ref();
|
|
const formRef = ref();
|
|
|
|
|
|
|
@@ -117,13 +156,25 @@ const save = debounce(async () => {
|
|
|
const params = {
|
|
const params = {
|
|
|
...form.value,
|
|
...form.value,
|
|
|
trainingStart: form.value.trainingTime ? form.value.trainingTime[0] : undefined,
|
|
trainingStart: form.value.trainingTime ? form.value.trainingTime[0] : undefined,
|
|
|
- trainingEnd: form.value.trainingTime ? form.value.trainingTime[1] : undefined,
|
|
|
|
|
|
|
+ trainingEnd: form.value.trainingTime ? form.value.trainingTime[1] : undefined
|
|
|
};
|
|
};
|
|
|
const res = form.value.id ? await trainingUpdate(params) : await trainingAdd(params);
|
|
const res = form.value.id ? await trainingUpdate(params) : await trainingAdd(params);
|
|
|
if (res && res.code === 200) {
|
|
if (res && res.code === 200) {
|
|
|
router.go(-1);
|
|
router.go(-1);
|
|
|
}
|
|
}
|
|
|
}, 500);
|
|
}, 500);
|
|
|
|
|
+const goEditor = () => {
|
|
|
|
|
+ window.open('https://lm.yujin.shuziyunyao.com/poster#/editor', '_blank');
|
|
|
|
|
+}
|
|
|
|
|
+const addCertInfo = () => {
|
|
|
|
|
+ if (!form.value.certificateInfo) {
|
|
|
|
|
+ form.value.certificateInfo = [];
|
|
|
|
|
+ }
|
|
|
|
|
+ form.value.certificateInfo.push({
|
|
|
|
|
+ certName: undefined,
|
|
|
|
|
+ certImg: undefined
|
|
|
|
|
+ });
|
|
|
|
|
+};
|
|
|
// 获取专家详情
|
|
// 获取专家详情
|
|
|
const getMeetingDetail = async () => {
|
|
const getMeetingDetail = async () => {
|
|
|
if (route.query?.id) {
|
|
if (route.query?.id) {
|
|
@@ -131,7 +182,7 @@ const getMeetingDetail = async () => {
|
|
|
if (!res || res.code !== 200) return;
|
|
if (!res || res.code !== 200) return;
|
|
|
form.value = {
|
|
form.value = {
|
|
|
...res.data,
|
|
...res.data,
|
|
|
- trainingTime: res.data.trainingStart && res.data.trainingEnd ? [res.data.trainingStart, res.data.trainingEnd] : undefined,
|
|
|
|
|
|
|
+ trainingTime: res.data.trainingStart && res.data.trainingEnd ? [res.data.trainingStart, res.data.trainingEnd] : undefined
|
|
|
};
|
|
};
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|