|
@@ -0,0 +1,226 @@
|
|
|
|
+<script setup>
|
|
|
|
+import {apiChartIsCollect,apiChartCollectCancel,apiChartCollect,apiMyChartClassifyList,apiMyChartRelateClassify} from '@/api/hzyb/chart'
|
|
|
|
+import { reactive, ref, watch } from 'vue'
|
|
|
|
+import { useRoute } from 'vue-router'
|
|
|
|
+import { Toast, Popup } from 'vant';
|
|
|
|
+
|
|
|
|
+const route=useRoute()
|
|
|
|
+
|
|
|
|
+const props = defineProps({
|
|
|
|
+ code: String,
|
|
|
|
+ myChartInfo:Object
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+watch(
|
|
|
|
+ ()=>props.code,
|
|
|
|
+ (n)=>{
|
|
|
|
+ if(n){
|
|
|
|
+ getIsCollect()
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ immediate:true
|
|
|
|
+ }
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+let isCollect=ref(false)
|
|
|
|
+async function getIsCollect(){
|
|
|
|
+ const res=await apiChartIsCollect({
|
|
|
|
+ unique_code:props.code,
|
|
|
|
+ authorization:route.query.token
|
|
|
|
+ })
|
|
|
|
+ if(res.code==200){
|
|
|
|
+ isCollect.value=res.data
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function handleCollectStatusChange(){
|
|
|
|
+ if(isCollect.value){
|
|
|
|
+ collectChartCancel()
|
|
|
|
+ }else{
|
|
|
|
+ collectChart()
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 收藏
|
|
|
|
+async function collectChart(){
|
|
|
|
+ const res=await apiChartCollect({
|
|
|
|
+ unique_code:props.code,
|
|
|
|
+ authorization:route.query.token,
|
|
|
|
+ report_id:props.myChartInfo.report_id,
|
|
|
|
+ report_chapter_id:props.myChartInfo.report_chapter_id
|
|
|
|
+ })
|
|
|
|
+ if(res.code===200){
|
|
|
|
+ Toast('收藏成功')
|
|
|
|
+ isCollect.value=true
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//取消收藏
|
|
|
|
+async function collectChartCancel(){
|
|
|
|
+ const res=await apiChartCollectCancel({
|
|
|
|
+ unique_code:props.code,
|
|
|
|
+ authorization:route.query.token
|
|
|
|
+ })
|
|
|
|
+ if(res.code===200){
|
|
|
|
+ Toast('取消收藏成功')
|
|
|
|
+ isCollect.value=false
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+let showTrans=ref(false)
|
|
|
|
+let showTransPc=ref(false)
|
|
|
|
+function handleShowTrans(type){
|
|
|
|
+ if(!isCollect.value){
|
|
|
|
+ Toast('您已经取消收藏,不可操作转移')
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if(type==='mobile'){
|
|
|
|
+ showTrans.value=true
|
|
|
|
+ }else{
|
|
|
|
+ showTransPc.value=true
|
|
|
|
+ }
|
|
|
|
+ transData.selectId=props.myChartInfo.my_chart_classify_id||0
|
|
|
|
+ getClassify()
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//获取分类数据
|
|
|
|
+let transData=reactive({
|
|
|
|
+ list:[],
|
|
|
|
+ selectId:0
|
|
|
|
+})
|
|
|
|
+async function getClassify(){
|
|
|
|
+ const res=await apiMyChartClassifyList()
|
|
|
|
+ if(res.code===200){
|
|
|
|
+ transData.list=res.data||[]
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 确定转移
|
|
|
|
+async function handleTrans(){
|
|
|
|
+ if(!transData.selectId){
|
|
|
|
+ Toast('请选择分类')
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ const res=await apiMyChartRelateClassify({
|
|
|
|
+ my_chart_id:props.myChartInfo.my_chart_id,
|
|
|
|
+ classify_id:transData.selectId
|
|
|
|
+ })
|
|
|
|
+ if(res.code===200){
|
|
|
|
+ Toast('转移成功')
|
|
|
|
+ props.myChartInfo.my_chart_classify_id=transData.selectId
|
|
|
|
+ showTrans.value=false
|
|
|
|
+ showTransPc.value=false
|
|
|
|
+ }else{
|
|
|
|
+ Toast(res.msg)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<template>
|
|
|
|
+ <div class="collect-box">
|
|
|
|
+ <span
|
|
|
|
+ @click="handleCollectStatusChange"
|
|
|
|
+ :style="{color:isCollect?'#999999':'#E3B377'}"
|
|
|
|
+ >{{isCollect?'取消收藏':'收藏'}}</span>
|
|
|
|
+ <span class="trans" @click="handleShowTrans('mobile')">转移</span>
|
|
|
|
+ <span class="trans-pc" @click="handleShowTrans('pc')">转移</span>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <!-- 转移弹窗移动端 -->
|
|
|
|
+ <Popup
|
|
|
|
+ v-model:show="showTrans"
|
|
|
|
+ position="bottom"
|
|
|
|
+ closeable
|
|
|
|
+ >
|
|
|
|
+ <div class="mobile-trans-box">
|
|
|
|
+ <div class="label">转移图表</div>
|
|
|
|
+ <div class="list">
|
|
|
|
+ <div
|
|
|
|
+ :class="['item',item.my_chart_classify_id==transData.selectId?'active':'']"
|
|
|
|
+ v-for="item in transData.list"
|
|
|
|
+ :key="item.my_chart_classify_id"
|
|
|
|
+ @click="transData.selectId=item.my_chart_classify_id"
|
|
|
|
+ >{{item.my_chart_classify_name}}</div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="btn" @click="handleTrans">确定</div>
|
|
|
|
+ </div>
|
|
|
|
+ </Popup>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<style lang="scss" scoped>
|
|
|
|
+.collect-box{
|
|
|
|
+ padding: 20px 34px;
|
|
|
|
+ span{
|
|
|
|
+ margin-right: 60px;
|
|
|
|
+ vertical-align: middle;
|
|
|
|
+ }
|
|
|
|
+ .trans{
|
|
|
|
+ color: #E3B377;
|
|
|
|
+ &::before{
|
|
|
|
+ content: '';
|
|
|
|
+ display: inline-block;
|
|
|
|
+ width: 26px;
|
|
|
|
+ height: 26px;
|
|
|
|
+ background-image: url('@/assets/hzyb/chart/transf.png');
|
|
|
|
+ background-size: cover;
|
|
|
|
+ vertical-align: middle;
|
|
|
|
+ margin-right: 5px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .trans-pc{
|
|
|
|
+ display: none;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+@media (min-width: 768px){
|
|
|
|
+ .trans{
|
|
|
|
+ display: none;
|
|
|
|
+ }
|
|
|
|
+ .trans-pc{
|
|
|
|
+ display: inline-block !important;
|
|
|
|
+ color: #E3B377;
|
|
|
|
+ &::before{
|
|
|
|
+ content: '';
|
|
|
|
+ display: inline-block;
|
|
|
|
+ width: 26px;
|
|
|
|
+ height: 26px;
|
|
|
|
+ background-image: url('@/assets/hzyb/chart/transf.png');
|
|
|
|
+ background-size: cover;
|
|
|
|
+ vertical-align: middle;
|
|
|
|
+ margin-right: 5px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+.mobile-trans-box{
|
|
|
|
+ padding-top: 27px;
|
|
|
|
+ .label{
|
|
|
|
+ text-align: center;
|
|
|
|
+ font-size: 32px;
|
|
|
|
+ font-weight: 500;
|
|
|
|
+ padding-bottom: 40px;
|
|
|
|
+ }
|
|
|
|
+ .list{
|
|
|
|
+ height: 40vh;
|
|
|
|
+ overflow-y: auto;
|
|
|
|
+ padding: 0 34px;
|
|
|
|
+ .item{
|
|
|
|
+ padding: 24px;
|
|
|
|
+ border-bottom: 1px solid #ededed;
|
|
|
|
+ }
|
|
|
|
+ .active{
|
|
|
|
+ color: #E3B377;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .btn{
|
|
|
|
+ background-color: #333;
|
|
|
|
+ color: #E3B377;
|
|
|
|
+ text-align: center;
|
|
|
|
+ line-height: 80px;
|
|
|
|
+ letter-spacing: 4px;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+</style>
|