natasha 1 rok temu
rodzic
commit
831801b194

+ 21 - 2
src/views/bookShelf/articleDetail.vue

@@ -86,6 +86,7 @@ import AnnotationList from './components/AnnotationList.vue'
 import NormalModel from "./components/NormalModel.vue"
 import MenuRight from "./components/MenuRight.vue"
 import * as echarts from "echarts";
+import { getLogin } from "@/api/ajax";
 export default {
   name: 'articleDetail',
   computed: {
@@ -476,7 +477,8 @@ export default {
                 darkGreenBorder:'#C1C5CD'
             }
         ],
-        articleType:this.$route.query.type?this.$route.query.type*1:1
+        articleType:this.$route.query.type?this.$route.query.type*1:1,
+        articleId:this.$route.query.id?this.$route.query.id:'',
     }
   },
   methods: {
@@ -559,10 +561,27 @@ export default {
         }else{
             
         }
+    },
+    getArticleDetail(){
+        let MethodName = "/PaperServer/Client/Article/GetArticleDetail";
+        let data = {
+            id: this.articleId,
+        }
+        getLogin(MethodName, data)
+        .then((res) => {
+            if(res.status===1){
+                
+            }
+        })
+        .catch(() => {
+            
+        }); 
     }
   },
   created(){
-    
+    if(this.articleId){
+        this.getArticleDetail()
+    }
   },
   mounted(){
     this.inityuan()

+ 34 - 22
src/views/bookShelf/bookItem.vue

@@ -11,9 +11,9 @@
         <div class="navBar-left">
             <a class="goback" @click="$router.go(-1)"><i class="el-icon-arrow-left"></i>{{info.study_phase_name}}版</a>
             <div class="border"></div>
-            <p>{{info.name}}</p>
+            <p>{{info.name||info.iss_name}}</p>
         </div>
-        <div class="navBar-right">
+        <!-- <div class="navBar-right">
             <a @click="handleShare">
                 <svg-icon icon-class="share-personal" className="icon-share"></svg-icon>
                 <span>分享</span>
@@ -22,7 +22,7 @@
                 <svg-icon icon-class="like-line" className="icon-like"></svg-icon>
                 <span>收藏</span>
             </a>
-        </div>
+        </div> -->
     </div>
     <div class="main-top" v-if="info">
         <div class="main-top-inner">
@@ -30,24 +30,24 @@
                 <!-- <el-carousel-item v-for="(item1, index) in data.imgList" :key="index"> -->
                     <el-image
                         class="image"
-                        :src="info.cover_image_url?info.cover_image_url:bookType==='baozhi'?require('../../assets/baozhi'+(Math.floor(Math.random()*2)+1)+'.png'):require('../../assets/kecheng'+(Math.floor(Math.random()*3)+1)+'.png')"
+                        :src="info.cover_image_url||info.iss_cover_url?info.cover_image_url||info.iss_cover_url:bookType==='baozhi'?require('../../assets/baozhi'+(Math.floor(Math.random()*2)+1)+'.png'):require('../../assets/kecheng'+(Math.floor(Math.random()*3)+1)+'.png')"
                         :fit="'cover'">
                     </el-image>
                 <!-- </el-carousel-item> -->
             </el-carousel>
             <div class="book-info-right">
-                <h1 class="title">{{info.name}}</h1>
+                <h1 class="title">{{info.name||info.iss_name}}</h1>
                 <!-- <b class="org">{{data.org}}</b><span class="date">2023.07.01-2023.07.21</span> -->
                 <div class="sales-box">
                     <div class="sales-left">
                         <span>优惠价</span>
-                        <span class="OPPOSans">¥{{info.price_discount?info.price_discount:info.price|cutMoneyFiter}}</span>
-                        <span class="old-price" v-if="info.price_discount&&info.price_discount!==info.price">¥{{info.price|cutMoneyFiter}}</span>
+                        <span class="OPPOSans">¥{{info.price_discount||info.iss_price_sell?info.price_discount||info.iss_price_sell:info.price||info.iss_price_org|cutMoneyFiter}}</span>
+                        <span class="old-price" v-if="(info.price_discount&&info.price_discount!==info.price)||(info.iss_price_sell&&info.iss_price_sell!==info.iss_price_org)">¥{{info.price||info.iss_price_org|cutMoneyFiter}}</span>
                     </div>
                     <span class="sales-right" v-if="sales>=1000">累计销售 {{salesCn}}</span>
                 </div>
                 <div class="label-box">
-                    <label v-for="(itemL,indexL) in info.label_name_list" :key="indexL" :style="{background:tagBg[indexL%3],color:tagColor[indexL%3]}">
+                    <label v-for="(itemL,indexL) in info.label_name_list||info.info_tag_data" :key="indexL" :style="{background:tagBg[indexL%3],color:tagColor[indexL%3]}">
                         {{ '# ' + itemL }}
                     </label>
                 </div>
@@ -59,32 +59,32 @@
                 <div class="info-box" v-if="bookType==='baozhi'">
                     <div class="info-item">
                         <label>出版社</label>
-                        <span>{{info.org_name}}</span>
+                        <span>{{info.vendor_name?info.vendor_name:'21世纪报社'}}</span>
                     </div>
-                    <div class="info-item">
+                    <!-- <div class="info-item">
                         <label>字数</label>
                         <span>78291</span>
-                    </div>
+                    </div> -->
                     <div class="info-item">
                         <label>发行时间</label>
-                        <span>2023-05-15</span>
+                        <span>{{info.release_date}}</span>
                     </div>
                     <div class="info-item">
-                        <label>中英双语</label>
+                        <label>语</label>
                         <span>中英双语</span>
                     </div>
                     <div class="info-item">
                         <label>期数</label>
-                        <span>815 期</span>
+                        <span>{{info.iss_no}} 期</span>
                     </div>
                     <div class="info-item">
                         <label>学段</label>
-                        <span>初二</span>
+                        <span>{{info.study_phase_name}}</span>
                     </div>
-                    <div class="info-item">
+                    <!-- <div class="info-item">
                         <label>版本</label>
                         <span>基础版</span>
-                    </div>
+                    </div> -->
                 </div>
                 <div class="info-box" v-if="bookType==='LB'">
                     <div class="info-item">
@@ -134,7 +134,7 @@
             </el-tab-pane> -->
             <el-tab-pane label="目录" v-if="bookType==='baozhi'">
                 <tree-list 
-                    :data="data.treeList" 
+                    :data="issueChnList" 
                     :isBuy="isBuy==='true'"
                     :headerBg="headerBg"
                     :headerBorder="headerBorder"
@@ -423,6 +423,7 @@ export default {
         qr_code_url: '',
         pre_play_cs_item_id: '', //上次阅读课节id
         pre_play_index: null, // 上次阅读索引
+        issueChnList:[]
     }
   },
   //计算属性 类似于data概念
@@ -462,15 +463,26 @@ export default {
                 is_contain_cs_item: "true",
                 cs_item_sort_mode: "ASCE"
             }
+        }else if(this.bookType==='baozhi'){
+            MethodName = '/PaperServer/Client/Issue/GetIssueBriefInfo'
+            data = {
+                id: this.id,
+            }
         }
         getLogin(MethodName, data)
         .then((res) => {
             if(res.status===1){
-                this.info = res.lb_course
-                if(res.my_play_record.pre_play_cs_item_id){
-                    this.pre_play_cs_item_id = res.my_play_record.pre_play_cs_item_id
+                if(this.bookType==='LB'){
+                    this.info = res.lb_course
+                    if(res.my_play_record.pre_play_cs_item_id){
+                        this.pre_play_cs_item_id = res.my_play_record.pre_play_cs_item_id
+                    }
+                    this.courseList = this.handleCourseLength(res.cs_item_list)
+                }else if(this.bookType==='baozhi'){
+                    this.info = res.data
+                    this.issueChnList = res.data.chn_art_data
                 }
-                this.courseList = this.handleCourseLength(res.cs_item_list)
+                
                 this.isBuy = res.buy_info.is_buy
                 this.sales = res.buy_info.total_buy_count
                 if(this.sales<1000){

+ 6 - 6
src/views/bookShelf/components/TreeList.vue

@@ -1,10 +1,10 @@
 <template>
   <ul class="treeList">
     <li v-for="(item,index) in data" :key="index">
-        <p class="parent-node"><span class="number">{{item.number}}</span><b class="title">{{item.title}}</b></p>
-        <ul v-if="item.children&&item.children.length>0">
-            <li :class="[isBuy||index===0?'children-buy':'children-no','children']" v-for="(items,indexs) in item.children" :key="indexs" @click="handleLink(items,isBuy||index===0,index)">
-                <p class="children-node"><span class="number">{{items.number}}</span><b class="title">{{items.title}}</b><i class="el-icon-lock" v-if="!(isBuy||index===0)"></i></p>
+        <p class="parent-node"><span class="number">{{index+1}}</span><b class="title">{{item.chn_name}}</b></p>
+        <ul v-if="item.arts&&item.arts.length>0">
+            <li :class="[isBuy||index===0?'children-buy':'children-no','children']" v-for="(items,indexs) in item.arts" :key="indexs" @click="handleLink(items,isBuy||index===0,index)">
+                <p class="children-node"><span class="number">{{indexs+1}}</span><b class="title">{{items.art_title}}</b><i class="el-icon-lock" v-if="!(isBuy||index===0)"></i></p>
             </li>
         </ul>
     </li>
@@ -40,7 +40,7 @@ export default {
             this.$router.push({
                 path: "/articleDetail",
                 query: {
-                        type:index+1
+                        id: item.id
                     },
                 
             });
@@ -166,7 +166,7 @@ p{
                 align-items: center;
             }
             .number{
-                width: 37px;
+                width: 24px;
             }
             .title{
                 flex: 1;

+ 64 - 36
src/views/personalCenter/components/Setting.vue

@@ -1,40 +1,40 @@
 <template>
-  <div class="setting">
+  <div class="setting personal-setting" v-loading="loading" v-if="personalInfo">
     <template v-if="!settingFlag">
         <div class="setting-top">
             <div class="avator-box">
             <el-image
-                :src="personalInfo.avatar?personalInfo.avatar:require('../../../assets/avatar.png')"
+                :src="personalInfo.image_url?personalInfo.image_url:require('../../../assets/avatar.png')"
                 fit="cover" style="width:96px;height:96px;">
             </el-image>
-            <a @click="toggleShow" class="img-crop">
-                <svg-icon icon-class="camera"></svg-icon>
+            <a class="img-crop">
+                <upload :datafileList="infoForm.cover_image_list" :filleNumber="99" :changeFillId="handleAvatarSuccess" :fileName="'cover'" :showList="true" uploadType="image" />
             </a>
             </div>
             <div class="center">
                 <div class="info-items">
                     <label>用户名:</label>
-                    <span>{{personalInfo.name}}</span>
+                    <span>{{personalInfo.user_name}}</span>
                 </div>
                 <div class="info-items">
                     <label>手机号码:</label>
-                    <span>{{personalInfo.phone}}</span>
+                    <span>{{personalInfo.phone?personalInfo.phone.substring(0,3)+'******'+personalInfo.phone.substring(9,11):'-'}}</span>
                 </div>
                 <div class="info-items">
                     <label>账号ID:</label>
-                    <span>{{personalInfo.userId}}</span>
+                    <span>{{personalInfo.id}}</span>
                 </div>
                 <div class="info-items">
                     <label>邮箱:</label>
-                    <span>{{personalInfo.email}}</span>
+                    <span>{{personalInfo.email?personalInfo.email:'-'}}</span>
                 </div>
                 <div class="info-items">
                     <label>注册时间:</label>
-                    <span>{{personalInfo.time}}</span>
+                    <span>{{personalInfo.register_time}}</span>
                 </div>
                 <div class="info-items">
                     <label>机构:</label>
-                    <span>{{personalInfo.org}}</span>
+                    <span>{{personalInfo.org_name}}</span>
                 </div>
             </div>
         </div>
@@ -90,12 +90,9 @@
                 <div class="safe-items">
                     <label>登录密码</label>
                     <div class="safe-items-right">
-                        <p v-if="personalInfo.password" class="hasContent">
+                        <p class="hasContent">
                             已设置。密码至少6位字符,支持数字和字母,且必须同时包含数字和大小写字母。
                         </p>
-                        <p v-else class="noContent">
-                        您暂未设置密码,密码可以有效的保护账号的安全。 
-                        </p>
                         <a @click="handleSetting('passwordFlag')">{{personalInfo.password?'修改':'设置'}}</a>
                     </div>
                 </div>
@@ -228,9 +225,11 @@
 //这里可以导入其它文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
 //例如:import 《组件名称》from ‘《组件路径》';
 import { mapState } from 'vuex';
+import { getLogin } from "@/api/ajax";
+import Upload from "../../../components/Upload.vue"
 export default {
   //import引入的组件需要注入到对象中才能使用
-  components: { },
+  components: { Upload },
   props: [],
   data() {
     //这里存放数据
@@ -286,23 +285,16 @@ export default {
     return {
         show: false, // 编辑头像flag
         tabsIndex: 0,
-        personalInfo: {
-            name:'张平方',
-            avatar: require('../../../assets/avatar.png'),
-            phone:'177******35',
-            userId:'awtk-55975980',
-            email:'1234@qq.com',
-            time:'2012-10-16 23:55:35',
-            org:'青岛科技大学',
-            password:'123456'
-        },
+        personalInfo: null,
         infoForm:{
             name:'abc',
             realName:'张平方',
             sex:'1',
             selectedOptions: [],
             desc:'',
-            region:''
+            region:'',
+            cover_image_list: [],
+            cover_image_id: null,
         },
         rules: {
             realName: [
@@ -377,7 +369,8 @@ export default {
             code:[
                 { required: true, message: '请输入验证码', trigger: 'blur' }
             ]
-        }
+        },
+        loading: false,
     }
   },
   //计算属性 类似于data概念
@@ -549,10 +542,39 @@ export default {
             }
         }
         
-    }
+    },
+    getInfo(){
+        this.loading = true
+        let MethodName = "/OrgServer/Client/PersonManager/GetMyInfo";
+        let data = {}
+        getLogin(MethodName, data)
+        .then((res) => {
+            this.loading = false
+            if(res.status===1){
+                this.personalInfo = res.person
+                this.$emit('changeTouxiang',this.personalInfo.image_url)
+            }
+        }).catch((res) =>{
+            this.loading = false
+        })
+    },
+    handleAvatarSuccess(fileList,name) {
+        let MethodName = "/OrgServer/Client/PersonManager/UpdateMyImage";
+        let data = {
+            image_id: fileList.length>0&&fileList[fileList.length-1].response&&fileList[fileList.length-1].response.file_info_list&&fileList[fileList.length-1].response.file_info_list[0]?fileList[fileList.length-1].response.file_info_list[0].file_id:''
+        }
+        getLogin(MethodName, data)
+        .then((res) => {
+            if(res.status===1){
+                this.getInfo()
+            }
+        }).catch((res) =>{
+        })
+    },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {
+    this.getInfo()
   },
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted() {
@@ -596,18 +618,13 @@ export default {
                 height: 30px;
                 right: -4px;
                 bottom: -4px;
-                background: #F2F3F5;
                 border-radius: 50%;
                 display: block;
                 text-align: center;
-                padding: 7px;
                 font-size: 0;
                 border: 2px solid #FFFFFF;
-                .svg-icon{
-                    width: 12px;
-                    height: 12px;
-                    color: #165DFF;
-                }
+                background: #F2F3F5 url("../../../assets/camera.png") center no-repeat;
+                background-size: 12px;
             }
             .el-image{
                 border-radius: 50%;
@@ -621,7 +638,7 @@ export default {
             margin-top: 12px;
             .info-items{
                 margin-bottom: 12px;
-                width: 35%;
+                width: 37%;
             }
             label{
                 font-weight: 400;
@@ -838,4 +855,15 @@ export default {
         }
     }
 }
+.personal-setting{
+    .upload{
+        width: 30px;
+        height: 30px;
+        overflow: hidden;
+        .upload-demo{
+            opacity: 0;
+            width: 100% !important;
+        }
+    }
+}
 </style>

+ 6 - 1
src/views/personalCenter/index.vue

@@ -5,6 +5,7 @@
       :headerBorder="'#5C5C5C'"
       :userBg="'rgba(0, 0, 0, 0.24)'"
       :type="'black'"
+      :touxiang="newTouxiang"
     />
     <div class="main">
         <ul class="main-left">
@@ -25,7 +26,7 @@
             <!-- 我的订单 -->
             <order-list :data="myShare.data" v-if="menuType==='order'"></order-list>
             <!-- 个人设置 -->
-            <setting v-if="menuType==='setting'"></setting>
+            <setting v-if="menuType==='setting'" @changeTouxiang="changeTouxiang"></setting>
         </div>
     </div>
   </div>
@@ -136,6 +137,7 @@ export default {
             },
         ]
       },
+      newTouxiang: ''
     }
   },
   //计算属性 类似于data概念
@@ -169,6 +171,9 @@ export default {
                 type:encodeURIComponent(value)
             },
         }); 
+    },
+    changeTouxiang(img){
+        this.newTouxiang = img
     }
   },
   //生命周期 - 创建完成(可以访问当前this实例)