瀏覽代碼

修复语法问题

bding 1 年之前
父節點
當前提交
a085a2a08e
共有 23 個文件被更改,包括 14 次插入6941 次删除
  1. 0 343
      src/views/rai_manage/activityList/activityManage.vue
  2. 0 1080
      src/views/rai_manage/activityList/addActivity.vue
  3. 0 444
      src/views/rai_manage/activityList/applyManage.vue
  4. 0 197
      src/views/rai_manage/activityList/appointment.vue
  5. 0 200
      src/views/rai_manage/activityList/attendMeeting.vue
  6. 0 401
      src/views/rai_manage/activityList/onLineManage.vue
  7. 0 256
      src/views/rai_manage/activityList/practicalMeeting.vue
  8. 0 462
      src/views/rai_manage/activityList/roadShow/components/addVideoDlg.vue
  9. 0 124
      src/views/rai_manage/activityList/roadShow/components/playDetailsDlg.vue
  10. 0 320
      src/views/rai_manage/activityList/roadShow/roadShowList.vue
  11. 0 167
      src/views/rai_manage/activityList/roadShow/tableTabs.js
  12. 12 44
      src/views/rai_manage/activityManage/specialResearch.vue
  13. 0 1
      src/views/rai_manage/components/apply/applyDialog.vue
  14. 2 2
      src/views/rai_manage/components/apply/templateMessage.vue
  15. 0 237
      src/views/rai_manage/researchReport/reportChoiceness.vue
  16. 0 258
      src/views/rai_manage/researchReport/roadshowEssence.vue
  17. 0 253
      src/views/rai_manage/researchReport/theLastWeek.vue
  18. 0 256
      src/views/rai_manage/researchReport/thisWeek.vue
  19. 0 477
      src/views/rai_manage/specialResearch/addResearch.vue
  20. 0 578
      src/views/rai_manage/specialResearch/determineTravel.vue
  21. 0 157
      src/views/rai_manage/specialResearch/interestAllPreview.vue
  22. 0 190
      src/views/rai_manage/specialResearch/particularsAll.vue
  23. 0 494
      src/views/rai_manage/specialResearch/specialResearch.vue

+ 0 - 343
src/views/rai_manage/activityList/activityManage.vue

@@ -1,343 +0,0 @@
-<template>
-  <!-- 活动管理页面 -->
-  <div class="container-activity">
-    <!-- 头部el-card -->
-    <el-card style="margin-bottom: 20px">
-      <div class="top-card-box">
-        <div class="tabs-box">
-          <span v-for="(item, index) in listTitle" :key="item.ChartPermissionId" @click="tabsBoxBtn(item, index)" :class="index == tabsPitchon ? 'pitch' : ''">{{ item.PermissionName }}</span>
-        </div>
-        <div>
-          <el-button type="primary" @click="$router.push('/addActivity')">添加活动</el-button>
-        </div>
-      </div>
-    </el-card>
-    <!-- 内容el-card -->
-    <el-card>
-      <!-- 选择部分 -->
-      <div class="screen-box">
-        <div>
-          <el-select placeholder="行业" clearable v-model="industry" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.ChartPermissionId" :value="item.ChartPermissionId"></el-option>
-          </el-select>
-          <el-select placeholder="活动类型" clearable v-model="cactivityTypeVal" @change="conditionChange">
-            <el-option v-for="item in cactivityTypeList" :label="item.ActivityTypeName" :key="item.ActivityTypeId" :value="item.ActivityTypeId"></el-option>
-          </el-select>
-          <el-date-picker v-model="publishDate" type="date" placeholder="发布时间" format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd" @change="conditionChange"> </el-date-picker>
-          <date-picker style="margin-bottom: 20px" v-model="issueTime" type="date" range placeholder="活动时间" value-type="format" @change="conditionChange"> </date-picker>
-          <el-select placeholder="发布状态" clearable v-model="status" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
-          </el-select>
-          <el-input v-model="activityLabel" @input="titleInput" placeholder="请输入活动标签" clearable style="display: inline-block; width: 220px">
-            <i slot="prefix" class="el-input__icon el-icon-search"></i>
-          </el-input>
-        </div>
-        <div>
-          <el-input v-model="titleValue" @input="titleInput" placeholder="请输入活动名称" clearable style="display: inline-block; width: 220px">
-            <i slot="prefix" class="el-input__icon el-icon-search"></i>
-          </el-input>
-        </div>
-      </div>
-      <!-- 表格部分 -->
-      <el-table :data="dataList" style="width: 100%" border>
-        <el-table-column align="center" label="活动名称" min-width="285">
-          <template slot-scope="{ row }">
-            <span class="editsty" @click="titleBtnClick(row.ActivityId)">{{ row.ActivityName }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="ChartPermissionName" align="center" label="行业" min-width="90"></el-table-column>
-        <el-table-column min-width="120" prop="ActivityTypeName" align="center" label="活动类型"></el-table-column>
-        <el-table-column min-width="120" prop="Label" align="center" label="活动标签"></el-table-column>
-        <el-table-column min-width="219" prop="ActivityTimeText" align="center" label="活动时间"></el-table-column>
-        <el-table-column min-width="200" prop="LastUpdatedTime" align="center" label="更新时间"></el-table-column>
-        <el-table-column align="center" label="发布状态" min-width="100">
-          <template slot-scope="{ row }">
-            {{ row.PublishStatus == 0 ? "未发布" : row.PublishStatus == 1 ? "已发布" : "已取消" }}
-          </template>
-        </el-table-column>
-        <el-table-column align="center" width="146" label="操作">
-          <template slot-scope="{ row }">
-            <span v-if="row.PublishStatus == 0 && tabsPitchon == 0" class="editsty" @click="operationBtn(row.ActivityId, '发布')">发布</span>
-            <span v-if="row.PublishStatus == 3 && tabsPitchon == 0" class="editsty" @click="operationBtn(row.ActivityId, '重新发布')">重新发布</span>
-            <span v-if="row.PublishStatus == 1 && tabsPitchon == 0" class="editsty" @click="operationBtn(row.ActivityId, '取消发布')">取消发布</span>
-            &nbsp;&nbsp;
-            <span class="editsty" @click="editBtn(row.ActivityId, row.PublishStatus)">编辑</span>
-            &nbsp;&nbsp;
-            <span class="deletesty" v-if="row.PublishStatus == 0 && tabsPitchon == 0" @click="operationBtn(row.ActivityId, '删除')">删除</span>
-          </template>
-        </el-table-column>
-      </el-table>
-      <!-- 分页 -->
-      <el-col :span="24" class="toolbar">
-        <m-page :total="total" :page_no="page_no" :pageSize="10" @handleCurrentChange="handleCurrentChange" />
-      </el-col>
-    </el-card>
-    <atc-particulars :dialogVisible.sync="dialogVisible" :detailData.sync="detailData" />
-  </div>
-</template>
-
-<script>
-import mPage from "@/components/mPage.vue";
-import { raiInterface } from "@/api/api.js";
-import AtcParticulars from "../components/atcParticulars.vue";
-export default {
-  name: "",
-  components: { mPage, AtcParticulars },
-  props: {},
-  data() {
-    return {
-      listTitle: [
-        {
-          PermissionName: "未开始",
-          Id: "NotStarted",
-        },
-        {
-          PermissionName: "进行中",
-          Id: "HaveInHand",
-        },
-        {
-          PermissionName: "已结束",
-          Id: "Complete",
-        },
-      ],
-      tabsPitchon: 0, //tabs 默认选中
-      page_no: sessionStorage.getItem("cativityBack") ? JSON.parse(sessionStorage.getItem("cativityBack")).page_no : 1,
-      dataList: [], //表格内容
-      industry: "", //行业
-      status: "", //状态
-      issueTime: "", //时间
-      cactivityTypeVal: "", //活动
-      options: [
-        { id: 1, name: "已发布" },
-        { id: 0, name: "未发布" },
-        { id: 3, name: "已取消" },
-      ],
-      titleValue: "", //标题关键词
-      total: 0, //条数
-      PageSize: 10, //每页显示几条
-      chartPermissionList: [], //行业的数组
-      cactivityTypeList: [], //活动类型
-      dialogVisible: false, //弹框
-      activeStateId: "NotStarted",
-      detailData: {}, //
-      activityLabel: "",
-      publishDate: "",
-    };
-  },
-  computed: {
-    sta() {
-      return this.status >= 0 && typeof this.status == "number" ? this.status : 2;
-    },
-  },
-  created() {},
-  mounted() {
-    if (sessionStorage.getItem("cativityBack")) {
-      const initialize = JSON.parse(sessionStorage.getItem("cativityBack"));
-      this.titleValue = initialize.keyword;
-      this.industry = initialize.industry;
-      this.status = initialize.status;
-      this.issueTime = initialize.issueTime;
-      this.cactivityTypeVal = initialize.cactivityTypeVal;
-      this.activeStateId = initialize.activeStateId;
-      this.tabsPitchon = initialize.tabsPitchon;
-      this.activityLabel = initialize.activityLabel;
-      this.publishDate = initialize.publishDate;
-    }
-    this.chartPermission();
-    this.activityType();
-    this.getsummaryManageList();
-  },
-  methods: {
-    titleInput() {
-      this.page_no = 1;
-      this.init();
-      this.getsummaryManageList();
-    },
-    init() {
-      this.industry = ""; //行业
-      this.status = ""; //状态
-      this.issueTime = ""; //时间
-      this.cactivityTypeVal = ""; //活动
-      this.sta = "";
-    },
-    //头部tabs
-    tabsBoxBtn(item, index) {
-      this.activeStateId = item.Id;
-      this.tabsPitchon = index;
-      this.page_no = 1;
-      this.getsummaryManageList();
-    },
-    operationBtn(id, value) {
-      this.$confirm(`确定${value}该活动吗?`, "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          if (value == "删除") {
-            raiInterface
-              .activityDelete({
-                ActivityId: id,
-              })
-              .then((res) => {
-                if (res.Ret !== 200) return;
-                this.$message.success("删除成功!");
-                this.getsummaryManageList();
-              });
-          } else {
-            raiInterface
-              .activityPublishAndCancel({
-                ActivityId: id,
-              })
-              .then((res) => {
-                if (res.Ret !== 200) return;
-                this.$message.success(value + "成功!");
-                this.getsummaryManageList();
-              });
-          }
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: `已取消${value}`,
-          });
-        });
-    },
-    //编辑
-    editBtn(id, show) {
-      this.$router.push({
-        path: "/editActivity",
-        query: {
-          id: id,
-          isShow: show,
-        },
-      });
-    },
-    //分页
-    handleCurrentChange(page) {
-      this.page_no = page;
-      this.getsummaryManageList();
-    },
-    //获取行业
-    chartPermission() {
-      raiInterface.chartPermission().then((res) => {
-        if (res.Ret === 200) {
-          this.chartPermissionList = res.Data.List;
-        }
-      });
-    },
-    //活动类型
-    activityType() {
-      raiInterface.getActivityType().then((res) => {
-        if (res.Ret === 200) {
-          this.cactivityTypeList = res.Data.List;
-        }
-      });
-    },
-    //列表
-    getsummaryManageList() {
-      raiInterface
-        .getActivityList({
-          CurrentIndex: this.page_no,
-          PageSize: this.PageSize,
-          PublishStatus: this.sta - 0,
-          ChartPermissionId: this.industry,
-          StartDate: this.issueTime[0],
-          EndDate: this.issueTime[1],
-          KeyWord: this.titleValue,
-          ActivityTypeId: this.cactivityTypeVal,
-          ActiveState: this.activeStateId,
-          ActivityLabel: this.activityLabel,
-          PublishStartDate: this.publishDate,
-        })
-        .then((res) => {
-          if (res.Ret !== 200) return;
-          this.dataList = res.Data.List;
-          this.total = res.Data.Paging.Totals;
-        });
-    },
-    //change事件
-    conditionChange() {
-      this.page_no = 1;
-      this.getsummaryManageList();
-    },
-    //点击标题的弹框
-    titleBtnClick(id) {
-      raiInterface.activityDetail({ ActivityId: Number(id) }).then((res) => {
-        if (res.Ret == 200) {
-          this.detailData = res.Data;
-        }
-      });
-      this.dialogVisible = true;
-    },
-  },
-  /* 页面跳转前记录参数 */
-  beforeRouteLeave(to, form, next) {
-    let backData = {
-      page_no: this.page_no,
-      keyword: this.titleValue,
-      industry: this.industry, //行业
-      status: this.status, //状态
-      issueTime: this.issueTime, //时间
-      cactivityTypeVal: this.cactivityTypeVal, //活动
-      activeStateId: this.activeStateId, //
-      tabsPitchon: this.tabsPitchon,
-      activityLabel: this.activityLabel,
-      publishDate: this.publishDate,
-    };
-    sessionStorage.setItem("cativityBack", JSON.stringify(backData));
-    next();
-  },
-  /* 页面进入前是否清除参数 */
-  beforeRouteEnter(to, from, next) {
-    if (from.path != "/editActivity") {
-      sessionStorage.removeItem("cativityBack");
-    }
-    next();
-  },
-};
-</script>
-<style lang="scss">
-.container-activity {
-  .top-card-box {
-    display: flex;
-    justify-content: space-between;
-    .tabs-box {
-      span {
-        display: inline-block;
-        padding: 9px 24px;
-        background-color: #e9f4ff;
-        border: 1px solid #b3d8ff;
-        border-radius: 4px;
-        margin-right: 30px;
-        color: #409eff;
-        cursor: pointer;
-      }
-      .pitch {
-        background-color: #409eff;
-        border: none;
-        color: #fff;
-      }
-    }
-  }
-  .screen-box {
-    display: flex;
-    justify-content: space-between;
-    .el-select {
-      margin-right: 25px;
-    }
-    .el-date-picker,
-    .el-date-editor {
-      margin-right: 25px;
-    }
-  }
-  .mx-datepicker {
-    width: 220px !important;
-    margin-right: 25px;
-  }
-
-  .customWidth {
-    width: 550px !important;
-  }
-}
-</style>

+ 0 - 1080
src/views/rai_manage/activityList/addActivity.vue

@@ -1,1080 +0,0 @@
-<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"
-          >
-            <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>
-        </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="raiRole !== 'rai_seller'">
-            <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="raiRole !== 'rai_seller'">
-            <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">
-          <el-checkbox v-model="isCanAppointmentMinutes"
-            >可预约纪要
-            <el-tooltip placement="top-start" content="会后提供纪要的活动,请勾选此选项,小程序内会显示【预约纪要】按钮">
-              <i class="el-icon-info" />
-            </el-tooltip>
-          </el-checkbox>
-          <template v-if="cactivityType == 7 || cactivityType == 2">
-            <el-checkbox v-model="isYidongConduct">
-              易懂办会
-              <el-tooltip placement="top-start" content="在易董举办的活动,请勾选此选项">
-                <i class="el-icon-info" />
-              </el-tooltip>
-            </el-checkbox>
-            <el-checkbox v-if="isYidongConduct" v-model="isCanOutboundCall">
-              可提供外呼
-              <el-tooltip placement="top-start" content="用户可在小程序中选择预约外呼参会">
-                <i class="el-icon-info" />
-              </el-tooltip>
-            </el-checkbox>
-          </template>
-        </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" v-if="cactivityType == 7">
-                <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">仅决策人可见</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="baseApi + '/resource/voice/upload'"
-            accept="audio/*"
-            :on-success="handleSuccessAudio"
-            :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>
-      </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>
-  </div>
-</template>
-
-<script>
-import { raiInterface, customInterence, getOSSSign } 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";
-
-export default {
-  name: "",
-  components: { AddIndustryMark },
-  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: 1,
-      decisionChecked: false,
-      isCanAppointmentMinutes: false, // 可预约纪要
-      isYidongConduct: false, // 易懂办会
-      isCanOutboundCall: false, // 可提供外呼
-      fileListAudio: [],
-      baseApi: process.env.process.env.VUE_APP_BASE_API,
-      activeIsState: "",
-      addEditVideo: [],
-      startUpload: false, //开始上传
-      percentage: 0,
-    };
-  },
-  computed: {
-    raiRole() {
-      return localStorage.getItem("Role");
-    },
-  },
-  mixins: [richTextMixins],
-  watch: {
-    radio() {
-      if (this.radio == "1") {
-        this.astrict = "";
-      }
-    },
-    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;
-        if (newval == 1 || newval == 3 || newval == 4) {
-          this.isCanAppointmentMinutes = true;
-        } else {
-          this.isCanAppointmentMinutes = false;
-        }
-      },
-    },
-  },
-  created() {},
-  mounted() {
-    this.chartPermission();
-    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: {
-    //删除新增的主题标签
-    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.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.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.isCanAppointmentMinutes = Data.IsCanAppointmentMinutes == 1 ? true : false;
-        this.isYidongConduct = Data.IsYidongConduct == 1 ? true : false;
-        this.isCanOutboundCall = Data.IsCanOutboundCall == 1 ? true : false;
-        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.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.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]);
-    },
-    //保存或发布
-    async saveTheRelease(type, arr, VoiceList, VideoDetail) {
-      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,
-        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: this.isYidongConduct ? 1 : 0,
-        IsCanOutboundCall: this.isCanOutboundCall ? 1 : 0,
-      });
-
-      if (res.Ret !== 200) return;
-      this.$message.success("操作成功!");
-      this.$router.back();
-    },
-    //获取行业
-    chartPermission() {
-      raiInterface.chartPermissionList().then((res) => {
-        if (res.Ret === 200) {
-          this.chartPermissionList = res.Data.List;
-        }
-      });
-    },
-    //获取活动类型
-    getActivityType() {
-      raiInterface.getActivityType().then((res) => {
-        if (res.Ret === 200) {
-          this.cactivityTypeList = res.Data.List;
-        }
-      });
-    },
-    //获取活动类型详情
-    activityTypeDetail(e) {
-      this.radio = "1"; //单选按钮
-      this.astrict = ""; //人数限制
-      this.contentTemplateTitle = "1";
-      this.subjectRadio = "1";
-      this.checkedCities = [];
-      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 = "";
-    },
-    //添加标的的点击事件
-    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;
-    },
-    //上传成功
-    handleSuccessAudio(res, file, fileList) {
-      let arr = [];
-      fileList.forEach((item) => {
-        if (item.response) {
-          if (item.response.Ret === 200) {
-            arr.push({
-              name: item.response.Data.ResourceName,
-              url: item.response.Data.ResourceUrl,
-              PlaySeconds: item.response.Data.PlaySeconds,
-            });
-          }
-        } else {
-          arr.push({ ...item });
-        }
-      });
-      this.fileListAudio = arr;
-    },
-    //删除上传
-    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) {
-          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("音频文件和视频文件,仅支持上传一个");
-    },
-  },
-};
-</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;
-      }
-    }
-  }
-  .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>

+ 0 - 444
src/views/rai_manage/activityList/applyManage.vue

@@ -1,444 +0,0 @@
-<template>
-  <div class="container-apply">
-    <!-- 头部el-card -->
-    <div class="top-wrap" style="margin-bottom: 20px">
-      <div class="top-card-box">
-        <div class="tabs-box">
-          <span v-for="(item, index) in listTitle" :key="item.ChartPermissionId" @click="tabsBoxBtn(item, index)" :class="item.ChartPermissionId == tabsPitchonType ? 'pitch' : ''">{{
-            item.PermissionName
-          }}</span>
-        </div>
-        <div>
-          <el-input v-model="titleValue" style="width: 521px" placeholder="请输入活动名称" clearable>
-            <i slot="prefix" class="el-input__icon el-icon-search"></i>
-          </el-input>
-        </div>
-      </div>
-    </div>
-    <!-- 内容el-card -->
-    <el-card>
-      <!-- 选择部分 -->
-      <div class="screen-box">
-        <div class="screen-button">
-          <template v-if="tabsPitchonType !== 3">
-            <el-button type="primary" v-if="tabsSelectionOne && tabsPitchonType !== 4" @click="addOutbound(tabsBtnName)">{{ tabsBtnName }}</el-button>
-            <el-button v-if="tabsPitchonType !== 1" type="primary" @click="addapply">新增报名</el-button>
-          </template>
-          <!-- 公司调研下的单独按钮 -->
-          <template v-if="tabsPitchonType === 3">
-            <el-tooltip class="item" effect="dark" content="不限人数的公司调研电话会请点此" placement="bottom">
-              <el-button type="primary" v-if="tabsSelectionOne" @click="addOutbound('新增外呼人员')">新增外呼人员</el-button>
-            </el-tooltip>
-            <el-tooltip class="item" effect="dark" content="公司线下调研、限制人数的公司调研电话会请点此" placement="bottom">
-              <el-button v-if="tabsPitchonType !== 1" type="primary" @click="addapply">新增报名</el-button>
-            </el-tooltip>
-          </template>
-          <el-button type="primary" @click="addOutbound('新增预约纪要')">新增预约纪要</el-button>
-          <el-button v-if="tabsPitchonType !== 4" type="primary" @click="sendMessage">发送模板消息</el-button>
-        </div>
-        <div>
-          <el-select placeholder="行业" clearable v-model="industry" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.ChartPermissionId" :value="item.ChartPermissionId"></el-option>
-          </el-select>
-          <el-select placeholder="活动类型" clearable @focus="activityType" v-model="cactivityTypeVal" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in cactivityTypeList" :label="item.ActivityTypeName" :key="item.ActivityTypeId" :value="item.ActivityTypeId"></el-option>
-          </el-select>
-          <date-picker v-model="issueTime" type="date" range placeholder="活动时间" value-type="format" @change="conditionChange"> </date-picker>
-          <el-select placeholder="活动状态" clearable v-model="cactivityStatus" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in statusSelect" :label="item.name" :key="item.value" :value="item.value"></el-option>
-          </el-select>
-          <el-select placeholder="发布状态" clearable v-model="publishStatus" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in publishSelect" :label="item.name" :key="item.value" :value="item.value"></el-option>
-          </el-select>
-        </div>
-      </div>
-      <!-- 表格部分 -->
-      <el-table @selection-change="selectChange" :data="dataList" style="width: 100%; margin-top: 15px" border ref="multipleTable">
-        <el-table-column type="selection" align="center" key="ActivityId"></el-table-column>
-        <el-table-column v-for="item in tableApplyColums" :key="item.label" :label="item.label" :width="item.widthsty" :min-width="item.minwidthsty" align="center">
-          <template #header>
-            <span>{{ item.label }}</span>
-            <el-tooltip
-              :content="`总报名人数已满、单机构报名人数满2人、爽约次数超限,仍点击${item.label === '预约失败人数' ? '预约外呼' : '报名'}的客户`"
-              placement="top-start"
-              v-if="item.key === 'SignupFailPeopleNum'"
-            >
-              <i class="el-icon-info" />
-            </el-tooltip>
-          </template>
-          <template slot-scope="{ row }">
-            <div v-if="item.key == 'ReminderPeopleNum'">
-              <span v-if="row.ReminderPeopleNum > 0" class="editsty" @click="particularsBtn('会议提醒人数', row.ActivityId)">{{ row.ReminderPeopleNum }}</span>
-              <span v-else>--</span>
-            </div>
-            <div v-else-if="item.key == 'SignupFailPeopleNum'">
-              <span v-if="row.SignupFailPeopleNum == 0">--</span>
-              <span v-else class="editsty" @click="particularsBtn('报名失败详情', row.ActivityId)">{{ row.SignupFailPeopleNum }}</span>
-            </div>
-            <span v-else @click="handleRowClick(row, item.key)" :style="handleRowStyle(item.key)">{{ handleRowContent(row, item.key) }}</span>
-          </template>
-        </el-table-column>
-      </el-table>
-      <el-col :span="24" class="toolbar">
-        <m-page :total="total" :page_no="page_no" :pageSize="10" @handleCurrentChange="handleCurrentChange" />
-      </el-col>
-    </el-card>
-    <!-- 详情弹框 -->
-    <atc-particulars :dialogVisible.sync="dialogVisible" :detailData.sync="detailData" />
-    <!-- 新增外呼的弹框 -->
-    <apply-dialog
-      :addDialogVisible.sync="addDialogVisible"
-      :dialogVisibleId="dialogVisibleId"
-      :selectList="selectList"
-      :signUpAdd="signUpAdd"
-      :addDialogType="addDialogType"
-      :tabsPitchonType="tabsPitchonType"
-      :minimumSummation="minimumSummation"
-      :selectionArr="selectionArr"
-    />
-    <!-- 报名详情弹框 -->
-    <particulars-dialog :dialogVisibleId="dialogVisibleId" :particularsDialogVisible.sync="particularsDialogVisible" :subscribe="subscribe" />
-    <generation-ask :generaitonType="generaitonType" :generaitondialogVisib.sync="generaitondialogVisib" :generaitonId="generaitonId" />
-    <summary-remind :dialogVisibleId="dialogVisibleId" :summaryRemindDlg.sync="summaryRemindDlg" :subscribe="subscribe" />
-    <template-message :messageDialog.sync="messageDialogVisible" :selectionArr="selectionArr" />
-  </div>
-</template>
-
-<script>
-import { raiInterface } from "@/api/api.js";
-import mPage from "@/components/mPage.vue";
-import ApplyDialog from "../components/apply/applyDialog.vue";
-import ParticularsDialog from "../components/apply/particularsDialog.vue";
-import AtcParticulars from "../components/atcParticulars.vue";
-import GenerationAsk from "../components/generationAsk.vue";
-import SummaryRemind from "../components/apply/summaryRemind.vue";
-import { ListTitle, TableApplyColums, StatusSelect, PublishSelect } from "../components/apply/applyTableColums";
-import TemplateMessage from "../components/apply/templateMessage.vue";
-export default {
-  name: "",
-  components: { ApplyDialog, ParticularsDialog, mPage, AtcParticulars, GenerationAsk, SummaryRemind, TemplateMessage },
-  props: {},
-  data() {
-    return {
-      tabsSelectionOne: true,
-      dataList: [], //表格的列表
-      page_no: sessionStorage.getItem("interviewListBack") ? JSON.parse(sessionStorage.getItem("interviewListBack")).page_no : 1,
-      total: 0, //条数
-      PageSize: 10, //每页显示几条
-      industry: "", //行业
-      cactivityTypeVal: "", //活动
-      issueTime: "", //时间
-      selectList: "", //新增外呼人员的id
-      chartPermissionList: [], //行业的数组
-      cactivityTypeList: [], //活动类型
-      addDialogVisible: false, //新增外呼的弹框
-      particularsDialogVisible: false, //报名详情弹框
-      subscribe: "", //预约外呼弹框的tittle
-      titleValue: "", //标题关键词
-      tabsPitchonType: 1,
-      dialogVisible: false, //文章详情
-      detailData: {}, //文章详情数据
-      dialogVisibleId: 0, //弹框id
-      reminder: false, //提示
-      generaitondialogVisib: false, //代问的弹框
-      generaitonId: 0,
-      generaitonType: "报名",
-      numberFull: false, //
-      tableApplyColums: [],
-      signUpAdd: "",
-      minimumSummation: 0,
-      numberLimi: false, //
-      addDialogType: "新增外呼人员",
-      summaryRemindDlg: false, //预约纪要、会议提醒
-      isShowAppointment: true, //是 预约纪要、会议提醒
-      activityTypeName: [],
-      cactivityStatus: 1,
-      publishStatus: "1", //发布状态
-      messageDialogVisible: false, //发送消息模版
-      selectionArr:[],
-    };
-  },
-  computed: {
-    listTitle() {
-      return ListTitle;
-    },
-    statusSelect() {
-      return StatusSelect;
-    },
-    publishSelect() {
-      return PublishSelect;
-    },
-    tabsBtnName() {
-      return this.tabsPitchonType == 1 ? "新增报名" : "新增外呼人员";
-    },
-  },
-  watch: {
-    titleValue() {
-      this.page_no = 1;
-      this.init();
-      this.getsDataList();
-    },
-  },
-  created() {},
-  mounted() {
-    this.tableApplyColums = TableApplyColums(1);
-    this.chartPermission();
-    this.getsDataList();
-  },
-  methods: {
-    init() {
-      this.issueTime = "";
-      this.industry = "";
-      this.cactivityTypeVal = "";
-    },
-    //头部tabs
-    tabsBoxBtn(item, index) {
-      this.tabsPitchonType = item.ChartPermissionId;
-      this.tableApplyColums = TableApplyColums(item.ChartPermissionId);
-      this.cactivityTypeVal = "";
-      this.tabsSelectionOne = item.ChartPermissionId == 2 ? false : true;
-      this.page_no = 1;
-      this.getsDataList();
-    },
-    //列表表格
-    getsDataList() {
-      raiInterface
-        .activitySignup({
-          CurrentIndex: this.page_no,
-          PageSize: this.PageSize,
-          StartDate: this.issueTime[0],
-          EndDate: this.issueTime[1],
-          KeyWord: this.titleValue,
-          SearchType: this.tabsPitchonType,
-          ChartPermissionId: this.industry,
-          ActivityTypeId: this.cactivityTypeVal,
-          ActiveState: this.cactivityStatus,
-          PublishStatus: this.publishStatus ? Number(this.publishStatus) : 2,
-        })
-        .then((res) => {
-          if (res.Ret !== 200) return;
-          this.dataList = res.Data.List;
-          this.total = res.Data.Paging.Totals;
-        });
-    },
-    //添加新增外呼人员
-    addOutbound(type) {
-      if (!this.selectList) {
-        this.$message.warning("请先选择活动");
-      } else {
-        if (type == "新增外呼人员") {
-          if (this.reminder && this.tabsPitchonType !== 1) return this.$message.warning("当前活动无法新增外呼人员");
-          this.addDialogVisible = true;
-        } else {
-          if (!this.isShowAppointment && type === "新增预约纪要") return this.$message.error("该活动无法预约纪要");
-          this.addDialogVisible = true;
-        }
-        this.addDialogType = type;
-      }
-    },
-    //表格选择复选框的事件
-    selectChange(selection, row) {
-      const arr = [];
-      const num = [];
-      const summation = [];
-      const genre = [];
-      let minimum = [];
-      this.selectionArr = selection;
-      selection.forEach((item) => {
-        arr.push(item.ActivityId);
-        num.push(item.LimitPeopleNum);
-        summation.push(item.SignupPeopleNum);
-        genre.push(item.ActivityTypeName);
-        minimum.push(item.LimitPeopleNum - item.SignupPeopleNum);
-      });
-      this.activityTypeName = genre;
-      this.isShowAppointment = selection.every((item) => item.IsShowAppointment == true);
-      const str = arr.join(",");
-      this.reminder = num.some((item) => item > 0);
-      this.selectList = str;
-      if (this.tabsPitchonType !== 1) {
-        num.forEach((item) => {
-          this.numberFull = summation.some((key) => key >= item);
-        });
-        this.minimumSummation = Math.min(...minimum);
-        this.isGenre = new Set(genre).size > 1 ? true : false;
-        this.numberLimi = num.includes(0) && num.some((item) => item > 0);
-      }
-    },
-    //报名详情的弹框
-    particularsBtn(val, id) {
-      this.dialogVisibleId = id;
-      this.subscribe = val;
-      if (val === "会议提醒人数" || val === "纪要预约人数") {
-        this.summaryRemindDlg = true;
-      } else {
-        this.particularsDialogVisible = true;
-      }
-    },
-    //change事件
-    conditionChange() {
-      this.page_no = 1;
-      this.getsDataList();
-    },
-    //获取行业
-    chartPermission() {
-      raiInterface.chartPermission().then((res) => {
-        if (res.Ret === 200) {
-          this.chartPermissionList = res.Data.List;
-        }
-      });
-    },
-    //活动类型
-    activityType() {
-      raiInterface
-        .activitySignuplistSearch({
-          SearchType: this.tabsPitchonType,
-        })
-        .then((res) => {
-          if (res.Ret === 200) {
-            this.cactivityTypeList = res.Data.List;
-          }
-        });
-    },
-    //分页
-    handleCurrentChange(page) {
-      this.page_no = page;
-      this.getsDataList();
-    },
-    //点击标题的弹框
-    titleBtnClick(id) {
-      raiInterface.activityDetail({ ActivityId: Number(id) }).then((res) => {
-        if (res.Ret == 200) {
-          this.detailData = res.Data;
-        }
-      });
-      this.dialogVisible = true;
-    },
-    //点击代问的弹框
-    inquireBtn(id) {
-      this.generaitondialogVisib = true;
-      this.generaitonId = id;
-    },
-    //新增报名
-    addapply() {
-      if (!this.selectList) {
-        return this.$message.warning("请先选择活动");
-      } else if (this.isGenre) {
-        return this.$message.warning("活动类型不同,无法同时新增报名");
-      } else {
-        if (!this.reminder && this.tabsPitchonType !== 4) {
-          return this.$message.warning("请点击新增外呼人员!");
-        } else if (this.numberLimi && this.tabsPitchonType !== 4) {
-          return this.$message.warning("不限人数的电话会请新增外呼人员,限制人数的电话会请新增报名");
-        } else if (this.numberFull && this.tabsPitchonType !== 4) {
-          return this.$message.warning("新增失败,活动人数超限。");
-        }
-        this.signUpAdd = this.activityTypeName.includes("公司调研电话会(易董)") ? "易董" : this.tabsPitchonType == 4 ? "c类" : "报名";
-        this.addDialogType = "新增报名";
-        this.addDialogVisible = true;
-      }
-    },
-    /* 表格行的样式 */
-    handleRowStyle(key) {
-      let isStyle = ["ActivityName", "SignupPeopleNum", "AppointmentPeopleNum", "AskNum"];
-      return isStyle.includes(key) ? "color: #409eff; cursor: pointer" : "";
-    },
-    /* 表格行的点击事件 */
-    handleRowClick(row, key) {
-      switch (key) {
-        case "ActivityName":
-          this.titleBtnClick(row.ActivityId);
-          break;
-        case "SignupPeopleNum":
-          this.particularsBtn("报名详情", row.ActivityId);
-          break;
-        case "AppointmentPeopleNum":
-          this.particularsBtn("纪要预约人数", row.ActivityId);
-          break;
-        case "AskNum":
-          this.inquireBtn(row.ActivityId);
-          break;
-        default:
-          "";
-      }
-    }, 
-    /* 表格行的数据处理 */
-    handleRowContent(row, key) {
-      if (["LimitPeopleNum"].includes(key)) {
-        return row[key] > 0 && !row.YidongActivityId ? row[key] : "--";
-      } else if (key == "ActiveState") {
-        let status = row[key] == 1 ? "未开始" : row[key] == 2 ? "进行中" : "已结束";
-        return status;
-      } else if (key == "PublishStatus") {
-        let status = row["PublishStatus"] == 1 ? "已发布" : row["PublishStatus"] == 0 ? "未发布" : "已取消";
-        return status;
-      } else {
-        return row[key];
-      }
-    },
-    // 发送模版消息
-    sendMessage() {
-      if (this.selectList && this.selectList.split(",").length === 1) {
-        this.messageDialogVisible = true;
-      } else {
-        this.$message.error("请选择一个活动");
-      }
-    },
-  },
-};
-</script>
-<style scoped lang="scss">
-.container-apply {
-  .top-wrap {
-    margin-bottom: 28px;
-    padding: 20px 30px 0;
-    background: #fff;
-    border: 1px solid #ececec;
-    border-radius: 4px;
-    box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
-  }
-  .top-card-box {
-    display: flex;
-    justify-content: space-between;
-    .tabs-box {
-      span {
-        display: inline-block;
-        padding: 9px 24px;
-        background-color: #e9f4ff;
-        border: 1px solid #b3d8ff;
-        border-radius: 4px;
-        margin-right: 30px;
-        margin-bottom: 20px;
-        color: #409eff;
-      }
-      .pitch {
-        background-color: #409eff;
-        border: none;
-        color: #fff;
-      }
-    }
-  }
-  .screen-box {
-    display: flex;
-    :first-child {
-      margin-right: 10px;
-    }
-    .el-select {
-      margin-right: 25px;
-    }
-  }
-  .mx-datepicker {
-    width: 220px !important;
-    margin-right: 25px;
-  }
-  .screen-button {
-    display: flex;
-    flex-wrap: wrap;
-    .el-button {
-      height: 40px;
-      margin-right: 20px;
-      margin-left: 0;
-    }
-  }
-}
-</style>

+ 0 - 197
src/views/rai_manage/activityList/appointment.vue

@@ -1,197 +0,0 @@
-<template>
- <div class="container-appointment">
-     <!-- 头部el-card -->
-    <el-card style="margin-bottom: 20px;">
-      <div class="top-card-box">
-        <div></div>
-       <div>  
-           <el-input style="width:521px" v-model="keyWord" placeholder="请输入手机号/公司名称" clearable>
-            <i slot="prefix" class="el-input__icon el-icon-search"></i>
-          </el-input>
-        </div>
-      </div>
-    </el-card>
-    <!-- 内容el-card -->
-    <el-card>
-      <div>
-        <el-select v-model="sellerName" @change="sellerNameChange" placeholder="所属销售" clearable>
-             <el-option v-for="item in sellerList" :key="item.SellerName" :label="item.SellerName" :value="item.SellerName"></el-option>
-          </el-select>
-          </div>
-        <!-- 表格部分 -->
-     <el-table :data="dataList"  style="width: 100%; margin-top: 20px;" border="">
-        <el-table-column prop="RealName" align="center" label="姓名"></el-table-column>
-        <el-table-column prop="Mobile" align="center" label="手机号"></el-table-column>
-        <el-table-column prop="CompanyName" align="center" label="公司名称"></el-table-column>
-        <el-table-column prop="SellerName" align="center" label="所属销售"></el-table-column>
-        <el-table-column prop="BreakAppointmentNum" align="center" label="爽约次数"></el-table-column>
-        <el-table-column prop="" align="center" label="操作">
-          <template slot-scope="scope">
-            <span class="editsty" @click="detail(scope.row.UserId)">查看详情</span>
-          </template>
-        </el-table-column>
-        <el-table-column width="170" prop="" align="center" label="报名限制">
-          <template slot-scope="scope">
-            <el-switch
-            :disabled="roleIdentity==='rai_seller'"
-             @change="switchChange(scope.row.UserId)"
-              v-model="scope.row.Operation"
-             active-text="已限制"
-            inactive-text="不限制">
-            </el-switch>
-          </template>
-        </el-table-column>
-     </el-table>
-      <el-col :span="24" class="toolbar">
-				<m-page 
-				:total="total"
-				:page_no="page_no"
-        :pageSize="10"
-				@handleCurrentChange="handleCurrentChange"/>
-			</el-col>
-    </el-card>
-     <el-dialog
-    
-      v-dialogDrag 
-      :close-on-click-modal="false"
-      :modal-append-to-body="false"
-      center
-      :visible.sync="dialogVisiblepartica"
-      customClass="custom-appoinetdialog"
-      :before-close="confirmPerson"
-    >
-    <div slot="title" style="display: flex; align-items: center">
-        <img
-          :src="$icons.warntop"
-          style="color: #fff; width: 16px; height: 16px; margin-right: 5px"
-        />
-        <span style="font-size: 16px">爽约详情</span>
-      </div>
-      <div>
-        <el-table  max-height="260px" :data="detailList" border style="width: 100%; margin-top: 10px;">
-        <el-table-column width="250" prop="ActivityName" align="center" label="活动名称"></el-table-column>
-        <el-table-column prop="ChartPermissionName" align="center" label="行业"></el-table-column>
-        <el-table-column prop="ActivityTypeName" align="center" label="活动类型"></el-table-column>
-        <el-table-column width="230" prop="ActivityTimeText" align="center" label="活动时间"></el-table-column>
-        </el-table>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="confirmPerson">知道了</el-button>
-      </span>
-     </el-dialog>
- </div>
-</template>
-
-<script>
-import mPage from '@/components/mPage.vue'
-import {raiInterface} from '@/api/api.js'
-export default {
-  name: '',
-  components: {mPage},
-  props: {},
-  data () {
-    return {
-        page_no:sessionStorage.getItem('interviewListBack')?JSON.parse(sessionStorage.getItem('interviewListBack')).page_no:1,
-        total:0,//条数
-        PageSize:10,//每页显示几条
-        dataList: [],//表格的列表
-        keyWord:'',
-        sellerName:'',
-        sellerList:[],
-        dialogVisiblepartica:false,
-        detailList:null
-    }
-  },
-  computed: {
-    roleIdentity(){
-      
-      return localStorage.getItem('RoleIdentity')
-    }
-  },
-  watch: {
-    keyWord(){
-      this.page_no=1
-      this.getsDataList()
-    }
-  },
-  created () {},
-  mounted () {
-    this.getsDataList()
-    this.sellerNameListList()
-  },
-  methods: {
-    sellerNameChange(){
-      this.page_no=1
-      this.getsDataList()
-    },
-      //列表表格
-    getsDataList(){
-      raiInterface.breakAppointmentList({
-        CurrentIndex:this.page_no,
-        PageSize:this.PageSize,
-        KeyWord:this.keyWord,
-        SellerName:this.sellerName
-      }).then((res) => {
-        if(res.Ret !== 200) return
-        this.dataList=res.Data.List
-        this.total= res.Data.Paging.Totals
-      })
-    },
-      //分页
-    handleCurrentChange(page){
-     	this.page_no = page
-      this.getsDataList()
-    },
-    detail(id){
-        raiInterface.breakAppointmentDetail({ UserId:id}).then((res)=>{
-         if(res.Ret !== 200) return
-          this.dialogVisiblepartica=true
-          this.$nextTick(()=>{
-            this.detailList=res.Data.List
-          })
-        })
-    },
-    confirmPerson(){
-       this.dialogVisiblepartica=false
-    },
-    sellerNameListList(){
-      raiInterface.sellerNameListList().then((res)=>{
-        if(res.Ret===200){
-          this.sellerList=res.Data.List
-        }
-      })
-    },
-    switchChange(id){
-       raiInterface.signUpRestrictUid({
-        UserId:id,
-     }).then((res) =>{
-       if(res.Ret === 200){
-          this.$message.success('操作成功')
-       }else{
-          this.getsDataList()
-       }
-       
-     })   
-    }
-  }
-}
-</script>
-<style  lang="scss">
-.container-appointment{
-  .custom-appoinetdialog {
-    width: 800px;
-  }
-    .top-card-box {
-        display: flex;
-        justify-content: space-between;
-    }
-    .el-switch__label  {
-    color: #606266 ;
-   font-size: 14px;
-   font-weight:400;
-  }
-   .is-active {
-    color: #409EFF !important;
-  }
-}
-</style>

+ 0 - 200
src/views/rai_manage/activityList/attendMeeting.vue

@@ -1,200 +0,0 @@
-<template>
-  <div class="container-attendMeeting">
-    <el-card style="margin-bottom: 20px">
-      <h4 style="margin-bottom: 10px">预约客户</h4>
-      <el-table :data="makeList" style="width: 100%" border>
-        <el-table-column min-width="75" align="center" prop="RealName" label="姓名" width=""> </el-table-column>
-        <el-table-column min-width="110" align="center" prop="Mobile" label="手机号" width=""> </el-table-column>
-        <el-table-column min-width="110" align="center" prop="OutboundMobile" label="外呼号码" width=""> </el-table-column>
-        <el-table-column min-width="150" align="center" prop="CompanyName" label="公司名称" width=""> </el-table-column>
-        <el-table-column min-width="115" align="center" prop="SellerName" label="所属销售" width=""> </el-table-column>
-        <el-table-column align="center" prop="" label="是否到会" width="">
-          <template slot-scope="scope">
-            {{ scope.row.IsMeeting == 1 ? "已到会" : "未到会" }}
-          </template>
-        </el-table-column>
-        <el-table-column min-width="130" align="center" prop="FirstMeetingTime" label="首次入会时间" width=""> </el-table-column>
-        <el-table-column min-width="130" align="center" prop="LastMeetingTime" label="最后退出时间" width=""> </el-table-column>
-        <el-table-column min-width="98" align="center" prop="Duration" label="参与总时长" width=""> </el-table-column>
-        <el-table-column min-width="91" align="center" prop="MeetingTypeStr" label="参会方式" width=""> </el-table-column>
-        <el-table-column min-width="91" align="center" prop="MeetingAuthentication" label="参会鉴权" width=""> </el-table-column>
-        <el-table-column min-width="91" align="center" prop="MeetingStatusStr" label="参会状态" width=""> </el-table-column>
-      </el-table>
-    </el-card>
-    <el-card style="margin-bottom: 20px">
-      <h4 style="margin-bottom: 10px">未预约客户</h4>
-      <el-table :data="notMakeList" style="width: 100%" border>
-        <el-table-column min-width="75" align="center" prop="RealName" label="姓名" width=""> </el-table-column>
-        <el-table-column min-width="110" align="center" prop="Mobile" label="手机号" width=""> </el-table-column>
-        <el-table-column min-width="160" align="center" prop="CompanyName" label="公司名称" width=""> </el-table-column>
-        <el-table-column min-width="125" align="center" prop="SellerName" label="所属销售" width=""> </el-table-column>
-        <el-table-column min-width="160" align="center" prop="FirstMeetingTime" label="首次入会时间" width=""> </el-table-column>
-        <el-table-column min-width="160" align="center" prop="LastMeetingTime" label="最后退出时间" width=""> </el-table-column>
-        <el-table-column min-width="98" align="center" prop="Duration" label="参与总时长" width=""> </el-table-column>
-        <el-table-column min-width="91" align="center" prop="MeetingTypeStr" label="参会方式" width=""> </el-table-column>
-        <el-table-column min-width="91" align="center" prop="MeetingAuthentication" label="参会鉴权" width=""> </el-table-column>
-        <el-table-column min-width="91" align="center" prop="MeetingStatusStr" label="参会状态" width=""> </el-table-column>
-      </el-table>
-    </el-card>
-    <el-card style="margin-bottom: 20px">
-      <h4 style="margin-bottom: 10px">潜在客户</h4>
-      <el-table :data="potentialList" style="width: 100%" border>
-        <el-table-column width="300" align="center" prop="RealName" label="备注">
-          <template slot-scope="{ row }">
-            <div class="remark-list">
-              <span>{{ row.Content }}</span>
-              <div class="button">
-                <span class="editsty" @click="examineHandle(row, '添加')">添加</span>
-                <span class="editsty" @click="examineHandle(row, '历史')">历史</span>
-              </div>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column min-width="75" align="center" prop="RealName" label="姓名" width=""> </el-table-column>
-        <el-table-column min-width="110" align="center" prop="Mobile" label="手机号" width=""> </el-table-column>
-        <el-table-column min-width="160" align="center" prop="CompanyName" label="公司名称" width=""> </el-table-column>
-        <el-table-column min-width="125" align="center" prop="Position" label="职位" width=""> </el-table-column>
-        <el-table-column min-width="160" align="center" prop="FirstMeetingTime" label="首次入会时间" width=""> </el-table-column>
-        <el-table-column min-width="160" align="center" prop="LastMeetingTime" label="最后退出时间" width=""> </el-table-column>
-        <el-table-column min-width="98" align="center" prop="Duration" label="参与总时长" width=""> </el-table-column>
-        <el-table-column min-width="91" align="center" prop="MeetingTypeStr" label="参会方式" width=""> </el-table-column>
-        <el-table-column min-width="91" align="center" prop="MeetingAuthentication" label="参会鉴权" width=""> </el-table-column>
-        <el-table-column min-width="91" align="center" prop="MeetingStatusStr" label="参会状态" width=""> </el-table-column>
-      </el-table>
-    </el-card>
-    <el-dialog v-dialogDrag :visible.sync="examineOrAddDlg" :close-on-click-modal="false" :modal-append-to-body="false" @close="cancelHandle" center :width="examineOrAddShow ? '800px' : '500px'">
-      <div slot="title">
-        <i class="el-icon-close" style="fontsize: 24px; cursor: pointer; position: absolute; right: 20px; top: 50%; transform: translateY(-50%)" @click="cancelHandle"></i>
-        <span style="fontsize: 16px">{{ examineOrAddShow ? "历史备注" : "添加备注" }}</span>
-      </div>
-      <div v-if="examineOrAddShow">
-        <el-table :data="lableRemarkList" style="width: 100%" border height="350">
-          <el-table-column align="center" prop="Content" label="备注信息"> </el-table-column>
-          <el-table-column align="center" width="90" prop="RealName" label="备注人"> </el-table-column>
-          <el-table-column align="center" width="200" prop="CreateTime" label="备注时间"> </el-table-column>
-        </el-table>
-      </div>
-      <div v-else>
-        <el-input type="textarea" :rows="4" placeholder="请输入备注信息" v-model.trim="addRemarText"> </el-input>
-      </div>
-      <div style="display: flex; justify-content: center; margin: 40px 0">
-        <template v-if="!examineOrAddShow">
-          <el-button type="primary" @click="saveHandle">确定</el-button>
-          <el-button type="primary" plain @click="cancelHandle">关闭</el-button>
-        </template>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { raiInterface } from "@/api/api.js";
-export default {
-  name: "",
-  components: {},
-  props: {},
-  data() {
-    return {
-      makeList: [],
-      notMakeList: [],
-      potentialList: [],
-      examineOrAddDlg: false, //弹窗
-      examineOrAddShow: false, //区分弹窗显示
-      addRemarText: "", //备注输入框
-      lableRemarkList: [], //备注数据
-      addRemarksFrom: {}, //item 的数据
-      remainTime: 0,
-      remainTiming: null, //
-      articleId: null, //
-    };
-  },
-  computed: {},
-  watch: {},
-  created() {
-    this.remainTiming = setInterval(() => {
-      this.remainTime++;
-    }, 1000);
-  },
-  mounted() {
-    this.articleId = +this.$route.query.id;
-    this.attendanceDetail();
-  },
-  methods: {
-    async attendanceDetail() {
-      const res = await raiInterface.attendanceDetail({
-        ActivityId: this.articleId,
-      });
-      try {
-        if (res.Ret === 200) {
-          this.makeList = res.Data.List1;
-          this.notMakeList = res.Data.List2;
-          this.potentialList = res.Data.List3;
-        }
-      } catch (err) {}
-    },
-    //弹窗的开启事件
-    async examineHandle(item, type) {
-      this.addRemarksFrom = item;
-      this.examineOrAddShow = type === "历史" ? true : false;
-      this.examineOrAddDlg = true;
-      if (this.examineOrAddShow) {
-        const res = await raiInterface.activityMeetRemarkList({ Mobile: item.Mobile });
-        if (res.Ret === 200) {
-          this.$nextTick(() => {
-            this.lableRemarkList = res.Data.List || [];
-          });
-        }
-      }
-    },
-    //弹窗的关闭事件
-    cancelHandle() {
-      this.addRemarksFrom = {};
-      this.addRemarText = "";
-      this.examineOrAddDlg = false;
-    },
-    //添加备注的确定事件
-    async saveHandle() {
-      if (!this.addRemarText) return this.$message.error("请输入备注内容");
-      const res = await raiInterface.activityMeetAddRemarks({
-        ActivityId: this.addRemarksFrom.ActivityId,
-        Mobile: this.addRemarksFrom.Mobile,
-        Content: this.addRemarText,
-      });
-      if (res.Ret === 200) {
-        this.addRemarksFrom = {};
-        this.addRemarText = "";
-        this.examineOrAddDlg = false;
-        this.$message.success("添加成功");
-        this.attendanceDetail();
-      }
-    },
-    //添加阅读时长
-    async activityMeetAddStopTime() {
-      const res = await raiInterface.activityMeetAddStopTime({
-        ActivityId: this.articleId,
-        StopTime: this.remainTime,
-      });
-      if (res.Ret === 200) {
-      }
-    },
-  },
-  destroyed() {
-    clearInterval(this.remainTiming);
-    this.activityMeetAddStopTime();
-  },
-};
-</script>
-<style scoped lang="scss">
-.container-attendMeeting {
-  .remark-list {
-    display: flex;
-    text-align: left;
-    justify-content: space-between;
-    .button {
-      display: flex;
-      flex-direction: column;
-      flex-shrink: 0;
-    }
-  }
-}
-</style>

+ 0 - 401
src/views/rai_manage/activityList/onLineManage.vue

@@ -1,401 +0,0 @@
-<template>
-  <!-- 实际到会管理页面 -->
-  <div class="container-practical">
-    <!-- 头部el-card -->
-    <el-card style="margin-bottom: 20px">
-      <div class="top-card-box">
-        <div class="tabs-box"></div>
-        <div>
-          <el-input v-model="keyWord" placeholder="请输入活动名称" style="width: 521px" clearable>
-            <i slot="prefix" class="el-input__icon el-icon-search"></i>
-          </el-input>
-        </div>
-      </div>
-    </el-card>
-    <!-- 内容el-card -->
-    <el-card>
-      <!-- 选择部分 -->
-      <div class="screen-box">
-        <div>
-          <el-select placeholder="行业" clearable v-model="industry" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.ChartPermissionId" :value="item.ChartPermissionId"></el-option>
-          </el-select>
-          <el-select placeholder="活动类型" clearable @focus="activityType" v-model="cactivityTypeVal" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in cactivityTypeList" :label="item.ActivityTypeName" :key="item.ActivityTypeId" :value="item.ActivityTypeId"></el-option>
-          </el-select>
-          <date-picker v-model="issueTime" type="date" range placeholder="活动时间" value-type="format" @change="conditionChange"> </date-picker>
-        </div>
-        <div style="min-width: 340px">
-          <el-button type="primary" @click="searchCustomer = true">搜索流失客户</el-button>
-          <el-button style="margin-left: 20px" type="primary" @click="$router.push('/onLineAppointment')">查看客户爽约记录</el-button>
-        </div>
-      </div>
-      <!-- 表格部分 -->
-      <el-table :data="dataList" style="width: 100%; margin-top: 20px" border="">
-        <el-table-column min-width="400" align="center" label="活动名称">
-          <template slot-scope="scope">
-            <span class="editsty" @click="titleBtnClick(scope.row.ActivityId)"> {{ scope.row.ActivityName }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="ChartPermissionName" align="center" label="行业"></el-table-column>
-        <el-table-column min-width="120" prop="ActivityTypeName" align="center" label="活动类型"></el-table-column>
-        <el-table-column min-width="219" prop="ActivityTimeText" align="center" label="活动时间"></el-table-column>
-        <el-table-column prop="" align="center" label="报名人数">
-          <template slot-scope="scope">
-            <span class="editsty" @click="particulars(scope.row.ActivityId)">{{ scope.row.SignupPeopleNum }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column min-width="105" prop="MeetPeopleNum" align="center" label="实际参会人数"></el-table-column>
-        <el-table-column min-width="105" prop="UpdateTime" align="center" label="数据更新时间"></el-table-column>
-        <el-table-column min-width="115" align="center" label="操作">
-          <template slot-scope="scope">
-            <input type="file" size="small" name="file" @change="fileSelected()" id="fileImport" class="true-file" style="display: none" />
-            <p class="editsty" v-if="scope.row.IsShowHandMovement" @click="matching(scope.row.ActivityId)">&nbsp;&nbsp;手动匹配</p>
-            <span class="editsty" v-if="scope.row.IsShowSubmitMeeting" @click="arriveHandel(scope.row.ActivityId)">&nbsp;&nbsp;提交到会情况</span>
-            <span class="editsty" v-if="scope.row.IsShowUpdateMeeting" @click="arriveHandel(scope.row.ActivityId)">&nbsp;&nbsp;修改到会情况</span>
-            <span class="editsty" v-if="scope.row.IsShowAttendanceDetails" @click="attendMeeting(scope.row, '到会详情')">&nbsp;&nbsp;到会详情</span>
-            <el-popover v-else-if="scope.row.IsSubmitMeeting == 1 && scope.row.OperationStyle == 2" width="500" trigger="hover" placement="right">
-              <p>到会详情浏览记录</p>
-              <el-table :data="gridData" style="width: 100%" border height="350">
-                <el-table-column align="center" property="RealName" label="浏览人"></el-table-column>
-                <el-table-column align="center" property="CreateTime" label="浏览时间"></el-table-column>
-                <el-table-column align="center" property="StopTime" label="停留时长">
-                  <template slot-scope="{ row }">
-                    {{ row.StopTime }}
-                    <span v-if="row.StopTime">s</span>
-                  </template>
-                </el-table-column>
-              </el-table>
-              <p slot="reference" class="editsty" @mouseenter="popoverMouseenter(scope.row.ActivityId)" @click="goDetail(scope.row.ActivityId)">&nbsp;&nbsp;到会详情</p>
-            </el-popover>
-          </template>
-        </el-table-column>
-      </el-table>
-      <el-col :span="24" class="toolbar">
-        <m-page :total="total" :page_no="page_no" :pageSize="PageSize" @handleCurrentChange="handleCurrentChange" />
-      </el-col>
-    </el-card>
-    <!-- 详情弹框 -->
-    <atc-particulars :dialogVisible.sync="dialogVisible" :detailData.sync="detailData" />
-    <el-dialog v-dialogDrag :close-on-click-modal="false" :modal-append-to-body="false" center :visible.sync="dialogLeparticaShow" customClass="custom-applydialog" :before-close="confirmPerson">
-      <div slot="title" style="display: flex; align-items: center">
-        <img :src="$icons.warntop" style="color: #fff; width: 16px; height: 16px; margin-right: 5px" />
-        <span style="font-size: 16px">
-          {{ excelType == "Teleconference" && isLimitPeople == 1 ? "预约外呼详情" : "报名详情" }}
-        </span>
-      </div>
-      <div>
-        <p style="margin-bottom: 10px" v-if="excelType !== 'CClass'">
-          <template v-if="memberType == 'Admin'"> 共有{{ totalDlg }}人{{ excelType == "AppointmentCall" ? "预约外呼" : "报名" }} </template>
-          <template v-else-if="memberType == 'Sale'"> 共有{{ totalDlg }}人{{ excelType == "AppointmentCall" ? "预约外呼" : "报名" }},其中本人名下客户{{ myTotalDlg }}人 </template>
-          <template v-else> 共有{{ totalDlg }}人{{ excelType == "AppointmentCall" ? "预约外呼" : "报名" }},其中本组名下客户{{ myTotalDlg }}人 </template>
-        </p>
-        <el-table max-height="260px" :data="tableDataSub" border style="width: 100%">
-          <el-table-column width="100" align="center" prop="RealName" key="name" label="姓名"></el-table-column>
-          <el-table-column width="110" align="center" prop="Mobile" key="mobile" label="手机号" v-if="excelType !== 'CClass'"></el-table-column>
-          <el-table-column width="110" align="center" prop="OutboundMobile" key="outboundMobile" label="外呼号码" v-if="excelType !== 'CClass'"></el-table-column>
-          <el-table-column align="center" prop="CompanyName" key="company" label="公司名称"></el-table-column>
-          <el-table-column min-width="110" align="center" prop="SellerName" key="seller" label="所属销售"></el-table-column>
-          <el-table-column min-width="110" key="meeting" align="center" label="参会方式" v-if="excelType == 'Teleconference' && isLimitPeople == 1">
-            <template slot-scope="{ row }">
-              <span>
-                {{ row.SignupType == 1 ? "预约外呼" : row.SignupType == 2 ? "自主拨入" : row.SignupType == 4 ? "自主入会" : "" }}
-              </span>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="confirmPerson">知道了</el-button>
-      </span>
-    </el-dialog>
-    <matching-dlg :matchingDlgShow.sync="matchingDlgShow" :matchingId="matchingId" />
-    <partical-dialog :offlineId="offlineId" :submitDialog.sync="submitDialog" :dialogVisiblepartica.sync="dialogVisiblepartica" :particlaDlg="particlaDlg" />
-    <search-customer-dlg :searchCustomer.sync="searchCustomer" />
-  </div>
-</template>
-
-<script>
-import mPage from "@/components/mPage.vue";
-import { raiInterface } from "@/api/api.js";
-import AtcParticulars from "../components/atcParticulars.vue";
-import { Loading } from "element-ui";
-import MatchingDlg from "../components/matchingDlg.vue";
-import ParticalDialog from "../components/particalDialog.vue";
-import SearchCustomerDlg from "../components/apply/searchCustomerDlg.vue";
-
-export default {
-  name: "",
-  components: { mPage, AtcParticulars, MatchingDlg, ParticalDialog, SearchCustomerDlg },
-  props: {},
-  data() {
-    return {
-      dataList: [], //表格的列表
-      tableDataSub: [],
-      page_no: sessionStorage.getItem("interviewListBack") ? JSON.parse(sessionStorage.getItem("interviewListBack")).page_no : 1,
-      total: 0, //条数
-      PageSize: 10, //每页显示几条
-      keyWord: "",
-      industry: "", //行业
-      cactivityTypeVal: "", //活动
-      chartPermissionList: [], //行业的数组
-      cactivityTypeList: [], //活动类型
-      issueTime: "", //时间
-      tabsPitchonType: 1,
-      detailData: {}, //
-      dialogVisible: false,
-      dialogLeparticaShow: false,
-      companyId: "", //
-      excelType: "",
-      isLimitPeople: "",
-      totalDlg: 0,
-      myTotalDlg: 0,
-      memberType: "",
-      matchingDlgShow: false, //匹配弹框
-      matchingId: 0,
-      gridData: [],
-      submitDialog: false, //
-      offlineId: 0,
-      dialogVisiblepartica: false, //
-      searchCustomer: false, //搜索流失客户
-    };
-  },
-  computed: {
-    exportUser() {
-      return process.env.process.env.VUE_APP_BASE_API + "/cygx/activityMeet/meetingExport?" + localStorage.getItem("auth") || "";
-    },
-  },
-  watch: {
-    keyWord() {
-      this.page_no = 1;
-      this.init();
-      this.getsDataList();
-    },
-  },
-  created() {},
-  mounted() {
-    this.chartPermission();
-    this.getsDataList();
-  },
-  methods: {
-    init() {
-      this.industry = ""; //行业
-      this.issueTime = ""; //时间
-      this.cactivityTypeVal = ""; //活动
-    },
-    //获取行业
-    chartPermission() {
-      raiInterface.chartPermission().then((res) => {
-        if (res.Ret === 200) {
-          this.chartPermissionList = res.Data.List;
-        }
-      });
-    },
-    //活动类型
-    activityType() {
-      raiInterface
-        .activityTypeMeetType({
-          MeetType: 1,
-        })
-        .then((res) => {
-          if (res.Ret === 200) {
-            this.cactivityTypeList = res.Data.List;
-          }
-        });
-    },
-    //change事件
-    conditionChange() {
-      this.page_no = 1;
-      this.getsDataList();
-    },
-    //列表表格
-    getsDataList() {
-      raiInterface
-        .activityMeetList({
-          CurrentIndex: this.page_no,
-          PageSize: this.PageSize,
-          StartDate: this.issueTime[0],
-          EndDate: this.issueTime[1],
-          KeyWord: this.keyWord,
-          SearchType: this.tabsPitchonType,
-          ChartPermissionId: this.industry,
-          ActivityTypeId: this.cactivityTypeVal,
-          MeetType: 1,
-        })
-        .then((res) => {
-          if (res.Ret !== 200) return;
-          this.dataList = res.Data.List;
-          this.total = res.Data.Paging.Totals;
-        });
-    },
-    //到会详情
-    attendMeeting(item, text) {
-      if (item.SubmitMeetingType == 1 || item.YidongActivityId) {
-        this.offlineId = item.ActivityId;
-        this.particlaDlg = {
-          id: item.ActivityId,
-          title: text,
-          type: item.SubmitMeetingType,
-        };
-        this.dialogVisiblepartica = true;
-      } else {
-        this.goDetail(item.ActivityId);
-      }
-    },
-    //分页
-    handleCurrentChange(page) {
-      this.page_no = page;
-      this.getsDataList();
-    },
-    //详情弹框
-    particulars(id) {
-      raiInterface
-        .appointmentList({
-          ActivityId: id,
-        })
-        .then((res) => {
-          if (res.Ret !== 200) return;
-          this.excelType = res.Data.ExcelType;
-          this.isLimitPeople = res.Data.IsLimitPeople;
-          this.totalDlg = res.Data.Total;
-          this.myTotalDlg = res.Data.MyTotal;
-          this.memberType = res.Data.MemberType;
-          this.$nextTick(() => {
-            this.tableDataSub = res.Data.List;
-          });
-        });
-      this.dialogLeparticaShow = true;
-    },
-    // meetingExport() {
-    //   const loading = this.$loading({
-    //     lock: true,
-    //     text: "客户参会详情文件下载中...",
-    //     spinner: "el-icon-loading",
-    //     background: "rgba(0, 0, 0, 0.7)",
-    //   });
-    //   const xhr = new XMLHttpRequest();
-    //   xhr.open("GET", this.exportUser, true);
-    //   xhr.responseType = "blob";
-    //   xhr.onload = function () {
-    //     if (this.status == 200) {
-    //       loading.close();
-    //       var blob = this.response;
-    //       var a = document.createElement("a");
-    //       var url = window.URL.createObjectURL(blob); //创建url对象
-    //       a.href = url;
-    //       a.download = "客户参会详情.xlsx";
-    //       a.click();
-    //       window.URL.revokeObjectURL(url); //释放url对象
-    //     } else {
-    //       this.$message.error("下载失败!");
-    //     }
-    //   };
-    //   xhr.send();
-    // },
-    //到会情况
-    particularsSubmit(id) {
-      this.companyId = id;
-      $("#fileImport").click();
-    },
-    //点击标题的弹框
-    titleBtnClick(id) {
-      raiInterface.activityDetail({ ActivityId: Number(id) }).then((res) => {
-        if (res.Ret == 200) {
-          this.detailData = res.Data;
-        }
-      });
-      this.dialogVisible = true;
-    },
-    //关闭弹框
-    confirmPerson() {
-      this.tableDataSub = [];
-      this.dialogLeparticaShow = false;
-    },
-    //到会情况
-    arriveHandel(id) {
-      this.offlineId = id;
-      this.submitDialog = true;
-    },
-    // 上传
-    fileSelected(type) {
-      const that = this;
-      if (document.getElementById("fileImport").files[0]) {
-        let hostfile = document.getElementById("fileImport").files[0];
-        let size = Math.floor(hostfile.size / 1024 / 1024);
-        if (size > 200) {
-          that.$message.error("上传文件大小不能大于200M!");
-          hostfile = {};
-          return false;
-        }
-        if (hostfile.name.toLowerCase().includes(".xlsx")) {
-          let form = new FormData();
-          form.append("File", hostfile); //hostfile.name
-          form.append("ActivityId", that.companyId);
-
-          raiInterface.activityMeetImport(form).then((res) => {
-            if (res.Ret === 200) {
-              that.isShowImportDia = true;
-              that.importParams = form;
-              that.importData = res.Data || [];
-              this.$confirm("参会情况已提交成功,可点击【到会详情】查看", "提示", {
-                confirmButtonText: "知道了",
-                type: "warning",
-                showCancelButton: false,
-              });
-              this.getsDataList();
-            }
-            $("#fileImport").val("");
-            hostfile = {};
-          });
-        } else {
-          that.$message.error("请上传.xlsx的文件格式!");
-        }
-      }
-    },
-    goDetail(id) {
-      let routerUrl = this.$router.resolve({
-        path: "attendMeeting",
-        query: {
-          id: id,
-        },
-      });
-      window.open(routerUrl.href, "_blank");
-    },
-    //手动匹配
-    matching(id) {
-      this.matchingId = id;
-      this.matchingDlgShow = true;
-    },
-    async popoverMouseenter(id) {
-      const res = await raiInterface.activityMeetHistoryList({
-        ActivityId: id,
-      });
-      if (res.Ret === 200) {
-        this.gridData = res.Data.List || [];
-      }
-    },
-  },
-};
-</script>
-<style scoped lang="scss">
-.container-practical {
-  .top-card-box {
-    display: flex;
-    justify-content: space-between;
-  }
-  .screen-box {
-    display: flex;
-    justify-content: space-between;
-    .el-select {
-      margin-right: 25px;
-    }
-  }
-  .mx-datepicker {
-    width: 220px !important;
-    margin-right: 25px;
-  }
-  .custom-applydialog {
-    height: 820px;
-  }
-}
-</style>

+ 0 - 256
src/views/rai_manage/activityList/practicalMeeting.vue

@@ -1,256 +0,0 @@
-<template>
-<!-- 实际到会管理页面 -->
- <div class="container-practical">
-     <!-- 头部el-card -->
-    <el-card style="margin-bottom: 20px;">
-      <div class="top-card-box">
-        <div class="tabs-box">
-        </div>
-       <div> 
-          <el-input v-model="keyWord" placeholder="请输入活动名称" style="width:521px"  clearable>
-            <i slot="prefix" class="el-input__icon el-icon-search"></i>
-          </el-input> 
-           
-        </div>
-      </div>
-    </el-card>
-    <!-- 内容el-card -->
-    <el-card>
-        <!-- 选择部分 -->
-     <div class="screen-box">
-        <div>
-              <el-select placeholder="行业" clearable  v-model="industry" @change="conditionChange" style="margin-bottom: 20px;">
-             <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.ChartPermissionId" :value="item.ChartPermissionId"></el-option>
-          </el-select>
-            <el-select placeholder="活动类型" clearable @focus="activityType" v-model="cactivityTypeVal" @change="conditionChange" style="margin-bottom: 20px;">
-              <el-option v-for="item in cactivityTypeList" :label="item.ActivityTypeName" :key="item.ActivityTypeId" :value="item.ActivityTypeId"></el-option>
-          </el-select>
-           <date-picker v-model="issueTime" type="date" range  placeholder="活动时间" 	value-type="format"  @change="conditionChange"> </date-picker>
-         </div>
-        <div style="min-width:340px">
-           <a>
-               <el-button type="primary" @click="meetingExport">下载客户参会记录</el-button>
-          </a>
-          <el-button style="margin-left: 20px;" type="primary" @click="$router.push('/appointment')">查看客户爽约记录</el-button>
-        </div>
-     </div>
-        <!-- 表格部分 -->
-     <el-table :data="dataList" style="width: 100%; margin-top: 20px;" border="">
-        <el-table-column min-width="350" align="center" label="活动名称">
-          <template slot-scope="scope">
-           <span class="editsty"  @click="titleBtnClick(scope.row.ActivityId)"> {{scope.row.ActivityName}}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="ChartPermissionName" align="center" label="行业"></el-table-column>
-        <el-table-column min-width="120" prop="ActivityTypeName" align="center" label="活动类型"></el-table-column>
-        <el-table-column min-width="219" prop="ActivityTimeText" align="center" label="活动时间"></el-table-column>
-        <el-table-column prop="" align="center" label="报名人数">
-           <template slot-scope="scope"> 
-             <span class="editsty" @click="particulars(scope.row.ActivityId,'报名详情')">{{scope.row.SignupPeopleNum}}</span>
-           </template>
-        </el-table-column>
-        <el-table-column min-width="105" prop="MeetPeopleNum" align="center" label="实际参会人数"></el-table-column>
-        <el-table-column min-width="200" align="center" label="操作">
-          <template slot-scope="scope"> 
-             <span v-if="scope.row.OperationStyle==1" class="editsty" @click="particularsSubmit(scope.row.ActivityId)">&nbsp;&nbsp;提交到会情况</span>
-            
-              <span class="editsty" v-if="scope.row.OperationStyle==2" @click="particularsSubmit(scope.row.ActivityId)">&nbsp;&nbsp;修改到会情况</span>
-        
-              <span class="editsty"  v-if="scope.row.OperationStyle==2" @click="particulars(scope.row.ActivityId,'到会详情')">&nbsp;&nbsp;到会详情</span>
-          </template>
-        </el-table-column>
-     </el-table>
-      <el-col :span="24" class="toolbar">
-				<m-page 
-				:total="total"
-				:page_no="page_no"
-        :pageSize="10"
-				@handleCurrentChange="handleCurrentChange"/>
-			</el-col>
-    </el-card>
-    
-     <!-- 详情弹框 -->
-    <atc-particulars :dialogVisible.sync="dialogVisible" :detailData.sync="detailData"/>
-    <partical-dialog :offlineId="offlineId" :dialogVisiblepartica.sync="dialogVisiblepartica" :particlaDlg="particlaDlg" :submitDialog.sync="submitDialog" />
- </div>
-</template>
-
-<script>
-import mPage from '@/components/mPage.vue'
-import {raiInterface} from '@/api/api.js'
-import AtcParticulars from '../components/atcParticulars.vue'
-import ParticalDialog from '../components/particalDialog.vue'
-export default {
-  name: '',
-  components: {mPage,ParticalDialog,AtcParticulars},
-  props: {},
-  data () {
-    return {
-        dataList: [],//表格的列表
-        page_no:sessionStorage.getItem('interviewListBack')?JSON.parse(sessionStorage.getItem('interviewListBack')).page_no:1,
-        total:0,//条数
-        PageSize:10,//每页显示几条
-        keyWord:'',
-        dialogVisiblepartica:false,//详情弹框
-        particlaDlg:{
-          id:'',
-          title:''
-        },
-        submitDialog:false,
-        industry:'',//行业
-        cactivityTypeVal:'',//活动
-        chartPermissionList:[],//行业的数组
-        cactivityTypeList:[],//活动类型
-        issueTime:'',//时间
-        tabsPitchonType:1,
-        detailData:{},//
-        dialogVisible:false,
-        offlineId:0
-       
-    }
-  },
-  computed: {
-    exportUser(){
-      return (
-        process.env.process.env.VUE_APP_BASE_API+'/cygx/activityMeet/meetingExport?'+localStorage.getItem('auth')||''
-      )
-    }
-  },
-  watch: {
-    keyWord(){
-      this.page_no=1
-      this.init()
-      this.getsDataList()
-    }
-  },
-  created () {},
-  mounted () {
-    this.chartPermission()
-    this.getsDataList()
-  },
-  methods: {
-     init(){
-        this.industry=''//行业
-        this.issueTime=''//时间
-        this.cactivityTypeVal=''//活动
-    },
-    meetingExport(){
-          const loading=    this.$loading({
-          lock: true,
-          text: '客户参会详情文件下载中...',
-          spinner: 'el-icon-loading',
-          background: 'rgba(0, 0, 0, 0.7)'
-        }); 
-        const xhr = new XMLHttpRequest();
-        xhr.open("GET", this.exportUser, true);
-        xhr.responseType = "blob";
-        xhr.onload = function() {
-            if (this.status == 200) {
-              loading.close();
-                //var _b = xhr.getResponseHeader('Content-Disposition');
-                //var _c = _b.split('filename=')[1];
-                //var _d = decodeURIComponent(_c.split('.')[0])+'.'+_c.split('.')[1];
-                var blob = this.response;
-                var a = document.createElement('a');
-                var url = window.URL.createObjectURL(blob);//创建url对象
-                a.href = url;
-                // a.download = _d;
-                a.download = '客户参会详情.xlsx';
-                a.click();
-                window.URL.revokeObjectURL(url);//释放url对象
-            } else {
-                this.$message.error('下载失败!')
-            }
-        }
-      xhr.send();
-    },
-    //获取行业
-    chartPermission(){
-      raiInterface.chartPermission().then((res) => {
-       if(res.Ret === 200){
-           this.chartPermissionList=res.Data.List
-       }
-      })
-    },
-    //活动类型
-    activityType(){
-      raiInterface.activityTypeMeetType({
-        MeetType:2
-      }).then((res) => {
-       if(res.Ret === 200){
-           this.cactivityTypeList=res.Data.List
-       }
-      })
-    },
-    //change事件
-    conditionChange(){
-     this.page_no=1
-     this.getsDataList()  
-    },
-    //列表表格
-    getsDataList(){
-      raiInterface.activityMeetList({
-        CurrentIndex:this.page_no,
-        PageSize:this.PageSize,
-        StartDate:this.issueTime[0],
-        EndDate:this.issueTime[1],
-        KeyWord:this.keyWord,
-        SearchType:this.tabsPitchonType,
-        ChartPermissionId:this.industry,
-        ActivityTypeId:this.cactivityTypeVal,
-        MeetType:2
-      }).then((res) => {
-        if(res.Ret !== 200) return
-        this.dataList=res.Data.List
-        this.total= res.Data.Paging.Totals
-      })
-    },
-     //分页
-    handleCurrentChange(page){
-     	this.page_no = page
-      this.getsDataList()
-    },
-    //详情弹框
-    particulars(id,text){
-      this.offlineId= id
-       this.particlaDlg={
-          id:id,
-          title:text,
-        }
-      this.dialogVisiblepartica=true
-    },
-    //到会情况
-    particularsSubmit(id){
-        this.offlineId= id
-        this.submitDialog=true
-    },
-     //点击标题的弹框
-    titleBtnClick(id){
-      raiInterface.activityDetail({ActivityId:Number(id)}).then((res) =>{
-       if(res.Ret==200){
-         this.detailData=res.Data
-       }
-      })
-      this.dialogVisible=true
-    }
-  }
-}
-</script>
-<style scoped lang="scss">
-.container-practical{
-    .top-card-box {
-    display: flex;
-    justify-content: space-between;
-  }
-  .screen-box {
-    display: flex;
-    justify-content: space-between;
-    .el-select {
-      margin-right: 25px;
-    }}
-  .mx-datepicker {
-    width: 220px !important;
-    margin-right: 25px;
- }
-}
-</style>

+ 0 - 462
src/views/rai_manage/activityList/roadShow/components/addVideoDlg.vue

@@ -1,462 +0,0 @@
-<template>
-  <div class="container add-edit-video">
-    <el-dialog
-      v-dialogDrag
-      :close-on-click-modal="false"
-      :modal-append-to-body="false"
-      center
-      width="568px"
-      title="添加视频"
-      :visible.sync="addEditdialogVisib"
-      customClass="add-edit-video-dlg"
-      :before-close="cancelHandle"
-    >
-      <div>
-        <el-form :model="addEditVideo" :rules="rules" ref="ruleFormVideo" class="demo-ruleForm">
-          <el-form-item prop="audioName">
-            <div style="display: flex; justify-content: space-between">
-              <el-input style="width: 75%" clearable placeholder="请上传视频" v-model="addEditVideo.videoName"></el-input>
-              <el-upload action="" accept=".mp4" :http-request="handleUpload" :before-upload="handelBeforeUploadVideo" :show-file-list="false" :disabled="startUpload">
-                <el-button 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>
-            <p style="color: #ff3737">注:视频格式支持mp4</p>
-          </el-form-item>
-          <el-form-item prop="industryId">
-            <el-select style="width: 100%" placeholder="请选择行业" v-model="addEditVideo.industryId" clearable @change="selectChangeHandle">
-              <el-option 
-              v-for="item in chartPermissionList.filter(item => item.PermissionName != '宏观' && item.PermissionName != '策略' && item.PermissionName != '买方研选')" 
-                :label="item.PermissionName" :key="item.ChartPermissionId" :value="item.ChartPermissionId"></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item prop="property">
-            <!-- <el-cascader
-              style="width: 100%"
-              @focus="industrySelectFocus"
-              placeholder="请选择产业"
-              v-model="addEditVideo.property"
-              :props="{ ...defaultProps }"
-              :options="selectedIndustryArr"
-              :key="addEditVideo.industryId"
-              filterable
-              clearable
-            ></el-cascader> -->
-            <el-select v-model="addEditVideo.property" placeholder="请选择产业" clearable filterable
-            style="width: 100%;" @focus="industrySelectFocus">
-              <el-option :label="item.PermissionName" :value="item.ChartPermissionId" 
-              v-for="item in selectedIndustryArr" :key="item.ChartPermissionId"></el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item prop="publishDate">
-            <el-date-picker
-              style="width: 100%"
-              v-model="addEditVideo.publishDate"
-              type="date"
-              placeholder="请选择发布时间"
-              format="yyyy 年 MM 月 dd 日"
-              value-format="yyyy-MM-dd"
-             
-            >
-            </el-date-picker>
-          </el-form-item>
-          <div class="uploadImageContain">
-            <el-form-item prop="imgUrl">
-              <div class="imgUploadBox">
-                <el-upload action="" :http-request="(e)=>handleImageUpload(e,'imgUrl')"
-                :multiple="false" :show-file-list="false" v-if="!addEditVideo.imgUrl">
-                  <div class="image-upload-item">
-                    <img src="~@/assets/icons/uploadImg-blue.svg"/>
-                    <span>添加列表页封面</span>
-                  </div>
-                </el-upload>
-                <div v-else class="uploaded-image-item">
-                  <el-image :src="addEditVideo.imgUrl" 
-                  class="videoImage"
-                  :preview-src-list="[addEditVideo.imgUrl]"/>
-                  <span class="del-image" @click="addEditVideo.imgUrl=''">删除</span>
-                </div>   
-              </div>
-            </el-form-item>
-          
-            <el-form-item prop="detailImgUrl">
-              <div class="imgUploadBox">
-                <el-upload action="" :http-request="(e)=>handleImageUpload(e,'detailImgUrl')"
-                :multiple="false" :show-file-list="false" v-if="!addEditVideo.detailImgUrl" >
-                <div class="image-upload-item">
-                    <img src="~@/assets/icons/uploadImg-blue.svg"/>
-                    <span>添加详情页封面</span>
-                  </div>
-                </el-upload>
-                <div v-else class="uploaded-image-item">
-                  <el-image :src="addEditVideo.detailImgUrl" 
-                  class="videoImage"
-                  :preview-src-list="[addEditVideo.detailImgUrl]"/>
-                  <span class="del-image" @click="addEditVideo.detailImgUrl=''">删除</span>
-                </div>            
-              </div>
-            </el-form-item>
-            <el-form-item prop="shareImgUrl">
-              <div class="imgUploadBox">
-                <el-upload action="" :http-request="(e)=>handleImageUpload(e,'shareImgUrl')"
-                :multiple="false" :show-file-list="false" v-if="!addEditVideo.shareImgUrl" >
-                <div class="image-upload-item">
-                    <img src="~@/assets/icons/uploadImg-blue.svg"/>
-                    <span>添加视频分享图</span>
-                  </div>
-                </el-upload>
-                <div v-else class="uploaded-image-item">
-                  <el-image :src="addEditVideo.shareImgUrl" 
-                  class="videoImage"
-                  :preview-src-list="[addEditVideo.shareImgUrl]"/>
-                  <span class="del-image" @click="addEditVideo.shareImgUrl=''">删除</span>
-                </div>            
-              </div>
-            </el-form-item>
-          </div>
-        </el-form>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="confirmSubmit(0)">保存</el-button>
-        <el-button type="primary" v-if="publishStatus != 1" @click="confirmSubmit(1)">发布</el-button>
-        <el-button @click="cancelHandle">取消</el-button>
-      </span>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { getOSSSign } from "@/api/api.js";
-import MD5 from "js-md5";
-import { raiInterface, raiVideoApi } from "@/api/api.js";
-export default {
-  name: "",
-  components: {},
-  props: {
-    addEditdialogVisib: {
-      type: Boolean,
-      default: false,
-    },
-    chartPermissionList: {
-      type: Array,
-      default: [],
-    },
-    playDetailsList: {
-      default: {},
-      type: Object,
-    },
-  },
-  data() {
-    return {
-      addEditVideo: {
-        videoName: "", //音频名称
-        industryId: "", //行业id
-        property: "", //产业名称
-        publishDate: "", //发布时间
-        videoUrl: "", //视频链接
-        VideoSeconds: "", //时长
-        imgUrl:"", // 视频封面
-        shareImgUrl:"", // 分享的视频封面
-        detailImgUrl:""// 详情的视频封面
-      },
-      rules: {
-        videoName: [{ required: true, message: "请上传视频", trigger: "blur" }],
-        industryId: [{ required: true, message: "请选择行业", trigger: "change" }],
-        property: { required: true, message: "请选择产业", trigger: "change" },
-        publishDate: [{ required: true, message: "请选择发布时间", trigger: "change" }],
-        imgUrl:{ required: true, message: "请选择列表页封面", trigger: "change" },
-        shareImgUrl:{ required: true, message: "请选择视频分享图", trigger: "change" },
-        detailImgUrl:{ required: true, message: "请选择详情页封面", trigger: "change" }
-      },
-      videoId: 0,
-      publishStatus: 0,
-      industryArr: [],
-      selectedIndustryArr:[],
-      defaultProps: {
-        label: "PermissionName",
-        children: "List",
-        value: "ChartPermissionId",
-      },
-      percentage: 0,
-      startUpload: false, //开始上传
-    };
-  },
-  computed: {},
-  watch: {
-    playDetailsList: {
-      async handler(newval) {
-        if (JSON.stringify(newval) != "{}") {
-          await this.getIndustry(newval.ChartPermissionId);
-          console.log(newval);
-          this.addEditVideo = {
-            videoName: newval.VideoName, //音频名称
-            industryId: newval.ChartPermissionId, //行业id
-            property: newval.IndustryId || "", //产业名称
-            publishDate: newval.PublishDate, //发布时间
-            videoUrl: newval.VideoUrl, //视频链接
-            VideoSeconds: newval.VideoDuration, //时长
-            imgUrl:newval.ImgUrl, // 视频封面
-            shareImgUrl:newval.ShareImgUrl, // 分享的视频封面
-            detailImgUrl:newval.DetailImgUrl
-          };
-          this.videoId = newval.VideoId;
-          this.publishStatus = newval.PublishStatus;
-        } else {
-          this.videoId = 0;
-          this.selectedIndustryArr=[]
-          this.publishStatus = 0;
-        }
-      },
-      deep: true,
-    },
-  },
-  created() {},
-  mounted() {},
-  methods: {
-    /* 获取全部的行业 前的判断 */
-    industrySelectFocus() {
-      if (!this.addEditVideo.industryId) {
-        this.$message.error("请先选择行业");
-      }
-    },
-    // 行业更改
-    selectChangeHandle(value){
-      this.addEditVideo.property=""
-      value?this.getIndustry(value):this.selectedIndustryArr =[]
-    },
-    /* 获取选择的行业 */
-    getIndustry(industryId) {
-      if (this.industryArr.length){
-        this.selectedIndustryArr = this.industryArr.filter(item => item.ChartPermissionId == industryId)[0].List
-        return;
-      } 
-      raiInterface.getListIndustrial().then((res) => {
-        if (res.Ret === 200) {
-          this.industryArr = res.Data.List || [];
-          this.selectedIndustryArr = this.industryArr.filter(item => item.ChartPermissionId == industryId)[0].List
-          // if (this.addEditVideo.property) {
-            // let valId = "";
-            // this.industryArr.forEach((item) => {
-            //   if (item.List.some((key) => key.ChartPermissionId == this.addEditVideo.property)) {
-            //     valId = item.ChartPermissionId;
-            //   }
-            // });
-          //   this.addEditVideo.property = [industryId, this.addEditVideo.property];
-          // }
-        }
-      });
-    },
-    //获取视频时长的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);
-      // 取消视频的大小校验 -- 查研观向 8.4
-      // if (duration > 600) {
-      //   this.$message.warning("视频时长不得超过10分钟");
-      //   return;
-      // }
-      console.log(e, duration);
-      this.addEditVideo.videoName = e.file.name;
-      this.addEditVideo.VideoSeconds = duration + ""; //时常
-      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.addEditVideo.videoUrl = "https://hzstatic.hzinsights.com/" + res.name;
-          this.startUpload = false;
-          this.percentage = 0;
-        }
-      } catch (error) {
-        this.$message.warning("上传失败,请刷新重试");
-        this.startUpload = false;
-        this.percentage = 0;
-      }
-    },
-    //保存或发布
-    confirmSubmit(type) {
-      this.$refs.ruleFormVideo.validate(async (valid) => {
-        if (valid) {
-          const res = await raiVideoApi.addVideo({
-            VideoName: this.addEditVideo.videoName,
-            ChartPermissionId: this.addEditVideo.industryId,
-            IndustryId: this.addEditVideo.property || 0,
-            VideoUrl: this.addEditVideo.videoUrl,
-            VideoDuration: this.addEditVideo.VideoSeconds,
-            PublishDate: this.addEditVideo.publishDate,
-            PublishOrSave: type==1?type:this.publishStatus,
-            VideoId: this.videoId,
-            ImgUrl:this.addEditVideo.imgUrl,
-            ShareImgUrl:this.addEditVideo.shareImgUrl,
-            DetailImgUrl:this.addEditVideo.detailImgUrl
-          });
-          if (res.Ret === 200) {
-            this.$message.success("添加成功");
-            this.cancelHandle();
-            this.$parent.getVideoList();
-          }
-        } else {
-          console.log("error submit!!");
-          return false;
-        }
-      });
-    },
-    // ------------------图片上传
-    handleImageUpload(e,type){
-      let formData = new FormData()
-      formData.append("file", e.file)
-      raiInterface.upload(formData).then(res=>{
-        if(type=='imgUrl'){
-          this.addEditVideo.imgUrl = res.Data.ResourceUrl
-        }else if(type=='shareImgUrl'){
-          this.addEditVideo.shareImgUrl = res.Data.ResourceUrl
-        }else{
-          this.addEditVideo.detailImgUrl = res.Data.ResourceUrl
-        }
-        // 触发表单验证
-        this.$refs.ruleFormVideo.validateField(type)
-      })  
-    },
-    //详情进来编辑
-    async editVideo() {
-      const res = await raiVideoApi.editVideo({});
-    },
-    cancelHandle() {
-      this.$refs.ruleFormVideo.resetFields();
-      this.addEditVideo = {
-        videoName: "", //音频名称
-        industryId: "", //行业id
-        property: "", //产业名称
-        publishDate: "", //发布时间
-        videoUrl: "", //视频链接
-        VideoSeconds: "", //时长
-        imgUrl:"", // 视频封面
-        shareImgUrl:"", // 分享的视频封面
-        detailImgUrl:""
-      };
-      this.$emit("update:addEditdialogVisib", false);
-      this.$emit("update:playDetailsList", {});
-    },
-  },
-};
-</script>
-<style lang="scss">
-.add-edit-video {
-  .add-edit-video-dlg {
-    .el-input {
-      width: 100%;
-    }
-  }
-}
-</style>
-<style lang="scss" scoped>
-.uploadImageContain{
-  display: flex;
-  justify-content: space-between;
-  .imgUploadBox{
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    width: 110px;
-    height: 110px;
-    .image-upload-item{
-      display: flex;
-      flex-direction: column;
-      justify-content: center;
-      img{
-        height: 32px;
-      }
-      span{
-        color: #409eff;
-        font-weight: 400;
-        font-size: 14px;
-      }
-    }
-    .uploaded-image-item{
-      height: 110px;
-      width: 110px;
-      display: flex;
-      justify-content: center;
-      .videoImage{
-        border-radius: 1px;
-      }
-      .del-image{
-        display: none;
-        color: #fff;
-        position: absolute;
-        bottom: 0;
-        left: 0;
-        right: 0;
-        text-align: center;
-        line-height: 24px;
-        width: 110px;
-        background-color: rgba($color: #000000, $alpha: 0.8);
-        cursor: pointer;
-      }
-      &:hover{
-        .del-image{
-          display: block;
-        }
-      }
-    }
-  }
-}
-</style>

+ 0 - 124
src/views/rai_manage/activityList/roadShow/components/playDetailsDlg.vue

@@ -1,124 +0,0 @@
-<template>
-  <div class="container paly-details-dlg">
-    <el-dialog v-dialogDrag :close-on-click-modal="false" :modal-append-to-body="false" center title="播放详情" :visible.sync="playDetailsVisible" width="1242px" :before-close="cancelHandle">
-      <el-table :data="dataList" style="width: 100%" border height="400">
-        <template v-for="item in tableColums">
-          <el-table-column
-            :key="item.label"
-            :label="item.label"
-            :width="item.widthsty"
-            :min-width="item.minwidthsty"
-            align="center"
-            v-if="(tabActive == 1 || tabActive == 2) && item.key != 'PlaySeconds'"
-          >
-            <template slot-scope="{ row }">
-              <span>{{ handleRowContent(row, item.key) }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column :key="item.label" :label="item.label" :width="item.widthsty" :min-width="item.minwidthsty" align="center" v-else-if="tabActive == 3">
-            <template slot-scope="{ row }">
-              <span>{{ handleRowContent(row, item.key) }}</span>
-            </template>
-          </el-table-column>
-        </template>
-      </el-table>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { PalyTable } from "../tableTabs";
-import { raiVideoApi } from "@/api/api.js";
-
-export default {
-  name: "",
-  components: {},
-  props: {
-    playDetailsVisible: {
-      default: false,
-      required: true,
-      type: Boolean,
-    },
-    playDetailsList: {
-      default: {},
-      required: true,
-      type: Object,
-    },
-    tabActive: {
-      required: true,
-      type: Number,
-    },
-  },
-  data() {
-    return {
-      dataList: [],
-    };
-  },
-  computed: {
-    tableColums() {
-      return PalyTable;
-    },
-  },
-  watch: {
-    "playDetailsList.VideoId": {
-      handler(newval) {
-        if (newval) {
-          this.tabActive == 1 ? this.getVideoDeatil() : this.activityVideoDeatil();
-        }
-      },
-    },
-    "playDetailsList.ActivityVoiceId": {
-      handler(newval) {
-        if (newval) {
-          this.getVoiceDeatil();
-        }
-      },
-    },
-  },
-  created() {},
-  mounted() {},
-  methods: {
-    cancelHandle() {
-      this.$emit("update:playDetailsVisible", false);
-      this.$emit("update:playDetailsList", {});
-      this.dataList = [];
-    },
-    async getVideoDeatil() {
-      const res = await raiVideoApi.videoDeatil({ VideoId: this.playDetailsList.VideoId });
-      if (res.Ret === 200) {
-        this.dataList = res.Data || [];
-      }
-    },
-    async getVoiceDeatil() {
-      const res = await raiVideoApi.voiceDeatil({ VoiceId: this.playDetailsList.ActivityVoiceId });
-      if (res.Ret === 200) {
-        this.dataList = res.Data || [];
-      }
-    },
-    async activityVideoDeatil() {
-      const res = await raiVideoApi.activityVideoDeatil({ VideoId: this.playDetailsList.VideoId });
-      if (res.Ret === 200) {
-        this.dataList = res.Data || [];
-      }
-    },
-    handleRowContent(row, key) {
-      if (key == "PlaySeconds") {
-        if (!row[key] || row[key] == 0) return "";
-        let m = parseInt(row[key] / 60);
-        let s = parseInt(row[key] % 60);
-        let ms = `${m > 9 ? m : "0" + m}分${s > 9 ? s : "0" + s}秒`;
-        return ms;
-      } else {
-        return row[key];
-      }
-    },
-  },
-};
-</script>
-<style scoped lang="scss">
-.paly-details-dlg {
-  .el-table {
-    margin-bottom: 30px;
-  }
-}
-</style>

+ 0 - 320
src/views/rai_manage/activityList/roadShow/roadShowList.vue

@@ -1,320 +0,0 @@
-<template>
-  <div class="container container-road-show">
-    <div class="top-wrap">
-      <div style="display: flex">
-        <span @click="topTabsHandler(item)" :class="['item', tabActive === item.value && 'active']" v-for="item in topTabs" :key="item.value">{{ item.name }}</span>
-      </div>
-      <el-input v-model="fileName" @input="fileNameHandle" placeholder="请输入文件名称" clearable style="display: inline-block; width: 350px">
-        <i slot="prefix" class="el-input__icon el-icon-search"></i>
-      </el-input>
-    </div>
-
-    <!-- // 筛选 表格 -->
-    <el-card style="margin-top: 20px">
-      <div class="select-content">
-        <div>
-          <el-select style="margin-bottom: 20px" placeholder="行业" v-model="chartPermissionId" clearable @change="selectChangeHandle">
-            <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.ChartPermissionId" :value="item.ChartPermissionId"></el-option>
-          </el-select>
-          <el-select v-if="tabActive != 1" placeholder="活动类型" clearable v-model="cactivityTypeVal" @change="selectChangeHandle">
-            <el-option v-for="item in cactivityTypeList" :label="item.ActivityTypeName" :key="item.ActivityTypeId" :value="item.ActivityTypeId"></el-option>
-          </el-select>
-          <date-picker style="margin-bottom: 20px" v-model="issueTime" type="date" range :placeholder="tabActive == 1 ? '发布时间' : '活动时间'" value-type="format" @change="selectChangeHandle">
-          </date-picker>
-          <el-select v-if="tabActive == 1" placeholder="发布状态" clearable v-model="publishStatus" @change="selectChangeHandle" style="margin-bottom: 20px">
-            <el-option v-for="item in publishSelect" :label="item.name" :key="item.value" :value="item.value"></el-option>
-          </el-select>
-        </div>
-        <div>
-          <el-button type="primary" v-if="tabActive === 1" @click="addEditdialogVisib = true">添加视频</el-button>
-        </div>
-      </div>
-      <el-table :data="dataList" style="width: 100%" border @sort-change="sortChangeHandle">
-        <el-table-column
-          v-for="item in tableColums"
-          :key="item.label"
-          :label="item.label"
-          :width="item.widthsty"
-          :min-width="item.minwidthsty"
-          align="center"
-          :sortable="item.key === 'VideoCounts' || item.key === 'VoiceCounts' ? 'custom' : false"
-        >
-          <template slot-scope="{ row }">
-            <span @click="handleRowClick(row, item.key)" :style="handleRowStyle(item.key)">{{ handleRowContent(row, item.key) }}</span>
-          </template></el-table-column
-        >
-        <el-table-column align="center" prop="LastUpdatedTime" width="150" label="操作">
-          <template slot-scope="{ row }">
-            <div v-if="tabActive === 1">
-              <span class="editsty" @click="handlePublish(row)">{{ row.PublishStatus == 1 ? "取消发布" : "发布" }}</span>
-              &nbsp;&nbsp;
-              <span class="editsty" @click="handleEditVideo(row)">编辑</span>
-            </div>
-            <span v-else class="editsty" @click="titleBtnClick(row.ActivityId)">活动详情</span>
-          </template>
-        </el-table-column>
-      </el-table>
-      <!-- 分页 -->
-      <el-col :span="24" class="toolbar">
-        <m-page :total="total" :page_no="page_no" :pageSize="10" @handleCurrentChange="handleCurrentChange" />
-      </el-col>
-    </el-card>
-    <playDetails :playDetailsVisible.sync="playDetailsVisible" :playDetailsList.sync="playDetailsList" :tabActive="tabActive" />
-    <addVideoDlg :addEditdialogVisib.sync="addEditdialogVisib" :chartPermissionList="chartPermissionList" :playDetailsList.sync="editDetails" />
-    <atc-particulars :dialogVisible.sync="dialogVisible" :detailData.sync="detailData" />
-    <generation-ask :generaitondialogVisib.sync="generaitondialogVisib" :generaitonId="generaitonId" :generaitonType="generaitonType" :tabActiveRoadshow="tabActive" />
-  </div>
-</template>
-
-<script>
-import { raiInterface, raiVideoApi } from "@/api/api.js";
-import { tableColums, TopTabs } from "./tableTabs";
-import { PublishSelect } from "../../components/apply/applyTableColums";
-import mPage from "@/components/mPage.vue";
-import playDetails from "./components/playDetailsDlg.vue";
-import addVideoDlg from "./components/addVideoDlg.vue";
-import moment from "moment";
-import AtcParticulars from "../../components/atcParticulars.vue";
-import GenerationAsk from "../../components/generationAsk.vue";
-
-export default {
-  name: "",
-  components: { mPage, playDetails, addVideoDlg, AtcParticulars, GenerationAsk },
-  props: {},
-  data() {
-    return {
-      tableColums: [],
-      dataList: [],
-      tabActive: 1, //tabs 选中
-      chartPermissionList: [], //行业的数组
-      chartPermissionId: "", //行业的id
-      issueTime: "", //活动时间
-      cactivityTypeVal: "", //活动类型
-      cactivityTypeList: [],
-      publishStatus: "", //发布状态
-      fileName: "", //文件名称
-      total: 0, //条数
-      PageSize: 10, //每页显示几条
-      page_no: 1, //页码
-      playDetailsVisible: false, //播放详情的弹框
-      playDetailsList: {}, //播放详情的数据//编辑的详情
-      editDetails: {}, //播放详情的数据//编辑的详情
-      addEditdialogVisib: false, //添加视频的弹框
-      sortType: "",
-      detailData: {},
-      dialogVisible: false,
-      generaitondialogVisib: false, //代问的弹框
-      generaitonId: 0,
-      generaitonType: "微路演",
-    };
-  },
-  computed: {
-    topTabs() {
-      return TopTabs;
-    },
-    //发布状态
-    publishSelect() {
-      return PublishSelect;
-    },
-  },
-  watch: {},
-  created() {},
-  mounted() {
-    this.tableColums = tableColums(1);
-    this.chartPermission();
-    this.activityType();
-    this.getVideoList();
-  },
-  methods: {
-    topTabsHandler(item) {
-      this.tabActive = item.value;
-      this.tableColums = tableColums(this.tabActive);
-      this.publishStatus = "";
-      this.cactivityTypeVal = "";
-      this.page_no = 1;
-      this.getVideoList();
-    },
-    //获取行业
-    async chartPermission() {
-      const res = await raiInterface.chartPermission();
-      if (res.Ret === 200) {
-        this.chartPermissionList = res.Data.List;
-      }
-    },
-    //活动类型
-    async activityType() {
-      const res = await raiInterface.getActivityType();
-      if (res.Ret === 200) {
-        this.cactivityTypeList = res.Data.List;
-      }
-    },
-    async getVideoList() {
-      let SortParam = this.sortType && this.tabActive == 1 ? "videoCounts" : this.sortType && this.tabActive == 2 ? "voiceCounts" : "";
-      let params = {
-        PageSize: this.PageSize,
-        CurrentIndex: this.page_no,
-        KeyWord: this.fileName,
-        StartDate: this.issueTime ? this.issueTime[0] : "",
-        EndDate: this.issueTime ? this.issueTime[1] : "",
-        PublishStatus: this.publishStatus ? Number(this.publishStatus) : "",
-        ChartPermissionId: this.chartPermissionId,
-        ActivityTypeId: this.cactivityTypeVal,
-        SortType: this.sortType,
-        SortParam,
-      };
-      const res = this.tabActive == 1 ? await raiVideoApi.videoList(params) : this.tabActive == 2 ? await raiVideoApi.getActivityVideo(params) : await raiVideoApi.voiceList(params);
-      if (res.Ret === 200) {
-        this.dataList = res.Data.List;
-        this.total = res.Data.Paging.Totals;
-      }
-    },
-    //select 筛选条件后的事件
-    selectChangeHandle() {
-      this.page_no = 1;
-      this.getVideoList();
-    },
-    //文件名称的搜索
-    fileNameHandle() {
-      this.issueTime = "";
-      this.publishStatus = "";
-      this.chartPermissionId = "";
-      this.page_no = 1;
-      this.getVideoList();
-    },
-    /* 点击表格的排序 */
-    sortChangeHandle({ prop, order }) {
-      console.log(order);
-      this.sortType = order == "ascending" ? "asc" : order == "descending" ? "desc" : "";
-      this.getVideoList();
-    },
-    //分页
-    handleCurrentChange(page) {
-      this.page_no = page;
-      this.getVideoList();
-    },
-    /*
-    表格三件套
-    */
-    handleRowContent(row, key) {
-      if (key == "PublishStatus") {
-        let status = row["PublishStatus"] == 1 ? "已发布" : "未发布";
-        return status;
-      } else if (key == "VideoDuration" || key == "VoicePlaySeconds") {
-        let m = parseInt(row[key] / 60);
-        let s = parseInt(row[key] % 60);
-        let ms = `${m > 9 ? m : "0" + m}分${s > 9 ? s : "0" + s}秒`;
-        return ms;
-      } else {
-        return row[key];
-      }
-    },
-    handleRowStyle(key) {
-      const style = {
-        VideoCounts: "color: #409eff; cursor: pointer",
-        VoiceCounts: "color: #409eff; cursor: pointer",
-        CommentNum: "color: #409eff; cursor: pointer",
-      };
-      return style[key] ? style[key] : "";
-    },
-    //
-    handleRowClick(row, key) {
-      if (key == "VideoCounts" || key == "VoiceCounts") {
-        this.playDetailsVisible = true;
-        this.playDetailsList = row;
-      } else if (key == "CommentNum") {
-        console.log(row);
-        //点击代问的弹框
-        this.generaitondialogVisib = true;
-        this.generaitonId = this.tabActive == 3 ? row.ActivityId: row.VideoId;
-      }
-    },
-    /*
-    表格三件套
-    */
-    //点击标题的弹框
-    titleBtnClick(id) {
-      raiInterface.activityDetail({ ActivityId: Number(id) }).then((res) => {
-        if (res.Ret == 200) {
-          this.detailData = res.Data;
-        }
-      });
-      this.dialogVisible = true;
-    },
-    //发布或者取消发布
-    handlePublish(item) {
-      this.$confirm(item.PublishStatus == 1 ? "确认取消发布该视频吗?" : "确认发布该视频吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(async () => {
-          const res = await raiVideoApi.videoPublish({
-            VideoId: item.VideoId,
-            PublishOrCancle: item.PublishStatus == 1 ? 0 : 1,
-          });
-          if (res.Ret === 200) {
-            this.$message.success("操作成功!");
-            this.getVideoList();
-          }
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: "已取消",
-          });
-        });
-    },
-    //编辑
-    handleEditVideo(item) {
-      this.editDetails = item;
-      this.addEditdialogVisib = true;
-    },
-  },
-};
-</script>
-<style scoped lang="scss">
-.container-road-show {
-  .top-wrap {
-    margin-bottom: 28px;
-    padding: 20px;
-    background: #fff;
-    border: 1px solid #ececec;
-    border-radius: 4px;
-    box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    .item {
-      display: flex;
-      width: 100px;
-      height: 40px;
-      background: #ecf5ff;
-      border-radius: 4px;
-      border: 1px solid #b3d8ff;
-      color: #3385ff;
-      font-size: 16px;
-      align-items: center;
-      justify-content: center;
-      margin-right: 20px;
-      cursor: pointer;
-    }
-    .active {
-      border: none;
-      background-color: #409eff;
-      color: #fff;
-    }
-  }
-  .select-content {
-    display: flex;
-    justify-content: space-between;
-    .el-select {
-      width: 220px;
-      margin-right: 20px;
-    }
-    .mx-datepicker {
-      width: 220px !important;
-      margin-right: 20px !important;
-    }
-  }
-}
-</style>

+ 0 - 167
src/views/rai_manage/activityList/roadShow/tableTabs.js

@@ -1,167 +0,0 @@
-//表格列
-export const tableColums = (type) => {
-  return type === 1
-    ? [
-        {
-          label: "文件名称",
-          key: "VideoName",
-          widthsty: 300,
-        },
-        {
-          label: "行业",
-          key: "ChartPermissionName",
-          widthsty: 90,
-        },
-        {
-          label: "产业",
-          key: "IndustryName",
-        },
-        {
-          label: "发布状态",
-          key: "PublishStatus",
-          widthsty: 90,
-        },
-        {
-          label: "发布时间",
-          key: "PublishDate",
-          widthsty: 160,
-        },
-        {
-          label: "更新时间",
-          key: "ModifyDate",
-          widthsty: 160,
-        },
-        {
-          label: "视频时长",
-          key: "VideoDuration",
-          widthsty: 100,
-        },
-        {
-          label: "播放量",
-          key: "VideoCounts",
-          widthsty: 100,
-        },
-        {
-          label: "留言",
-          key: "CommentNum",
-          widthsty: 100,
-        },
-      ]
-    : type === 2
-    ? [
-        {
-          label: "文件名称",
-          key: "VideoName",
-          widthsty: 300,
-        },
-        {
-          label: "行业",
-          key: "ChartPermissionName",
-          widthsty: 90,
-        },
-        {
-          label: "活动类型",
-          key: "ActivityTypeName",
-          minwidthsty: "110",
-        },
-        {
-          label: "活动标签",
-          key: "Label",
-          minwidthsty: "120",
-        },
-        {
-          label: "活动时间",
-          key: "ActivityTimeText",
-          minwidthsty: "200",
-        },
-        {
-          label: "视频时长",
-          key: "VideoDuration",
-          widthsty: 100,
-        },
-        {
-          label: "播放量",
-          key: "VideoCounts",
-          widthsty: 100,
-        },
-        {
-          label: "留言",
-          key: "CommentNum",
-          widthsty: 100,
-        },
-      ]
-    : [
-        {
-          label: "文件名称",
-          key: "VoiceName",
-          widthsty: 300,
-        },
-        {
-          label: "行业",
-          key: "ChartPermissionName",
-          widthsty: 90,
-        },
-        {
-          label: "活动类型",
-          key: "ActivityTypeName",
-          minwidthsty: "110",
-        },
-        {
-          label: "活动标签",
-          key: "Label",
-          minwidthsty: "120",
-        },
-        {
-          label: "活动时间",
-          key: "ActivityTimeText",
-          minwidthsty: "200",
-        },
-        {
-          label: "音频时长",
-          key: "VoicePlaySeconds",
-          widthsty: 100,
-        },
-        {
-          label: "播放量",
-          key: "VoiceCounts",
-          widthsty: 100,
-        },
-        {
-          label: "留言",
-          key: "CommentNum",
-          widthsty: 100,
-        },
-      ];
-};
-//表格列
-export const PalyTable = [
-  {
-    label: "姓名",
-    key: "RealName",
-  },
-  {
-    label: "手机号",
-    key: "Mobile",
-  },
-  {
-    label: "公司名称",
-    key: "CompanyName",
-  },
-  {
-    label: "所属销售",
-    key: "SellerName",
-  },
-  {
-    label: "播放时间",
-    key: "CreateTime",
-  },
-  {
-    label: "播放时长",
-    key: "PlaySeconds",
-  },
-];
-export const TopTabs = [
-  { name: "产业视频", value: 1 },
-  { name: "活动视频", value: 2 },
-  { name: "活动音频", value: 3 },
-];

+ 12 - 44
src/views/rai_manage/activityManage/specialResearch.vue

@@ -2,21 +2,14 @@
   <div class="container special-research">
     <div class="top-wrap">
       <div class="tabs-content">
-        <span @click="tabsHandle(item)" :class="['item', tabsActive == item.id && 'active-item']" v-for="item in tabsTop" :key="item.id">{{
-          item.name
-        }}</span>
+        <span @click="tabsHandle(item)" :class="['item', tabsActive == item.id && 'active-item']" v-for="item in tabsTop" :key="item.id">{{ item.name }}</span>
       </div>
     </div>
     <div class="top-wrap">
       <div>
         <el-button v-if="tabsActive == 2" type="primary" style="margin-right: 20px" @click="addapply">新增报名</el-button>
         <el-select placeholder="请选择行业" clearable v-model="industryValue" @change="changeHandel" style="margin: 0 20px 20px 0">
-          <el-option
-            v-for="item in chartPermissionList"
-            :label="item.PermissionName"
-            :key="item.ChartPermissionId"
-            :value="item.ChartPermissionId"
-          ></el-option>
+          <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.ChartPermissionId" :value="item.ChartPermissionId"></el-option>
         </el-select>
         <el-select placeholder="发布状态" clearable v-model="status" @change="changeHandel" style="margin: 0 30px 20px 0">
           <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
@@ -35,14 +28,7 @@
     <el-card>
       <el-table @selection-change="selectChange" :data="dataList" style="width: 100%; margin-top: 20px" border>
         <el-table-column v-if="tabsActive == 2" align="center" type="selection" width="55"> </el-table-column>
-        <el-table-column
-          v-for="item in tableColums"
-          :key="item.label"
-          :label="item.label"
-          :width="item.widthsty"
-          :min-width="item.minwidthsty"
-          align="center"
-        >
+        <el-table-column v-for="item in tableColums" :key="item.label" :label="item.label" :width="item.widthsty" :min-width="item.minwidthsty" align="center">
           <template slot-scope="{ row }">
             <span @click="handleRowClick(row, item.key)" :style="handleRowStyle(item.key)">{{ handleRowContent(row, item.key) }}</span>
           </template>
@@ -52,9 +38,7 @@
             <div v-if="tabsActive == 1">
               <template v-if="row.PublishStatus !== 4">
                 <span class="editsty" v-if="row.PublishStatus == 1" @click="applyHandleAllOperate(row.ActivityId, '下线')">下线 &nbsp;&nbsp;</span>
-                <span class="editsty" v-if="row.PublishStatus == 3" @click="applyHandleAllOperate(row.ActivityId, '重新发布')"
-                  >重新发布 &nbsp;&nbsp;</span
-                >
+                <span class="editsty" v-if="row.PublishStatus == 3" @click="applyHandleAllOperate(row.ActivityId, '重新发布')">重新发布 &nbsp;&nbsp;</span>
                 <span v-if="row.PublishStatus == 0" class="editsty" @click="applyHandleAllOperate(row.ActivityId, '发布')">发布 &nbsp;&nbsp;</span>
                 <span class="editsty" @click="editBtn(row.ActivityId, row.PublishStatus, '')">编辑 &nbsp;&nbsp;</span>
                 <span class="editsty" v-if="row.PublishStatus == 1" @click="editBtn(row.ActivityId, row.PublishStatus, '行程')">确定行程</span>
@@ -62,15 +46,8 @@
               </template>
             </div>
             <div v-else>
-              <span
-                class="editsty"
-                v-if="row.PublishStatus == 1 && isStart(row.ActivityTime)"
-                @click="applyHandleAllOperate(row.ActivityId, '取消发布')"
-                >取消发布 &nbsp;&nbsp;</span
-              >
-              <span class="editsty" v-if="row.PublishStatus !== 1" @click="applyHandleAllOperate(row.ActivityId, '重新发布')"
-                >重新发布 &nbsp;&nbsp;</span
-              >
+              <span class="editsty" v-if="row.PublishStatus == 1 && isStart(row.ActivityTime)" @click="applyHandleAllOperate(row.ActivityId, '取消发布')">取消发布 &nbsp;&nbsp;</span>
+              <span class="editsty" v-if="row.PublishStatus !== 1" @click="applyHandleAllOperate(row.ActivityId, '重新发布')">重新发布 &nbsp;&nbsp;</span>
               <span class="editsty" @click="editBtn(row.ActivityId, row.PublishStatus, '行程')">编辑 &nbsp;&nbsp;</span>
               <span class="editsty" v-if="row.IsShowUpdateMeeting" @click="particularsSubmit(row.ActivityId)"> 修改到会情况 </span>
               <span class="editsty" v-if="row.IsShowSubmitMeeting" @click="particularsSubmit(row.ActivityId)"> 提交到会情况 </span>
@@ -134,18 +111,8 @@
         </div>
       </div>
     </el-dialog> -->
-    <special-research-dlg
-      :specialDetailId="specialDetailId"
-      :dialogVisibleActivity.sync="dialogVisibleActivity"
-      :dialogTitle="dialogTitle"
-      :tabsActive="tabsActive"
-    />
-    <partical-dialog
-      :offlineId="offlineId"
-      :dialogVisiblepartica.sync="dialogVisiblepartica"
-      :particlaDlg="particlaDlg"
-      :submitDialog.sync="submitDialog"
-    />
+    <special-research-dlg :specialDetailId="specialDetailId" :dialogVisibleActivity.sync="dialogVisibleActivity" :dialogTitle="dialogTitle" :tabsActive="tabsActive" />
+    <partical-dialog :offlineId="offlineId" :dialogVisiblepartica.sync="dialogVisiblepartica" :particlaDlg="particlaDlg" :submitDialog.sync="submitDialog" />
     <apply-dialog :addDialogVisible.sync="addDialogVisible" :selectList="selectList" :signUpAdd="signUpAdd" :addDialogType="addDialogType" />
     <particulars-all :particularsDialogVisible.sync="particularsDialogVisible" :dialogVisibleList="dialogVisibleList" />
   </div>
@@ -171,7 +138,7 @@ export default {
       themeVal: "",
       dataList: [],
       page_no: 1,
-      total: "",
+      total: 0,
       dialogVisibleActivity: false,
       dialogTitle: "",
       activityDetail: {},
@@ -193,8 +160,9 @@ export default {
 
       particularsDialogVisible: false,
       dialogVisibleList: {},
-      specialDetailId: null,
-      selectList:[]
+      specialDetailId: 0,
+      selectList: [],
+      
     };
   },
   computed: {

+ 0 - 1
src/views/rai_manage/components/apply/applyDialog.vue

@@ -76,7 +76,6 @@ export default {
     },
     selectionArr: {
       type: Array,
-      required: true,
       default: ()=>[],
     },
     addDialogType: {

+ 2 - 2
src/views/rai_manage/components/apply/templateMessage.vue

@@ -2,7 +2,7 @@
   <div class="container container-message-dlg">
     <el-dialog width="560px" v-dialogDrag :close-on-click-modal="false" :modal-append-to-body="false" center :visible.sync="messageDialog" title="发送模板消息" :before-close="handleClose">
       <div class="content">
-        <div class="annotation" >
+        <div class="annotation">
           <div class="annotation-box" @click="annotationHandler">
             <img style="margin-right: 5px" src="~@/assets/img/icons/annotation_icon.png" alt="" />
             注释
@@ -48,7 +48,7 @@ export default {
     selectionArr: {
       type: Array,
       required: true,
-      default: [],
+      default: () => [],
     },
     messageDialog: {
       type: Boolean,

+ 0 - 237
src/views/rai_manage/researchReport/reportChoiceness.vue

@@ -1,237 +0,0 @@
-<template>
-  <div class="container-choiceness">
-    <el-card>
-      <div class="top-box">
-        <div class="top-container">
-          <!-- <el-select placeholder="行业" clearable v-model="industry" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.ChartPermissionId" :value="item.ChartPermissionId"></el-option>
-          </el-select> -->
-          <el-select placeholder="发布状态" clearable v-model="status" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
-          </el-select>
-          <date-picker v-model="issueTime" type="date" range placeholder="发布时间" value-type="format" @change="conditionChange"> </date-picker>
-        </div>
-        <div>
-          <el-button type="primary" @click="$router.push('/addChoiceness')">添加</el-button>
-        </div>
-      </div>
-
-      <el-table :data="tableData" style="width: 100%" border>
-        <el-table-column prop="" align="center" label="标题" min-width="260">
-          <template slot-scope="scope">
-            <span class="editsty" @click="goDetail(scope.row.ArticleId)">{{ scope.row.Title }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="Periods" align="center" label="期数" width="118"></el-table-column>
-        <el-table-column prop="PublishDate" align="center" label="发布时间" min-width="165"></el-table-column>
-        <el-table-column prop="LastUpdatedTime" align="center" label="更新时间" min-width="165"></el-table-column>
-        <el-table-column prop="" align="center" label="发布状态" width="118">
-          <template slot-scope="scope">
-            {{ scope.row.PublishStatus == 1 ? "已发布" : "未发布" }}
-          </template>
-        </el-table-column>
-        <el-table-column width="135" label="PV / UV" align="center" :render-header="renderHeader">
-          <template slot-scope="scope">
-            <div class="pv-uv-download">
-              <span>{{ scope.row.Pv }}/{{ scope.row.Uv }}</span>
-              <a :href="exportPvUv(scope.row.ArticleId)" download>
-                <img src="~@/assets/img/rai_m/pvuv_download.png" alt="" />
-              </a>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" label="操作" min-width="140">
-          <template slot-scope="scope">
-            <span v-if="scope.row.PublishStatus !== 1" class="editsty" @click="operationBtn(scope.row.ArticleId, '发布')">发布&nbsp;&nbsp;</span>
-            <span v-else class="editsty" @click="operationBtn(scope.row.ArticleId, '取消发布')">取消发布&nbsp;&nbsp;</span>
-            <span class="editsty" @click="editReport(scope.row.ArticleId)">编辑&nbsp;&nbsp;</span>
-            <span v-if="scope.row.PublishStatus !== 1 && !scope.row.Periods" class="deletesty" @click="operationBtn(scope.row.ArticleId, '删除')">删除</span>
-          </template>
-        </el-table-column>
-      </el-table>
-      <!-- 分页 -->
-      <el-col :span="24" class="toolbar">
-        <m-page :total="total" :page_no="page_no" :pageSize="10" @handleCurrentChange="handleCurrentChange" />
-      </el-col>
-    </el-card>
-  </div>
-</template>
-
-<script>
-import mPage from "@/components/mPage.vue";
-import { raiInterface } from "@/api/api.js";
-export default {
-  name: "",
-  components: { mPage },
-  props: {},
-  data() {
-    return {
-      page_no: sessionStorage.getItem("choicenessListBack") ? JSON.parse(sessionStorage.getItem("choicenessListBack")).page_no : 1,
-      total: 0, //条数
-      PageSize: 10, //每页显示几条
-      industry: "", //行业
-      status: "", //发布状态
-      issueTime: "", //时间
-      //chartPermissionList: [], //行业的数组
-      options: [
-        { id: 0, name: "未发布" },
-        { id: 1, name: "已发布" },
-      ], //发布的数组
-      tableData: [], //表格
-    };
-  },
-  computed: {
-    sta() {
-      return this.status === 0 ? this.status : this.status === 1 ? this.status : 2;
-    },
-  },
-  watch: {},
-  created() {},
-  mounted() {
-    if (sessionStorage.getItem("choicenessListBack")) {
-      const initialize = JSON.parse(sessionStorage.getItem("choicenessListBack"));
-      this.industry = initialize.industry;
-      this.status = initialize.status;
-      this.issueTime = initialize.issueTime;
-    }
-    this.getList();
-    //this.getIndustryList()
-  },
-  methods: {
-    //获取list数组
-    async getList() {
-      const res = await raiInterface.reportSelectionList({
-        CurrentIndex: this.page_no,
-        PageSize: this.PageSize,
-        PublishStatus: this.sta - 0,
-        CategoryName: this.industry,
-        StartDate: this.issueTime[0],
-        EndDate: this.issueTime[1],
-      });
-      if (res.Ret === 200) {
-        this.tableData = res.Data.List;
-        this.total = res.Data.Paging.Totals;
-      }
-    },
-    //导出pv uv
-    exportPvUv(id) {
-      const url = process.env.process.env.VUE_APP_BASE_API + "/cygx/reportSelection/articleHistoryExport?ArticleId=" + id + "&Source=1&" + localStorage.getItem("auth") || "";
-      return url
-    },
-    //选择后的事件
-    conditionChange() {
-      this.page_no = 1;
-      this.getList();
-    },
-    //发布,取消发布,删除
-    operationBtn(id, value) {
-      this.$confirm(`确定${value}该文章吗?`, "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(async () => {
-          if (value == "删除") {
-            const res = await raiInterface.reportSelectionDelete({ ArticleId: id });
-            if (res.Ret === 200) {
-              this.$message.success("删除成功!");
-              this.getList();
-            }
-          } else {
-            const res = await raiInterface.reportSelectionPublishAndCancel({ ArticleId: id });
-            if (res.Ret === 200) {
-              this.$message.success(value + "成功!");
-              this.getList();
-            }
-          }
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: `已取消${value}`,
-          });
-        });
-    },
-    //文章详情
-    goDetail(ArticleId) {
-      // console.log(ArticleId);
-      let { href } = this.$router.resolve({ name: '预览报告精选' ,query:{ArticleId}});
-      window.open(href, '_blank');
-    },
-    //去往编辑页面
-    editReport(id, status) {
-      this.$router.push({
-        path: "/editChoiceness",
-        query: { id },
-      });
-    },
-    //分页
-    handleCurrentChange(page) {
-      this.page_no = page;
-      this.getList();
-    },
-    //table表头Pu/Uv自定义
-    renderHeader(h, { column, $index }) {
-      return h("div", { attrs: { style: "padding:0;" } }, [
-        h("span", column.label),
-        h("el-tooltip", { props: { placement: "top" } }, [
-          h("p", { slot: "content", attrs: { style: "display:block;padding:5px 0;width:420px;" } }, "pv:报告被打开的次数,每次打开都计算一次(只统计有权限用户)"),
-          h("p", { slot: "content", attrs: { style: "display:block;padding:5px 0;width:420px;" } }, "uv:访问报告的人数,每篇报告同一个人访问只计算一次(只统计有权限用户)"),
-          h("el-button", { props: { icon: "el-icon-info" }, attrs: { style: "border:none;background:none" } }, ""),
-        ]),
-      ]);
-    },
-  },
-  /* 页面跳转前记录参数 */
-  beforeRouteLeave(to, form, next) {
-    let backData = {
-      page_no: this.page_no,
-      industry: this.industry, //行业
-      status: this.status, //状态
-      issueTime: this.issueTime, //时间
-    };
-    sessionStorage.setItem("choicenessListBack", JSON.stringify(backData));
-    next();
-  },
-  /* 页面进入前是否清除参数 */
-  beforeRouteEnter(to, from, next) {
-    if (from.path !== "/editChoiceness") {
-      sessionStorage.removeItem("choicenessListBack");
-    }
-    next();
-  },
-};
-</script>
-<style scoped lang="scss">
-.container-choiceness {
-  .top-box {
-    display: flex;
-    justify-content: space-between;
-    height: 40px;
-    margin-bottom: 30px;
-    .top-container {
-      .el-select {
-        margin-right: 20px;
-      }
-    }
-    .el-button {
-      padding: 0 30px;
-      height: 40px;
-    }
-  }
-  .mx-datepicker {
-    width: 220px !important;
-    margin-right: 25px;
-  }
-  .pv-uv-download {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    img {
-      width: 14px;
-      height: 14px;
-      margin-left: 10px;
-    }
-  }
-}
-</style>

+ 0 - 258
src/views/rai_manage/researchReport/roadshowEssence.vue

@@ -1,258 +0,0 @@
-<template>
-  <div class="container-essence">
-    <el-card>
-      <div class="top-box">
-        <div class="top-container">
-          <el-select placeholder="行业" clearable v-model="industry" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.ChartPermissionId" :value="item.ChartPermissionId"></el-option>
-          </el-select>
-          <el-select placeholder="发布状态" clearable v-model="status" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
-          </el-select>
-          <date-picker v-model="issueTime" type="date" range placeholder="发布时间" value-type="format" @change="conditionChange"> </date-picker>
-          <div class="top-input">
-            <el-input @input="keyValueInpt" v-model="keyWord" placeholder="请输入报告标题" clearable style="display: inline-block">
-              <i slot="prefix" class="el-input__icon el-icon-search"></i>
-            </el-input>
-          </div>
-        </div>
-        <div>
-          <el-button type="primary" @click="$router.push('/addRoadshow')">添加</el-button>
-        </div>
-      </div>
-      <el-table :data="tableData" style="width: 100%" border>
-        <el-table-column prop="" align="center" label="标题" min-width="260">
-          <template slot-scope="scope">
-            <span class="editsty" @click="goDetail(scope.row)">{{ scope.row.Title }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="Periods" align="center" label="期数" width="108"></el-table-column>
-        <el-table-column prop="PublishDate" align="center" label="发布时间" min-width="160"></el-table-column>
-        <el-table-column prop="LastUpdatedTime" align="center" label="更新时间" min-width="160"></el-table-column>
-        <el-table-column align="center" label="发布状态" min-width="108">
-          <template slot-scope="scope">
-            {{ scope.row.PublishStatus == 1 ? "已发布" : "未发布" }}
-          </template>
-        </el-table-column>
-        <el-table-column width="135" label="PV / UV" align="center" :render-header="renderHeader">
-          <template slot-scope="scope">
-            <div class="pv-uv-download">
-              <span>{{ scope.row.Pv }}/{{ scope.row.Uv }}</span>
-              <a :href="exportPvUv(scope.row.ArticleId)" download>
-                <img src="~@/assets/img/rai_m/pvuv_download.png" alt="" />
-              </a>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" label="操作" min-width="165">
-          <template slot-scope="scope">
-            <span v-if="scope.row.PublishStatus !== 1" class="editsty" @click="operationBtn(scope.row.ArticleId, '发布')">发布&nbsp;&nbsp;</span>
-            <span v-else class="editsty" @click="operationBtn(scope.row.ArticleId, '取消发布')">取消发布&nbsp;&nbsp;</span>
-            <span class="editsty" @click="editReport(scope.row.ArticleId)">编辑&nbsp;&nbsp;</span>
-            <span v-if="scope.row.PublishStatus !== 1 && !scope.row.Periods" class="deletesty" @click="operationBtn(scope.row.ArticleId, '删除')">删除</span>
-          </template>
-        </el-table-column>
-      </el-table>
-      <!-- 分页 -->
-      <el-col :span="24" class="toolbar">
-        <m-page :total="total" :page_no="page_no" :pageSize="10" @handleCurrentChange="handleCurrentChange" />
-      </el-col>
-    </el-card>
-  </div>
-</template>
-
-<script>
-import mPage from "@/components/mPage.vue";
-import { raiInterface } from "@/api/api.js";
-export default {
-  name: "",
-  components: { mPage },
-  props: {},
-  data() {
-    return {
-      page_no: sessionStorage.getItem("roadshowEssenceBack") ? JSON.parse(sessionStorage.getItem("roadshowEssenceBack")).page_no : 1,
-      total: 0, //条数
-      PageSize: 10, //每页显示几条
-      industry: "", //行业
-      status: "", //发布状态
-      issueTime: "", //时间
-      chartPermissionList: [], //行业的数组
-      options: [
-        { id: 0, name: "未发布" },
-        { id: 1, name: "已发布" },
-      ], //发布的数组
-      tableData: [], //表格
-      keyWord: "",
-    };
-  },
-  computed: {
-    sta() {
-      return this.status === 0 ? this.status : this.status === 1 ? this.status : 2;
-    },
-  },
-  watch: {},
-  created() {},
-  mounted() {
-    if (sessionStorage.getItem("roadshowEssenceBack")) {
-      const initialize = JSON.parse(sessionStorage.getItem("roadshowEssenceBack"));
-      this.status = initialize.status;
-      this.issueTime = initialize.issueTime;
-      this.industry = initialize.industry;
-      this.keyWord = initialize.keyWord;
-    }
-    this.getList();
-    this.getIndustryList();
-  },
-  methods: {
-    //获取list数组
-    async getList() {
-      const res = await raiInterface.roadshowEssenceList({
-        CurrentIndex: this.page_no,
-        PageSize: this.PageSize,
-        PublishStatus: this.sta - 0,
-        ChartPermissionId: this.industry,
-        StartDate: this.issueTime[0],
-        EndDate: this.issueTime[1],
-        KeyWord: this.keyWord,
-      });
-      if (res.Ret === 200) {
-        this.tableData = res.Data.List;
-        this.total = res.Data.Paging.Totals;
-      }
-    },
-    //获取行业
-    async getIndustryList() {
-      const res = await raiInterface.chartPermissionFirstHaveIco();
-      if (res.Ret === 200) {
-        this.chartPermissionList = res.Data.List;
-      }
-    },
-    //选择后的事件
-    conditionChange() {
-      this.page_no = 1;
-      this.getList();
-    },
-    //发布,取消发布,删除
-    operationBtn(id, value) {
-      this.$confirm(`确定${value}该文章吗?`, "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(async () => {
-          if (value == "删除") {
-            const res = await raiInterface.roadshowEssenceDelete({ ArticleId: id });
-            if (res.Ret === 200) {
-              this.$message.success("删除成功!");
-              this.getList();
-            }
-          } else {
-            const res = await raiInterface.roadshowEssencePublishAndCancel({ ArticleId: id });
-            if (res.Ret === 200) {
-              this.$message.success(value + "成功!");
-              this.getList();
-            }
-          }
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: `已取消${value}`,
-          });
-        });
-    },
-    //文章详情
-    goDetail(row) {
-      let { href } = this.$router.resolve({ name: '预览路演精华' ,query:{ArticleId:row.ArticleId}});
-      window.open(href, '_blank');
-    },
-    //分页
-    handleCurrentChange(page) {
-      this.page_no = page;
-      this.getList();
-    },
-    editReport(id, status) {
-      this.$router.push({
-        path: "/editRoadshow",
-        query: { id },
-      });
-    },
-    keyValueInpt() {
-      this.page_no = 1;
-      this.getList();
-      this.init();
-    },
-    init() {
-      this.industry = ""; //行业
-      this.status = ""; //发布状态
-      this.issueTime = ""; //时间
-    },
-    //table表头Pu/Uv自定义
-    renderHeader(h, { column, $index }) {
-      return h("div", { attrs: { style: "padding:0;" } }, [
-        h("span", column.label),
-        h("el-tooltip", { props: { placement: "top" } }, [
-          h("p", { slot: "content", attrs: { style: "display:block;padding:5px 0;width:420px;" } }, "pv:报告被打开的次数,每次打开都计算一次(只统计有权限用户)"),
-          h("p", { slot: "content", attrs: { style: "display:block;padding:5px 0;width:420px;" } }, "uv:访问报告的人数,每篇报告同一个人访问只计算一次(只统计有权限用户)"),
-          h("el-button", { props: { icon: "el-icon-info" }, attrs: { style: "border:none;background:none" } }, ""),
-        ]),
-      ]);
-    },
-    //导出pv uv
-    exportPvUv(id) {
-      const url = process.env.process.env.VUE_APP_BASE_API + "/cygx/reportSelection/articleHistoryExport?ArticleId=" + id + "&Source=2&" + localStorage.getItem("auth") || "";
-      return url;
-    },
-  },
-  beforeRouteEnter(to, from, next) {
-    if (from.path != "/editRoadshow") {
-      sessionStorage.removeItem("roadshowEssenceBack");
-    }
-    next();
-  },
-  beforeRouteLeave(to, from, next) {
-    let backData = {
-      page_no: this.page_no,
-      status: this.status, //状态
-      issueTime: this.issueTime, //时间
-      industry: this.industry,
-      keyWord: this.keyWord,
-    };
-    sessionStorage.setItem("roadshowEssenceBack", JSON.stringify(backData));
-    next();
-  },
-};
-</script>
-<style scoped lang="scss">
-.container-essence {
-  .top-box {
-    display: flex;
-    justify-content: space-between;
-    .top-container {
-      .el-select {
-        width: 240px;
-        margin-right: 20px;
-      }
-      .top-input {
-        display: inline-block;
-        width: 521px;
-        margin-bottom: 20px;
-      }
-    }
-  }
-  .mx-datepicker {
-    width: 230px !important;
-    margin-right: 25px;
-  }
-  .pv-uv-download {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    img {
-      width: 14px;
-      height: 14px;
-      margin-left: 10px;
-    }
-  }
-}
-</style>

+ 0 - 253
src/views/rai_manage/researchReport/theLastWeek.vue

@@ -1,253 +0,0 @@
-<template>
-  <div class="container-the-last-week">
-    <!-- 上周研究汇总 -->
-    <el-card>
-      <div class="top-box">
-        <div class="top-container">
-          <el-select placeholder="发布状态" clearable v-model="status" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
-          </el-select>
-          <date-picker v-model="issueTime" type="date" range placeholder="发布时间" value-type="format" @change="conditionChange"> </date-picker>
-        </div>
-        <div>
-          <el-button type="primary" @click="$router.push('/addSummarizing')">添加</el-button>
-        </div>
-      </div>
-      <el-table :data="tableData" style="width: 100%" border>
-        <el-table-column prop="" align="center" label="标题" min-width="260">
-          <template slot-scope="scope">
-            <span class="editsty" @click="goDetail(scope.row)">{{ scope.row.Title }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="Periods" align="center" label="期数" width="118"></el-table-column>
-        <el-table-column prop="PublishDate" align="center" label="发布时间" min-width="118"></el-table-column>
-        <el-table-column prop="LastUpdatedTime" align="center" label="更新时间" min-width="165"></el-table-column>
-        <el-table-column prop="" align="center" label="发布状态" width="118">
-          <template slot-scope="scope">
-            <span>{{ scope.row.PublishStatus == 1 ? "已发布" : "未发布" }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column width="135" label="PV / UV" align="center" :render-header="renderHeader">
-          <template slot-scope="scope">
-            <div class="pv-uv-download">
-              <span>{{ scope.row.Pv }}/{{ scope.row.Uv }}</span>
-              <a :href="exportPvUv(scope.row.ArticleId)" download>
-                <img src="~@/assets/img/rai_m/pvuv_download.png" alt="" />
-              </a>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" label="操作" min-width="168">
-          <template slot-scope="scope">
-            <span v-if="scope.row.PublishStatus !== 1" class="editsty" @click="operationBtn(scope.row.ArticleId, '发布')">发布&nbsp;&nbsp;</span>
-            <span v-else class="editsty" @click="operationBtn(scope.row.ArticleId, '取消发布')">取消发布&nbsp;&nbsp;</span>
-            <span class="editsty" @click="editReport(scope.row.ArticleId)">编辑&nbsp;&nbsp;</span>
-            <span v-if="scope.row.PublishStatus !== 1 && !scope.row.Periods" class="deletesty" @click="operationBtn(scope.row.ArticleId, '删除')">删除</span>
-            <span v-if="scope.row.PublishStatus == 1" class="editsty" @click="emailGroup(scope.row)">群发邮件</span>
-          </template>
-        </el-table-column>
-      </el-table>
-      <!-- 分页 -->
-      <el-col :span="24" class="toolbar">
-        <m-page :total="total" :page_no="page_no" :pageSize="10" @handleCurrentChange="handleCurrentChange" />
-      </el-col>
-    </el-card>
-  </div>
-</template>
-
-<script>
-import mPage from "@/components/mPage.vue";
-import { raiInterface } from "@/api/api.js";
-export default {
-  name: "",
-  components: { mPage },
-  props: {},
-  data() {
-    return {
-      page_no: sessionStorage.getItem("theLastWeek") ? JSON.parse(sessionStorage.getItem("theLastWeek")).page_no : 1,
-      total: 0, //条数
-      PageSize: 10, //每页显示几条
-      //industry: "", //行业
-      status: "", //发布状态
-      issueTime: "", //时间
-      //chartPermissionList: [], //行业的数组
-      options: [
-        { id: 0, name: "未发布" },
-        { id: 1, name: "已发布" },
-      ], //发布的数组
-      tableData: [], //表格
-    };
-  },
-  computed: {
-    sta() {
-      return this.status === 0 ? this.status : this.status === 1 ? this.status : 2;
-    },
-  },
-  watch: {},
-  created() {},
-  mounted() {
-    if (sessionStorage.getItem("theLastWeek")) {
-      const initialize = JSON.parse(sessionStorage.getItem("theLastWeek"));
-      this.status = initialize.status;
-      this.issueTime = initialize.issueTime;
-    }
-    this.getList();
-    //this.getIndustryList()
-  },
-  methods: {
-    //获取list数组
-    async getList() {
-      const res = await raiInterface.minutesSummaryList({
-        CurrentIndex: this.page_no,
-        PageSize: this.PageSize,
-        PublishStatus: this.sta - 0,
-        CategoryName: this.industry,
-        StartDate: this.issueTime[0],
-        EndDate: this.issueTime[1],
-      });
-      if (res.Ret === 200) {
-        this.tableData = res.Data.List;
-        this.total = res.Data.Paging.Totals;
-      }
-    },
-    //导出pv uv
-    exportPvUv(id) {
-      const url = process.env.process.env.VUE_APP_BASE_API + "/cygx/reportSelection/articleHistoryExport?ArticleId=" + id + "&Source=4&" + localStorage.getItem("auth") || "";
-      return url;
-    },
-    //选择后的事件
-    conditionChange() {
-      this.page_no = 1;
-      this.getList();
-    },
-    //发布,取消发布,删除
-    operationBtn(id, value) {
-      this.$confirm(`确定${value}该文章吗?`, "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(async () => {
-          if (value == "删除") {
-            const res = await raiInterface.minutesSummaryDelete({ ArticleId: id });
-            if (res.Ret === 200) {
-              this.$message.success("删除成功!");
-              this.getList();
-            }
-          } else {
-            const res = await raiInterface.minutesSummaryPublishAndCancel({ ArticleId: id });
-            if (res.Ret === 200) {
-              this.$message.success(value + "成功!");
-              this.getList();
-            }
-          }
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: `已取消${value}`,
-          });
-        });
-    },
-    //文章详情
-    goDetail(row) {
-      let { href } = this.$router.resolve({ name: "预览上周汇总", query: { ArticleId: row.ArticleId } });
-      window.open(href, "_blank");
-    },
-    //去往编辑页面
-    editReport(id) {
-      this.$router.push({
-        path: "/editSummarizing",
-        query: { id },
-      });
-    },
-    //分页
-    handleCurrentChange(page) {
-      this.page_no = page;
-      this.getList();
-    },
-    //table表头Pu/Uv自定义
-    renderHeader(h, { column, $index }) {
-      return h("div", { attrs: { style: "padding:0;" } }, [
-        h("span", column.label),
-        h("el-tooltip", { props: { placement: "top" } }, [
-          h("p", { slot: "content", attrs: { style: "display:block;padding:5px 0;width:420px;" } }, "pv:报告被打开的次数,每次打开都计算一次(只统计有权限用户)"),
-          h("p", { slot: "content", attrs: { style: "display:block;padding:5px 0;width:420px;" } }, "uv:访问报告的人数,每篇报告同一个人访问只计算一次(只统计有权限用户)"),
-          h("el-button", { props: { icon: "el-icon-info" }, attrs: { style: "border:none;background:none" } }, ""),
-        ]),
-      ]);
-    },
-    emailGroup(row) {
-      this.$confirm("确定要对正式/试用客户群发该报告吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(async () => {
-          const res = await raiInterface.minutesSummarySendMail({
-            ArticleId: row.ArticleId,
-          });
-          if (res.Ret === 200) {
-            this.$message.success("发送成功");
-          }
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: `已取消`,
-          });
-        });
-    },
-  },
-  /* 页面进入前是否清除参数 */
-  beforeRouteEnter(to, from, next) {
-    if (from.path != "/editSummarizing") {
-      sessionStorage.removeItem("theLastWeek");
-    }
-    next();
-  },
-  /* 页面跳转前记录参数 */
-  beforeRouteLeave(to, from, next) {
-    let backData = {
-      page_no: this.page_no,
-      status: this.status, //状态
-      issueTime: this.issueTime, //时间
-    };
-    sessionStorage.setItem("theLastWeek", JSON.stringify(backData));
-    next();
-  },
-};
-</script>
-<style scoped lang="scss">
-.container-the-last-week {
-  .top-box {
-    display: flex;
-    justify-content: space-between;
-    height: 40px;
-    margin-bottom: 30px;
-    .top-container {
-      .el-select {
-        margin-right: 20px;
-      }
-    }
-    .el-button {
-      padding: 0 30px;
-      height: 40px;
-    }
-  }
-  .mx-datepicker {
-    width: 220px !important;
-    margin-right: 25px;
-  }
-  .pv-uv-download {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    img {
-      width: 14px;
-      height: 14px;
-      margin-left: 10px;
-    }
-  }
-}
-</style>

+ 0 - 256
src/views/rai_manage/researchReport/thisWeek.vue

@@ -1,256 +0,0 @@
-<template>
-  <div class="container-the-last-week">
-    <!-- 本周研究汇总 -->
-    <el-card>
-      <div class="top-box">
-        <div class="top-container">
-          <!-- <el-select placeholder="行业" clearable v-model="industry" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.ChartPermissionId" :value="item.ChartPermissionId"></el-option>
-          </el-select> -->
-          <el-select placeholder="发布状态" clearable v-model="status" @change="conditionChange" style="margin-bottom: 20px">
-            <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
-          </el-select>
-          <date-picker v-model="issueTime" type="date" range placeholder="发布时间" value-type="format" @change="conditionChange"> </date-picker>
-        </div>
-        <div>
-          <el-button type="primary" @click="$router.push('/addThisWeek')">添加</el-button>
-        </div>
-      </div>
-      <el-table :data="tableData" style="width: 100%" border>
-        <el-table-column prop="" align="center" label="标题" min-width="260">
-          <template slot-scope="scope">
-            <span class="editsty" @click="goDetail(scope.row)">{{ scope.row.Title }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="Periods" align="center" label="期数" width="118"></el-table-column>
-        <el-table-column prop="PublishDate" align="center" label="发布时间" min-width="118"></el-table-column>
-        <el-table-column prop="LastUpdatedTime" align="center" label="更新时间" min-width="165"></el-table-column>
-        <el-table-column prop="" align="center" label="发布状态" width="118">
-          <template slot-scope="scope">
-            <span>{{ scope.row.PublishStatus == 1 ? "已发布" : "未发布" }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column width="135" label="PV / UV" align="center" :render-header="renderHeader">
-          <template slot-scope="scope">
-            <div class="pv-uv-download">
-              <span>{{ scope.row.Pv }}/{{ scope.row.Uv }}</span>
-              <a :href="exportPvUv(scope.row.ArticleId)" download>
-                <img src="~@/assets/img/rai_m/pvuv_download.png" alt="" />
-              </a>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" label="操作" min-width="168">
-          <template slot-scope="scope">
-            <span v-if="scope.row.PublishStatus !== 1" class="editsty" @click="operationBtn(scope.row.ArticleId, '发布')">发布&nbsp;&nbsp;</span>
-            <span v-else class="editsty" @click="operationBtn(scope.row.ArticleId, '取消发布')">取消发布&nbsp;&nbsp;</span>
-            <span class="editsty" @click="editReport(scope.row.ArticleId)">编辑&nbsp;&nbsp;</span>
-            <span v-if="scope.row.PublishStatus !== 1 && !scope.row.Periods" class="deletesty" @click="operationBtn(scope.row.ArticleId, '删除')">删除&nbsp;&nbsp;</span>
-            <span v-if="scope.row.PublishStatus == 1" class="editsty" @click="emailGroup(scope.row)">群发邮件</span>
-          </template>
-        </el-table-column>
-      </el-table>
-      <!-- 分页 -->
-      <el-col :span="24" class="toolbar">
-        <m-page :total="total" :page_no="page_no" :pageSize="10" @handleCurrentChange="handleCurrentChange" />
-      </el-col>
-    </el-card>
-  </div>
-</template>
-
-<script>
-import mPage from "@/components/mPage.vue";
-import { raiInterface } from "@/api/api.js";
-export default {
-  name: "",
-  components: { mPage },
-  props: {},
-  data() {
-    return {
-      page_no: sessionStorage.getItem("theLastWeek") ? JSON.parse(sessionStorage.getItem("theLastWeek")).page_no : 1,
-      total: 0, //条数
-      PageSize: 10, //每页显示几条
-      //industry: "", //行业
-      status: "", //发布状态
-      issueTime: "", //时间
-      //chartPermissionList: [], //行业的数组
-      options: [
-        { id: 0, name: "未发布" },
-        { id: 1, name: "已发布" },
-      ], //发布的数组
-      tableData: [], //表格
-    };
-  },
-  computed: {
-    sta() {
-      return this.status === 0 ? this.status : this.status === 1 ? this.status : 2;
-    },
-  },
-  watch: {},
-  created() {},
-  mounted() {
-    if (sessionStorage.getItem("theLastWeek")) {
-      const initialize = JSON.parse(sessionStorage.getItem("theLastWeek"));
-      this.status = initialize.status;
-      this.issueTime = initialize.issueTime;
-    }
-    this.getList();
-    //this.getIndustryList()
-  },
-  methods: {
-    //获取list数组
-    async getList() {
-      const res = await raiInterface.researchSummaryList({
-        CurrentIndex: this.page_no,
-        PageSize: this.PageSize,
-        PublishStatus: this.sta - 0,
-        CategoryName: this.industry,
-        StartDate: this.issueTime[0],
-        EndDate: this.issueTime[1],
-      });
-      if (res.Ret === 200) {
-        this.tableData = res.Data.List;
-        this.total = res.Data.Paging.Totals;
-      }
-    },
-    //导出pv uv
-    exportPvUv(id) {
-      const url = process.env.process.env.VUE_APP_BASE_API + "/cygx/reportSelection/articleHistoryExport?ArticleId=" + id + "&Source=3&" + localStorage.getItem("auth") || "";
-      return url;
-    },
-    //选择后的事件
-    conditionChange() {
-      this.page_no = 1;
-      this.getList();
-    },
-    //发布,取消发布,删除
-    operationBtn(id, value) {
-      this.$confirm(`确定${value}该文章吗?`, "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(async () => {
-          if (value == "删除") {
-            const res = await raiInterface.researchSummaryDelete({ ArticleId: id });
-            if (res.Ret === 200) {
-              this.$message.success("删除成功!");
-              this.getList();
-            }
-          } else {
-            const res = await raiInterface.researchSummaryPublishAndCancel({ ArticleId: id });
-            if (res.Ret === 200) {
-              this.$message.success(value + "成功!");
-              this.getList();
-            }
-          }
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: `已取消${value}`,
-          });
-        });
-    },
-    //文章详情
-    goDetail(row) {
-      let { href } = this.$router.resolve({ name: "预览本周汇总", query: { ArticleId: row.ArticleId } });
-      window.open(href, "_blank");
-    },
-    //去往编辑页面
-    editReport(id) {
-      this.$router.push({
-        path: "/editThisWeek",
-        query: { id },
-      });
-    },
-    //分页
-    handleCurrentChange(page) {
-      this.page_no = page;
-      this.getList();
-    },
-    //table表头Pu/Uv自定义
-    renderHeader(h, { column, $index }) {
-      return h("div", { attrs: { style: "padding:0;" } }, [
-        h("span", column.label),
-        h("el-tooltip", { props: { placement: "top" } }, [
-          h("p", { slot: "content", attrs: { style: "display:block;padding:5px 0;width:420px;" } }, "pv:报告被打开的次数,每次打开都计算一次(只统计有权限用户)"),
-          h("p", { slot: "content", attrs: { style: "display:block;padding:5px 0;width:420px;" } }, "uv:访问报告的人数,每篇报告同一个人访问只计算一次(只统计有权限用户)"),
-          h("el-button", { props: { icon: "el-icon-info" }, attrs: { style: "border:none;background:none" } }, ""),
-        ]),
-      ]);
-    },
-    emailGroup(row) {
-      this.$confirm("确定要对正式/试用客户群发该报告吗?", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(async () => {
-          const res = await raiInterface.researchSummarySendMail({
-            ArticleId: row.ArticleId,
-          });
-          if (res.Ret === 200) {
-            this.$message.success("发送成功");
-          }
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: `已取消`,
-          });
-        });
-    },
-  },
-  /* 页面进入前是否清除参数 */
-  beforeRouteEnter(to, from, next) {
-    if (from.path != "/editThisWeek") {
-      sessionStorage.removeItem("theLastWeek");
-    }
-    next();
-  },
-  /* 页面跳转前记录参数 */
-  beforeRouteLeave(to, from, next) {
-    let backData = {
-      page_no: this.page_no,
-      status: this.status, //状态
-      issueTime: this.issueTime, //时间
-    };
-    sessionStorage.setItem("theLastWeek", JSON.stringify(backData));
-    next();
-  },
-};
-</script>
-<style scoped lang="scss">
-.container-the-last-week {
-  .top-box {
-    display: flex;
-    justify-content: space-between;
-    height: 40px;
-    margin-bottom: 30px;
-    .top-container {
-      .el-select {
-        margin-right: 20px;
-      }
-    }
-    .el-button {
-      padding: 0 30px;
-      height: 40px;
-    }
-  }
-  .mx-datepicker {
-    width: 220px !important;
-    margin-right: 25px;
-  }
-  .pv-uv-download {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    img {
-      width: 14px;
-      height: 14px;
-      margin-left: 10px;
-    }
-  }
-}
-</style>

+ 0 - 477
src/views/rai_manage/specialResearch/addResearch.vue

@@ -1,477 +0,0 @@
-<template>
-  <div class="container add-research">
-    <el-card>
-      <el-form :model="ruleForm" :rules="rules" ref="ruleFormList" label-width="100px" class="demo-ruleForm">
-        <el-form-item label="所属行业:" prop="industry">
-          <el-select placeholder="请选择行业" style="width: 396px" clearable v-model="ruleForm.industry" @change="changeHandel">
-            <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.PermissionName" :value="item.PermissionName"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="调研主题:" prop="theme">
-          <el-input style="width: 396px" v-model="ruleForm.theme" placeholder="请输入调研主题"></el-input>
-        </el-form-item>
-        <el-form-item label="预期时间:" prop="date">
-          <el-input v-model="ruleForm.date" style="width: 396px" placeholder="请输入预期活动时间"></el-input>
-        </el-form-item>
-        <el-form-item label="调研形式:" prop="modality">
-          <el-radio-group v-model="ruleForm.modality">
-            <el-radio v-for="item in modalityRadio" :key="item.id" :label="item.id">{{ item.name }}</el-radio>
-          </el-radio-group>
-          <el-input v-model="ruleForm.city" v-if="ruleForm.modality == 2" style="width: 248px; margin-left: 10px" placeholder="请输入调研城市,多个城市以','隔开"></el-input>
-        </el-form-item>
-        <el-form-item label="主题标签:">
-          <div style="display: flex; align-items: center; flex-wrap: wrap">
-            <el-form-item prop="property">
-              <el-cascader
-                key="multipleTrue"
-                style="margin: 0 15px 10px 0"
-                v-model="ruleForm.property"
-                :disabled="selectDisabled"
-                @change="propertyChange"
-                placeholder="请选择产业名称"
-                :show-all-levels="false"
-                :options="industryArr"
-                :props="{ ...defaultProps, multiple: true }"
-                filterable
-              >
-              </el-cascader>
-            </el-form-item>
-            <el-form-item>
-              <el-select style="margin: 0 15px 10px 0" v-model="ruleForm.mark" :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>
-            </el-form-item>
-            <div v-for="(item, index) in addSubjectData" :key="index" style="display: inline-block">
-              <el-input style="width: 220px; margin: 0 5px 10px 0" v-model="item.subjectVal" placeholder="请输入标的名称" type="text"> </el-input>
-              <img @click="deleteSubject(item, index)" style="width: 18px; margin-right: 20px; vertical-align: middle" src="~@/assets/img/icons/delete-Item.png" />
-            </div>
-            <el-tooltip class="item" effect="dark" content="添加标的" placement="top-start">
-              <img @click="addLabelClick" class="editsty" src="~@/assets/img/set_m/add_ico.png" style="margin: 0 10px 10px" />
-            </el-tooltip>
-          </div>
-          <div style="display: flex; align-items: center; margin-top: 10px">
-            <el-checkbox v-model="ruleForm.isMark">小程序内显示标的名称</el-checkbox>
-            <el-checkbox style="margin-left: 10px" v-model="radioTemporary">临时标签</el-checkbox>
-            <el-input style="width: 300px; margin: 0 10px" v-model="valTemporary" @focus="radioTemporary = true" placeholder="请输入标签名称" type="text"></el-input>
-            <div class="editsty" @click="dialogVisibleSubject = true">查询标的</div>
-          </div>
-        </el-form-item>
-        <el-form-item label="活动可见:" prop="checkedCities">
-          <div style="display: flex">
-            <span style="width: 70px" class="text-right"> 套餐类型: </span>
-            <el-checkbox :indeterminate="isIndeterminate" v-model="ruleForm.checkAll" @change="handleCheckAllChange" :disabled="checkAllIs" style="margin-right: 30px">全选</el-checkbox>
-            <el-checkbox-group v-model="ruleForm.checkedCities" @change="handleCheckedCitiesChange">
-              <el-checkbox v-for="item in cities" :label="item.CustomerTypeId" :key="item.CustomerTypeId">
-                {{ item.CustomerName }}
-                <el-tooltip :content="item.ExplainSpecial" placement="top-start" v-if="item.ExplainSpecial">
-                  <i class="el-icon-info" />
-                </el-tooltip>
-              </el-checkbox>
-            </el-checkbox-group>
-          </div>
-        </el-form-item>
-        <el-form-item label="行程安排:" prop="Poster">
-          <el-upload
-            :action="baseApi + '/resource/image/upload'"
-            list-type="picture-card"
-            :class="{ disabled: uploadDisabled }"
-            :on-preview="handlePictureCardPreview"
-            :on-success="handleUploadPosterSuccess"
-            :on-remove="handlePosterRemove"
-            :file-list="ruleForm.Poster"
-          >
-            <i class="el-icon-plus"></i>
-          </el-upload>
-          <el-dialog customClass="custom-addPoster" :visible.sync="dialogVisible" :modal-append-to-body="false">
-            <div class="addPoster-img">
-              <img width="100%" :src="dialogImageUrl" />
-            </div>
-          </el-dialog>
-        </el-form-item>
-        <div style="text-align: center; margin-top: 30px">
-          <el-button type="primary" @click="submitForm('保存')">保存</el-button>
-          <el-button type="primary" v-if="publishStatus" @click="submitForm('发布')">发布</el-button>
-          <el-button @click="cancelBtn">取消</el-button>
-        </div>
-      </el-form>
-    </el-card>
-    <el-dialog width="500px" v-dialogDrag :close-on-click-modal="false" :modal-append-to-body="false" center title="查询标的" :visible.sync="dialogVisibleSubject" :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>
-  </div>
-</template>
-
-<script>
-import { raiInterface, raiSpecial } from "@/api/api.js";
-
-export default {
-  name: "",
-  components: {},
-  props: {},
-  data() {
-    return {
-      baseApi: process.env.process.env.VUE_APP_BASE_API,
-      ruleForm: {
-        theme: "", //主题
-        industry: "", //行业
-        date: "", //时间
-        property: [], //产业
-        mark: [], //标的
-        checkAll: true, ////套餐类型
-        checkedCities: [], //套餐类型
-        Poster: [],
-        modality: "", //调研形式
-        city: "", //城市
-        isMark: false, //小程序内显示标的名称
-      },
-      rules: {
-        industry: [{ required: true, message: "请选择行业", trigger: "change" }],
-        theme: [{ required: true, message: "请输入调研主题", trigger: "blur" }],
-        date: [{ required: true, message: "请输入预期活动时间", trigger: "blur" }],
-        checkedCities: [{ required: true, message: "请选择套餐类型", trigger: "change" }],
-        property: [{ required: true, message: "请选择产业名称", trigger: "change" }],
-        modality: [{ required: true, message: "请选择调研形式", trigger: "change" }],
-        Poster: [{ required: true, message: "请上传行程", trigger: "change" }],
-      },
-      dialogImageUrl: "",
-      dialogVisible: false,
-      chartPermissionList: [],
-      defaultProps: {
-        label: "PermissionName",
-        children: "List",
-        value: "ChartPermissionId",
-      },
-      markOptions: [],
-      industryArr: [],
-      radioTemporary: false, //临时标签
-      valTemporary: "", //标签名称
-      cities: [],
-      isIndeterminate: false,
-      dialogVisibleSubject: false,
-      addSubjectName: "",
-      addSubjectOptions: "",
-      nameSubjectOptions: [],
-      isShowSubject: false,
-      ListSubject: [],
-      checkedCitiesTwo: "",
-      modalityRadio: [
-        { name: "线上", id: 1 },
-        { name: "线下", id: 2 },
-      ],
-      publishStatus: true,
-      addSubjectData: [],
-    };
-  },
-  computed: {
-    uploadDisabled: function () {
-      return this.ruleForm.Poster.length > 0;
-    },
-  },
-  watch: {
-    radioTemporary() {
-      if (this.radioTemporary) {
-        this.selectDisabled = true;
-      } else {
-        this.valTemporary = "";
-        this.selectDisabled = false;
-      }
-    },
-    "ruleForm.modality": {
-      handler(newval) {
-        if (newval == 1) {
-          this.ruleForm.city = "";
-        }
-      },
-      deep: true,
-    },
-  },
-  created() {},
-  mounted() {
-    this.customerTypelist();
-    this.chartPermission();
-    this.getIndustry();
-    if (this.$route.query.id) {
-      this.themeDetails(this.$route.query.id);
-    }
-    if (this.$route.query.isShow == 1) {
-      this.publishStatus = false;
-    }
-  },
-  methods: {
-    //获取行业
-    chartPermission() {
-      raiInterface.getNoTacticsfirst().then((res) => {
-        if (res.Ret === 200) {
-          this.chartPermissionList = res.Data.List;
-        }
-      });
-    },
-    /* 获取全部的行业 */
-    getIndustry() {
-      raiInterface.getListIndustrial().then((res) => {
-        if (res.Ret === 200) {
-          this.industryArr = res.Data.List || [];
-        }
-      });
-    },
-    //点击添加标的的下拉选择框
-    markSelectFocus() {
-      if (!this.ruleForm.property.length) {
-        this.$message.error("请先选择产业");
-      } else {
-        let arr = [];
-        arr = this.ruleForm.property.map((item) => {
-          return item[1];
-        });
-        raiInterface
-          .getindustrialSubjectlistIds({
-            IndustrialManagementIdStr: arr.join(","),
-          })
-          .then((res) => {
-            if (res.Ret === 200) {
-              this.markOptions = res.Data.List || [];
-            }
-          });
-      }
-    },
-    //获取多选的客户列表
-    customerTypelist() {
-      raiInterface.customerTypelist({ IsZxdy: true }).then((res) => {
-        if (res.Ret === 200) {
-          this.ruleForm.checkedCities = res.Data.List && res.Data.List.map((item) => item.CustomerTypeId);
-          this.cities = res.Data.List;
-        }
-      });
-    },
-    // 上传成功回调
-    handleUploadPosterSuccess(response, file, fileList) {
-      this.ruleForm.Poster = fileList.map((item) => {
-        return { name: item.response.Data.ResourceName, ...item };
-      });
-    },
-    // 删除上传的
-    handlePosterRemove(file, fileList) {
-      this.ruleForm.Poster = fileList;
-    },
-    //预览查看
-    handlePictureCardPreview(file) {
-      this.dialogImageUrl = file.url;
-      this.dialogVisible = true;
-    },
-    //全选框
-    handleCheckAllChange(val) {
-      if (val) {
-        let newCodeList = this.cities.map((item) => item.CustomerTypeId);
-        this.ruleForm.checkedCities = newCodeList;
-      } else {
-        this.ruleForm.checkedCities = [];
-      }
-      this.checkedCitiesTwo = this.ruleForm.checkedCities.join(",");
-      this.isIndeterminate = false;
-    },
-    //全选框
-    handleCheckedCitiesChange(value) {
-      let checkedCount = value.length;
-      this.ruleForm.checkAll = checkedCount === this.cities.length;
-      this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
-    },
-    //弹框的删除标的
-    async remoteMethod(query) {
-      if (query !== "") {
-        const res = await raiInterface.industrialSubjectSearch({
-          KeyWord: query,
-        });
-        if (res.Ret === 200) {
-          this.addSubjectOptions = res.Data.List || [];
-        }
-      }
-    },
-    //弹框的表的 change 事件
-    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 = [];
-      }
-    },
-    //获取调研主题详情
-    async themeDetails(id) {
-      const res = await raiSpecial.specialDetail({ ActivityId: id });
-      if (res.Ret === 200) {
-        let { Data } = res;
-        let checkedCount = Data.CustomerTypeIds ? res.Data.CustomerTypeIds.split(",").length : "";
-        let checkAll = checkedCount === this.cities.length;
-        this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
-        this.ruleForm = {
-          theme: Data.ResearchTheme, //主题
-          industry: Data.ChartPermissionName, //行业
-          date: Data.ActivityTimeText, //时间
-          property: Data.ListIndustrial ? Data.ListIndustrial.map((item) => [item.ChartPermissionId, item.IndustrialManagementId]) : [], //产业
-          mark: Data.ListSubject ? Data.ListSubject.map((item) => item.IndustrialSubjectId) : [], //标的
-          checkAll, ////套餐类型
-          checkedCities: Data.CustomerTypeIds.split(",").map((item) => Number(item)), //套餐类型
-          Poster: [{ name: "xxx.jpeg", url: Data.TripImgLink }],
-          modality: Data.SpecialType,
-          city: Data.City,
-          isMark: Data.IsShowSubjectName == 1 ? true : false,
-        };
-        this.valTemporary = Data.TemporaryLabel;
-        this.radioTemporary = this.valTemporary ? true : false;
-        Data.TemporarySubject &&
-          Data.TemporarySubject.split(",").forEach((item) => {
-            this.addSubjectData.push({ subjectVal: item });
-          });
-        if (this.ruleForm.mark.length) {
-          this.markSelectFocus();
-        }
-      }
-    },
-    handleCloseSubject() {
-      this.nameSubjectOptions = [];
-      this.addSubjectName = "";
-      this.addSubjectOptions = [];
-      this.dialogVisibleSubject = false;
-    },
-    //保持或者发布
-    submitForm(type) {
-      if (this.selectDisabled) {
-        if (!this.valTemporary) return this.$message.error("请输入临时标签");
-        let validateFieldList = [];
-        this.$refs.ruleFormList.validateField(["industry", "theme", "date", "checkedCities", "Poster", "modality"], (valid) => {
-          validateFieldList.push(valid);
-        });
-        if (this.ruleForm.modality == 2 && !this.ruleForm.city) {
-          return this.$message.error("请输入调研城市");
-        }
-        let isPost = validateFieldList.every((item) => item === "");
-        if (isPost) {
-          this.postPublish(type);
-        }
-      } else {
-        this.$refs.ruleFormList.validate((valid) => {
-          if (valid) {
-            if (this.ruleForm.modality == 2 && !this.ruleForm.city) {
-              return this.$message.error("请输入调研城市");
-            }
-            this.postPublish(type);
-          } else {
-            return false;
-          }
-        });
-      }
-    },
-    async postPublish(type) {
-      let arr = this.ruleForm.property.map((item) => {
-        return item[1];
-      });
-      let PosterList = this.ruleForm.Poster.map((item) => {
-        if (item.response) {
-          return item.response.Data.ResourceUrl;
-        } else {
-          return item.url;
-        }
-      });
-      let subjectData = [];
-      this.addSubjectData.forEach((item) => subjectData.push(item.subjectVal));
-      const res = await raiSpecial.specialPreserveAndPublish({
-        ActivityId: Number(this.$route.query.id) || 0,
-        ActivityTimeText: this.ruleForm.date,
-        CustomerTypeIds: this.ruleForm.checkedCities.join(","),
-        TemporaryLabel: this.valTemporary,
-        TripImgLink: PosterList.join(","),
-        IndustrialSubjectIdS: this.ruleForm.mark.join(","),
-        IndustrialManagementIdS: arr.join(","),
-        DoType: type == "发布" ? 1 : 0,
-        PermissionName: this.ruleForm.industry,
-        ResearchTheme: this.ruleForm.theme,
-        SpecialType: this.ruleForm.modality,
-        City: this.ruleForm.city,
-        IsShowSubjectName: this.ruleForm.isMark ? 1 : 0,
-        TemporarySubject: subjectData.join(","),
-      });
-      if (res.Ret === 200) {
-        this.$message.success(type + "成功");
-        this.$router.back();
-      }
-    },
-    //点击取消的事件
-    cancelBtn() {
-      this.$router.back();
-    },
-    //点击添加标的
-    addLabelClick() {
-      this.addSubjectData.push({ subjectVal: "" });
-    },
-    //删除新增的主题标签
-    deleteSubject(index, item) {
-      this.addSubjectData.splice(index, 1);
-    },
-  },
-};
-</script>
-<style lang="scss">
-.el-form-item__label:before {
-  display: none;
-}
-.el-upload {
-  width: 100px;
-  height: 100px;
-  line-height: 100px;
-}
-.disabled .el-upload--picture-card {
-  display: none;
-}
-.custom-addPoster {
-  background-color: rgba(0, 0, 0, 0) !important;
-  box-shadow: none !important;
-  width: 70%;
-  .el-dialog__header {
-    display: none;
-  }
-  .el-dialog__body {
-    padding: 0 !important;
-  }
-}
-</style>
-<style scoped lang="scss">
-.add-research {
-  .subject-text {
-    padding-top: 20px;
-  }
-  .addPoster-img {
-    width: 100%;
-    height: 75vh;
-    img {
-      height: 100%;
-    }
-  }
-}
-</style>

+ 0 - 578
src/views/rai_manage/specialResearch/determineTravel.vue

@@ -1,578 +0,0 @@
-<template>
-  <div class="container determine-travel">
-    <el-card>
-      <el-form :model="ruleForm" :rules="rules" ref="ruleFormList" label-width="100px" class="demo-ruleForm">
-        <el-form-item label="所属行业:" prop="industry">
-          <el-select placeholder="请选择行业" style="width: 396px" clearable v-model="ruleForm.industry" @change="changeHandel">
-            <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.PermissionName" :value="item.PermissionName"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="调研主题:" prop="theme">
-          <el-input style="width: 396px" v-model="ruleForm.theme" placeholder="请输入调研主题"></el-input>
-        </el-form-item>
-        <el-form-item label="调研天数:" prop="dayNumber">
-          <el-select placeholder="请选择调研天数" style="width: 396px" clearable v-model="ruleForm.dayNumber" @change="dayChangeHandel">
-            <el-option v-for="item in isDayNumber" :label="item" :key="item" :value="item"></el-option>
-          </el-select>
-        </el-form-item>
-        <div class="day-content">
-          <div v-for="(item, num) in isDateTime" :key="num" class="day-item">
-            <span class="day-nub"> DAY {{ num + 1 }} : </span>
-            <div>
-              <el-date-picker style="width: 186px; margin-right: 25px" v-model="item.DateYmd" type="date" value-format="yyyy-MM-dd" placeholder="请选择日期"> </el-date-picker>
-            </div>
-            <div>
-              <div v-for="(key, index) in item.DateHmsList" :key="index">
-                <el-time-picker
-                  is-range
-                  v-model="key.DateHms"
-                  :key="index + 'time'"
-                  @change="dateHmsChange(key, index, item)"
-                  format="HH:mm"
-                  value-format="HH:mm"
-                  range-separator="至"
-                  start-placeholder="开始时间"
-                  end-placeholder="结束时间"
-                  placeholder="选择时间范围"
-                  style="width: 186px; margin-bottom: 10px"
-                >
-                </el-time-picker>
-                <img v-if="index != 0" @click="deleteDayList(item, index)" style="width: 18px; margin-left: 20px; vertical-align: middle" src="~@/assets/img/icons/delete-Item.png" />
-              </div>
-              <img @click="addDayList(item, key)" class="editsty" src="~@/assets/img/set_m/add_ico.png" />
-            </div>
-          </div>
-        </div>
-        <el-form-item label="调研形式:" prop="modality">
-          <el-radio-group v-model="ruleForm.modality">
-            <el-radio v-for="item in modalityRadio" :key="item.id" :label="item.id">{{ item.name }}</el-radio>
-          </el-radio-group>
-          <el-input v-model="ruleForm.city" v-if="ruleForm.modality == 2" style="width: 248px; margin-left: 10px" placeholder="请输入调研城市,多个城市以','隔开"></el-input>
-        </el-form-item>
-        <el-form-item label="主持人:" prop="host">
-          <el-input style="width: 396px" v-model="ruleForm.host" placeholder="请输入主持人"></el-input>
-        </el-form-item>
-        <el-form-item label="纪要负责人:" prop="personCharge">
-          <el-input style="width: 396px" v-model="ruleForm.personCharge" placeholder="请输入纪要负责人"></el-input>
-        </el-form-item>
-        <el-form-item label="主题标签:">
-          <div style="display: flex; align-items: center; flex-wrap: wrap">
-            <el-form-item prop="property">
-              <el-cascader
-                key="multipleTrue"
-                style="margin: 0 15px 10px 0"
-                v-model="ruleForm.property"
-                :disabled="selectDisabled"
-                @change="propertyChange"
-                placeholder="请选择产业名称"
-                :show-all-levels="false"
-                :options="industryArr"
-                :props="{ ...defaultProps, multiple: true }"
-                filterable
-              >
-              </el-cascader>
-            </el-form-item>
-            <el-form-item>
-              <el-select style="margin: 0 15px 10px 0" v-model="ruleForm.mark" :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>
-            </el-form-item>
-            <div v-for="(item, index) in addSubjectData" :key="index" style="display: inline-block">
-              <el-input style="width: 220px; margin: 0 5px 10px 0" v-model="item.subjectVal" placeholder="请输入标的名称" type="text"> </el-input>
-              <img @click="deleteSubject(item, index)" style="width: 18px; margin-right: 20px; vertical-align: middle" src="~@/assets/img/icons/delete-Item.png" />
-            </div>
-            <el-tooltip class="item" effect="dark" content="添加标的" placement="top-start">
-              <img @click="addLabelClick" class="editsty" src="~@/assets/img/set_m/add_ico.png" style="margin: 0 10px 10px" />
-            </el-tooltip>
-          </div>
-          <div style="display: flex; align-items: center; margin-top: 10px">
-            <el-checkbox v-model="ruleForm.isMark">小程序内显示标的名称</el-checkbox>
-            <el-checkbox style="margin-left: 10px" v-model="radioTemporary">临时标签</el-checkbox>
-            <el-input style="width: 300px; margin: 0 10px" v-model="valTemporary" @focus="radioTemporary = true" placeholder="请输入标签名称" type="text"></el-input>
-            <div class="editsty" @click="dialogVisibleSubject = true">查询标的</div>
-          </div>
-        </el-form-item>
-        <el-form-item label="活动可见:" prop="checkedCities">
-          <div style="display: flex">
-            <span style="width: 70px; flex-shrink: 0" class="text-right"> 套餐类型: </span>
-            <el-checkbox :indeterminate="isIndeterminate" v-model="ruleForm.checkAll" @change="handleCheckAllChange" :disabled="checkAllIs" style="margin-right: 30px">全选</el-checkbox>
-            <el-checkbox-group v-model="ruleForm.checkedCities" @change="handleCheckedCitiesChange">
-              <el-checkbox v-for="item in cities" :label="item.CustomerTypeId" :key="item.CustomerTypeId">{{ item.CustomerName }} </el-checkbox>
-            </el-checkbox-group>
-          </div>
-        </el-form-item>
-        <el-form-item label="人数限制:" prop="restrictNum">
-          <el-input style="width: 396px" v-model="ruleForm.restrictNum" placeholder="请输入人数限制" type="text"></el-input>
-        </el-form-item>
-        <el-form-item label="行程安排:" prop="Poster">
-          <el-upload
-            :action="baseApi + '/resource/image/upload'"
-            list-type="picture-card"
-            :class="{ disabled: uploadDisabled }"
-            :on-preview="handlePictureCardPreview"
-            :on-success="handleUploadPosterSuccess"
-            :on-remove="handlePosterRemove"
-            :file-list="ruleForm.Poster"
-          >
-            <i class="el-icon-plus"></i>
-          </el-upload>
-          <el-dialog customClass="custom-addPoster" :visible.sync="dialogVisible" :modal-append-to-body="false">
-            <div class="addPoster-img">
-              <img width="100%" :src="dialogImageUrl" />
-            </div>
-          </el-dialog>
-        </el-form-item>
-        <div style="text-align: center; margin-top: 30px">
-          <el-button type="primary" @click="submitForm">确定</el-button>
-          <el-button @click="cancelBtn">取消</el-button>
-        </div>
-      </el-form>
-    </el-card>
-    <el-dialog width="500px" v-dialogDrag :close-on-click-modal="false" :modal-append-to-body="false" center title="查询标的" :visible.sync="dialogVisibleSubject" :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>
-  </div>
-</template>
-
-<script>
-import { raiInterface, raiSpecial } from "@/api/api.js";
-
-export default {
-  name: "",
-  components: {},
-  props: {},
-  data() {
-    return {
-      baseApi: process.env.process.env.VUE_APP_BASE_API,
-      ruleForm: {
-        theme: "", //主题
-        industry: "", //行业
-        property: [], //产业
-        mark: [], //标的
-        checkAll: true, ////套餐类型
-        checkedCities: [], //套餐类型
-        Poster: [],
-        modality: "", //调研形式
-        city: "", //城市
-        isMark: false, //小程序内显示标的名称
-        dayNumber: null, //调研天数
-        host: "", //主持人
-        personCharge: "", //负责人
-        restrictNum: "",
-      },
-      rules: {
-        industry: [{ required: true, message: "请选择行业", trigger: "change" }],
-        theme: [{ required: true, message: "请输入调研主题", trigger: "blur" }],
-        host: [{ required: true, message: "请输入主持人", trigger: "blur" }],
-        personCharge: [{ required: true, message: "请输入纪要负责人", trigger: "blur" }],
-        restrictNum: [{ required: true, message: "请输入人数限制", trigger: "blur" }],
-        checkedCities: [{ required: true, message: "请选择套餐类型", trigger: "change" }],
-        property: [{ required: true, message: "请选择产业名称", trigger: "change" }],
-        modality: [{ required: true, message: "请选择调研形式", trigger: "change" }],
-        dayNumber: [{ required: true, message: "请选择调研天数", trigger: "change" }],
-        Poster: [{ required: true, message: "请上传行程", trigger: "change" }],
-      },
-      dialogImageUrl: "",
-      dialogVisible: false,
-      chartPermissionList: [],
-      defaultProps: {
-        label: "PermissionName",
-        children: "List",
-        value: "ChartPermissionId",
-      },
-      markOptions: [],
-      industryArr: [],
-      radioTemporary: false, //临时标签
-      valTemporary: "", //标签名称
-      cities: [],
-      isIndeterminate: false,
-      dialogVisibleSubject: false,
-      addSubjectName: "",
-      addSubjectOptions: "",
-      nameSubjectOptions: [],
-      isShowSubject: false,
-      ListSubject: [],
-      checkedCitiesTwo: "",
-      modalityRadio: [
-        { name: "线上", id: 1 },
-        { name: "线下", id: 2 },
-      ],
-      publishStatus: true,
-      addSubjectData: [],
-      isDayNumber: [1, 2, 3, 4, 5],
-      isDateTime: [],
-    };
-  },
-  computed: {
-    uploadDisabled: function () {
-      return this.ruleForm.Poster.length > 0;
-    },
-  },
-  watch: {
-    radioTemporary() {
-      if (this.radioTemporary) {
-        this.selectDisabled = true;
-      } else {
-        this.valTemporary = "";
-        this.selectDisabled = false;
-      }
-    },
-    "ruleForm.modality": {
-      handler(newval) {
-        if (newval == 1) {
-          this.ruleForm.city = "";
-        }
-      },
-      deep: true,
-    },
-  },
-  created() {},
-  mounted() {
-    this.customerTypelist();
-    this.chartPermission();
-    this.getIndustry();
-    if (this.$route.query.id) {
-      this.themeDetails(this.$route.query.id);
-    }
-    if (this.$route.query.isShow == 1) {
-      this.publishStatus = false;
-    }
-  },
-  methods: {
-    //获取行业
-    chartPermission() {
-      raiInterface.getNoTacticsfirst().then((res) => {
-        if (res.Ret === 200) {
-          this.chartPermissionList = res.Data.List;
-        }
-      });
-    },
-    /* 获取全部的行业 */
-    getIndustry() {
-      raiInterface.getListIndustrial().then((res) => {
-        if (res.Ret === 200) {
-          this.industryArr = res.Data.List || [];
-        }
-      });
-    },
-    //点击添加标的的下拉选择框
-    markSelectFocus() {
-      if (!this.ruleForm.property.length) {
-        this.$message.error("请先选择产业");
-      } else {
-        let arr = [];
-        arr = this.ruleForm.property.map((item) => {
-          return item[1];
-        });
-        raiInterface
-          .getindustrialSubjectlistIds({
-            IndustrialManagementIdStr: arr.join(","),
-          })
-          .then((res) => {
-            if (res.Ret === 200) {
-              this.markOptions = res.Data.List || [];
-            }
-          });
-      }
-    },
-    //获取多选的客户列表
-    customerTypelist() {
-      raiInterface.customerTypelist({ IsZxdy: true }).then((res) => {
-        if (res.Ret === 200) {
-          this.ruleForm.checkedCities = res.Data.List && res.Data.List.map((item) => item.CustomerTypeId);
-          this.cities = res.Data.List;
-        }
-      });
-    },
-    // 上传成功回调
-    handleUploadPosterSuccess(response, file, fileList) {
-      this.ruleForm.Poster = fileList.map((item) => {
-        return { name: item.response.Data.ResourceName, ...item };
-      });
-    },
-    // 删除上传的
-    handlePosterRemove(file, fileList) {
-      this.ruleForm.Poster = fileList;
-    },
-    //预览查看
-    handlePictureCardPreview(file) {
-      this.dialogImageUrl = file.url;
-      this.dialogVisible = true;
-    },
-    //全选框
-    handleCheckAllChange(val) {
-      if (val) {
-        let newCodeList = this.cities.map((item) => item.CustomerTypeId);
-        this.ruleForm.checkedCities = newCodeList;
-      } else {
-        this.ruleForm.checkedCities = [];
-      }
-      this.checkedCitiesTwo = this.ruleForm.checkedCities.join(",");
-      this.isIndeterminate = false;
-    },
-    //全选框
-    handleCheckedCitiesChange(value) {
-      let checkedCount = value.length;
-      this.ruleForm.checkAll = checkedCount === this.cities.length;
-      this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
-    },
-    //弹框的删除标的
-    async remoteMethod(query) {
-      if (query !== "") {
-        const res = await raiInterface.industrialSubjectSearch({
-          KeyWord: query,
-        });
-        if (res.Ret === 200) {
-          this.addSubjectOptions = res.Data.List || [];
-        }
-      }
-    },
-    //弹框的表的 change 事件
-    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 = [];
-      }
-    },
-    //获取调研主题详情
-    async themeDetails(id) {
-      const res = await raiSpecial.specialDetail({ ActivityId: id });
-      if (res.Ret === 200) {
-        let { Data } = res;
-        let checkedCount = Data.CustomerTypeIds ? res.Data.CustomerTypeIds.split(",").length : "";
-        this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
-        let checkAll = checkedCount === this.cities.length;
-        this.ruleForm = {
-          theme: Data.ResearchTheme, //主题
-          industry: Data.ChartPermissionName, //行业
-          property: Data.ListIndustrial ? Data.ListIndustrial.map((item) => [item.ChartPermissionId, item.IndustrialManagementId]) : [], //产业
-          mark: Data.ListSubject ? Data.ListSubject.map((item) => item.IndustrialSubjectId) : [], //标的
-          checkAll, ////套餐类型
-          checkedCities: Data.CustomerTypeIds.split(",").map((item) => Number(item)), //套餐类型
-          Poster: Data.TripImgLinkFix ? [{ name: "xxx.jpeg", url: Data.TripImgLinkFix }] : [],
-          modality: Data.SpecialType,
-          city: Data.City,
-          isMark: Data.IsShowSubjectName == 1 ? true : false,
-          dayNumber: Data.Days > 0 ? Data.Days : null,
-          host: Data.Host,
-          personCharge: Data.PersonInCharge,
-          restrictNum: Data.LimitPeopleNum > 0 ? Data.LimitPeopleNum : null,
-        };
-
-        this.isDateTime = Data.DateYmdList;
-        this.valTemporary = Data.TemporaryLabel;
-        this.radioTemporary = this.valTemporary ? true : false;
-        Data.TemporarySubject &&
-          Data.TemporarySubject.split(",").forEach((item) => {
-            this.addSubjectData.push({ subjectVal: item });
-          });
-        if (this.ruleForm.mark.length) {
-          this.markSelectFocus();
-        }
-      }
-    },
-    handleCloseSubject() {
-      this.nameSubjectOptions = [];
-      this.addSubjectName = "";
-      this.addSubjectOptions = [];
-      this.dialogVisibleSubject = false;
-    },
-    //保持或者发布
-    submitForm(type) {
-      let isTimeArr = [];
-      let isDate = false;
-      this.isDateTime &&
-        this.isDateTime.forEach((item) => {
-          if (!item.DateYmd) {
-            isDate = true;
-          }
-          let isTrue = item.DateHmsList.some((key) => !key.DateHms);
-          isTimeArr.push(isTrue);
-        });
-      if (isDate || isTimeArr.includes(true)) {
-        this.$message.error("请填写调研时间");
-        return;
-      }
-      if (this.selectDisabled) {
-        if (!this.valTemporary) return this.$message.error("请输入临时标签");
-        let validateFieldList = [];
-        this.$refs.ruleFormList.validateField(["industry", "personCharge", "host", "dayNumber", "theme", "checkedCities", "Poster", "modality", "restrictNum"], (valid) => {
-          validateFieldList.push(valid);
-        });
-        if (this.ruleForm.modality == 2 && !this.ruleForm.city) {
-          return this.$message.error("请输入调研城市");
-        }
-        let isPost = validateFieldList.every((item) => item === "");
-        if (isPost) {
-          this.postPublish(type);
-        }
-      } else {
-        this.$refs.ruleFormList.validate((valid) => {
-          if (valid) {
-            if (this.ruleForm.modality == 2 && !this.ruleForm.city) {
-              return this.$message.error("请输入调研城市");
-            }
-            this.postPublish(type);
-          } else {
-            return false;
-          }
-        });
-      }
-    },
-    async postPublish(type) {
-      let arr = this.ruleForm.property.map((item) => {
-        return item[1];
-      });
-      let PosterList = this.ruleForm.Poster.map((item) => {
-        if (item.response) {
-          return item.response.Data.ResourceUrl;
-        } else {
-          return item.url;
-        }
-      });
-      let subjectData = [];
-      this.addSubjectData.forEach((item) => subjectData.push(item.subjectVal));
-      const res = await raiSpecial.postSpecialTripPreserveAndPublish({
-        ActivityId: Number(this.$route.query.id) || 0,
-        CustomerTypeIds: this.ruleForm.checkedCities.join(","),
-        TemporaryLabel: this.valTemporary,
-        TripImgLinkFix: PosterList.join(","),
-        IndustrialSubjectIdS: this.ruleForm.mark.join(","),
-        IndustrialManagementIdS: arr.join(","),
-        PermissionName: this.ruleForm.industry,
-        ResearchTheme: this.ruleForm.theme,
-        SpecialType: this.ruleForm.modality,
-        City: this.ruleForm.city,
-        IsShowSubjectName: this.ruleForm.isMark ? 1 : 0,
-        TemporarySubject: subjectData.join(","),
-        Days: this.ruleForm.dayNumber,
-        DateYmdList: this.isDateTime,
-        Host: this.ruleForm.host,
-        PersonInCharge: this.ruleForm.personCharge,
-        LimitPeopleNum: +this.ruleForm.restrictNum,
-      });
-      if (res.Ret === 200) {
-        this.$message.success("操作成功");
-        this.$router.back();
-      }
-    },
-    //点击取消的事件
-    cancelBtn() {
-      this.$router.back();
-    },
-    //点击添加标的
-    addLabelClick() {
-      this.addSubjectData.push({ subjectVal: "" });
-    },
-    //删除新增的主题标签
-    deleteSubject(index, item) {
-      this.addSubjectData.splice(index, 1);
-    },
-    dayChangeHandel() {
-      let arr = [];
-      if (this.ruleForm.dayNumber) {
-        for (let i = 0; i < this.ruleForm.dayNumber; i++)
-          arr.push({
-            DateYmd: "",
-            DateHmsList: [{ DateHms: "" }],
-          });
-      }
-      this.isDateTime = arr;
-    },
-    addDayList(item, key) {
-      item.DateHmsList.push({ DateHms: "" });
-    },
-    deleteDayList(item, index) {
-      item.DateHmsList.splice(index, 1);
-    },
-    dateHmsChange(key, index, item) {
-      if (index > 0) {
-        let onwTime = item.DateHmsList[index - 1].DateHms[1].replace(":", "");
-        let twoTime = key.DateHms && key.DateHms[0].replace(":", "");
-        if (onwTime && twoTime && onwTime >= twoTime) {
-          this.$message.error("下一个时间段必须晚于上一个时间段!");
-          key.DateHms = "";
-        }
-      }
-    },
-  },
-};
-</script>
-<style lang="scss">
-.el-form-item__label:before {
-  display: none;
-}
-.el-upload {
-  width: 100px;
-  height: 100px;
-  line-height: 100px;
-}
-.disabled .el-upload--picture-card {
-  display: none;
-}
-.custom-addPoster {
-  background-color: rgba(0, 0, 0, 0) !important;
-  box-shadow: none !important;
-  width: 70%;
-  .el-dialog__header {
-    display: none;
-  }
-  .el-dialog__body {
-    padding: 0 !important;
-  }
-}
-</style>
-<style scoped lang="scss">
-.determine-travel {
-  .subject-text {
-    padding-top: 20px;
-  }
-  .addPoster-img {
-    width: 100%;
-    height: 75vh;
-    img {
-      height: 100%;
-    }
-  }
-  .day-content {
-    padding-left: 30px;
-    .day-item {
-      margin-bottom: 10px;
-      display: flex;
-      .day-nub {
-        margin-right: 23px;
-        line-height: 40px;
-      }
-    }
-  }
-}
-</style>

+ 0 - 157
src/views/rai_manage/specialResearch/interestAllPreview.vue

@@ -1,157 +0,0 @@
-<template>
-  <div class="container-interest">
-    <el-card>
-      <el-table :data="dataList" style="width: 100%; margin-top: 20px" border>
-        <el-table-column width="" prop="CompanyName" align="center" label="客户名称"> </el-table-column>
-        <el-table-column width="100" prop="SellerName" align="center" label="所属销售"> </el-table-column>
-        <el-table-column min-width="100" prop="RealName" align="center" label="姓名"> </el-table-column>
-        <el-table-column prop="ResearchTheme" align="center" label="调研主题">
-          <template slot-scope="{ row }">
-            <span class="editsty" @click="themeDetails(row.ActivityId)">{{ row.ResearchTheme }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column width="80" prop="ChartPermissionName" align="center" label="行业"> </el-table-column>
-        <el-table-column prop="Label" align="center" label="标签"> </el-table-column>
-        <el-table-column width="180" prop="PublishDate" align="center" label="发布时间"> </el-table-column>
-        <el-table-column width="180" prop="CreateTime" align="center" label="反馈时间"> </el-table-column>
-      </el-table>
-
-      <!-- 分页 -->
-      <el-col :span="24" class="toolbar">
-        <m-page :total="total" :page_no="page_no" :pageSize="10" @handleCurrentChange="handleCurrentChange" />
-      </el-col>
-    </el-card>
-    <el-dialog width="1000px" v-dialogDrag :modal-append-to-body="false" center :title="dialogTitle" :visible.sync="dialogVisibleActivity" :before-close="handleCloseSubject">
-      <div class="rai-detail-wrap" v-if="dialogTitle == '活动详情'">
-        <div class="activity-top">
-          {{ activityDetail.ResearchTheme }}
-        </div>
-        <p>所属行业: {{ activityDetail.ChartPermissionName }}</p>
-        <p>预期时间: {{ activityDetail.ActivityTimeText }}</p>
-        <p>调研形式: {{ activityDetail.SpecialType == 1 ? "线上" : "线下" }} {{ activityDetail.SpecialType == 2 && activityDetail.City ? "(" + activityDetail.City + ")" : "" }}</p>
-        <template v-if="!activityDetail.IndustrialName && !activityDetail.IndustrialSubjectName">
-          <p>相关主题: {{ activityDetail.Label }}</p>
-        </template>
-        <template v-else>
-          <p>产业名称: {{ activityDetail.IndustrialName }}</p>
-          <p>相关公司: {{ activityDetail.IndustrialSubjectName }}</p>
-        </template>
-        <div class="text-box">
-          <div style="flex-shrink: 0">活动可见:</div>
-          <div>
-            <span>{{ activityDetail.CustomerName }}</span>
-            <div>
-              <span v-if="activityDetail.Scale.includes('3')"> 100亿以上</span>
-              <span v-if="activityDetail.Scale.includes('2')"> 150~100亿</span>
-            </div>
-          </div>
-        </div>
-        <el-image style="width: 0px; height: 0px" :src="activityDetail.TripImgLink" id="TripImgLink" :preview-src-list="previewList"></el-image>
-        <div class="arrange" @click.stop="imgLink">
-          查看行程安排
-          <i class="el-icon-d-arrow-right"></i>
-        </div>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import mPage from "@/components/mPage.vue";
-import { raiInterface, raiSpecial } from "@/api/api.js";
-
-export default {
-  name: "",
-  components: { mPage },
-  props: {},
-  data() {
-    return {
-      dataList: [],
-      page_no: 1,
-      total: "",
-      pageSize: 10,
-      previewList: [],
-      activityDetail: {},
-      dialogVisibleActivity: false,
-      dialogTitle: "",
-    };
-  },
-  computed: {},
-  watch: {},
-  created() {},
-  mounted() {
-    this.getList();
-  },
-  methods: {
-    //获取数据
-    async getList() {
-      const res = await raiSpecial.getSpecialSpecialList({
-        PageSize: this.pageSize,
-        CurrentIndex: this.page_no,
-      });
-      if (res.Ret === 200) {
-        this.dataList = res.Data.List;
-        this.total = res.Data.Paging.Totals;
-      }
-    },
-    //分页
-    handleCurrentChange(page) {
-      this.page_no = page;
-      this.getList();
-    },
-    //获取调研主题详情
-    async themeDetails(id) {
-      const res = await raiSpecial.specialDetail({ ActivityId: id });
-      if (res.Ret === 200) {
-        this.previewList = [];
-        this.activityDetail = res.Data;
-        this.dialogVisibleActivity = true;
-        this.dialogTitle = "活动详情";
-        this.previewList.push(this.activityDetail.TripImgLink);
-      }
-    },
-    //预览图片
-    imgLink() {
-      $("#TripImgLink").click();
-    },
-    //弹框的关闭
-    handleCloseSubject() {
-      this.dialogVisibleActivity = false;
-    },
-  },
-};
-</script>
-<style scoped lang="scss">
-.container-interest {
-  .rai-detail-wrap {
-    .activity-top {
-      width: 100%;
-      height: 55px;
-      background: #f4f4f4;
-      border-radius: 4px 4px 4px 4px;
-      opacity: 1;
-      line-height: 55px;
-      padding-left: 23px;
-      margin-bottom: 30px;
-    }
-    p {
-      margin-bottom: 20px;
-      padding-left: 10px;
-    }
-    .arrange {
-      margin: 50px auto 20px;
-      cursor: pointer;
-      text-align: center;
-      color: #3385ff;
-    }
-    .text-box {
-      display: flex;
-      padding-left: 10px;
-      span {
-        display: block;
-        margin-bottom: 10px;
-      }
-    }
-  }
-}
-</style>

+ 0 - 190
src/views/rai_manage/specialResearch/particularsAll.vue

@@ -1,190 +0,0 @@
-<template>
-  <div class="container-particulars">
-    <el-dialog
-      v-dialogDrag
-      :close-on-click-modal="false"
-      :modal-append-to-body="false"
-      center
-      :append-to-body="true"
-      :visible.sync="particularsDialogVisible"
-      :before-close="okBtn"
-      :width="subscribe == '报名失败详情' ? '1000px' : '1100px'"
-    >
-      <div slot="title" style="display: flex; align-items: center">
-        <img :src="$icons.warntop" style="color: #fff; width: 16px; height: 16px; margin-right: 5px" />
-        <span style="font-size: 16px">报名人数</span>
-      </div>
-      <div class="content-box">
-        <div class="top-text" style="margin-bottom: 20px">
-          <template v-if="memberType == 'Admin'"> 共有{{ total }}人报名</template>
-          <template v-else-if="memberType == 'Sale'"> 共有{{ total }}人报名,其中本人名下客户{{ myTotal }}人 </template>
-          <template v-else> 共有{{ total }}人报名,其中本组名下客户{{ myTotal }}人 </template>
-        </div>
-        <div class="table-box">
-          <el-table height="400px" :data="dataList" border style="width: 100%">
-            <el-table-column min-width="80" align="center" prop="RealName" key="name" label="姓名"></el-table-column>
-            <el-table-column v-if="dialogVisibleList.SpecialType == 1" min-width="115" align="center" prop="Mobile" key="mobile" label="手机号"></el-table-column>
-            <el-table-column v-if="dialogVisibleList.SpecialType == 1" min-width="140" align="center" key="outboundMobile" label="外呼号码">
-              <template slot-scope="scope">
-                <span>{{ scope.row.OutboundMobile }}</span>
-                <img @click="modification(scope.row.Id, scope.row.OutboundMobile)" :src="$icons.amend" style="color: #fff; width: 12px; height: 12px; margin-left: 5px; vertical-align: middle" />
-              </template>
-            </el-table-column>
-            <el-table-column min-width="135" align="center" prop="CompanyName" key="company" label="公司名称"></el-table-column>
-            <el-table-column min-width="110" align="center" prop="SellerName" key="seller" label="所属销售"></el-table-column>
-            <el-table-column min-width="160" align="center" prop="CreateTime" key="seller" label="报名时间"></el-table-column>
-            <el-table-column min-width="135" align="center" prop="" key="cz1" label="操作">
-              <template slot-scope="scope">
-                <span class="editsty" @click="cancelApply(scope.row)">取消报名</span>
-              </template>
-            </el-table-column>
-          </el-table>
-        </div>
-      </div>
-      <div slot="footer" class="dialog-footer">
-        <div style="margin: 10px 0">
-          <span style="margin-left: 30px">
-            <a :href="exportUser" download>
-              <el-button type="primary">下载名单</el-button>
-            </a>
-          </span>
-          <el-button style="margin-left: 30px" type="primary" plain @click="okBtn">知道了</el-button>
-        </div>
-      </div>
-    </el-dialog>
-    <edit-mobile :editMobileDialogVisible.sync="editMobileDialogVisible" :editMobileId="editMobileId" :outboundMobile="outboundMobile" isType="专项" />
-  </div>
-</template>
-
-<script>
-import { raiInterface, raiSpecial } from "@/api/api.js";
-import EditMobile from "../components/editMobile.vue";
-export default {
-  name: "",
-  components: { EditMobile },
-  props: {
-    particularsDialogVisible: {
-      type: Boolean,
-      default: false,
-    },
-    subscribe: {
-      type: String,
-      default: "报名详情",
-    },
-    dialogVisibleList: {
-      type: Object,
-    },
-  },
-  data() {
-    return {
-      dataList: [], //表格
-      total: "",
-      myTotal: "",
-      memberType: "",
-      editMobileDialogVisible: false, //
-      editMobileId: 0, //
-      outboundMobile: "",
-      isFullNum: false, //报名人数是否已满
-    };
-  },
-  computed: {
-    exportUser() {
-      let param_token = localStorage.getItem("auth") || "";
-      return process.env.process.env.VUE_APP_BASE_API + "/cygx/special/tripList?ActivityId=" + this.dialogVisibleList.ActivityId + "&IsExport=" + true + "&" + param_token;
-    },
-  },
-  watch: {
-    particularsDialogVisible: {
-      handler(newval) {
-        if (newval) {
-          this.getsDataList();
-        }
-      },
-    },
-  },
-  created() {},
-  mounted() {},
-  methods: {
-    okBtn() {
-      this.$parent.particularsDialogVisible = false;
-    },
-    //列表表格
-    getsDataList() {
-      raiSpecial
-        .getSpecialtripList({
-          ActivityId: this.dialogVisibleList.ActivityId,
-        })
-        .then((res) => {
-          if (res.Ret !== 200) return;
-          this.$nextTick(() => {
-            this.dataList = res.Data.List;
-            this.total = res.Data.Total;
-            this.memberType = res.Data.MemberType;
-            this.myTotal = res.Data.myTotal;
-          });
-        });
-    },
-
-    modification(id, value) {
-      this.editMobileDialogVisible = true;
-      this.editMobileId = id;
-      this.outboundMobile = value;
-    },
-    //取消报名
-    cancelApply(item) {
-      this.$confirm(`确定要取消该用户的报名吗?`, `取消报名`, {
-        confirmButtonText: "是",
-        cancelButtonText: "否",
-        type: "warning",
-      })
-        .then(async () => {
-          const res = await raiSpecial.cancelSpecialtripList({
-            UserId: item.UserId,
-            ActivityId: item.ActivityId,
-          });
-          if (res.Ret !== 200) return;
-          this.$message({
-            type: "success",
-            message: `取消报名成功!`,
-          });
-          this.getsDataList();
-          this.$parent.getsDataList();
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: "已取消操作",
-          });
-        });
-    },
-  },
-};
-</script>
-<style lang="scss">
-.container-particulars {
-  .table-box {
-    margin: 20px auto;
-  }
-  .top-text {
-    display: flex;
-    align-items: center;
-    div {
-      margin-left: 20px;
-    }
-  }
-  .el-radio {
-    margin-right: 15px !important;
-  }
-  .el-switch__label {
-    color: #606266;
-    font-size: 14px;
-    font-weight: 400;
-  }
-  .is-active {
-    color: #409eff !important;
-  }
-  .el-radio__label {
-    font-weight: 400;
-  }
-}
-</style>

+ 0 - 494
src/views/rai_manage/specialResearch/specialResearch.vue

@@ -1,494 +0,0 @@
-<template>
-  <div class="container special-research">
-    <div class="top-wrap">
-      <div class="tabs-content">
-        <span @click="tabsHandle(item)" :class="['item', tabsActive == item.id && 'active-item']" v-for="item in tabsTop" :key="item.id">{{ item.name }}</span>
-      </div>
-    </div>
-    <div class="top-wrap">
-      <div>
-        <el-button v-if="tabsActive == 2" type="primary" style="margin-right: 20px" @click="addapply">新增报名</el-button>
-        <el-select placeholder="请选择行业" clearable v-model="industryValue" @change="changeHandel" style="margin: 0 20px 20px 0">
-          <el-option v-for="item in chartPermissionList" :label="item.PermissionName" :key="item.ChartPermissionId" :value="item.ChartPermissionId"></el-option>
-        </el-select>
-        <el-select placeholder="发布状态" clearable v-model="status" @change="changeHandel" style="margin: 0 30px 20px 0">
-          <el-option v-for="item in options" :key="item.id" :label="item.name" :value="item.id"></el-option>
-        </el-select>
-        <template v-if="tabsActive == 1">
-          <el-button style="margin-bottom: 20px" type="primary" @click="$router.push('/addResearch')">添加活动</el-button>
-          <el-button style="margin-bottom: 20px" type="primary" @click="interestHandler">客户兴趣总览</el-button>
-        </template>
-      </div>
-      <div style="width: 520px">
-        <el-input v-model="themeVal" @input="themeInput" placeholder="请输入主题名称" clearable>
-          <i slot="prefix" class="el-input__icon el-icon-search"></i>
-        </el-input>
-      </div>
-    </div>
-    <el-card>
-      <el-table @selection-change="selectChange" :data="dataList" style="width: 100%; margin-top: 20px" border>
-        <el-table-column v-if="tabsActive == 2" align="center" type="selection" width="55"> </el-table-column>
-        <el-table-column v-for="item in tableColums" :key="item.label" :label="item.label" :width="item.widthsty" :min-width="item.minwidthsty" align="center">
-          <template slot-scope="{ row }">
-            <span @click="handleRowClick(row, item.key)" :style="handleRowStyle(item.key)">{{ handleRowContent(row, item.key) }}</span>
-          </template>
-        </el-table-column>
-        <el-table-column width="230" prop="" align="center" label="操作">
-          <template slot-scope="{ row }">
-            <div v-if="tabsActive == 1">
-              <template v-if="row.PublishStatus !== 4">
-                <span class="editsty" v-if="row.PublishStatus == 1" @click="applyHandleAllOperate(row.ActivityId, '下线')">下线 &nbsp;&nbsp;</span>
-                <span class="editsty" v-if="row.PublishStatus == 3" @click="applyHandleAllOperate(row.ActivityId, '重新发布')">重新发布 &nbsp;&nbsp;</span>
-                <span v-if="row.PublishStatus == 0" class="editsty" @click="applyHandleAllOperate(row.ActivityId, '发布')">发布 &nbsp;&nbsp;</span>
-                <span class="editsty" @click="editBtn(row.ActivityId, row.PublishStatus, '')">编辑 &nbsp;&nbsp;</span>
-                <span class="editsty" v-if="row.PublishStatus == 1" @click="editBtn(row.ActivityId, row.PublishStatus, '行程')">确定行程</span>
-                <span class="deletesty" v-if="row.PublishStatus == 0" @click="applyHandleAllOperate(row.ActivityId, '删除')">删除</span>
-              </template>
-            </div>
-            <div v-else>
-              <span class="editsty" v-if="row.PublishStatus == 1 && isStart(row.ActivityTime)" @click="applyHandleAllOperate(row.ActivityId, '取消发布')">取消发布 &nbsp;&nbsp;</span>
-              <span class="editsty" v-if="row.PublishStatus !== 1" @click="applyHandleAllOperate(row.ActivityId, '重新发布')">重新发布 &nbsp;&nbsp;</span>
-              <span class="editsty" @click="editBtn(row.ActivityId, row.PublishStatus, '行程')">编辑 &nbsp;&nbsp;</span>
-              <span class="editsty" v-if="row.IsShowUpdateMeeting" @click="particularsSubmit(row.ActivityId)"> 修改到会情况 </span>
-              <span class="editsty" v-if="row.IsShowSubmitMeeting" @click="particularsSubmit(row.ActivityId)"> 提交到会情况 </span>
-              <span class="editsty" v-if="row.IsShowAttendanceDetails" @click="particulars(row.ActivityId)">&nbsp;&nbsp;到会详情</span>
-            </div>
-          </template>
-        </el-table-column>
-      </el-table>
-      <!-- 分页 -->
-      <el-col :span="24" class="toolbar">
-        <m-page :total="total" :page_no="page_no" :pageSize="10" @handleCurrentChange="handleCurrentChange" />
-      </el-col>
-    </el-card>
-    <!-- <el-dialog width="1000px" v-dialogDrag :modal-append-to-body="false" center :title="dialogTitle" :visible.sync="dialogVisibleActivity" :before-close="handleCloseSubject">
-      <div class="rai-detail-wrap" v-if="dialogTitle == '活动详情'">
-        <div class="activity-top">
-          {{ activityDetail.ResearchTheme }}
-        </div>
-        <p>所属行业: {{ activityDetail.ChartPermissionName }}</p>
-        <p v-if="tabsActive == 1">预期时间: {{ activityDetail.ActivityTimeText }}</p>
-        <p v-else>活动开始时间: {{ activityDetail.ActivityTimeTextByDay }}</p>
-        <p>调研形式: {{ activityDetail.SpecialType == 1 ? "线上" : "线下" }} {{ activityDetail.SpecialType == 2 && activityDetail.City ? "(" + activityDetail.City + ")" : "" }}</p>
-        <template v-if="!activityDetail.IndustrialName && !activityDetail.IndustrialSubjectName">
-          <p>相关主题: {{ activityDetail.Label }}</p>
-        </template>
-        <template v-else>
-          <p>产业名称: {{ activityDetail.IndustrialName }}</p>
-          <p>相关公司: {{ activityDetail.IndustrialSubjectName }}</p>
-        </template>
-        <div class="text-box">
-          <div style="flex-shrink: 0">活动可见:</div>
-          <div>
-            <span>{{ activityDetail.CustomerName }}</span>
-            <div>
-              <span v-if="activityDetail.Scale.includes('3')"> 100亿以上</span>
-              <span v-if="activityDetail.Scale.includes('2')"> 150~100亿</span>
-            </div>
-          </div>
-        </div>
-        <p v-if="activityDetail.Host">主持人: {{ activityDetail.Host }}</p>
-        <p v-if="activityDetail.Host">主持人: {{ activityDetail.PersonInCharge }}</p>
-        <el-image v-if="tabsActive == 1" style="width: 0px; height: 0px" :src="activityDetail.TripImgLink" id="TripImgLink" :preview-src-list="previewList"></el-image>
-        <el-image v-else style="width: 0px; height: 0px" :src="activityDetail.TripImgLinkFix" id="TripImgLink" :preview-src-list="previewList"></el-image>
-        <div class="arrange" @click.stop="imgLink">
-          查看行程安排
-          <i class="el-icon-d-arrow-right"></i>
-        </div>
-      </div>
-      <div v-else>
-        <el-table :data="interestData" style="width: 100%; margin: 20px 0" height="400px" border>
-          <el-table-column min-width="" prop="RealName" align="center" label="姓名"></el-table-column>
-          <el-table-column min-width="" prop="CompanyName" align="center" label="公司名称"></el-table-column>
-          <el-table-column min-width="" prop="SellerName" align="center" label="所属销售"></el-table-column>
-          <el-table-column min-width="180" prop="CreateTime" align="center" label="反馈时间"></el-table-column>
-        </el-table>
-        <div class="dialog-footer">
-          <a :href="exportInterest" download>
-            <el-button type="primary" @click="confirmSubmit">下载名单</el-button>
-          </a>
-          <el-button style="margin-left: 20px" @click="handleCloseSubject">取消</el-button>
-        </div>
-      </div>
-    </el-dialog> -->
-    <special-research-dlg :specialDetailId="specialDetailId" :dialogVisibleActivity.sync="dialogVisibleActivity" :dialogTitle="dialogTitle" :tabsActive="tabsActive" />
-    <partical-dialog :offlineId="offlineId" :dialogVisiblepartica.sync="dialogVisiblepartica" :particlaDlg="particlaDlg" :submitDialog.sync="submitDialog" />
-    <apply-dialog :addDialogVisible.sync="addDialogVisible" :selectList="selectList" :signUpAdd="signUpAdd" :addDialogType="addDialogType" />
-    <particulars-all :particularsDialogVisible.sync="particularsDialogVisible" :dialogVisibleList="dialogVisibleList" />
-  </div>
-</template>
-
-<script>
-import { raiInterface, raiSpecial } from "@/api/api.js";
-import mPage from "@/components/mPage.vue";
-import { inAdvanceOptions, tableColums, TabsTop, ConfirmOptions } from "../components/special/optionsTabs";
-import ParticalDialog from "../components/particalDialog.vue";
-import ApplyDialog from "../components/apply/applyDialog.vue";
-import ParticularsAll from "./particularsAll.vue";
-import SpecialResearchDlg from "../components/special/specialResearchDlg.vue";
-export default {
-  name: "",
-  components: { mPage, ParticalDialog, ApplyDialog, ParticularsAll, SpecialResearchDlg },
-  props: {},
-  data() {
-    return {
-      status: "",
-      industryValue: "",
-      chartPermissionList: [],
-      themeVal: "",
-      dataList: [],
-      page_no: 1,
-      total: 0,
-      dialogVisibleActivity: false,
-      dialogTitle: "",
-      activityDetail: {},
-      previewList: [],
-      interestData: [], //感兴趣人数
-      exportInterest: "",
-      tableColums: [],
-      tabsActive: 1,
-      offlineId: 0, //提交的ID
-      dialogVisiblepartica: false, //到会详情的隐现
-      particlaDlg: {
-        isSpecial: true,
-        title: "到会详情",
-      }, //提交的标题
-      submitDialog: false, //提交到会情况的隐现
-      addDialogVisible: false,
-      signUpAdd: "专项",
-      addDialogType: "新增报名",
-      selectList:'',
-      particularsDialogVisible: false,
-      dialogVisibleList: {},
-      specialDetailId: 0,
-    };
-  },
-  computed: {
-    options() {
-      return this.tabsActive == 1 ? inAdvanceOptions : ConfirmOptions;
-    },
-    tabsTop() {
-      return TabsTop;
-    },
-  },
-  created() {},
-  mounted() {
-    if (sessionStorage.getItem("specialResearchListBack")) {
-      let { tabsActive, page, status, industryValue, themeVal } = JSON.parse(sessionStorage.getItem("specialResearchListBack"));
-      this.themeVal = themeVal;
-      this.page_no = page;
-      this.tabsActive = tabsActive;
-      this.status = status;
-      this.industryValue = industryValue;
-    }
-    this.chartPermission();
-    this.getsDataList();
-    this.tableColums = tableColums(this.tabsActive);
-  },
-  methods: {
-    //点击了头部切换
-    tabsHandle(item) {
-      this.tabsActive = item.id;
-      this.tableColums = tableColums(this.tabsActive);
-      this.status = "";
-      this.page_no = 1;
-      this.getsDataList();
-    },
-    //change 变化
-    changeHandel() {
-      this.page_no = 1;
-      this.getsDataList();
-    },
-    //分页
-    handleCurrentChange(page) {
-      this.page_no = page;
-      this.getsDataList();
-    },
-    //获取表格
-    async getsDataList() {
-      const res = await raiSpecial.getSpecialList({
-        PageSize: 10,
-        CurrentIndex: this.page_no,
-        PublishStatus: this.status ? Number(this.status) : 2,
-        ChartPermissionId: this.industryValue,
-        IsTrip: this.tabsActive == 2,
-        KeyWord: this.themeVal,
-      });
-      if (res.Ret === 200) {
-        this.dataList = res.Data.List;
-        this.total = res.Data.Paging.Totals;
-      }
-    },
-    //获取行业
-    chartPermission() {
-      raiInterface.getNoTacticsfirst().then((res) => {
-        if (res.Ret === 200) {
-          this.chartPermissionList = res.Data.List;
-        }
-      });
-    },
-    //获取调研主题详情
-    async themeDetails(id) {
-      this.specialDetailId = id;
-      this.dialogVisibleActivity = true;
-      this.dialogTitle = "活动详情";
-
-      return;
-      const res = await raiSpecial.specialDetail({ ActivityId: id });
-      if (res.Ret === 200) {
-        this.previewList = [];
-        this.activityDetail = res.Data;
-        this.previewList.push(this.tabsActive == 1 ? this.activityDetail.TripImgLink : this.activityDetail.TripImgLinkFix);
-      }
-    },
-    //感兴趣人数
-    async interestDetails(id) {
-      this.specialDetailId = id;
-      this.dialogTitle = "感兴趣人数";
-      this.dialogVisibleActivity = true;
-      return;
-      const res = await raiSpecial.specialInterested({ ActivityId: id });
-      if (res.Ret === 200) {
-        this.exportInterest = `${process.env.process.env.VUE_APP_BASE_API}/cygx/special/export?${localStorage.getItem("auth") || ""}&ActivityId=${id}`;
-        this.$nextTick(() => {
-          this.interestData = res.Data.List;
-        });
-      }
-    },
-    //发布、取消发布 、删除、下线、重新发布、取消发布
-    applyHandleAllOperate(id, value) {
-      this.$confirm(`确定${value}该活动吗?`, "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(async () => {
-          const res =
-            value == "删除"
-              ? await raiSpecial.specialDelete({
-                  ActivityId: id,
-                })
-              : value == "发布"
-              ? await raiSpecial.specialPublishAndCancel({
-                  ActivityId: id,
-                })
-              : value == "下线"
-              ? await await raiSpecial.postSpecialOffline({
-                  ActivityId: id,
-                })
-              : value == "取消发布"
-              ? await raiSpecial.specialPublishAndCancel({
-                  ActivityId: id,
-                })
-              : value == "重新发布" && this.tabsActive == 1
-              ? await await await raiSpecial.postSpecialOffline({
-                  ActivityId: id,
-                })
-              : await await raiSpecial.specialPublishAndCancel({
-                  ActivityId: id,
-                });
-
-          if (res.Ret !== 200) return;
-          this.$message.success(`${value}成功!`);
-          this.getsDataList();
-        })
-        .catch(() => {
-          this.$message({
-            type: "info",
-            message: `已取消${value}`,
-          });
-        });
-    },
-    //点击了编辑
-    editBtn(id, show, type = "") {
-      type == ""
-        ? this.$router.push({
-            path: "/editResearch",
-            query: { id, isShow: show },
-          })
-        : this.$router.push({
-            path: "/determineTravel",
-            query: { id },
-          });
-    },
-    //提交到会情况
-    particularsSubmit(id) {
-      this.offlineId = id;
-      this.submitDialog = true;
-    },
-    //到会详情
-    particulars(id) {
-      this.offlineId = id;
-      this.dialogVisiblepartica = true;
-    },
-    handleCloseSubject() {
-      this.dialogTitle = "";
-      this.exportInterest = "";
-      this.activityDetail = {};
-      this.dialogVisibleActivity = false;
-    },
-    //感兴趣人数总览
-    interestHandler() {
-      let routeUrl = this.$router.resolve("/interestAllPreview");
-      window.open(routeUrl.href, "_blank");
-    },
-    applyNum(item) {
-      this.particularsDialogVisible = true;
-      this.dialogVisibleList = item;
-    },
-    /* 表格行的样式 */
-    handleRowStyle(key) {
-      const style = {
-        ResearchTheme: "color: #409eff; cursor: pointer",
-        InterestedNum: "color: #409eff; cursor: pointer",
-        SignupPeopleNum: "color: #409eff; cursor: pointer",
-      };
-      return style[key] ? style[key] : "";
-    },
-    /* 表格行的点击事件 */
-    handleRowClick(row, key) {
-      if (key === "ResearchTheme") {
-        this.themeDetails(row.ActivityId);
-      } else if (key === "InterestedNum") {
-        this.interestDetails(row.ActivityId);
-      } else if (key === "SignupPeopleNum") {
-        this.applyNum(row);
-      }
-    },
-    /* 表格行的数据处理 */
-    handleRowContent(row, key) {
-      if (key == "SpecialType") {
-        return row[key] == 1 ? "线上" : `线下(${row["City"]})`;
-      } else if (key == "PublishStatus") {
-        return row[key] == 1
-          ? "已发布"
-          : row[key] == 0 && this.tabsActive == 1
-          ? "未发布"
-          : row[key] == 0 && this.tabsActive == 2
-          ? "已取消"
-          : row[key] == 3
-          ? "已下线"
-          : row[key] == 4
-          ? "已确定行程"
-          : "";
-      } else if (key == "InterestedNum") {
-        return row[key] ? row[key] : "";
-      } else {
-        return row[key];
-      }
-    },
-    // 新增活动报名
-    addapply() {
-      if (!this.selectList) return this.$message.error("请先选择活动");
-      this.addDialogVisible = true;
-    },
-    // 新增活动报名的表格选择
-    selectChange(selection) {
-      let arr = [];
-      selection.forEach((item) => {
-        arr.push(item.ActivityId);
-      });
-      this.selectList = arr.join(",");
-    },
-    // 判断活动时间对比当前时间
-    isStart(val) {
-      return this.$moment().isBefore(val);
-    },
-    // 主题名称的输入框
-    themeInput() {
-      this.page_no = 1;
-      this.status = "";
-      this.industryValue = "";
-      this.getsDataList();
-    },
-  },
-  beforeRouteEnter(to, from, next) {
-    if (from.path !== "/addResearch" && from.path !== "/determineTravel" && from.path !== "/editResearch") {
-      sessionStorage.removeItem("specialResearchListBack");
-    }
-    next();
-  },
-  beforeRouteLeave(to, from, next) {
-    let obj = {
-      page: this.page_no,
-      tabsActive: this.tabsActive,
-      status: this.status,
-      industryValue: this.industryValue,
-      themeVal: this.themeVal,
-    };
-    sessionStorage.setItem("specialResearchListBack", JSON.stringify(obj));
-    next();
-  },
-};
-</script>
-<style scoped lang="scss">
-.special-research {
-  .top-wrap {
-    margin-bottom: 28px;
-    padding: 20px 30px 0;
-    background: #fff;
-    border: 1px solid #ececec;
-    border-radius: 4px;
-    box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
-    display: flex;
-    justify-content: space-between;
-  }
-  .tabs-content {
-    display: flex;
-    padding-bottom: 20px;
-    .item {
-      display: flex;
-      align-items: center;
-      justify-content: center;
-      padding: 0 18px;
-      height: 40px;
-      background: #ecf5ff;
-      border-radius: 4px 4px 4px 4px;
-      border: 1px solid #b3d8ff;
-      margin-right: 20px;
-      color: #3385ff;
-      font-size: 16px;
-      cursor: pointer;
-    }
-    .active-item {
-      height: 40px;
-      background: #409eff;
-      color: #fff;
-    }
-  }
-  .rai-detail-wrap {
-    .activity-top {
-      width: 100%;
-      height: 55px;
-      background: #f4f4f4;
-      border-radius: 4px 4px 4px 4px;
-      opacity: 1;
-      line-height: 55px;
-      padding-left: 23px;
-      margin-bottom: 30px;
-    }
-    p {
-      margin-bottom: 20px;
-      padding-left: 10px;
-    }
-    .arrange {
-      margin: 50px auto 20px;
-      cursor: pointer;
-      text-align: center;
-      color: #3385ff;
-    }
-    .text-box {
-      display: flex;
-      padding-left: 10px;
-      span {
-        display: block;
-        margin-bottom: 10px;
-      }
-    }
-  }
-  .dialog-footer {
-    text-align: center;
-    margin-bottom: 20px;
-  }
-}
-</style>