jwyu 1 год назад
Родитель
Сommit
1e867ec6fe
4 измененных файлов с 188 добавлено и 3 удалено
  1. 13 0
      src/api/report.js
  2. 88 0
      src/views/report/Detail.vue
  3. 16 1
      src/views/report/List.vue
  4. 71 2
      src/views/report/chapter/List.vue

+ 13 - 0
src/api/report.js

@@ -69,6 +69,19 @@ export default {
      */
     getReportDetail:params=>{
         return get('/report/detail',params)
+    },
+    /**
+     * 获取章节列表
+     * @param ReportId
+     */
+    getChapterList:params=>{
+        return get('/report/getReportChapterList',params)
+    },
+    /**
+     * 获取章节tag
+     */
+    getChapterTagList:()=>{
+        return get('/report/getChapterTrendTag',{})
     }
 
 }

+ 88 - 0
src/views/report/Detail.vue

@@ -2,6 +2,7 @@
 import {ref} from 'vue'
 import { useRoute } from "vue-router";
 import apiReport from '@/api/report'
+import { showToast,showDialog } from 'vant';
 
 const route=useRoute()
 
@@ -16,16 +17,103 @@ async function getReportDetail(){
 }
 getReportDetail()
 
+
+// 发布报告
+const showPublishPop=ref(false)
+// 确认发布报告
+// type 1 仅发布 2发布且推送
+function handleConfirmPublish(type){
+    apiReport.reportPublish({
+        ReportIds:route.query.id
+    }).then(res=>{
+        if(res.Ret==200){
+            if(type===2){
+                handleReportMessageSend(true)
+            }else{
+                if(res.Data){
+                    showDialog({
+                        title: '发布提示',
+                        message: res.Data,
+                    }).then(()=>{
+
+                    })
+                }else{
+                    showToast('发布成功')
+                }
+                showPublishPop.value=false
+                getReportDetail()
+            }
+        }
+    })
+}
+
+// 推送消息
+function handleReportMessageSend(publish){
+    apiReport.reportMessageSend({
+        ReportId:Number(route.query.id)
+    }).then(res=>{
+        if(res.Ret===200){
+            if(publish){
+                showToast('发布且推送成功')
+            }else{
+                showToast('推送成功')
+            }
+            getReportDetail()
+            showPublishPop.value=false
+        }
+    })
+}
+
+// 取消发布
+function handleReportPublishCancle(){
+    showDialog({
+        title: '提示',
+        message: `是否确认取消发布?`,
+        showCancelButton:true
+    }).then(()=>{
+        apiReport.reportPublishCancle({ReportIds:Number(route.query.id)}).then(res=>{
+            if(res.Ret===200){
+                getReportDetail()
+            }
+        })
+    })
+}
+
 </script>
 
 <template>
     <div class="report-detail-page" v-if="reportInfo">
+        <template v-if="reportInfo.State===1">
+            <van-button type="primary" @click="showPublishPop=true">发布</van-button>
+            <van-button type="primary">删除</van-button>
+        </template>
+        <template v-if="reportInfo.State===2">
+            <van-button type="primary" @click="handleReportPublishCancle">取消发布</van-button>
+            <van-button type="primary" @click="handleReportMessageSend">推送消息</van-button>
+        </template>
+       
         <span>第{{reportInfo.Stage}}期/{{reportInfo.Frequency}}</span>
         <div>{{reportInfo.Title}}</div>
         <div><span>{{reportInfo.Author}}</span><span>{{reportInfo.PublishTime}}</span></div>
         <div>{{reportInfo.Abstract}}</div>
         <div v-html="reportInfo.Content"></div>
     </div>
+    <!-- 报告发布弹窗 -->
+    <van-popup 
+        v-model:show="showPublishPop"
+        position="center"
+        round
+    >
+        <div class="publish-report-pop-box">
+            <div>发布提示</div>
+            <p>是否发布报告,且推送模板消息和客户群?</p>
+            <div>
+                <van-button square type="primary" text="取消发布" @click="showPublishPop=false"/>
+                <van-button square type="primary" text="仅发布" @click="handleConfirmPublish(1)"/>
+                <van-button square type="primary" text="发布&推送" @click="handleConfirmPublish(2)"/>
+            </div>
+        </div>
+    </van-popup>
 </template>
 
 <style lang="scss" scoped>

+ 16 - 1
src/views/report/List.vue

@@ -179,6 +179,21 @@ function handleReportMessageSend(publish){
     })
 }
 
+// 取消发布
+function handleReportPublishCancle(item){
+    showDialog({
+        title: '提示',
+        message: `是否确认取消发布?`,
+        showCancelButton:true
+    }).then(()=>{
+        apiReport.reportPublishCancle({ReportIds:Number(item.Id)}).then(res=>{
+            if(res.Ret===200){
+                refreshList()
+            }
+        })
+    })
+}
+
 // 日期筛选
 const calendarMinDate=new Date(2010,0,1)
 const showCalendar=ref(false)
@@ -259,7 +274,7 @@ function goDetail(item){
                         <van-button square type="primary" text="发布" @click.stop="handleReportPublish(item)" />
                     </template>
                     <template v-if="item.State==2">
-                        <van-button square type="primary" text="取消发布" />
+                        <van-button square type="primary" text="取消发布" @click.stop="handleReportPublishCancle(item)"/>
                     </template>
                 </template>
                 </van-swipe-cell>

+ 71 - 2
src/views/report/chapter/List.vue

@@ -1,10 +1,79 @@
 <script setup name="reportChapterList">
+import {ref} from 'vue'
+import { useRoute } from "vue-router";
+import apiReport from '@/api/report'
+import moment from 'moment';
+
+
+const route=useRoute()
+
+// 获取报告详情
+let reportInfo=ref(null)
+async function getReportDetail(){
+    const res=await apiReport.getReportDetail({ReportId:Number(route.query.id)})
+    if(res.Ret===200){
+        reportInfo.value=res.Data
+        document.title=res.Data.ClassifyNameFirst
+    }
+}
+getReportDetail()
+
+// 获取章节列表
+let chapterList=ref([])
+async function getChapterList(){
+    const res=await apiReport.getChapterList({ReportId:Number(route.query.id)})
+    if(res.Ret===200){
+        chapterList.value=res.Data||[]
+        getChapterTrendTagList()
+    }
+}
+getChapterList()
+
+// 获取章节标签数据
+let tagOpts=ref([])
+function getChapterTrendTagList(){
+    apiReport.getChapterTagList().then(res=>{
+        if(res.Ret===200){
+            tagOpts.value=res.Data
+        }
+    })
+}
+
+
+
 
 </script>
 
 <template>
-    <div class="report-chapterlist-page">
-        
+    <div class="report-chapterlist-page" v-if="reportInfo">
+        <div>
+            <span>报告类型</span>
+            <span>{{reportInfo.ClassifyNameFirst}}</span>
+        </div>
+        <div>
+            <span>报告标题</span>
+            <span>{{reportInfo.Title}}</span>
+        </div>
+        <div>
+            <span>发布时间</span>
+            <span>{{moment(reportInfo.CreateTime).format('YYYY-MM-DD')}}</span>
+        </div>
+        <div>
+            <span>作者</span>
+            <span>{{reportInfo.Author}}</span>
+        </div>
+        <div>章节列表</div>
+        <ul class="chapter-list">
+            <li class="item" v-for="item in chapterList" :key="item.ReportChapterId">
+                <div class="img-box">
+                    <img :src="item.TypeEditImg" alt="">
+                    <span>{{item.TypeName}}</span>
+                </div>
+                <div class="content">
+                    <div>{{item.TypeName}}</div>
+                </div>
+            </li>
+        </ul>
     </div>
 </template>