litian
2024-08-22 39a97e8e27d52ca0729cb6b0294a37717d063d0a
试读页
3个文件已修改
235 ■■■■■ 已修改文件
src/App.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/readerPages/webHome.vue 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue
@@ -120,12 +120,8 @@
let bookId = getUrlParam('bookId')
let token = getUrlParam('token')
let tryPageCount = getUrlParam('tryPageCount')
if(bookId){
  localStorage.setItem('bookId', bookId)
}
if(tryPageCount){
  localStorage.setItem('tryPageCount', tryPageCount)
}
if(token && token != null && token != 'null'){
src/main.ts
@@ -18,13 +18,10 @@
// 路由执行之前的一些操作
router.beforeEach((to, from, next) => {
  console.log(to, from)
  const isInternalLink = from.fullPath.includes('/testBookReader')
  if (isInternalLink) {
    console.log('通过内部链接进入项目')
    sessionStorage.removeItem('loginCtx')
  } else {
    console.log(loginCtx, '通过外部链接进入项目')
    sessionStorage.setItem('loginCtx', loginCtx)
  }
src/views/readerPages/webHome.vue
@@ -368,9 +368,18 @@
                        ><VideoCamera
                      /></el-icon> -->
                      <!-- <el-icon v-else-if="activeClassify == 'other'" size="30"><Files /></el-icon> -->
                      <img src="@/assets/images/resource/yp-mr.png"  v-else-if="activeClassify == 'audio'" />
                      <img src="@/assets/images/resource/sp-mr.png"  v-else-if="activeClassify == 'video'" />
                      <img src="@/assets/images/resource/qt-mr.png"  v-else-if="activeClassify == 'other'" />
                      <img
                        src="@/assets/images/resource/yp-mr.png"
                        v-else-if="activeClassify == 'audio'"
                      />
                      <img
                        src="@/assets/images/resource/sp-mr.png"
                        v-else-if="activeClassify == 'video'"
                      />
                      <img
                        src="@/assets/images/resource/qt-mr.png"
                        v-else-if="activeClassify == 'other'"
                      />
                      <div class="handleBox" v-if="showHandle == index">
                        <div class="delImg">
                          <el-icon
@@ -423,11 +432,25 @@
                            ><Download
                          /></el-icon>
                          <!-- 收藏按钮 -->
                           <img
                            :src="collectResourceList.findIndex(citem => citem.id == item.id) > -1 ? isHeart : heart  "
                            class="icon hover"
                            style="width: 15px;"
                            @click="handleCollectResource(item.id,item.md5 ? item.md5 : '',item.resourcePath ? item.resourcePath : '',item.resourceType,item.resourceType == '视频' || '音频' ? 'bits' : 'json',item.resourceName)" />
                          <img
                            :src="
                              collectResourceList.findIndex((citem) => citem.id == item.id) > -1
                                ? isHeart
                                : heart
                            "
                            class="icon hover"
                            style="width: 15px"
                            @click="
                              handleCollectResource(
                                item.id,
                                item.md5 ? item.md5 : '',
                                item.resourcePath ? item.resourcePath : '',
                                item.resourceType,
                                item.resourceType == '视频' || '音频' ? 'bits' : 'json',
                                item.resourceName
                              )
                            "
                          />
                        </div>
                      </div>
                    </div>
@@ -537,9 +560,9 @@
        </div>
        <!-- 题库底部收藏夹和错题集 -->
        <ul class="question-bottom" v-if="activeMenu == '题库'">
            <li @click="selectExercisesType('collection')">收藏夹</li>
            <li @click="selectExercisesType('wrong')">错题本</li>
          </ul>
          <li @click="selectExercisesType('collection')">收藏夹</li>
          <li @click="selectExercisesType('wrong')">错题本</li>
        </ul>
        <!-- 菜单内容收起 -->
        <div class="menuStateBox" v-if="menuState.open">
          <svg
@@ -816,7 +839,7 @@
          </div>
        </div>
        <!-- 语音阅读组件 -->
         <!-- <div class="voice-reader">
        <!-- <div class="voice-reader">
          <voiceReader />
         </div> -->
      </div>
@@ -1247,9 +1270,15 @@
    :infoType="examinationData.infoType"
  />
  <!-- 计算器 -->
   <el-dialog title="计算器" align-center v-model="calculatorVisble" width="550" style="height:548px">
  <el-dialog
    title="计算器"
    align-center
    v-model="calculatorVisble"
    width="550"
    style="height: 548px"
  >
    <calculator />
   </el-dialog>
  </el-dialog>
</template>
<script setup lang="ts">
@@ -1382,9 +1411,15 @@
const bookConfig = ref({})
const activeCatalog = ref()
const reMarResult = ref()
const bookInfo = ref()
const isBuy = ref(false)
const tryPageCount = ref(0)
onMounted(() => {
  if (token) {
    getUserInfo()
  }
  if (localStorage.getItem('bookId')) {
    getBookInfo()
  }
  setTimeout(() => {
    canvasWith.value = document.querySelector('.content-box').offsetWidth
@@ -1415,12 +1450,14 @@
  window.qiankunActions.onGlobalStateChange((state, prev) => {
    console.log('父层state变化', state)
    window.qiankunState = state
    if (window.qiankunState && window.qiankunState.initTestBook) {
      window.qiankunState.initTestBook(
        localStorage.getItem('bookId') + '',
        localStorage.getItem('tryPageCount')
      )
    if (isBuy.value) {
      if (window.qiankunState && window.qiankunState.initTestBook) {
        window.qiankunState.initTestBook(localStorage.getItem('bookId') + '')
      }
    } else {
      if (window.qiankunState && window.qiankunState.initTestBook) {
        window.qiankunState.initTestBook(localStorage.getItem('bookId') + '', tryPageCount.value)
      }
    }
  })
@@ -1532,6 +1569,44 @@
//     }
//   }
// )
//根据refcode获取图书信息
const getBookInfo = () => {
  const obj = {
    storeInfo: 'jsek_digitalTextbooks',
    path: '*',
    queryType: '*',
    coverSize: {
      width: 150
    },
    paging: {
      start: 0,
      size: 6
    },
    filterList: [
      {
        value: 'Normal',
        field: 'state'
      }
    ],
    fields: {
      author: [],
      RefCodes: [localStorage.getItem('bookId')],
      probationPage: []
    }
  }
  MG.store.getProductList(obj).then((res) => {
    console.log(res.datas, '图书信息')
    bookInfo.value = res.datas[0]
    if (res.datas[0].purchasedSaleMethodIdList.includes(res.datas[0].defaultSaleMethodId)) {
      isBuy.value = true
    } else {
      isBuy.value = false
    }
    tryPageCount.value = Number(res.datas[0].probationPage)
  })
}
const getUserInfo = () => {
  MG.identity.getCurrentAppUser().then((res) => {
@@ -1700,7 +1775,8 @@
    {
      icon: huabi,
      name: '画笔',
      isShow: bookConfig.value.textbookComponents.indexOf('800109C0') > -1
      // isShow: bookConfig.value.textbookComponents.indexOf('800109C0') > -1
      isShow:true
    },
    {
      icon: baiban,
@@ -1801,8 +1877,8 @@
const handleNodeClick = (data) => {
  console.log(data)
  if (localStorage.getItem('tryPageCount')) {
    if (data.start < localStorage.getItem('tryPageCount')) {
  if (!isBuy.value) {
    if (data.start < tryPageCount.value) {
      headerData.process = data.start
      if (window.qiankunState && window.qiankunState.gotoPage)
        window.qiankunState.gotoPage(data.chapter, data.start)
@@ -2113,12 +2189,11 @@
  activeClassify.value = item.key
  resourceDataList.value = []
  searchText.value = ''
  if(resourceType.value == 'collect') {
  if (resourceType.value == 'collect') {
    getCollectResource()
  } else {
    getResourceData()
  }
}
const searchBtn = () => {
  if (searchShow.value) {
@@ -2130,17 +2205,17 @@
// 获取收藏的资源
const getCollectResource = () => {
  if(token) {
  if (token) {
    MG.identity
    .getUserKey({
      domain: 'collectResource',
      keys: [bookConfig.value.bookId]
    })
    .then((res) => {
      if (res.length) {
        collectResourceList.value = JSON.parse(res[0].value)
        console.log('收藏资源列表', collectResourceList.value)
        if(collectResourceList.value.length > 0) {
      .getUserKey({
        domain: 'collectResource',
        keys: [bookConfig.value.bookId]
      })
      .then((res) => {
        if (res.length) {
          collectResourceList.value = JSON.parse(res[0].value)
          console.log('收藏资源列表', collectResourceList.value)
          if (collectResourceList.value.length > 0) {
            let imgCount = 0
            let audioCount = 0
            let videoCount = 0
@@ -2215,11 +2290,11 @@
                }
              })
            }
          }
        } else {
          resourceDataList.value = []
        }
      } else {
        resourceDataList.value = []
      }
    })
      })
  } else {
    ElMessageBox.confirm('请先登录!', {
      confirmButtonText: '去登录',
@@ -2240,27 +2315,27 @@
  }
}
// 收藏按钮
const handleCollectResource = (id,md5,resourcePath,resourceType,source,resourceName) => {
    if(collectResourceList.value.findIndex(item => item.id == id) > -1) {
      collectResourceList.value = collectResourceList.value.filter(item => item.id != id)
    } else {
      collectResourceList.value.push({
        id,
        md5,
        resourcePath:resourcePath.replace(bookConfig.value.resourceUrl + '/',''),
        resourceType,
        source,
        resourceName
      })
    }
    MG.identity.setUserKey({
const handleCollectResource = (id, md5, resourcePath, resourceType, source, resourceName) => {
  if (collectResourceList.value.findIndex((item) => item.id == id) > -1) {
    collectResourceList.value = collectResourceList.value.filter((item) => item.id != id)
  } else {
    collectResourceList.value.push({
      id,
      md5,
      resourcePath: resourcePath.replace(bookConfig.value.resourceUrl + '/', ''),
      resourceType,
      source,
      resourceName
    })
  }
  MG.identity.setUserKey({
    setKeyRequests: [
      {
        domain: "collectResource",
        key:bookConfig.value.bookId,
        value: JSON.stringify(collectResourceList.value),
      },
    ],
        domain: 'collectResource',
        key: bookConfig.value.bookId,
        value: JSON.stringify(collectResourceList.value)
      }
    ]
  })
}
@@ -2357,15 +2432,14 @@
//错题本
const wrongQuestionVisble = ref(false)
const selectExercisesType = (type) => {
  if (type == 'exercises') {
    getExercisesList()
      exercisesType.value = type
      searchText.value = ''
    exercisesType.value = type
    searchText.value = ''
  } else if (type == 'additional') {
    getAdditionalList()
      exercisesType.value = type
      searchText.value = ''
    exercisesType.value = type
    searchText.value = ''
  } else if (type == 'wrong') {
    openExaminationDialog(true, {}, 'errorQuestion')
  } else {
@@ -2739,8 +2813,8 @@
        shengciVisble.value = true
        break
      case '计算器':
      calculatorVisble.value = true
      break
        calculatorVisble.value = true
        break
    }
  } else {
    ElMessageBox.confirm('请先登录!', {
@@ -4557,24 +4631,24 @@
        overflow-y: auto;
      }
      .questionList {
        height:83%
        height: 83%;
      }
      .question-bottom {
        position: absolute;
        bottom: 0;
        display: flex;
        justify-content: space-evenly;
        width:300px;
        padding:20px 0;
        background-color:#fff;
        width: 300px;
        padding: 20px 0;
        background-color: #fff;
        li {
          cursor: pointer;
          width: 65px;
          height:65px;
          border:1px solid #cfcfcf;
          border-radius:10px;
          background-color:#f9f9f9;
          display:flex;
          height: 65px;
          border: 1px solid #cfcfcf;
          border-radius: 10px;
          background-color: #f9f9f9;
          display: flex;
          justify-content: center;
          align-items: center;
        }
@@ -5145,8 +5219,8 @@
  }
}
.voice-reader {
  position:absolute;
  bottom:30px;
  left:50px;
  position: absolute;
  bottom: 30px;
  left: 50px;
}
</style>