Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

wangkaiyue 4 lat temu
rodzic
commit
c95893af81

+ 2 - 0
jydocs-mobile/.env.development

@@ -2,3 +2,5 @@ NODE_ENV=development
 VUE_APP_MOCK=true
 VUE_APP_BASE_API = '/dev/api'
 BASE_URL = '/dev/docs/'
+VUE_APP_BASE_URL = '/dev/docs/'
+VUE_APP_LOG_URL='https://web2-jytest.jianyu360.cn/jyintegral/pointsLogs?logAction='

+ 2 - 0
jydocs-mobile/.env.production

@@ -1,3 +1,5 @@
 NODE_ENV=production
 VUE_APP_BASE_API='/jydocs/'
 BASE_URL = '/page_docs_app/'
+VUE_APP_BASE_URL = '/page_docs_app/'
+VUE_APP_LOG_URL='https://web2-jytest.jianyu360.cn/jyintegral/pointsLogs?logAction='

+ 2 - 27
jydocs-mobile/package.json

@@ -5,15 +5,7 @@
   "scripts": {
     "serve": "vue-cli-service serve",
     "build": "vue-cli-service build",
-    "build:prod": "npm run build && npm run ch2version-update && npm run ch2version-replace",
-    "build:base": "npm run build && npm run ch2version-base && npm run ch2version-replace",
-    "build:ci": "npm run build:base",
-    "lint": "vue-cli-service lint",
-    "ch2version-update": "ch2version update -lang cn",
-    "ch2version-base": "ch2version base -lang cn",
-    "ch2version-replace": "ch2version replace",
-    "git-release": "standard-version",
-    "ch2version": "ch2version"
+    "lint": "vue-cli-service lint"
   },
   "dependencies": {
     "axios": "^0.19.2",
@@ -42,10 +34,6 @@
     "@vue/eslint-config-standard": "^5.1.2",
     "@vue/eslint-config-typescript": "^5.0.2",
     "autoprefixer": "^9.8.5",
-    "commitizen": "^4.1.2",
-    "commitlint": "^9.0.1",
-    "contenthash2version": "^0.1.4",
-    "cz-conventional-changelog": "3.2.0",
     "eslint": "^6.7.2",
     "eslint-plugin-import": "^2.20.2",
     "eslint-plugin-node": "^11.1.0",
@@ -58,19 +46,6 @@
     "standard-version": "^8.0.1",
     "ts-import-plugin": "^1.6.6",
     "typescript": "~3.9.3",
-    "vue-template-compiler": "^2.6.11",
-    "yarn": "^1.22.4"
-  },
-  "husky": {
-    "hooks": {
-      "prepare-commit-msg": "exec < /dev/tty && git cz --hook || true",
-      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
-      "pre-push": "npm run lint"
-    }
-  },
-  "config": {
-    "commitizen": {
-      "path": "./node_modules/cz-conventional-changelog"
-    }
+    "vue-template-compiler": "^2.6.11"
   }
 }

+ 2 - 3
jydocs-mobile/src/api/main.ts

@@ -35,12 +35,11 @@ export function doSearchDocs (data: any) {
 }
 
 // 我的文库
-export function getMyLibList (data: any) {
-  data = qs.stringify(data)
+export function getMyLibList (params: any) {
   return $request({
     url: '/user/list',
     method: 'get',
-    params: data
+    params
   })
 }
 

+ 5 - 0
jydocs-mobile/src/main.ts

@@ -6,6 +6,7 @@ import '@/utils/'
 import { Component } from 'vue-property-decorator'
 import { Toast, Lazyload } from 'vant'
 import VueBus from './vue_bus'
+import axios from 'axios'
 
 Component.registerHooks(['beforeRouteEnter', 'beforeRouteLeave', 'beforeRouteUpdate'])
 Toast.setDefaultOptions({ getContainer: '#app' })
@@ -13,6 +14,10 @@ Toast.setDefaultOptions({ getContainer: '#app' })
 Vue.config.productionTip = false
 Vue.use(Toast).use(Lazyload).use(VueBus)
 
+router.afterEach((to) => {
+  axios.get(process.env.VUE_APP_LOG_URL + process.env.VUE_APP_BASE_URL + to.fullPath)
+})
+
 new Vue({
   router,
   store,

+ 2 - 2
jydocs-mobile/src/router/modules/main.ts

@@ -8,7 +8,7 @@ export default [
     }
   },
   {
-    path: '/purchasesuccess',
+    path: '/purchasesuccess/:num',
     name: 'purchasesuccess',
     component: () => import('@/views/purchase/purchasesuccess.vue'),
     meta: {
@@ -32,7 +32,7 @@ export default [
     }
   },
   {
-    path: '/user/library',
+    path: '/user/lib',
     name: 'userLibrary',
     component: () => import('@/views/user/Library.vue'),
     meta: {

+ 6 - 4
jydocs-mobile/src/views/Search.vue

@@ -75,10 +75,12 @@ import { dateFormatter } from '@/utils/globalFunctions'
     Card,
     Empty
   },
-  methods: {
+  computed: {
     ...mapState('main', {
       searchState: (state: any) => state.searchPageData
-    }),
+    })
+  },
+  methods: {
     ...mapMutations({
       saveSearchState: 'main/saveSearchPageState',
       clearSearchState: 'main/clearSearchPageState'
@@ -277,7 +279,7 @@ export default class extends Vue {
   }
 
   reStoreState () {
-    const listInfo = this.searchState()
+    const listInfo = this.searchState
     if (!listInfo || Object.keys(listInfo).length === 0) {
       return false
     } else {
@@ -287,6 +289,7 @@ export default class extends Vue {
       this.$nextTick(() => {
         const wrapper: any = this.$refs.scrollWrap
         wrapper.scrollTop = this.listState.scrollTop
+        this.clearSearchState()
       })
       return true
     }
@@ -300,7 +303,6 @@ export default class extends Vue {
       sortTypeList: this.sortTypeList,
       listState: this.listState
     }
-    console.log(d)
     this.saveSearchState(d)
   }
 }

+ 3 - 3
jydocs-mobile/src/views/purchase/purchase.vue

@@ -130,8 +130,8 @@ export default class extends Vue {
 
     this.getListDetail({ B: true }).then((res: any) => {
       console.log(res)
-      if (res.error_code === 0) {
-        this.response.balance = res.points.balance
+      if (res.data.error_code === 0) {
+        this.response.balance = res.data.points.balance
       }
     })
   }
@@ -142,7 +142,7 @@ export default class extends Vue {
       console.log(res)
       if (res.error_code === 0) {
         sessionStorage.setItem('paydata', JSON.stringify(res.data))
-        this.$router.push('/purchasesuccess')
+        this.$router.push('/purchasesuccess/' + this.response.balance)
       }
     })
   }

+ 3 - 1
jydocs-mobile/src/views/purchase/purchasesuccess.vue

@@ -8,7 +8,7 @@
         <p class="success_text">兑换成功</p>
         <div class="success_money">
           <span class="icon_num"></span>
-          <span class="money_num">500</span>
+          <span class="money_num">{{query}}</span>
         </div>
         <p class="success_days">{{count}}s后自动跳转到文档页面</p>
       </div>
@@ -49,6 +49,7 @@ export default class extends Vue {
   count = 3
   timer: any
   $router: any
+  query: any
   payinfor = {
     payTime: '',
     payWay: '',
@@ -57,6 +58,7 @@ export default class extends Vue {
   }
 
   created () {
+    this.query = location.href.split('/')[location.href.split('/').length - 1] // 获取id
     this.setCountDown()
     this.setSession()
   }

+ 148 - 13
jydocs-mobile/src/views/user/Library.vue

@@ -6,27 +6,56 @@
       :line-width="tabConf.lineWidth"
       :color="tabConf.color"
       v-model="tabActive"
+      class="j-container"
     >
       <van-tab title="我的文库" name="0">
         <van-list
           v-model="myLibListState.loading"
           :finished="myLibListState.finished"
-          finished-text="没有更多了"
-          @load="onLoad('0')"
+          :offset="myLibListState.offset"
+          @load="onLoad"
+          class="more-list"
+          ref="vanList"
         >
-          00000
+          <div>
+            <Card
+              v-for="(item, index) in myLibListState.list"
+              :key="index"
+              :title="item.docName"
+              :desc="item.docSummary"
+              :docType="item.docFileType"
+              :price="item.price"
+              :subInfo="calcSubInfo(item)"
+              @onClick="toDocDetail(item)"
+            />
+          </div>
         </van-list>
+        <Empty v-if="myLibListState.list.length === 0 && myLibListState.loaded">暂无数据</Empty>
       </van-tab>
 
       <van-tab title="文库收藏" name="1">
         <van-list
           v-model="myCollectionListState.loading"
           :finished="myCollectionListState.finished"
-          finished-text="没有更多了"
-          @load="onLoad('1')"
+          :offset="myCollectionListState.offset"
+          @load="onLoad"
+          class="more-list"
+          ref="vanList"
         >
-          1111
+          <div>
+            <Card
+              v-for="(item, index) in myCollectionListState.list"
+              :key="index"
+              :title="item.docName"
+              :desc="item.docSummary"
+              :docType="item.docFileType"
+              :price="item.price"
+              :subInfo="calcSubInfo(item)"
+              @onClick="toDocDetail(item)"
+            />
+          </div>
         </van-list>
+        <Empty v-if="myLibListState.list.length === 0 && myCollectionListState.loaded">暂无数据</Empty>
       </van-tab>
     </van-tabs>
   </div>
@@ -34,14 +63,19 @@
 <script lang="ts">
 import { Component, Vue } from 'vue-property-decorator'
 import { Tabs, Tab, List } from 'vant'
-import { mapActions, mapState } from 'vuex'
+import { mapState, mapMutations, mapActions } from 'vuex'
+import Card from '@/components/docs-card/Card.vue'
+import Empty from '@/components/common/Empty.vue'
+import { dateFormatter } from '@/utils/globalFunctions'
 
 @Component({
   name: 'user-library',
   components: {
     [Tabs.name]: Tabs,
     [Tab.name]: Tab,
-    [List.name]: List
+    [List.name]: List,
+    Card,
+    Empty
   },
   computed: {
     ...mapState('main', {
@@ -49,14 +83,22 @@ import { mapActions, mapState } from 'vuex'
     })
   },
   methods: {
+    ...mapMutations({
+      saveLibState: 'main/saveMyLibState',
+      clearLibState: 'main/clearMyLibState'
+    }),
     ...mapActions({
-      getList: 'main/getMyLibList'
+      getMyLibList: 'main/getMyLibList'
     })
   }
 })
 
 export default class UserLibrary extends Vue {
-  getList: any
+  protected userLibInfo: any
+  protected saveLibState: any
+  protected clearLibState: any
+
+  protected getMyLibList: any
 
   tabActive = '0'
 
@@ -68,6 +110,7 @@ export default class UserLibrary extends Vue {
   }
 
   myLibListState = {
+    loaded: false,
     loading: false,
     finished: false,
     pageNum: 1,
@@ -78,6 +121,7 @@ export default class UserLibrary extends Vue {
   }
 
   myCollectionListState = {
+    loaded: false,
     loading: false,
     finished: false,
     pageNum: 1,
@@ -87,13 +131,96 @@ export default class UserLibrary extends Vue {
     list: []
   }
 
+  get keyForList () {
+    const map: any = {
+      0: 'myLibListState',
+      1: 'myCollectionListState'
+    }
+    return map[this.tabActive] || map[0]
+  }
+
   created () {
     this.tabActive = this.$route.query.tab as string
-    this.getList({})
+    this.reStoreState()
+  }
+
+  toDocDetail (item: any) {
+    const { docId: id } = item
+    this.saveState()
+    this.$router.push({
+      name: 'details',
+      params: { id }
+    })
   }
 
-  onLoad (tab: string) {
-    console.log(tab)
+  calcSubInfo (item: any) {
+    const { uploadDate, downTimes } = item
+    return [dateFormatter(uploadDate, 'yyyy/MM/dd'), `${downTimes}次下载`]
+  }
+
+  async onLoad () {
+    const t: any = this.$data[this.keyForList]
+    const query = {
+      num: t.pageNum,
+      size: t.pageSize,
+      sign: this.tabActive
+    }
+    console.log('搜索参数:', query)
+    t.loading = true
+    const { data } = await this.getMyLibList(query)
+    t.loading = false
+    t.loaded = true
+
+    if (data && Array.isArray(data.list)) {
+      t.pageNum += 1
+      t.total = data.total
+      t.list = t.list.concat(data.list)
+    } else {
+      t.finished = true
+    }
+
+    // 数据请求完成(根据页码计算,当前页是否是最后一页)
+    // 请求完成后,页码就变为了下一页的页面,所以这里要-1
+    const isLastPage = (t.pageNum - 1) * t.pageSize >= t.total
+    if (isLastPage) {
+      t.finished = true
+    }
+  }
+
+  reStoreState () {
+    console.log('reStoreState')
+    const listInfo = this.userLibInfo
+    if (!listInfo || Object.keys(listInfo).length === 0) {
+      return false
+    } else {
+      for (const key in listInfo) {
+        this.$data[key] = listInfo[key]
+      }
+      this.setScrollTop(this.$data[this.keyForList].scrollTop)
+      setTimeout(() => {
+        this.clearLibState()
+      }, 20)
+      return true
+    }
+  }
+
+  setScrollTop (scrollTop: number) {
+    this.$nextTick(() => {
+      const wrapper: any = document.querySelector('.van-tabs__content')
+      wrapper.scrollTop = scrollTop
+    })
+  }
+
+  saveState () {
+    console.log('saveState')
+    const wrapper: any = document.querySelector('.van-tabs__content')
+    this.$data[this.keyForList].scrollTop = wrapper.scrollTop
+    const d = {
+      tabActive: this.tabActive,
+      myLibListState: this.myLibListState,
+      myCollectionListState: this.myCollectionListState
+    }
+    this.saveLibState(d)
   }
 }
 </script>
@@ -107,6 +234,14 @@ export default class UserLibrary extends Vue {
     .van-tabs__line {
       bottom: 18px;
     }
+    .van-tab__pane {
+      height: 100%;
+    }
+    .van-tabs__content {
+      flex: 1;
+      overflow-y: scroll;
+      overflow-x: hidden;
+    }
     .van-tabs {
       width: 100%;
     }

Plik diff jest za duży
+ 41 - 532
jydocs-mobile/yarn.lock


+ 1 - 0
jydocs-pc/.env.development

@@ -3,3 +3,4 @@ VUE_APP_BASE_API='/jydocs/'
 VUE_APP_BASE_URL='/swordfish/frontPage/docs/free/index/'
 VUE_APP_MOCK=true
 VUE_APP_BASE_PUBLIC='http://localhost:8080/'
+VUE_APP_LOG_URL='https://web2-jytest.jianyu360.cn/jyintegral/pointsLogs?logAction='

+ 1 - 0
jydocs-pc/.env.production

@@ -2,3 +2,4 @@ NODE_ENV=production
 VUE_APP_BASE_API='/jydocs/'
 VUE_APP_BASE_URL='/swordfish/docs/index'
 VUE_APP_BASE_PUBLIC='/page_docs/'
+VUE_APP_LOG_URL='https://web2-jytest.jianyu360.cn/jyintegral/pointsLogs?logAction='

+ 5 - 0
jydocs-pc/src/main.js

@@ -4,10 +4,15 @@ import router from './router'
 import singleSpaVue from 'single-spa-vue'
 import { Loading } from 'element-ui'
 import '@/utils/'
+import axios from 'axios'
 
 Vue.use(Loading.directive)
 Vue.config.productionTip = false
 
+router.afterEach((to, from) => {
+  axios.get(process.env.VUE_APP_LOG_URL + process.env.VUE_APP_BASE_URL + to.fullPath)
+})
+
 const vueOptions = {
   el: '#single-spa-app',
   router,

+ 1 - 1
jydocs-pc/src/router.js

@@ -39,7 +39,7 @@ export default new Router({
       component: () => import('@/views/purchase/purchase.vue')
     },
     {
-      path: '/purchasesuccess',
+      path: '/purchasesuccess/:num',
       name: 'purchasesuccess',
       component: () => import('@/views/purchase/purchasesuccess.vue')
     },

+ 7 - 6
jydocs-pc/src/views/purchase/purchase.vue

@@ -16,7 +16,7 @@
         <div class="doc_m_content">
           <div class="doc_content_infor">
             <div class="doc_c_left">
-              <img src="../../assets/images/banner.png" class="doc_c_img" alt="" />
+              <img :src="response.previewImgId" class="doc_c_img" alt="" />
               <span class="icon_word"></span>
             </div>
             <div class="doc_c_right">
@@ -55,7 +55,7 @@
           </div>
         </div>
         <div class="doc_agreement">
-          <el-checkbox v-model="checked" >我已阅读并同意<a href="javascript:;" class="agree_link">《剑鱼标讯线上购买与服务条款》</a></el-checkbox>
+          <el-checkbox v-model="checked" >我已阅读并同意<a href="/front/staticPage/serviceterms.html" class="agree_link">《剑鱼标讯线上购买与服务条款》</a></el-checkbox>
         </div>
         <div class="doc_surepur">
           <button class="btnsure" @click="setExhange()" :disabled="!this.checked" id="btnsure">确定兑换</button>
@@ -114,8 +114,9 @@ export default {
       })
       getJYchannel({ B: true }).then((res) => {
         console.log(res)
-        if (res.error_code === 0) {
-          this.response.channel = res.points.balance
+        if (res.data.error_code === 0) {
+          console.log(res.data)
+          this.response.channel = res.data.data.points.balance
         }
       })
     },
@@ -123,9 +124,9 @@ export default {
     setExhange () {
       getDocPays({ docId: this.query, phone: this.tel }).then((res) => {
         console.log(res)
-        if (res.error_code === 0) {
+        if (res.data.error_code === 0) {
           sessionStorage.setItem('paydata', JSON.stringify(res.data))
-          this.$router.push('/purchasesuccess')
+          this.$router.push('/purchasesuccess/' + this.response.price)
         }
       })
     }

+ 9 - 6
jydocs-pc/src/views/purchase/purchasesuccess.vue

@@ -10,7 +10,7 @@
           <div class="exchange_text">兑换成功</div>
           <div class="ex_pay">
             <span class="icon_jianyu"></span>
-            <span class="setmoney">-500</span>
+            <span class="setmoney">-{{query}}</span>
           </div>
         </div>
         <div class="doc_m_bottom">
@@ -29,7 +29,7 @@
             </li>
             <li class="bill_list">
               <span class="bill_label">剑鱼币余额</span>
-              <span class="bill_result bill_money">2700</span>
+              <span class="bill_result bill_money">{{payinfor.balance}}</span>
             </li>
           </ul>
           <div class="now_download">
@@ -53,6 +53,7 @@ export default {
   data () {
     return {
       checked: true,
+      query: '',
       payinfor: {
         payTime: '',
         payWay: '',
@@ -62,17 +63,19 @@ export default {
     }
   },
   created () {
+    this.query = location.href.split('/')[location.href.split('/').length - 1] // 获取id
     this.setSession()
   },
   methods: {
     setSession () {
       let paydata = sessionStorage.getItem('paydata')
-      console.log(paydata)
       if (paydata) {
         paydata = JSON.parse(paydata)
-        this.payinfor.payTime = dateFormatter(paydata.payTime * 1000, 'yyyy-MM-dd HH:mm:ss')
-        this.payinfor.payWay = paydata.payWay
-        this.payinfor.code = paydata.code
+        console.log(paydata)
+        this.payinfor.payTime = dateFormatter(paydata.data.payTime * 1000, 'yyyy-MM-dd HH:mm:ss')
+        this.payinfor.payWay = paydata.data.payWay
+        this.payinfor.code = paydata.data.code
+        this.payinfor.balance = paydata.data.balance
       }
     }
   }

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików