Browse Source

Merge branch 'master' of http://8.136.199.33:3000/hongze/hz_crm_web into ETA1.2.6

cxmo 1 year ago
parent
commit
e817cf84ae

+ 33 - 0
src/api/modules/rai/videoListApi.js

@@ -50,4 +50,37 @@ export default {
   getMicroRoadshowCommentList: (params) => {
     return http.get("/cygx/microRoadshow/commentList/voice", params);
   },
+  /* 微路演问答列表 */
+  askserie_videoList: (params) => {
+    return http.get("/cygx/askserie_video/list", params);
+  },
+  /* 播放记录详情 */
+  askserie_videoHistory_list: (params) => {
+    return http.get("/cygx/askserie_video/history_list", params);
+  },
+  /*问答留言详情 */
+  askserieVideoCollectionList: (params) => {
+    return http.get("/cygx/askserie_video/collection_list", params);
+  },
+  /*问答详情 */
+  askserieVideoDetail: (params) => {
+    return http.get("/cygx/askserie_video/detail", params);
+  },
+  /*问答新增 */
+  askseriePreserveAndEdit: (params) => {
+    return http.post("/cygx/askserie_video/preserveAndEdit", params);
+  },
+  /*发布/取消发布 */
+  askseriePublishAndcancel: (params) => {
+    return http.post("/cygx/askserie_video/publishAndcancel", params);
+  },
+  /*发布/取消发布 */
+  activityVoiceAndVideoList: (params) => {
+    return http.get("/cygx/activity_voice_and_video/list", params);
+  },
+  /*发布/取消发布 */
+  activityVoiceAndVideoCommentList: (params) => {
+    return http.get("/cygx/activity_voice_and_video/commentList", params);
+  },
+  
 };

+ 46 - 4
src/views/business_ETA_manage/businessAuth.vue

@@ -87,10 +87,52 @@ export default {
                 if(!res.Data) return
                 const {List,ChoiceList=[],HalfChoiceList=[]} = res.Data
                 this.authList = List||[]
-                this.defaultCheckedKeys = ChoiceList.filter((item)=>!HalfChoiceList.some((halfItem)=>item===halfItem))
-                this.handleCheckChange(this.defaultCheckedKeys,HalfChoiceList)
+                this.checkList = ChoiceList
+                this.authList.forEach(item=>{
+                    this.checkTree(item)
+                })
+                //this.defaultCheckedKeys = ChoiceList.filter((item)=>!HalfChoiceList.some((halfItem)=>item===halfItem))
+                this.$nextTick(()=>{
+                    this.authList.forEach(item=>{
+                        this.checkTree(item)
+                    })
+                    this.defaultCheckedKeys = this.checkList
+                    this.handleCheckChange(this.defaultCheckedKeys)
+                })
+                
             })
         },
+        checkTree(data){
+            //非叶子节点递归
+            if(data.Children && data.Children.length){
+                data.Children = data.Children.map(i=>{
+                    return this.checkTree(i)
+                })
+            }
+            //叶子节点向上检查MenuId
+            if(!data.Children||data.Children&&data.Children.length===0){
+                this.checkDataList(data)
+            }
+            return data
+        },
+        //根据MenuId找到对应节点
+        findTreeNode(MenuId){
+            return this.$refs.checkboxTree.getNode(MenuId)
+        },
+        checkDataList(data){
+            //获取data的MenuId 和 checkList对比 
+            //如果MenuId不在checkList里,检查data.ParentId在不在checkList里,若在,则从checkList里去除
+            if(!this.checkList.includes(data.MenuId)&&this.checkList.includes(data.ParentId)){
+                const index = this.checkList.indexOf(data.ParentId)
+                index!==-1&&this.checkList.splice(index,1)
+                console.log('应该去除的节点',data.ParentId)
+            }
+            //向上检查MenuId
+            const parentNode = this.findTreeNode(data.ParentId)
+            if(parentNode){
+                this.checkDataList(parentNode.data)
+            }
+        },
         async handleBtnClik(type){
             if(type==='save'){
                 //获取树形列表选择的项 getCheckedKeys getHalfCheckedKeys
@@ -118,9 +160,9 @@ export default {
             }
             this.$router.push('/businessETAList')
         },
-        handleCheckChange(choiceList,HalfChoiceList){
+        handleCheckChange(choiceList/* ,HalfChoiceList */){
             const keys = choiceList||this.$refs.checkboxTree.getCheckedKeys()
-            const halfKeys = HalfChoiceList||this.$refs.checkboxTree.getHalfCheckedKeys()
+            //const halfKeys = HalfChoiceList||this.$refs.checkboxTree.getHalfCheckedKeys()
             const ChoiceList = Array.from(new Set([...keys]))
             const topLevelNodes = this.authList.map(i=>i.MenuId)
             let nodeLength = 0

+ 5 - 2
src/views/rai_manage/activityManage/components/addComopnents/modifyImgDlg.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="container">
     <!-- 选择图片的弹框 -->
-    <el-dialog title="选择图片" :visible.sync="modifyImgVisible" width="80%" v-dialogDrag :close-on-click-modal="false" :modal-append-to-body="false" center>
+    <el-dialog title="选择图片" :visible.sync="modifyImgVisible" width="80%" v-dialogDrag :close-on-click-modal="false" :modal-append-to-body="false" center @close="cancelHandle">
       <div class="seleect-img-box">
         <div class="content-img" @click="clickSelectImg(item)" v-for="(item, index) in videoAndVoiceList" :key="index">
           <img :src="item.ImgUrl" alt="" class="item-img" />
@@ -49,10 +49,13 @@ export default {
       this.page_no = page;
       this.getSelectImgList();
     },
+    cancelHandle() {
+      this.$emit("update:modifyImgVisible", false);
+    },
     clickSelectImg(item) {
       this.$parent.defaultImage = item.ImgUrl;
       this.$parent.shareImg = item.ShareImg;
-      this.$emit("update:modifyImgVisible", false);
+      this.cancelHandle();
     },
   },
 };

+ 21 - 14
src/views/rai_manage/activityManage/roadShow/components/playDetailsDlg.vue

@@ -3,19 +3,12 @@
     <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'"
-          >
+          <el-table-column :key="item.label" :label="item.label" :width="item.widthsty" :min-width="item.minwidthsty" align="center" v-if="tabActive == 4 && 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">
+          <el-table-column :key="item.label" :label="item.label" :width="item.widthsty" :min-width="item.minwidthsty" align="center" v-else-if="tabActive != 4">
             <template slot-scope="{ row }">
               <span>{{ handleRowContent(row, item.key) }}</span>
             </template>
@@ -63,14 +56,22 @@ export default {
     "playDetailsList.VideoId": {
       handler(newval) {
         if (newval) {
-          this.tabActive == 1 ? this.getVideoDeatil() : this.activityVideoDeatil();
+          this.tabActive == 4 && this.getVideoDeatil();
         }
       },
     },
-    "playDetailsList.ActivityVoiceId": {
+    "playDetailsList.FileName": {
       handler(newval) {
         if (newval) {
-          this.getVoiceDeatil();
+          newval == "视频" && this.activityVideoDeatil();
+          newval == "音频" && this.getVoiceDeatil();
+        }
+      },
+    },
+    "playDetailsList.AskserieVideoId": {
+      handler(newval) {
+        if (newval) {
+          this.askserieVideoHistoryList();
         }
       },
     },
@@ -90,7 +91,7 @@ export default {
       }
     },
     async getVoiceDeatil() {
-      const res = await raiVideoApi.voiceDeatil({ VoiceId: this.playDetailsList.ActivityVoiceId });
+      const res = await raiVideoApi.voiceDeatil({ VideoId: this.playDetailsList.VideoId });
       if (res.Ret === 200) {
         this.dataList = res.Data || [];
       }
@@ -101,9 +102,15 @@ export default {
         this.dataList = res.Data || [];
       }
     },
+    async askserieVideoHistoryList() {
+      const res = await raiVideoApi.askserie_videoHistory_list({ AskserieVideoId: this.playDetailsList.AskserieVideoId });
+      if (res.Ret === 200) {
+        this.dataList = res.Data.List || [];
+      }
+    },
     handleRowContent(row, key) {
       if (key == "PlaySeconds") {
-        if (!row[key] || row[key] == 0) return "";
+        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}秒`;

+ 297 - 0
src/views/rai_manage/activityManage/roadShow/components/releaseAudio.vue

@@ -0,0 +1,297 @@
+<template>
+  <div class="container add-edit-release-audio">
+    <el-dialog
+      v-dialogDrag
+      :close-on-click-modal="false"
+      :modal-append-to-body="false"
+      center
+      width="568px"
+      :title="dlgTitle"
+      :visible.sync="addEditdialogReleaseAudio"
+      customClass="add-edit-video-dlg"
+      :before-close="cancelHandle"
+    >
+      <div>
+        <el-form :model="addEditAudio" :rules="rules" ref="ruleFormAudio" 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="addEditAudio.audioName"></el-input>
+              <el-upload class="upload-demo" action="" :show-file-list="false" :http-request="handleUploadAudio" accept="audio/*" :file-list="fileListAudio">
+                <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>
+          </el-form-item>
+          <el-form-item prop="industryId">
+            <el-select style="width: 100%" placeholder="请选择行业" v-model="addEditAudio.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>
+            <el-select v-model="addEditAudio.property" multiple 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>
+      </div>
+      <div class="cover-content" style="margin: 10px 0" v-if="this.addEditAudio.industryId && defaultImage">
+        <span class="text" style="width: 46px; text-align: right">封面:</span>
+        <div class="img-content">
+          <img :src="defaultImage" alt="" />
+          <div class="modify" @click="modifyImgHandler">修改</div>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="confirmSubmit(1)">确定</el-button>
+        <el-button @click="cancelHandle">取消</el-button>
+      </span>
+    </el-dialog>
+    <modify-img-dlg :modifyImgVisible.sync="modifyImgVisible" :videoAndVoiceList.sync="videoAndVoiceList" />
+  </div>
+</template>
+
+<script>
+import { raiInterface, resourceVoiceupload, raiVideoApi } from "@/api/api.js";
+import ModifyImgDlg from "../../components/addComopnents/modifyImgDlg.vue";
+export default {
+  name: "",
+  components: { ModifyImgDlg },
+  props: {
+    addEditdialogReleaseAudio: {
+      type: Boolean,
+      default: false,
+    },
+    chartPermissionList: {
+      type: Array,
+      default: [],
+    },
+    playDetailsList: {
+      default: {},
+      type: Object,
+    },
+  },
+  watch: {
+    "playDetailsList.AskserieVideoId": {
+      handler(newVal) {
+        newVal && newVal > 0 && this.askserieVideoDetail();
+      },
+      deep: true,
+      immediate: true,
+    },
+  },
+  data() {
+    return {
+      addEditAudio: {
+        audioName: "", //音频名称
+        industryId: "", //行业id
+        property: "", //产业名称
+        audioUrl: "", //视频链接
+        AudioSeconds: "", //时长
+      },
+      rules: {
+        // audioName: [{ required: true, message: "请上传音频", trigger: "blur" }],
+        industryId: [{ required: true, message: "请选择行业", trigger: "change" }],
+      },
+      industryArr: [],
+      selectedIndustryArr: [],
+      percentage: 0,
+      startUpload: false, //开始上传
+      fileListAudio: [],
+      videoAndVoiceList: [],
+      defaultImage: [],
+      modifyImgVisible: false,
+      defaultImage: "",
+      shareImg: "",
+      dlgTitle: "发布问答",
+    };
+  },
+  computed: {},
+  created() {},
+  mounted() {},
+  methods: {
+    /* 获取全部的行业 前的判断 */
+    industrySelectFocus() {
+      if (!this.addEditAudio.industryId) {
+        this.$message.error("请先选择行业");
+      }
+    },
+    // 行业更改
+    selectChangeHandle(value) {
+      this.addEditAudio.property = "";
+      value ? this.getIndustry(value) : (this.selectedIndustryArr = []);
+      value && this.getVideoAndImg();
+    },
+    /* 获取选择的行业 */
+    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;
+        }
+      });
+    },
+    //保存或发布
+    confirmSubmit(type) {
+      this.$refs.ruleFormAudio.validate(async (valid) => {
+        if (valid) {
+          if (!this.fileListAudio[0].url) return this.$message.error("请上传音频");
+          if (!this.addEditAudio.audioName) return this.$message.error("请输入音频名称");
+          let ChartPermissionName = "";
+          this.chartPermissionList.forEach((item) => {
+            if (item.ChartPermissionId == this.addEditAudio.industryId) {
+              ChartPermissionName = item.PermissionName;
+            }
+          });
+          const res = await raiVideoApi.askseriePreserveAndEdit({
+            AskserieVideoId: this.playDetailsList.AskserieVideoId ? this.playDetailsList.AskserieVideoId : 0,
+            VideoName: this.addEditAudio.audioName,
+            ChartPermissionId: this.addEditAudio.industryId,
+            ChartPermissionName,
+            IndustrialManagementIds: this.addEditAudio.property ? this.addEditAudio.property.join(",") : "",
+            VideoUrl: this.addEditAudio.audioUrl,
+            VideoDuration: this.addEditAudio.AudioSeconds + "",
+            BackgroundImg: this.defaultImage,
+            ShareImg: this.shareImg,
+          });
+          if (res.Ret === 200) {
+            this.$message.success("添加成功");
+            this.cancelHandle();
+            this.$parent.getVideoList();
+          }
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    // 上传音频
+    async handleUploadAudio(e) {
+      this.startUpload = true;
+      let form = new FormData();
+      form.append("file", e.file);
+      const res = await resourceVoiceupload(form);
+      if (res.Ret === 200) {
+        let obj = {
+          name: res.Data.ResourceName,
+          url: res.Data.ResourceUrl,
+          PlaySeconds: res.Data.PlaySeconds,
+        };
+        this.addEditAudio.audioName = res.Data.ResourceName; //音频名称
+        this.addEditAudio.audioUrl = res.Data.ResourceUrl; //视频链接
+        this.addEditAudio.AudioSeconds = res.Data.PlaySeconds; //时长
+        this.fileListAudio = [obj];
+      }
+      this.startUpload = false;
+    },
+    // 封面图
+    async getVideoAndImg(isOne = "") {
+      const res = await raiInterface.video_and_voiceImgActivityVideo({
+        ChartPermissionId: this.addEditAudio.industryId,
+      });
+      if (res.Ret === 200) {
+        isOne == "修改" ? "" : ((this.defaultImage = res.Data.List[0].ImgUrl), (this.shareImg = res.Data.List[0].ShareImg));
+        this.videoAndVoiceList = res.Data.List;
+      }
+    },
+    // 点击修改图片的弹框
+    modifyImgHandler() {
+      this.getVideoAndImg("修改");
+      this.modifyImgVisible = true;
+    },
+    cancelHandle() {
+      this.$refs.ruleFormAudio.resetFields();
+      this.addEditAudio = {
+        audioName: "", //音频名称
+        industryId: "", //行业id
+        property: "", //产业名称
+        audioUrl: "", //视频链接
+        AudioSeconds: "", //时长
+      };
+      this.fileListAudio = [];
+      this.defaultImage = "";
+      this.shareImg = "";
+      this.dlgTitle = "发布问答";
+      this.$emit("update:addEditdialogReleaseAudio", false);
+      this.$emit("update:playDetailsList", {});
+    },
+    // 获取详情
+    async askserieVideoDetail() {
+      const res = await raiVideoApi.askserieVideoDetail({
+        AskserieVideoId: this.playDetailsList.AskserieVideoId,
+      });
+      if (res.Ret === 200) {
+        this.dlgTitle = "编辑";
+        let { Detail } = res.Data;
+        this.getIndustry(Detail.ChartPermissionId);
+        let str = [];
+        Detail.ListIndustrial &&
+          Detail.ListIndustrial.forEach((item) => {
+            str.push(item.IndustrialManagementId);
+          });
+        this.addEditAudio = {
+          audioName: Detail.VideoName, //音频名称
+          industryId: Detail.ChartPermissionId, //行业id
+          property: str, //产业名称
+          audioUrl: Detail.VideoUrl, //视频链接
+          AudioSeconds: Detail.VideoDuration, //时长
+        };
+        this.defaultImage = Detail.BackgroundImg;
+        this.shareImg = Detail.ShareImg;
+        let obj = {
+          name: Detail.VideoName,
+          url: Detail.VideoUrl,
+          PlaySeconds: Detail.VideoDuration,
+        };
+        this.fileListAudio = [obj];
+      }
+    },
+  },
+};
+</script>
+<style lang="scss">
+.add-edit-release-audio {
+  .add-edit-video-dlg {
+    .el-input {
+      width: 100%;
+    }
+  }
+}
+</style>
+<style lang="scss" scoped>
+.add-edit-release-audio {
+  display: flex;
+  justify-content: space-between;
+  .cover-content {
+    display: flex;
+    // align-items: stretch;
+    // vertical-align: bottom;
+    .img-content {
+      position: relative;
+      height: 200px;
+      width: 200px;
+      border: 1px solid #ccc;
+      img {
+        width: 100%;
+        height: 100%;
+      }
+    }
+    .modify {
+      position: absolute;
+      bottom: 0;
+      right: -50px;
+      height: 20px;
+      cursor: pointer;
+      color: #409eff;
+    }
+  }
+}
+</style>

+ 56 - 42
src/views/rai_manage/activityManage/roadShow/tableTabs.js

@@ -1,6 +1,6 @@
 //表格列
 export const tableColums = (type) => {
-  return type === 1
+  return type === 1 || type === 2
     ? [
         {
           label: "文件名称",
@@ -8,31 +8,32 @@ export const tableColums = (type) => {
           widthsty: 300,
         },
         {
-          label: "行业",
-          key: "ChartPermissionName",
+          label: "文件类型",
+          key: "FileName",
           widthsty: 90,
         },
         {
-          label: "产业",
-          key: "IndustryName",
+          label: "行业",
+          key: "ChartPermissionName",
+          widthsty: 90,
         },
         {
-          label: "发布状态",
-          key: "PublishStatus",
-          widthsty: 90,
+          label: "活动类型",
+          key: "ActivityTypeName",
+          minwidthsty: "110",
         },
         {
-          label: "发布时间",
-          key: "PublishDate",
-          widthsty: 160,
+          label: "活动标签",
+          key: "Label",
+          minwidthsty: "120",
         },
         {
-          label: "更新时间",
-          key: "ModifyDate",
-          widthsty: 160,
+          label: "活动时间",
+          key: "ActivityTimeText",
+          minwidthsty: "200",
         },
         {
-          label: "视频时长",
+          label: "时长",
           key: "VideoDuration",
           widthsty: 100,
         },
@@ -47,7 +48,7 @@ export const tableColums = (type) => {
           widthsty: 100,
         },
       ]
-    : type === 2
+    : type === 3
     ? [
         {
           label: "文件名称",
@@ -60,22 +61,26 @@ export const tableColums = (type) => {
           widthsty: 90,
         },
         {
-          label: "活动类型",
-          key: "ActivityTypeName",
-          minwidthsty: "110",
+          label: "产业",
+          key: "IndustryName",
         },
         {
-          label: "活动标签",
-          key: "Label",
-          minwidthsty: "120",
+          label: "发布状态",
+          key: "PublishStatus",
+          widthsty: 90,
         },
         {
-          label: "活动时间",
-          key: "ActivityTimeText",
-          minwidthsty: "200",
+          label: "发布时间",
+          key: "PublishDate",
+          widthsty: 160,
+        },
+        {
+          label: "更新时间",
+          key: "ModifyDate",
+          widthsty: 160,
         },
         {
-          label: "视频时长",
+          label: "时长",
           key: "VideoDuration",
           widthsty: 100,
         },
@@ -93,7 +98,7 @@ export const tableColums = (type) => {
     : [
         {
           label: "文件名称",
-          key: "VoiceName",
+          key: "VideoName",
           widthsty: 300,
         },
         {
@@ -102,28 +107,32 @@ export const tableColums = (type) => {
           widthsty: 90,
         },
         {
-          label: "活动类型",
-          key: "ActivityTypeName",
-          minwidthsty: "110",
+          label: "产业",
+          key: "IndustryName",
         },
         {
-          label: "活动标签",
-          key: "Label",
-          minwidthsty: "120",
+          label: "发布状态",
+          key: "PublishStatus",
+          widthsty: 90,
         },
         {
-          label: "活动时间",
-          key: "ActivityTimeText",
-          minwidthsty: "200",
+          label: "发布时间",
+          key: "PublishDate",
+          widthsty: 160,
         },
         {
-          label: "音频时长",
-          key: "VoicePlaySeconds",
+          label: "更新时间",
+          key: "ModifyDate",
+          widthsty: 160,
+        },
+        {
+          label: "时长",
+          key: "VideoDuration",
           widthsty: 100,
         },
         {
           label: "播放量",
-          key: "VoiceCounts",
+          key: "VideoCounts",
           widthsty: 100,
         },
         {
@@ -159,9 +168,14 @@ export const PalyTable = [
     label: "播放时长",
     key: "PlaySeconds",
   },
+  {
+    label: "播放来源",
+    key: "RegisterPlatform",
+  },
 ];
 export const TopTabs = [
-  { name: "活动视频", value: 2 },
-  { name: "活动音频", value: 3 },
-  { name: "产业视频", value: 1 },
+  { name: "路演回放", value: 1 },
+  { name: "调研反馈", value: 2 },
+  { name: "问答系列", value: 3 },
+  { name: "产业视频", value: 4 },
 ];

+ 49 - 21
src/views/rai_manage/activityManage/roadShowList.vue

@@ -16,17 +16,26 @@
           <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-select v-if="tabActive == 1 || tabActive == 2" 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
+            style="margin-bottom: 20px"
+            v-model="issueTime"
+            type="date"
+            range
+            :placeholder="tabActive == 4 || tabActive == 3 ? '发布时间' : '活动时间'"
+            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-select v-if="tabActive == 4 || tabActive == 3" 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>
+          <el-button type="primary" v-if="tabActive === 4" @click="addEditdialogVisib = true">添加视频</el-button>
+          <el-button type="primary" v-if="tabActive === 3" @click="addEditdialogReleaseAudio = true">发布问答</el-button>
         </div>
       </div>
       <el-table :data="dataList" style="width: 100%" border @sort-change="sortChangeHandle">
@@ -45,7 +54,7 @@
         >
         <el-table-column align="center" prop="LastUpdatedTime" width="170" label="操作">
           <template slot-scope="{ row }">
-            <div v-if="tabActive === 1">
+            <div v-if="tabActive === 4 || tabActive === 3">
               <span class="editsty" @click="handlePublish(row)">{{ row.PublishStatus == 1 ? "取消发布" : "发布" }}</span>
               &nbsp;&nbsp;
               <span class="editsty" @click="handleEditVideo(row, '产业')">编辑</span>
@@ -66,6 +75,7 @@
     <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" />
+    <release-audio :addEditdialogReleaseAudio.sync="addEditdialogReleaseAudio" :chartPermissionList="chartPermissionList" :playDetailsList.sync="editDetails" />
   </div>
 </template>
 
@@ -79,16 +89,17 @@ import addVideoDlg from "./roadShow/components/addVideoDlg.vue";
 import moment from "moment";
 import AtcParticulars from "../components/atcParticulars.vue";
 import GenerationAsk from "../components/generationAsk.vue";
+import ReleaseAudio from "./roadShow/components/releaseAudio.vue";
 
 export default {
   name: "",
-  components: { mPage, playDetails, addVideoDlg, AtcParticulars, GenerationAsk },
+  components: { mPage, playDetails, addVideoDlg, AtcParticulars, GenerationAsk, ReleaseAudio },
   props: {},
   data() {
     return {
       tableColums: [],
       dataList: [],
-      tabActive: 2, //tabs 选中
+      tabActive: 1, //tabs 选中
       chartPermissionList: [], //行业的数组
       chartPermissionId: "", //行业的id
       issueTime: "", //活动时间
@@ -109,6 +120,7 @@ export default {
       generaitondialogVisib: false, //代问的弹框
       generaitonId: "",
       generaitonType: "微路演",
+      addEditdialogReleaseAudio: false,
     };
   },
   computed: {
@@ -162,7 +174,7 @@ export default {
       }
     },
     async getVideoList() {
-      let SortParam = this.sortType && this.tabActive == 1 ? "videoCounts" : this.sortType && this.tabActive == 2 ? "voiceCounts" : "";
+      // let SortParam = this.sortType && this.tabActive == 4 ? "videoCounts" : this.sortType && this.tabActive == 1 ? "voiceCounts" : "";
       let params = {
         PageSize: this.PageSize,
         CurrentIndex: this.page_no,
@@ -173,9 +185,17 @@ export default {
         ChartPermissionId: this.chartPermissionId,
         ActivityTypeId: this.cactivityTypeVal,
         SortType: this.sortType,
-        SortParam,
+        SortParam: "videoCounts",
+        SearchType: this.tabActive,
       };
-      const res = this.tabActive == 1 ? await raiVideoApi.videoList(params) : this.tabActive == 2 ? await raiVideoApi.getActivityVideo(params) : await raiVideoApi.voiceList(params);
+      const res =
+        this.tabActive == 4
+          ? await raiVideoApi.videoList(params)
+          : this.tabActive == 1
+          ? await raiVideoApi.activityVoiceAndVideoList(params)
+          : this.tabActive == 3
+          ? await raiVideoApi.askserie_videoList(params)
+          : await raiVideoApi.activityVoiceAndVideoList(params);
       if (res.Ret === 200) {
         this.dataList = res.Data.List;
         this.total = res.Data.Paging.Totals;
@@ -196,7 +216,6 @@ export default {
     },
     /* 点击表格的排序 */
     sortChangeHandle({ prop, order }) {
-      console.log(order);
       this.sortType = order == "ascending" ? "asc" : order == "descending" ? "desc" : "";
       this.getVideoList();
     },
@@ -210,7 +229,7 @@ export default {
     */
     handleRowContent(row, key) {
       if (key == "PublishStatus") {
-        let status = row["PublishStatus"] == 1 ? "已发布" : "未发布";
+        let status = row["PublishStatus"] == 1 ? "已发布" : row["PublishStatus"] == 3 ? "已取消" : "未发布";
         return status;
       } else if (key == "VideoDuration" || key == "VoicePlaySeconds") {
         let m = parseInt(row[key] / 60);
@@ -235,10 +254,8 @@ export default {
         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;
+        this.generaitonId = this.tabActive == 1 || this.tabActive == 2 ? row.ActivityId : this.tabActive == 3 ? row.AskserieVideoId : row.VideoId;
       }
     },
     /*
@@ -255,16 +272,23 @@ export default {
     },
     //发布或者取消发布
     handlePublish(item) {
-      this.$confirm(item.PublishStatus == 1 ? "确认取消发布该视频吗?" : "确认发布该视频吗?", "提示", {
+      let str = this.tabActive == 3 ? "音频" : "视频";
+      this.$confirm(item.PublishStatus == 1 ? `确认取消发布该${str}吗?` : `确认发布该${str}吗?`, "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
       })
         .then(async () => {
-          const res = await raiVideoApi.videoPublish({
-            VideoId: item.VideoId,
-            PublishOrCancle: item.PublishStatus == 1 ? 0 : 1,
-          });
+          const res =
+            this.tabActive == 3
+              ? await raiVideoApi.askseriePublishAndcancel({
+                  AskserieVideoId: item.AskserieVideoId,
+                  PublishOrCancle: item.PublishStatus == 1 ? 0 : 1,
+                })
+              : await raiVideoApi.videoPublish({
+                  VideoId: item.VideoId,
+                  PublishOrCancle: item.PublishStatus == 1 ? 0 : 1,
+                });
           if (res.Ret === 200) {
             this.$message.success("操作成功!");
             this.getVideoList();
@@ -289,7 +313,11 @@ export default {
         });
       } else {
         this.editDetails = item;
-        this.addEditdialogVisib = true;
+        if (this.tabActive == 3) {
+          this.addEditdialogReleaseAudio = true;
+        } else {
+          this.addEditdialogVisib = true;
+        }
       }
     },
   },

+ 9 - 9
src/views/rai_manage/components/generationAsk.vue

@@ -60,11 +60,11 @@ export default {
       } else if (this.generaitonType == "报名") {
         url = "/cygx/activitySignup/askListExport?ActivityId=";
       } else if (this.generaitonType == "微路演") {
-        this.tabActiveRoadshow == 1
+        this.tabActiveRoadshow == 4
           ? (url = "/cygx/microRoadshow/commentListExport/video?VideoId=")
-          : this.tabActiveRoadshow == 2
-          ? (url = "/cygx/activityVideo/commnetListExport?VideoId=")
-          : (url = "/cygx/microRoadshow/commentListExport/voice?ActivityId=");
+          : this.tabActiveRoadshow == 3
+          ? (url = "/cygx/askserie_video/collection_list?IsExport=true&AskserieVideoId=")
+          : (url = "/cygx/activity_voice_and_video/commentList?IsExport=true&ActivityId=");
       } else {
         url = "/cygx/summaryManage/commentListExport?ArticleId=";
       }
@@ -136,15 +136,15 @@ export default {
     //微路演
     async getRoadshowList() {
       const res =
-        this.tabActiveRoadshow == 1
+        this.tabActiveRoadshow == 4
           ? await raiVideoApi.getMicroRoadshowVideo({
               VideoId: this.generaitonId,
             })
-          : this.tabActiveRoadshow == 2
-          ? await raiVideoApi.getMicroRoadshowVoice({
-              VideoId: this.generaitonId,
+          : this.tabActiveRoadshow == 3
+          ? await raiVideoApi.askserieVideoCollectionList({
+              AskserieVideoId: this.generaitonId,
             })
-          : await raiVideoApi.getMicroRoadshowCommentList({
+          : await raiVideoApi.activityVoiceAndVideoCommentList({
               ActivityId: this.generaitonId,
             });
 

+ 4 - 4
src/views/rai_manage/reportManage/yanXuanSpecial.vue

@@ -11,8 +11,9 @@
             <img :src="item.HeadImg" alt="" />
           </div>
           <div class="info-content">
-            <p class="info-name">{{ item.RealName }} - {{ item.Mobile }}</p>
+            <p class="info-name">{{ item.SpecialName }}</p>
             <p>昵称:{{ item.NickName }}</p>
+            <p>{{ item.RealName }}-{{ item.Mobile }}</p>
             <p>{{ item.CompanyName }}</p>
           </div>
           <div class="switch-box">
@@ -221,7 +222,6 @@ div {
       overflow-y: auto;
       .author-li {
         flex: 1;
-        height: 116px;
         padding: 20px;
         display: flex;
         justify-content: space-between;
@@ -238,8 +238,8 @@ div {
     flex: 1;
     padding-left: 16px;
     color: #999999;
-    p:nth-child(2) {
-      margin: 8px 0;
+    p {
+      margin: 5px 0;
     }
   }
   .avatar {