瀏覽代碼

研发需求243 个人中心 -我的积分 增加 积分来源分布柱状图;研发需求244 H5页面不允许非登录用户 进入,如果未登录用户打开H5页面,需跳转到登录页

WINDOWS-7IFQK7E\EDY 9 月之前
父節點
當前提交
0bc894e28e
共有 5 個文件被更改,包括 6183 次插入6173 次删除
  1. 69 19
      package-lock.json
  2. 1 0
      package.json
  3. 69 3
      src/pages/main/personal/integral.vue
  4. 15 5
      src/router/index.ts
  5. 6029 6146
      yarn.lock

+ 69 - 19
package-lock.json

@@ -14,6 +14,7 @@
         "autoprefixer": "^10.4.14",
         "axios": "^1.4.0",
         "crypto-js": "^4.2.0",
+        "echarts": "^5.5.1",
         "lib-flexible": "^0.3.2",
         "postcss-pxtorem": "^6.0.0",
         "qrcode": "^1.5.3",
@@ -39,6 +40,7 @@
         "pnpm": "^8.5.1",
         "simple-git-hooks": "^2.8.1",
         "taze": "^0.10.1",
+        "terser": "^5.29.2",
         "typescript": "^5.0.4",
         "unplugin-auto-import": "^0.16.0",
         "unplugin-vue-components": "^0.24.1",
@@ -2574,7 +2576,6 @@
       "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
       "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
       "dev": true,
-      "peer": true,
       "dependencies": {
         "@jridgewell/gen-mapping": "^0.3.0",
         "@jridgewell/trace-mapping": "^0.3.9"
@@ -5392,8 +5393,7 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
       "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-      "dev": true,
-      "peer": true
+      "dev": true
     },
     "node_modules/builtin-modules": {
       "version": "3.3.0",
@@ -6163,6 +6163,20 @@
       "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
       "dev": true
     },
+    "node_modules/echarts": {
+      "version": "5.5.1",
+      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.1.tgz",
+      "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
+      "dependencies": {
+        "tslib": "2.3.0",
+        "zrender": "5.6.0"
+      }
+    },
+    "node_modules/echarts/node_modules/tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+    },
     "node_modules/editorconfig": {
       "version": "0.15.3",
       "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
@@ -11180,7 +11194,6 @@
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
       "dev": true,
-      "peer": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -11198,7 +11211,6 @@
       "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
       "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
       "dev": true,
-      "peer": true,
       "dependencies": {
         "buffer-from": "^1.0.0",
         "source-map": "^0.6.0"
@@ -11530,11 +11542,10 @@
       }
     },
     "node_modules/terser": {
-      "version": "5.18.2",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz",
-      "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==",
+      "version": "5.33.0",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.33.0.tgz",
+      "integrity": "sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==",
       "dev": true,
-      "peer": true,
       "dependencies": {
         "@jridgewell/source-map": "^0.3.3",
         "acorn": "^8.8.2",
@@ -13105,6 +13116,19 @@
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
       }
+    },
+    "node_modules/zrender": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.0.tgz",
+      "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
+      "dependencies": {
+        "tslib": "2.3.0"
+      }
+    },
+    "node_modules/zrender/node_modules/tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
     }
   },
   "dependencies": {
@@ -14811,7 +14835,6 @@
       "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz",
       "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==",
       "dev": true,
-      "peer": true,
       "requires": {
         "@jridgewell/gen-mapping": "^0.3.0",
         "@jridgewell/trace-mapping": "^0.3.9"
@@ -16854,8 +16877,7 @@
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
       "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
-      "dev": true,
-      "peer": true
+      "dev": true
     },
     "builtin-modules": {
       "version": "3.3.0",
@@ -17419,6 +17441,22 @@
       "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
       "dev": true
     },
+    "echarts": {
+      "version": "5.5.1",
+      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.1.tgz",
+      "integrity": "sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==",
+      "requires": {
+        "tslib": "2.3.0",
+        "zrender": "5.6.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+        }
+      }
+    },
     "editorconfig": {
       "version": "0.15.3",
       "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
@@ -21124,8 +21162,7 @@
       "version": "0.6.1",
       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
       "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "dev": true,
-      "peer": true
+      "dev": true
     },
     "source-map-js": {
       "version": "1.0.2",
@@ -21137,7 +21174,6 @@
       "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
       "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
       "dev": true,
-      "peer": true,
       "requires": {
         "buffer-from": "^1.0.0",
         "source-map": "^0.6.0"
@@ -21402,11 +21438,10 @@
       }
     },
     "terser": {
-      "version": "5.18.2",
-      "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz",
-      "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==",
+      "version": "5.33.0",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-5.33.0.tgz",
+      "integrity": "sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==",
       "dev": true,
-      "peer": true,
       "requires": {
         "@jridgewell/source-map": "^0.3.3",
         "acorn": "^8.8.2",
@@ -22481,6 +22516,21 @@
       "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
       "dev": true,
       "peer": true
+    },
+    "zrender": {
+      "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.0.tgz",
+      "integrity": "sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==",
+      "requires": {
+        "tslib": "2.3.0"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.3.0",
+          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+          "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+        }
+      }
     }
   }
 }

+ 1 - 0
package.json

@@ -19,6 +19,7 @@
     "autoprefixer": "^10.4.14",
     "axios": "^1.4.0",
     "crypto-js": "^4.2.0",
+    "echarts": "^5.5.1",
     "lib-flexible": "^0.3.2",
     "postcss-pxtorem": "^6.0.0",
     "qrcode": "^1.5.3",

+ 69 - 3
src/pages/main/personal/integral.vue

@@ -1,7 +1,8 @@
 <script setup>
+import { user } from "~/store";
 import empty from "~/assets/empty.png";
 import { useRouter } from 'vue-router';
-
+import * as echarts from "echarts";
 const router = useRouter();
 
 const onClickLeft = () => {
@@ -97,19 +98,84 @@ const onRefresh = () => {
 };
 
 let fromZlb = localStorage.getItem('fromZlb') === '1'
+
+
+let barChartData = $ref([]);
+let bar_xAxisData = $ref([]);
+let bar_yAxisData = $ref([]);
+async function barData() {
+  bar_xAxisData = [];
+  bar_yAxisData = [];
+  const { code, data } = await request({
+    url: "/txwx/question_record/alyz",
+    data: {
+      user_id: user.value.user_id,
+    },
+  });
+  if (code == "1") {
+    barChartData = data.alyz;
+    barChartData.forEach((item) => {
+      bar_xAxisData.push(item.xk_name);
+      bar_yAxisData.push(item.score);
+    });
+    barChart();
+  }
+}
+onMounted(() => {
+  barData();
+});
+var myChart;
+function barChart() {
+  var chartDom = document.getElementById("barChart");
+  if (myChart) return;
+  myChart = echarts.init(chartDom);
+  var option;
+  option = {
+    title: {
+      text: "积分来源分布", // 标题文本
+      left: "center", // 标题水平居中
+    },
+
+    xAxis: [
+      {
+        type: "category",
+        data: bar_xAxisData,
+      },
+    ],
+    yAxis: [
+      {
+        type: "value",
+      },
+    ],
+    series: [
+      {
+        type: "bar",
+        data: bar_yAxisData,
+      },
+    ],
+  };
+
+  option && myChart.setOption(option);
+}
+onBeforeUnmount(() => {
+  if (myChart) {
+    myChart.dispose();
+  }
+});
 </script>
 
 <template>
   <div>
     <van-nav-bar title="积分" left-text="" :left-arrow="!fromZlb" fixed placeholder @click-left="onClickLeft"/>
-    <div class="h-90px box-border p-2 baseInfo" v-if="userInfo">
+    <div class="h-90px box-border p-2 baseInfo mb-2" v-if="userInfo">
       <div class="text-14px text-left text-[#999999] baseInfoT">总积分</div>
       <div class="flex flex-row flex-nowrap justify-between items-center otherInfo">
         <div class="text-28px font-bold text-left text-[#333333] otherInfo_left">{{ userInfo.user_score }}</div>
         <div class="text-14px text-left box-border pr-15px text-[#154a9a] otherInfo_right" @click="handleSet('integralrule')">积分规则</div>
       </div>
     </div>
-    <div class="box-border p-2 box-border pb-8 detailList">
+    <div v-if="user.user_role_id == '76'" id="barChart" class="h-250px"></div>
+    <div class="box-border px-2 box-border pb-8 detailList">
       <div class="flex flex-row flex-nowrap justify-between items-center mb-2  detailListTopic">
         <div class="text-16px font-bold text-left text-[#333333] detailListTopic_left">积分明细</div>
         <div class="text-12px font-normal text-right text-[#b4b4b4] detailListTopic_right" v-if="false">累计收入{{ userInfo.user_score }}</div>

+ 15 - 5
src/router/index.ts

@@ -1,4 +1,5 @@
 import { createRouter, createWebHashHistory } from 'vue-router'
+import { user } from '~/store'
 import routes from 'virtual:generated-pages'
 
 console.log('routes : ', routes)
@@ -9,11 +10,20 @@ const router = createRouter({
 })
 
 router.beforeEach((to, from) => {
-  console.log(from.name, '=>', to.name)
-  // if (user.value?.token)
-  //   return true
-  // if (!user.value?.token && to.name !== 'login')
-  //   return { name: 'login' }
+  if (user.value?.token) {
+    return true//todo暂时去掉登录后的权限,整理代码后重构权限功能
+  }
+  else if (!user.value?.token) {
+    if (to.path == '/login' ) {
+      return true
+    } else {
+      return {
+        path: '/login'
+      }
+    }
+  }
 })
 
+
+
 export default router

File diff suppressed because it is too large
+ 6029 - 6146
yarn.lock