|
@@ -0,0 +1,1188 @@
|
|
|
+<template>
|
|
|
+ <div class="container-addAct">
|
|
|
+ <el-card class="card-top">
|
|
|
+ <div class="top-box">
|
|
|
+ <div>
|
|
|
+ <el-select
|
|
|
+ placeholder="请选择行业"
|
|
|
+ :disabled="!isShowSelect"
|
|
|
+ @change="clearTopIndustry"
|
|
|
+ @clear="clearTopIndustry"
|
|
|
+ clearable
|
|
|
+ v-model="optionFormregion"
|
|
|
+ style="width: 360px; margin-right: 30px"
|
|
|
+ v-if="!isResearch"
|
|
|
+ >
|
|
|
+ <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.PermissionName" :value="item.PermissionName"></el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-select placeholder="请选择活动类型" :disabled="!isShowSelect" clearable v-model="cactivityType" @change="activityTypeDetail" style="width: 360px">
|
|
|
+ <el-option v-for="item in cactivityTypeList" :label="item.ActivityTypeName" :key="item.ActivityTypeId" :value="item.ActivityTypeId"></el-option>
|
|
|
+ </el-select>
|
|
|
+ <template>
|
|
|
+ <el-radio style="margin-left: 30px" v-model="areaType" :label="1">国内</el-radio>
|
|
|
+ <el-radio v-model="areaType" :label="2">海外</el-radio>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <el-button v-if="isShowSelect" type="primary" @click="templateBtn">活动内容输入模板</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+
|
|
|
+ <el-card style="margin-top: 30px">
|
|
|
+ <froala id="froala-editor" ref="froalaEditor" :tag="'textarea'" :config="froalaConfig" v-model="content"></froala>
|
|
|
+ <div style="margin-top: 25px" v-if="optionFormregion">
|
|
|
+ <template v-if="cactivityType == 1">
|
|
|
+ <el-radio style="margin: 0 0 20px 30px" v-model="subjectRadio" label="1">单主题标签:</el-radio>
|
|
|
+ <el-radio v-model="subjectRadio" label="2">多主题标签:</el-radio>
|
|
|
+ </template>
|
|
|
+ <div style="display: flex; align-items: center">
|
|
|
+ <span style="width: 98px; flex-shrink: 0">
|
|
|
+ 主题标签:
|
|
|
+ <el-tooltip placement="top-start">
|
|
|
+ <div slot="content">
|
|
|
+ 1、小程序内默认显示产业名称,也可勾选【小程序内显示标的名称】更改显示<br />2、若该活动暂无相关联产业,请联系内容组添加,或勾选并填写【临时标签】用于小程序内展示<br />
|
|
|
+ 3、选择产业和关联标的后,即完成对活动的标签定义;可同时勾选并填写【临时标签】,小程序内将显示临时标签名称
|
|
|
+ </div>
|
|
|
+ <i class="el-icon-info" />
|
|
|
+ </el-tooltip>
|
|
|
+ </span>
|
|
|
+ <el-cascader
|
|
|
+ key="multipleTrue"
|
|
|
+ style="margin-right: 10px"
|
|
|
+ v-model="industryCascade"
|
|
|
+ :disabled="selectDisabled"
|
|
|
+ @change="propertyChange"
|
|
|
+ placeholder="请选择产业名称"
|
|
|
+ :show-all-levels="false"
|
|
|
+ :options="industryArr"
|
|
|
+ :props="{ ...defaultProps, multiple: true }"
|
|
|
+ filterable
|
|
|
+ >
|
|
|
+ </el-cascader>
|
|
|
+ <template v-if="isShowAddIcon">
|
|
|
+ <img v-if="!optionFormregion.includes('策略') && !selectDisabled" src="~@/assets/img/set_m/add_ico.png" style="margin: 0 30px 0 0" @click="addIndustryDlg = true" />
|
|
|
+ <img v-if="!optionFormregion.includes('策略') && selectDisabled" src="~@/assets/img/set_m/slide.png" style="margin: 0 30px 0 0" />
|
|
|
+ </template>
|
|
|
+ <el-select v-model="markValue" :disabled="selectDisabled" @focus="markSelectFocus" multiple placeholder="请选择关联标的">
|
|
|
+ <el-option v-for="item in markOptions" :key="item.IndustrialSubjectId" :value="item.IndustrialSubjectId" :label="item.SubjectName"> </el-option>
|
|
|
+ </el-select>
|
|
|
+ <template v-if="isShowAddIcon">
|
|
|
+ <img v-if="!optionFormregion.includes('策略') && !selectDisabled" src="~@/assets/img/set_m/add_ico.png" style="margin: 0 10px" @click="isAddMarketDlg" />
|
|
|
+ <img v-if="!optionFormregion.includes('策略') && selectDisabled" src="~@/assets/img/set_m/slide.png" style="margin: 0 10px" />
|
|
|
+ </template>
|
|
|
+ <el-checkbox style="margin-left: 20px" v-model="isMark">小程序内显示标的名称</el-checkbox>
|
|
|
+ <div style="display: flex; align-items: center; margin-left: 40px">
|
|
|
+ <el-checkbox v-model="radioTemporary">临时标签</el-checkbox>
|
|
|
+ <el-input style="width: 350px; margin: 0 20px" v-model="valTemporary" @focus="radioTemporary = true" placeholder="请输入标签名称" type="text"></el-input>
|
|
|
+ <div class="editsty" style="flex-shrink: 0" @click="dialogVisibleSubject = true">查询标的</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 复选 模块 -->
|
|
|
+ <div style="margin-top: 20px">
|
|
|
+ <research-deduct ref="researchSelect" :cactivityType="cactivityType" :optionFormregion="optionFormregion" :isResearch="isResearch" />
|
|
|
+ </div>
|
|
|
+ <div style="margin: 20px 0 0 98px" class="add-delete" v-for="(item, index) in addSubjectLabel" :key="index">
|
|
|
+ <template v-if="subjectRadio == 2">
|
|
|
+ <el-cascader
|
|
|
+ v-model="item.IndustrialManagementIdS"
|
|
|
+ :disabled="item.forbidden"
|
|
|
+ @change="propertyChange"
|
|
|
+ placeholder="请选择产业名称"
|
|
|
+ :show-all-levels="false"
|
|
|
+ :options="industryArr"
|
|
|
+ :props="{ ...defaultProps, multiple: true }"
|
|
|
+ filterable
|
|
|
+ >
|
|
|
+ </el-cascader>
|
|
|
+ <el-select style="margin: 0 10px" v-model="item.IndustrialSubjectIdS" :disabled="item.forbidden" @focus="markSelectFocusAdd(index, item)" multiple placeholder="请选择关联标的">
|
|
|
+ <el-option v-for="val in item.markOptions" :key="val.IndustrialSubjectId" :value="val.IndustrialSubjectId" :label="val.SubjectName"> </el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-checkbox style="margin: 0 0 0 10px" v-model="item.isMark">小程序内显示标的名称</el-checkbox>
|
|
|
+ <div style="display: flex; align-items: center; margin-left: 40px">
|
|
|
+ <el-checkbox v-model="item.temporary" @change="temporaryChangeHandler(item)">临时标签</el-checkbox>
|
|
|
+ <el-input
|
|
|
+ style="width: 350px; margin: 0 20px"
|
|
|
+ v-model="item.temporaryText"
|
|
|
+ @focus="
|
|
|
+ item.forbidden = true;
|
|
|
+ item.temporary = true;
|
|
|
+ "
|
|
|
+ placeholder="请输入标签名称"
|
|
|
+ type="text"
|
|
|
+ ></el-input>
|
|
|
+ </div>
|
|
|
+ <img @click="deleteSubject(index, item)" src="~@/assets/img/icons/delete-Item.png" />
|
|
|
+ <el-checkbox style="margin-left: 30px" v-model="item.subscribe">可预约纪要</el-checkbox>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ <div style="margin: 20px 0 0 30px; display: flex; align-items: center" v-if="subjectRadio == 2">
|
|
|
+ <img @click="addLabelClick" class="editsty" src="~@/assets/img/set_m/add_ico.png" style="margin: 0 10px" />
|
|
|
+ <span @click="addLabelClick" class="editsty"> 添加主题标签</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 15px" v-if="showType !== '1' && showType !== '9' && subjectRadio != 2">
|
|
|
+ <div class="radio-input" style="margin-bottom: 15px; height: 35px">
|
|
|
+ <span style="width: 98px"> 参会人数限制: </span>
|
|
|
+ <template v-if="showType != 3">
|
|
|
+ <el-radio v-model="radio" label="1">不限制</el-radio>
|
|
|
+ <el-radio v-model="radio" label="2">限制</el-radio>
|
|
|
+ </template>
|
|
|
+ <el-input placeholder="输入人数上限" v-if="radio == 2 || showType !== '2'" class="astrict-inpt" onkeyup="value=value.replace(/[^\d]/g,'')" v-model="astrict" />
|
|
|
+ </div>
|
|
|
+ <div v-if="radio == 2 || showType !== '2'">
|
|
|
+ <div class="checkbox-box">
|
|
|
+ <span style="width: 98px; flex-shrink: 0">
|
|
|
+ 活动可见:
|
|
|
+ <el-tooltip :content="checkboxTooltip('活动可见')" placement="top-start">
|
|
|
+ <i class="el-icon-info" />
|
|
|
+ </el-tooltip>
|
|
|
+ </span>
|
|
|
+ <div>
|
|
|
+ <div class="is-visible">
|
|
|
+ <el-radio-group v-model="radioVisibleActivity">
|
|
|
+ <el-radio :label="1">仅本组客户可见</el-radio>
|
|
|
+ <el-radio :label="2">所有组客户可见</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ <el-checkbox v-model="decisionChecked">仅KP可见</el-checkbox>
|
|
|
+ </div>
|
|
|
+ <div style="display: flex">
|
|
|
+ <span style="width: 70px; flex-shrink: 0" class="text-right"> 套餐类型: </span>
|
|
|
+ <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange" :disabled="checkAllIs">
|
|
|
+ 全选
|
|
|
+ <el-tooltip :content="checkboxTooltip('全选')" placement="top-start">
|
|
|
+ <i class="el-icon-info" />
|
|
|
+ </el-tooltip>
|
|
|
+ </el-checkbox>
|
|
|
+ <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
|
|
|
+ <el-checkbox v-for="item in cities" :label="item.CustomerTypeId" :key="item.CustomerTypeId" :disabled="forbidden.includes(String(item.CustomerTypeId))">
|
|
|
+ {{ item.CustomerName }}
|
|
|
+ <el-tooltip :content="item.Explain" placement="top-start" v-if="item.Explain">
|
|
|
+ <i class="el-icon-info" />
|
|
|
+ </el-tooltip>
|
|
|
+ </el-checkbox>
|
|
|
+ </el-checkbox-group>
|
|
|
+ </div>
|
|
|
+ <div class="checkbox-box" style="margin-top: 20px">
|
|
|
+ <span class="text-right"> 管理规模: </span>
|
|
|
+ <el-checkbox-group v-model="checkScaleList">
|
|
|
+ <el-checkbox :disabled="scaleIsDisabled.includes('3')" label="3">100亿以上</el-checkbox>
|
|
|
+ <el-checkbox :disabled="scaleIsDisabled.includes('2')" label="2">50~100亿</el-checkbox>
|
|
|
+ </el-checkbox-group>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <template v-if="activeIsState == 3">
|
|
|
+ <div class="audio-content">
|
|
|
+ <span class="text">会议音频:</span>
|
|
|
+ <el-button v-if="addEditVideo.length > 0" size="small" type="primary" @click="errorUpload">上传会议音频</el-button>
|
|
|
+ <el-upload
|
|
|
+ v-else
|
|
|
+ class="upload-demo"
|
|
|
+ action=""
|
|
|
+ :http-request="handleUploadAudio"
|
|
|
+ accept="audio/*"
|
|
|
+ :on-remove="handleRemoveAudio"
|
|
|
+ :before-remove="beforeRemoveAudio"
|
|
|
+ :limit="1"
|
|
|
+ :file-list="fileListAudio"
|
|
|
+ >
|
|
|
+ <el-button size="small" type="primary">上传会议音频</el-button>
|
|
|
+ </el-upload>
|
|
|
+ </div>
|
|
|
+ <div class="audio-content" style="margin-top: 10px">
|
|
|
+ <span class="text">会议视频:</span>
|
|
|
+ <el-button v-if="fileListAudio.length" size="small" type="primary" @click="errorUpload">上传会议视频</el-button>
|
|
|
+ <el-upload
|
|
|
+ v-else
|
|
|
+ class="upload-demo"
|
|
|
+ action=""
|
|
|
+ accept=".mp4"
|
|
|
+ :http-request="handleUpload"
|
|
|
+ :before-upload="handelBeforeUploadVideo"
|
|
|
+ :before-remove="beforeRemoveAudio"
|
|
|
+ :on-remove="handleRemoveVideo"
|
|
|
+ :file-list="addEditVideo"
|
|
|
+ :disabled="startUpload"
|
|
|
+ :limit="1"
|
|
|
+ >
|
|
|
+ <el-button size="small" type="primary" :loading="startUpload">上传会议视频</el-button>
|
|
|
+ </el-upload>
|
|
|
+ <el-progress type="circle" :percentage="percentage" width="40" style="margin-left: 10px" v-if="startUpload"></el-progress>
|
|
|
+ </div>
|
|
|
+ <div class="audio-content cover-content" style="margin-top: 10px" v-if="(fileListAudio.length || addEditVideo.length) && defaultImage">
|
|
|
+ <span class="text" style="width: 70px; text-align: right">封面:</span>
|
|
|
+ <div class="img-content">
|
|
|
+ <img :src="defaultImage" alt="" />
|
|
|
+ <div class="modify" @click="modifyImgHandler">修改</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div style="text-align: center; margin-top: 30px">
|
|
|
+ <el-button type="primary" @click="submitForm('保存')">保存</el-button>
|
|
|
+ <el-button v-if="isShow" type="primary" @click="submitForm('发布')">发布</el-button>
|
|
|
+ <el-button @click="cancelBtn">取消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-card>
|
|
|
+ <el-dialog
|
|
|
+ v-dialogDrag
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ :modal-append-to-body="false"
|
|
|
+ center
|
|
|
+ :title="activityTypeName"
|
|
|
+ :visible.sync="dialogVisible"
|
|
|
+ customClass="customWidth"
|
|
|
+ :before-close="handleClose"
|
|
|
+ >
|
|
|
+ <div id="dialog" v-html="copyText"></div>
|
|
|
+ <div style="margin-bottom: 60px">
|
|
|
+ <div class="content-template" v-if="activityTypeName == '公司调研电话会'">
|
|
|
+ <div @click="contentTemplate('1')" :class="contentTemplateTitle == '1' ? 'active' : ''">进门财经模板</div>
|
|
|
+ <div @click="contentTemplate('2')" :class="contentTemplateTitle == '2' ? 'active' : ''">zoom模板</div>
|
|
|
+ </div>
|
|
|
+ <div v-html="templatePText" v-if="contentTemplateTitle == '1'"></div>
|
|
|
+ <div v-html="ZoomTemplateP" v-else></div>
|
|
|
+ <p v-if="cactivityType == 1" class="no-cv" style="color: #f00">注:多个活动同时输入时,请用分割线隔开</p>
|
|
|
+ <p v-else class="no-cv" style="color: #f00">注:每次只能输入一场活动信息{{ cactivityType == 6 ? ",多篇相关报告时,用分号“;”隔开" : "" }}</p>
|
|
|
+ </div>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="dialogVisible = false">取消</el-button>
|
|
|
+ <el-button id="copy_text" type="primary" v-if="contentTemplateTitle == '1'" :data-clipboard-text="copyTxt" @click="handleCopyFun">复制模版</el-button>
|
|
|
+ <el-button id="copy_text" type="primary" v-else :data-clipboard-text="zoomTemplate" @click="handleCopyFun">复制模版</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ <add-industry-mark
|
|
|
+ :optionFormregion="optionFormregion.includes('研选') ? '研选' : optionFormregion"
|
|
|
+ :addIndustryDlg.sync="addIndustryDlg"
|
|
|
+ :addMarkDlg.sync="addMarkDlg"
|
|
|
+ @commitIndustryDlg="commitIndustryDlg"
|
|
|
+ @commitMarkDlg="commitMarkDlg"
|
|
|
+ :addMarkUpVal="addMarkUpVal"
|
|
|
+ :source="3"
|
|
|
+ />
|
|
|
+ <el-dialog v-dialogDrag :close-on-click-modal="false" :modal-append-to-body="false" center title="查询标的" :visible.sync="dialogVisibleSubject" width="500px" :before-close="handleCloseSubject">
|
|
|
+ <div>
|
|
|
+ <el-select style="width: 100%" v-model="addSubjectName" remote :remote-method="remoteMethod" clearable filterable @change="searchInfo" placeholder="请输入标的名称">
|
|
|
+ <el-option v-for="item in addSubjectOptions" :key="item.IndustrialSubjectId" :label="item.SubjectName" :value="item.SubjectName"> </el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <p class="subject-text" v-if="isShowSubject">暂无数据</p>
|
|
|
+ <template v-else>
|
|
|
+ <p class="subject-text" v-for="(item, index) in nameSubjectOptions" :key="index">{{ item.Name }} : {{ item.value }}</p>
|
|
|
+ </template>
|
|
|
+ <p style="padding-bottom: 50px"></p>
|
|
|
+ </el-dialog>
|
|
|
+ <modify-img-dlg :modifyImgVisible.sync="modifyImgVisible" :videoAndVoiceList.sync="videoAndVoiceList" />
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { raiInterface, customInterence, getOSSSign, resourceVoiceupload } from "@/api/api.js";
|
|
|
+import VueFroala from "vue-froala-wysiwyg";
|
|
|
+import Clipboard from "clipboard";
|
|
|
+import AddIndustryMark from "../../components/addIndustryMark.vue";
|
|
|
+import richTextMixins from "../../components/apply/RichTextMixins";
|
|
|
+import MD5 from "js-md5";
|
|
|
+import ResearchDeduct from "./addComopnents/ResearchDeduct.vue";
|
|
|
+import ModifyImgDlg from "./addComopnents/modifyImgDlg.vue";
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: "",
|
|
|
+ components: { AddIndustryMark, ResearchDeduct, ModifyImgDlg },
|
|
|
+ props: {},
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ cactivityType: "",
|
|
|
+ content: "", //内容
|
|
|
+ optionFormregion: "", //行业选择
|
|
|
+ radio: "1", //单选按钮
|
|
|
+ isOptionRef: false,
|
|
|
+ chartPermissionList: [], //行业的数组
|
|
|
+ cactivityTypeList: [], //活动类型
|
|
|
+ dialogVisible: false, //弹框
|
|
|
+ astrict: "", //人数限制
|
|
|
+ copyTxt: "1", //复制的模版
|
|
|
+ templatePText: "",
|
|
|
+ checkedCities: [], //
|
|
|
+ checkedCitiesTwo: "",
|
|
|
+ cities: [], //
|
|
|
+ isIndeterminate: false, //是否
|
|
|
+ checkAll: false,
|
|
|
+ showType: "9",
|
|
|
+ activityTypeName: "纪要内容模板",
|
|
|
+ isShow: true,
|
|
|
+ isShowSelect: true,
|
|
|
+ forbidden: [],
|
|
|
+ checkAllIs: false,
|
|
|
+ contentTemplateTitle: "1",
|
|
|
+ zoomTemplate: "",
|
|
|
+ zoomTemplateP: "",
|
|
|
+ industryArr: [], //所有的行业
|
|
|
+ industryCascade: "", //所有行业及联的选择
|
|
|
+ markValue: "", //添加标的
|
|
|
+ markOptions: [], ///添加标的的数组
|
|
|
+ addMarkUpVal: {
|
|
|
+ industrialName: "",
|
|
|
+ industrialId: "",
|
|
|
+ }, //弹框里的
|
|
|
+ radioTemporary: false, //临时标签
|
|
|
+ valTemporary: "", //临时标签的输入框
|
|
|
+ selectDisabled: false, //临时标签的输入后全部禁用
|
|
|
+ defaultProps: {
|
|
|
+ label: "PermissionName",
|
|
|
+ children: "List",
|
|
|
+ value: "ChartPermissionId",
|
|
|
+ },
|
|
|
+ addIndustryDlg: false,
|
|
|
+ addMarkDlg: false,
|
|
|
+ subjectRadio: "1",
|
|
|
+ addSubjectLabel: [],
|
|
|
+ dialogVisibleSubject: false,
|
|
|
+ addSubjectName: "",
|
|
|
+ addSubjectOptions: "",
|
|
|
+ nameSubjectOptions: [],
|
|
|
+ isShowSubject: false,
|
|
|
+ ListSubject: [],
|
|
|
+ checkScaleList: [], //选择规模
|
|
|
+ scaleIsDisabled: "", //选择规模 禁用
|
|
|
+ isMark: false,
|
|
|
+ radioVisibleActivity: 2,
|
|
|
+ decisionChecked: false,
|
|
|
+ fileListAudio: [],
|
|
|
+ baseApi: process.env.API_ROOT,
|
|
|
+ activeIsState: "",
|
|
|
+ addEditVideo: [],
|
|
|
+ startUpload: false, //开始上传
|
|
|
+ percentage: 0,
|
|
|
+ isShowAddIcon: true, //主题标签的添加的iocn 是否显示
|
|
|
+ modifyImgVisible: false,
|
|
|
+ defaultImage: "",
|
|
|
+ shareImg: "",
|
|
|
+ videoAndVoiceList: [],
|
|
|
+ areaType: 1,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ // 弘则 研选 是否是研选
|
|
|
+ isResearch() {
|
|
|
+ return this.$route.path.indexOf("Purchaser") != -1 ? true : false;
|
|
|
+ },
|
|
|
+ },
|
|
|
+ mixins: [richTextMixins],
|
|
|
+ watch: {
|
|
|
+ radio: {
|
|
|
+ handler(newVal) {
|
|
|
+ if (newVal == 1) {
|
|
|
+ this.astrict = "";
|
|
|
+ }
|
|
|
+ if (this.$route.query.id) return;
|
|
|
+ this.isCheckAllType(this.cactivityType == 3 && newVal == 2 ? true : false);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ radioTemporary() {
|
|
|
+ if (this.radioTemporary) {
|
|
|
+ this.selectDisabled = true;
|
|
|
+ } else {
|
|
|
+ this.valTemporary = "";
|
|
|
+ this.selectDisabled = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ subjectRadio() {
|
|
|
+ this.addSubjectLabel = [];
|
|
|
+ },
|
|
|
+ cactivityType: {
|
|
|
+ handler(newval) {
|
|
|
+ if (this.$route.query.id) return;
|
|
|
+ this.isCheckAllType(newval === 4 ? true : false);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ "$route.path": {
|
|
|
+ handler(value) {
|
|
|
+ console.log(value, "value");
|
|
|
+ },
|
|
|
+ immediate: true,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ created() {},
|
|
|
+ mounted() {
|
|
|
+ if (!this.isResearch) {
|
|
|
+ this.chartPermission();
|
|
|
+ } else {
|
|
|
+ this.optionFormregion = "研选订阅";
|
|
|
+ }
|
|
|
+ this.getActivityType();
|
|
|
+ this.customerTypelist();
|
|
|
+ this.getIndustry();
|
|
|
+ if (this.$route.query.id) {
|
|
|
+ this.getDetail();
|
|
|
+ }
|
|
|
+ if (this.$route.query.isShow == 1) {
|
|
|
+ this.isShow = false;
|
|
|
+ }
|
|
|
+ if (this.$route.query.isShow >= 0) {
|
|
|
+ this.isShowSelect = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ // 上传音频
|
|
|
+ async handleUploadAudio(e) {
|
|
|
+ const loading = this.$loading({
|
|
|
+ lock: true,
|
|
|
+ text: "上传音频中...",
|
|
|
+ spinner: "el-icon-loading",
|
|
|
+ background: "rgba(0, 0, 0, 0.7)",
|
|
|
+ });
|
|
|
+ let form = new FormData();
|
|
|
+ form.append("file", e.file);
|
|
|
+ const res = await resourceVoiceupload(form);
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ this.getVideoAndImg(1);
|
|
|
+ let obj = {
|
|
|
+ name: res.Data.ResourceName,
|
|
|
+ url: res.Data.ResourceUrl,
|
|
|
+ PlaySeconds: res.Data.PlaySeconds,
|
|
|
+ };
|
|
|
+ this.fileListAudio = [obj];
|
|
|
+ loading.close();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //删除新增的主题标签
|
|
|
+ deleteSubject(index, item) {
|
|
|
+ this.addSubjectLabel.splice(index, 1);
|
|
|
+ },
|
|
|
+ markSelectFocusAdd(index, item) {
|
|
|
+ item.markOptions = [];
|
|
|
+ item.IndustrialSubjectIdS = [];
|
|
|
+ let arr = [];
|
|
|
+ arr = item.IndustrialManagementIdS.map((key) => {
|
|
|
+ return key[1];
|
|
|
+ });
|
|
|
+ raiInterface
|
|
|
+ .getindustrialSubjectlistIds({
|
|
|
+ IndustrialManagementIdStr: arr.join(","),
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ item.markOptions = res.Data.List || [];
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ addLabelClick() {
|
|
|
+ if (this.addSubjectLabel.length) {
|
|
|
+ let index = this.addSubjectLabel.length - 1;
|
|
|
+ this.addSubjectLabel.push({
|
|
|
+ IndustrialManagementIdS: this.addSubjectLabel[index].IndustrialManagementIdS,
|
|
|
+ IndustrialSubjectIdS: this.addSubjectLabel[index].IndustrialSubjectIdS,
|
|
|
+ markOptions: this.addSubjectLabel[index].markOptions,
|
|
|
+ isMark: this.addSubjectLabel[index].isMark,
|
|
|
+ forbidden: this.addSubjectLabel[index].forbidden,
|
|
|
+ temporary: this.addSubjectLabel[index].temporary,
|
|
|
+ temporaryText: this.addSubjectLabel[index].temporaryText,
|
|
|
+ subscribe: this.addSubjectLabel[index].subscribe,
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.addSubjectLabel = [
|
|
|
+ {
|
|
|
+ IndustrialManagementIdS: this.industryCascade,
|
|
|
+ IndustrialSubjectIdS: this.markValue,
|
|
|
+ markOptions: this.markOptions,
|
|
|
+ isMark: this.isMark,
|
|
|
+ forbidden: this.selectDisabled,
|
|
|
+ temporary: this.radioTemporary,
|
|
|
+ temporaryText: this.valTemporary,
|
|
|
+ subscribe: this.$refs.researchSelect.isCanAppointmentMinutes,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ },
|
|
|
+ propertyChange() {
|
|
|
+ if (this.subjectRadio == 2) return;
|
|
|
+ this.markOptions = [];
|
|
|
+ this.markValue = "";
|
|
|
+ },
|
|
|
+ //添加后的 临时标签
|
|
|
+ temporaryChangeHandler(item) {
|
|
|
+ item.forbidden = item.temporary;
|
|
|
+ !item.forbidden ? (item.temporaryText = "") : "";
|
|
|
+ },
|
|
|
+ //编辑进来的详情
|
|
|
+ getDetail() {
|
|
|
+ raiInterface.activityDetail({ ActivityId: Number(this.$route.query.id) }).then((res) => {
|
|
|
+ if (res.Ret !== 200) return;
|
|
|
+ const { Data } = res;
|
|
|
+ this.defaultImage = Data.BackgroundImg;
|
|
|
+ this.shareImg = Data.ShareImg;
|
|
|
+ this.activeIsState = Data.ActiveState;
|
|
|
+ this.cactivityType = Data.ActivityTypeId;
|
|
|
+ this.optionFormregion = Data.ChartPermissionName;
|
|
|
+ this.checkedCities = Data.CustomerTypeIds ? Data.CustomerTypeIds.split(",").map((item) => Number(item)) : [];
|
|
|
+ this.astrict = Data.LimitPeopleNum == "0" ? "" : Data.LimitPeopleNum;
|
|
|
+ this.showType = Data.ShowType;
|
|
|
+ this.content = Data.Body;
|
|
|
+ this.checkScaleList = Data.Scale ? Data.Scale.split(",") : [];
|
|
|
+ this.scaleIsDisabled = Data.Scale;
|
|
|
+ this.radioVisibleActivity = Data.VisibleRange > 0 ? Data.VisibleRange : 1;
|
|
|
+ this.decisionChecked = Data.IsMakerShow == 1 ? true : false;
|
|
|
+ let checkedCount = Data.CustomerTypeIds ? Data.CustomerTypeIds.split(",").length : "";
|
|
|
+ this.checkAll = checkedCount === this.cities.length;
|
|
|
+ this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
|
|
|
+ this.isMark = Data.IsShowSubjectName == 1 ? true : false;
|
|
|
+ this.valTemporary = Data.TemporaryLabel;
|
|
|
+ this.radioTemporary = this.valTemporary ? true : false;
|
|
|
+ this.areaType = Data.AreaType;
|
|
|
+ // 复选框模块
|
|
|
+ this.$nextTick(() => {
|
|
|
+ let RefPage = this.$refs.researchSelect;
|
|
|
+ RefPage.isCanAppointmentMinutes = Data.IsCanAppointmentMinutes == 1 ? true : false;
|
|
|
+ RefPage.isYidongConduct = Data.IsYidongConduct == 1 ? true : false;
|
|
|
+ RefPage.isExternalLabel = Data.IsExternalLabel == 1 ? true : false;
|
|
|
+ RefPage.isCanOutboundCall = Data.IsCanOutboundCall == 1 ? true : false;
|
|
|
+ RefPage.isDeduct = Data.IsResearchPoints == 1 ? true : false;
|
|
|
+ RefPage.provideEmail = Data.IsNeedEmail == 1 ? true : false;
|
|
|
+ RefPage.isBClass = Data.IsBClass == 1 ? true : false;
|
|
|
+ RefPage.SiginupDeadline = Data.SiginupDeadline;
|
|
|
+ RefPage.PointsSet = Data.PointsSet;
|
|
|
+ RefPage.institutionName = Data.PointsSet.CompanyName;
|
|
|
+ RefPage.isShowHz = !!Data.IsShowHz;
|
|
|
+ });
|
|
|
+ this.addEditVideo = Data.VideoDetail
|
|
|
+ ? [Data.VideoDetail].map((item) => {
|
|
|
+ return { name: item.VideoName, PlaySeconds: item.VideoDuration, url: item.VideoUrl };
|
|
|
+ })
|
|
|
+ : [];
|
|
|
+ this.fileListAudio = Data.VoiceList
|
|
|
+ ? Data.VoiceList.map((item) => {
|
|
|
+ return { name: item.Name, PlaySeconds: item.PlaySeconds, url: item.Url };
|
|
|
+ })
|
|
|
+ : [];
|
|
|
+ if (Data.PublishStatus == 1) {
|
|
|
+ this.forbidden = Data.CustomerTypeIds ? Data.CustomerTypeIds.split(",") : [];
|
|
|
+ this.checkAllIs = this.forbidden.length >= 1;
|
|
|
+ }
|
|
|
+ if (this.astrict > 0 && this.showType == 2) {
|
|
|
+ this.radio = "2";
|
|
|
+ }
|
|
|
+ this.valTemporary = res.Data.TemporaryLabel;
|
|
|
+ this.radioTemporary = this.valTemporary ? true : false;
|
|
|
+ this.industryCascade = res.Data.ListIndustrial ? res.Data.ListIndustrial.map((item) => [item.ChartPermissionId, item.IndustrialManagementId]) : "";
|
|
|
+
|
|
|
+ this.markValue = res.Data.ListSubject ? res.Data.ListSubject.map((item) => item.IndustrialSubjectId) : "";
|
|
|
+ if (this.markValue) {
|
|
|
+ this.markSelectFocus();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //提交发布活保存前的校验
|
|
|
+ submitForm(type) {
|
|
|
+ if (this.checkedCities) {
|
|
|
+ this.checkedCitiesTwo = this.checkedCities.join(",");
|
|
|
+ }
|
|
|
+ if (!this.radioTemporary && !this.industryCascade.length) return this.$message.error("请选择产业!");
|
|
|
+ if (this.radioTemporary && !this.valTemporary) return this.$message.error("请输入临时标签!");
|
|
|
+ let arr = [];
|
|
|
+ if (this.industryCascade.length) {
|
|
|
+ arr = this.industryCascade.map((item) => {
|
|
|
+ return item[1];
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (this.showType == "3" || this.radio == "2") {
|
|
|
+ if (!this.astrict) return this.$message.error("请在输入框输入人数上限!");
|
|
|
+ }
|
|
|
+ if (!this.cactivityType || !this.optionFormregion) return this.$message.error("请选择行业或活动类型");
|
|
|
+ if (this.subjectRadio == 2) {
|
|
|
+ let labelArr = this.addSubjectLabel.map((item) => {
|
|
|
+ let labelArrList = [];
|
|
|
+ item.IndustrialManagementIdS.forEach((val) => {
|
|
|
+ labelArrList.push(val[1]);
|
|
|
+ });
|
|
|
+ return {
|
|
|
+ IndustrialManagementIdS: labelArrList.join(","),
|
|
|
+ IndustrialSubjectIdS: item.IndustrialSubjectIdS.join(","),
|
|
|
+ IsShowSubjectName: item.isMark ? 1 : 0,
|
|
|
+ TemporaryLabel: item.temporary ? item.temporaryText : "",
|
|
|
+ IsCanAppointmentMinutes: item.subscribe ? 1 : 0,
|
|
|
+ };
|
|
|
+ });
|
|
|
+ this.ListSubject = [
|
|
|
+ {
|
|
|
+ IndustrialManagementIdS: arr.length ? arr.join(",") : "",
|
|
|
+ IndustrialSubjectIdS: this.markValue.length ? this.markValue.join(",") : "",
|
|
|
+ IsShowSubjectName: this.isMark ? 1 : 0,
|
|
|
+ TemporaryLabel: this.radioTemporary ? this.valTemporary : "",
|
|
|
+ IsCanAppointmentMinutes: this.$refs.researchSelect.isCanAppointmentMinutes ? 1 : 0,
|
|
|
+ },
|
|
|
+ ...labelArr,
|
|
|
+ ];
|
|
|
+ } else {
|
|
|
+ this.ListSubject = [
|
|
|
+ {
|
|
|
+ IndustrialManagementIdS: arr.length ? arr.join(",") : "",
|
|
|
+ IndustrialSubjectIdS: this.markValue.length ? this.markValue.join(",") : "",
|
|
|
+ IsShowSubjectName: this.isMark ? 1 : 0,
|
|
|
+ TemporaryLabel: this.radioTemporary ? this.valTemporary : "",
|
|
|
+ IsCanAppointmentMinutes: this.$refs.researchSelect.isCanAppointmentMinutes ? 1 : 0,
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ let VoiceList = this.fileListAudio.map((item) => {
|
|
|
+ return {
|
|
|
+ Name: item.name,
|
|
|
+ PlaySeconds: item.PlaySeconds.toString(),
|
|
|
+ Url: item.url,
|
|
|
+ };
|
|
|
+ });
|
|
|
+ let VideoDetail = this.addEditVideo.map((item) => {
|
|
|
+ return {
|
|
|
+ VideoName: item.name,
|
|
|
+ VideoDuration: item.PlaySeconds.toString(),
|
|
|
+ VideoUrl: item.url,
|
|
|
+ };
|
|
|
+ });
|
|
|
+ this.saveTheRelease(type, arr, VoiceList, VideoDetail[0]);
|
|
|
+ },
|
|
|
+ //保存或发布
|
|
|
+ saveTheRelease: _.debounce(async function (type, arr, VoiceList, VideoDetail) {
|
|
|
+ let RefPage = this.$refs.researchSelect;
|
|
|
+ let PointsSet = RefPage.PointsSet;
|
|
|
+ const res = await raiInterface.preserveAndPublishAdd({
|
|
|
+ DoType: type == "发布" ? 1 : 0,
|
|
|
+ ActivityId: Number(this.$route.query.id) || 0,
|
|
|
+ ActivityTypeId: Number(this.cactivityType),
|
|
|
+ Body: this.content,
|
|
|
+ PermissionName: this.optionFormregion,
|
|
|
+ CustomerTypeIds: this.checkedCitiesTwo,
|
|
|
+ IsAllCustomerType: this.checkAll ? 1 : 0,
|
|
|
+ LimitPeopleNum: Number(this.astrict) || 0,
|
|
|
+ IndustrialManagementIdS: arr.length ? arr.join(",") : "",
|
|
|
+ IndustrialSubjectIdS: this.markValue.length ? this.markValue.join(",") : "",
|
|
|
+ List: this.ListSubject,
|
|
|
+ Scale: this.checkScaleList.length ? this.checkScaleList.join(",") : "",
|
|
|
+ LabelType: Number(this.subjectRadio),
|
|
|
+ IsShowSubjectName: this.isMark ? 1 : 0,
|
|
|
+ IsMakerShow: this.decisionChecked ? 1 : 0,
|
|
|
+ VisibleRange: this.radioVisibleActivity,
|
|
|
+ VoiceList,
|
|
|
+ VideoDetail,
|
|
|
+ IsYidongConduct: RefPage.isYidongConduct ? 1 : 0,
|
|
|
+ IsExternalLabel: RefPage.isExternalLabel ? 1 : 0,
|
|
|
+ IsCanOutboundCall: RefPage.isCanOutboundCall ? 1 : 0,
|
|
|
+ IsResearchPoints: RefPage.isDeduct ? 1 : 0,
|
|
|
+ IsNeedEmail: RefPage.provideEmail ? 1 : 0,
|
|
|
+ IsBClass: RefPage.isBClass ? 1 : 0,
|
|
|
+ SiginupDeadline: RefPage.SiginupDeadline,
|
|
|
+ PointsSet,
|
|
|
+ BackgroundImg: this.defaultImage,
|
|
|
+ ShareImg: this.shareImg,
|
|
|
+ IsResearch: this.optionFormregion.includes("研选") ? true : false,
|
|
|
+ IsShowHz: RefPage.isShowHz ? 1 : 0,
|
|
|
+ AreaType: this.areaType,
|
|
|
+ });
|
|
|
+
|
|
|
+ if (res.Ret !== 200) return;
|
|
|
+ this.$message.success("操作成功!");
|
|
|
+ this.$router.back();
|
|
|
+ }, 500),
|
|
|
+ //获取行业
|
|
|
+ chartPermission() {
|
|
|
+ raiInterface.chartPermissionList({ IsHideResearch: !this.isResearch }).then((res) => {
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ this.chartPermissionList = res.Data.List;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //获取活动类型
|
|
|
+ getActivityType() {
|
|
|
+ raiInterface.getActivityType({ IsResearch: this.isResearch }).then((res) => {
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ this.isShowAddIcon = res.Data.IsShowAddIcon;
|
|
|
+ this.cactivityTypeList = res.Data.List;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //获取活动类型详情
|
|
|
+ activityTypeDetail(e) {
|
|
|
+ this.radio = "1"; //单选按钮
|
|
|
+ this.astrict = ""; //人数限制
|
|
|
+ this.contentTemplateTitle = "1";
|
|
|
+ this.subjectRadio = "1";
|
|
|
+ this.checkedCities = [];
|
|
|
+ this.$refs.researchSelect.isBClass = false;
|
|
|
+ this.radioVisibleActivity = this.cactivityType == 7 ? 1 : 2;
|
|
|
+ if (!this.cactivityType) return;
|
|
|
+ raiInterface
|
|
|
+ .activityTypeDetail({
|
|
|
+ ActivityTypeId: this.cactivityType - 0,
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ this.copyTxt = res.Data.Template;
|
|
|
+ this.templatePText = res.Data.TemplateP;
|
|
|
+ this.zoomTemplate = res.Data.ZoomTemplate;
|
|
|
+ this.ZoomTemplateP = res.Data.ZoomTemplateP;
|
|
|
+ this.showType = res.Data.ShowType;
|
|
|
+ this.activityTypeName = res.Data.ActivityTypeName;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 操作:点击了复制按钮
|
|
|
+ handleCopyFun() {
|
|
|
+ let clipboard = new Clipboard("#copy_text");
|
|
|
+ clipboard.on("success", (e) => {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: "复制成功!",
|
|
|
+ });
|
|
|
+ this.dialogVisible = false;
|
|
|
+ clipboard.destroy(); // 释放内存
|
|
|
+ });
|
|
|
+ clipboard.on("error", (e) => {
|
|
|
+ // 不支持复制
|
|
|
+ this.$Message.info("该浏览器不支持自动复制");
|
|
|
+ clipboard.destroy(); // 释放内存
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //点击了复制模版
|
|
|
+ templateBtn() {
|
|
|
+ if (!this.cactivityType) return this.$message.error("请选择活动类型");
|
|
|
+ this.dialogVisible = true;
|
|
|
+ },
|
|
|
+ //获取多选的客户列表
|
|
|
+ customerTypelist() {
|
|
|
+ raiInterface.customerTypelist().then((res) => {
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ this.cities = res.Data.List;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 子组件来的事件 产业
|
|
|
+ commitIndustryDlg(data, type = "") {
|
|
|
+ this.getIndustry();
|
|
|
+ this.industryCascade.push([Number(data.ChartPermissionId), Number(data.NewId)]);
|
|
|
+ },
|
|
|
+ // 子组件来的事件 标的
|
|
|
+ commitMarkDlg(data) {
|
|
|
+ let arr = this.industryCascade.flat(Infinity);
|
|
|
+ raiInterface
|
|
|
+ .getindustrialSubjectlistIds({
|
|
|
+ IndustrialManagementIdStr: arr[1],
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ this.markOptions = res.Data.List || [];
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.markValue = data.split(",").map((item) => Number(item));
|
|
|
+ },
|
|
|
+ /* 获取全部的行业 */
|
|
|
+ getIndustry() {
|
|
|
+ raiInterface.getListIndustrial().then((res) => {
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ this.industryArr = res.Data.List || [];
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //top 行业清除的事件
|
|
|
+ clearTopIndustry() {
|
|
|
+ this.industryCascade = [];
|
|
|
+ this.radioTemporary = false;
|
|
|
+ this.valTemporary = "";
|
|
|
+ this.markValue = "";
|
|
|
+ this.radioVisibleActivity = 2;
|
|
|
+ },
|
|
|
+ //添加标的的点击事件
|
|
|
+ isAddMarketDlg() {
|
|
|
+ let arr = this.industryCascade.flat(Infinity);
|
|
|
+ this.industryArr.forEach((item) => {
|
|
|
+ if (item.ChartPermissionId == arr[0]) {
|
|
|
+ this.addMarkUpVal.industrialId = arr[1];
|
|
|
+ item.List.forEach((key) => {
|
|
|
+ if (key.ChartPermissionId == arr[1]) {
|
|
|
+ this.addMarkUpVal.industrialName = key.PermissionName;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (this.industryCascade.length == 1) {
|
|
|
+ this.addMarkDlg = true;
|
|
|
+ } else if (this.industryCascade.length > 1) {
|
|
|
+ this.$message.error("已选多个产业,无法添加标的");
|
|
|
+ } else {
|
|
|
+ this.$message.error("请先选择产业");
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //点击添加标的的下拉选择框
|
|
|
+ markSelectFocus() {
|
|
|
+ if (!this.industryCascade.length) {
|
|
|
+ this.$message.error("请先选择产业");
|
|
|
+ } else {
|
|
|
+ let arr = [];
|
|
|
+ arr = this.industryCascade.map((item) => {
|
|
|
+ return item[1];
|
|
|
+ });
|
|
|
+ raiInterface
|
|
|
+ .getindustrialSubjectlistIds({
|
|
|
+ IndustrialManagementIdStr: arr.join(","),
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ this.markOptions = res.Data.List || [];
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleCheckAllChange(val) {
|
|
|
+ if (val) {
|
|
|
+ let newCodeList = this.cities.map((item) => item.CustomerTypeId);
|
|
|
+ this.checkedCities = newCodeList;
|
|
|
+ } else {
|
|
|
+ this.checkedCities = [];
|
|
|
+ }
|
|
|
+ this.checkedCitiesTwo = this.checkedCities.join(",");
|
|
|
+ this.isIndeterminate = false;
|
|
|
+ },
|
|
|
+ handleCheckedCitiesChange(value) {
|
|
|
+ let checkedCount = value.length;
|
|
|
+ this.checkAll = checkedCount === this.cities.length;
|
|
|
+ this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
|
|
|
+ },
|
|
|
+ cancelBtn() {
|
|
|
+ this.$router.back();
|
|
|
+ },
|
|
|
+ contentTemplate(type) {
|
|
|
+ this.contentTemplateTitle = type;
|
|
|
+ },
|
|
|
+ handleCloseSubject() {
|
|
|
+ this.nameSubjectOptions = [];
|
|
|
+ this.addSubjectName = "";
|
|
|
+ this.addSubjectOptions = [];
|
|
|
+ this.dialogVisibleSubject = false;
|
|
|
+ },
|
|
|
+ async remoteMethod(query) {
|
|
|
+ if (query !== "") {
|
|
|
+ const res = await raiInterface.industrialSubjectSearch({
|
|
|
+ KeyWord: query,
|
|
|
+ });
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ this.addSubjectOptions = res.Data.List || [];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async searchInfo(val) {
|
|
|
+ if (val !== "") {
|
|
|
+ const res = await raiInterface.industrialSubjectSearchInfo({
|
|
|
+ KeyWord: val,
|
|
|
+ });
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ this.isShowSubject = res.Data.List ? false : true;
|
|
|
+ let arrList = [];
|
|
|
+ arrList = res.Data.List
|
|
|
+ ? res.Data.List.map((item) => {
|
|
|
+ let arr = [];
|
|
|
+ item.List.forEach((key) => {
|
|
|
+ arr.push(key.Name);
|
|
|
+ });
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ value: arr.join(","),
|
|
|
+ };
|
|
|
+ })
|
|
|
+ : [];
|
|
|
+ this.nameSubjectOptions = arrList;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.nameSubjectOptions = [];
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //套餐类型的 提升文本
|
|
|
+ checkboxTooltip(val) {
|
|
|
+ let str = "";
|
|
|
+ switch (val) {
|
|
|
+ case "全选":
|
|
|
+ str = "所有客户均可看到该活动(冻结、流失客户也可看到,但会提示无权限参会)";
|
|
|
+ break;
|
|
|
+ case "活动可见":
|
|
|
+ str = "套餐类型和管理规模两项下,均有勾选时,只要满足其中之一的条件,客户就可见此活动。例如:勾选了大套餐客户和100亿以上,则大套餐客户和100亿以上规模的客户都可以看到此活动";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return str;
|
|
|
+ },
|
|
|
+ //删除上传
|
|
|
+ handleRemoveAudio(file, fileList) {
|
|
|
+ this.fileListAudio = [];
|
|
|
+ },
|
|
|
+ //删除上传前得确认
|
|
|
+ beforeRemoveAudio(file, fileList) {
|
|
|
+ return this.$confirm(`确定移除 ${file.name}?`);
|
|
|
+ },
|
|
|
+ //删除视频的上传
|
|
|
+ handleRemoveVideo(file, fileList) {
|
|
|
+ this.addEditVideo = [];
|
|
|
+ },
|
|
|
+ //获取视频时长的promise
|
|
|
+ handleGetDuration(file) {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ const fileUrl = URL.createObjectURL(file);
|
|
|
+ const audioEl = new Audio(fileUrl);
|
|
|
+ audioEl.addEventListener("loadedmetadata", (e) => {
|
|
|
+ resolve(audioEl.duration);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ //上传视频判断格式
|
|
|
+ handelBeforeUploadVideo(e) {
|
|
|
+ if (e.type != "video/mp4") {
|
|
|
+ this.$message.warning("上传失败,上传视频格式不正确");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 上传视频
|
|
|
+ async handleUpload(e) {
|
|
|
+ const duration = await this.handleGetDuration(e.file);
|
|
|
+ this.addEditVideo.push({
|
|
|
+ name: e.file.name,
|
|
|
+ PlaySeconds: duration + "",
|
|
|
+ url: "",
|
|
|
+ });
|
|
|
+ const res = await getOSSSign();
|
|
|
+
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ let accessKeyId = res.Data.AccessKeyId;
|
|
|
+ let accessKeySecret = res.Data.AccessKeySecret;
|
|
|
+ let stsToken = res.Data.SecurityToken;
|
|
|
+ this.handleUploadToOSS(e.file, accessKeyId, accessKeySecret, stsToken);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //上传到阿里云
|
|
|
+ async handleUploadToOSS(file, accessKeyId, accessKeySecret, stsToken) {
|
|
|
+ this.startUpload = true;
|
|
|
+ const ALOSSINS = new OSS({
|
|
|
+ // yourRegion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
|
|
|
+ region: "oss-cn-shanghai",
|
|
|
+ // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
|
|
|
+ accessKeyId: accessKeyId,
|
|
|
+ accessKeySecret: accessKeySecret,
|
|
|
+ // 从STS服务获取的安全令牌(SecurityToken)。
|
|
|
+ stsToken: stsToken,
|
|
|
+ // 填写Bucket名称,例如examplebucket。
|
|
|
+ bucket: "hzchart",
|
|
|
+ endpoint: "hzstatic.hzinsights.com",
|
|
|
+ cname: true,
|
|
|
+ timeout: 600000,
|
|
|
+ });
|
|
|
+ // 生成文件名
|
|
|
+ const t = new Date().getTime().toString();
|
|
|
+ const temName = `static/yb/video/${MD5(t)}.${file.name.split(".")[1]}`;
|
|
|
+ console.log(temName);
|
|
|
+
|
|
|
+ const options = {
|
|
|
+ // 获取分片上传进度、断点和返回值。
|
|
|
+ progress: (p, cpt, res) => {
|
|
|
+ console.log(p);
|
|
|
+ this.percentage = parseInt(p * 100);
|
|
|
+ },
|
|
|
+ // 设置并发上传的分片数量。
|
|
|
+ parallel: 10,
|
|
|
+ // 设置分片大小。默认值为1 MB,最小值为100 KB。
|
|
|
+ partSize: 1024 * 1024 * 10, // 10MB
|
|
|
+ };
|
|
|
+ try {
|
|
|
+ const res = await ALOSSINS.multipartUpload(temName, file, { ...options });
|
|
|
+ console.log("上传结果", res);
|
|
|
+ if (res.res.status === 200) {
|
|
|
+ this.getVideoAndImg(2);
|
|
|
+ let VideoUrl = "https://hzstatic.hzinsights.com/" + res.name;
|
|
|
+ this.addEditVideo[0].url = VideoUrl;
|
|
|
+ this.startUpload = false;
|
|
|
+ this.percentage = 0;
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ this.$message.warning("上传失败,请刷新重试");
|
|
|
+ this.startUpload = false;
|
|
|
+ this.percentage = 0;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ errorUpload() {
|
|
|
+ this.$message.error("音频文件和视频文件,仅支•持•上•传一个");
|
|
|
+ },
|
|
|
+ // 公司线下调研 调研电话会 的选择
|
|
|
+ isCheckAllType(newval) {
|
|
|
+ if (newval) {
|
|
|
+ let newCodeList = [];
|
|
|
+ this.cities.forEach((item) => {
|
|
|
+ if (![5, 6, 7].includes(item.CustomerTypeId)) {
|
|
|
+ newCodeList.push(item.CustomerTypeId);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.checkedCities = newCodeList;
|
|
|
+ this.checkedCitiesTwo = this.checkedCities.join(",");
|
|
|
+ this.isIndeterminate = true;
|
|
|
+ this.checkAll = false;
|
|
|
+ } else {
|
|
|
+ this.checkedCities = [];
|
|
|
+ this.checkedCitiesTwo = "";
|
|
|
+ this.checkAll = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 点击修改图片的弹框
|
|
|
+ modifyImgHandler() {
|
|
|
+ let type = this.addEditVideo.length > 0 ? 2 : 1;
|
|
|
+ this.getVideoAndImg(type, "修改");
|
|
|
+ this.modifyImgVisible = true;
|
|
|
+ },
|
|
|
+ // video_and_voiceImgActivityVideo()
|
|
|
+ async getVideoAndImg(type, isOne = "") {
|
|
|
+ const res = await raiInterface.video_and_voiceImgActivityVideo({
|
|
|
+ FileType: type,
|
|
|
+ ActivityId: Number(this.$route.query.id),
|
|
|
+ });
|
|
|
+ if (res.Ret === 200) {
|
|
|
+ isOne == "修改" ? "" : (this.defaultImage = res.Data.List[0].ImgUrl);
|
|
|
+ this.videoAndVoiceList = res.Data.List;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style lang="scss">
|
|
|
+.container-addAct {
|
|
|
+ .content-template {
|
|
|
+ display: flex;
|
|
|
+ div {
|
|
|
+ margin-right: 20px;
|
|
|
+ padding-bottom: 4px;
|
|
|
+ }
|
|
|
+ .active {
|
|
|
+ border-bottom: 4px solid #409eff;
|
|
|
+ }
|
|
|
+ margin-bottom: 20px;
|
|
|
+ }
|
|
|
+ .customWidth {
|
|
|
+ width: 550px !important;
|
|
|
+ }
|
|
|
+ .top-box {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ }
|
|
|
+ .fr-second-toolbar {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ #dialog {
|
|
|
+ -webkit-touch-callout: none;
|
|
|
+ -webkit-user-select: none;
|
|
|
+ -khtml-user-select: none;
|
|
|
+ -moz-user-select: none;
|
|
|
+ -ms-user-select: none;
|
|
|
+ user-select: none;
|
|
|
+ color: #333;
|
|
|
+ font-size: 14px;
|
|
|
+ div {
|
|
|
+ margin-bottom: 40px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .no-cv {
|
|
|
+ margin-top: 30px;
|
|
|
+ -webkit-user-select: none;
|
|
|
+ -khtml-user-select: none;
|
|
|
+ -moz-user-select: none;
|
|
|
+ -ms-user-select: none;
|
|
|
+ user-select: none;
|
|
|
+ }
|
|
|
+ .text-right {
|
|
|
+ display: inline-block;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
+ .radio-input {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .el-input__inner {
|
|
|
+ box-sizing: border-box;
|
|
|
+ line-height: 30px;
|
|
|
+ width: 112px;
|
|
|
+ height: 28px !important;
|
|
|
+ background: #ffffff;
|
|
|
+ border: 1px solid #aab4cc;
|
|
|
+ border-radius: 4px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .astrict-inpt {
|
|
|
+ box-sizing: border-box;
|
|
|
+ line-height: 30px;
|
|
|
+ width: 112px;
|
|
|
+ height: 28px !important;
|
|
|
+ background: #ffffff;
|
|
|
+ input {
|
|
|
+ padding: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .checkbox-box {
|
|
|
+ display: flex;
|
|
|
+ margin-bottom: 10px;
|
|
|
+ .el-checkbox {
|
|
|
+ margin-left: 5px;
|
|
|
+ margin-right: 30px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .subject-text {
|
|
|
+ padding-top: 20px;
|
|
|
+ }
|
|
|
+ .is-visible {
|
|
|
+ margin-bottom: 20px;
|
|
|
+ .el-checkbox {
|
|
|
+ margin-left: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .audio-content {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .test {
|
|
|
+ flex-shrink: 0;
|
|
|
+ }
|
|
|
+ .upload-demo {
|
|
|
+ display: flex;
|
|
|
+ .el-upload-list {
|
|
|
+ margin-left: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .cover-content {
|
|
|
+ align-items: stretch;
|
|
|
+ vertical-align: bottom;
|
|
|
+ .img-content {
|
|
|
+ position: relative;
|
|
|
+ height: 200px;
|
|
|
+ width: 200px;
|
|
|
+ border: 1px solid #ccc;
|
|
|
+ img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .modify {
|
|
|
+ position: absolute;
|
|
|
+ bottom: 0;
|
|
|
+ right: -50px;
|
|
|
+ height: 20px;
|
|
|
+ cursor: pointer;
|
|
|
+ color: #409eff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-upload-list__item.is-success.focusing .el-icon-close-tip {
|
|
|
+ display: none !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+.fr-visible {
|
|
|
+ display: none !important;
|
|
|
+}
|
|
|
+.add-delete {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ img {
|
|
|
+ width: 18px;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|