sunny 1 year ago
parent
commit
71a5eb04e6

+ 39 - 1
src/api/allApi.js

@@ -1,5 +1,43 @@
 import request from '@/utils/request'
 
+
+//表彰墙
+export function commendPage(query) {
+  return request({
+    url: '/mall-integral-obtain/commend/user/page',
+    method: 'get',
+    params:query
+  })
+}
+
+
+//证书列表
+export function certificatePage(query) {
+  return request({
+    url: '/mall-integral-obtain/certificate/user/page',
+    method: 'post',
+    params:query
+  })
+}
+
+//证书上传
+export function certificateUpload(data) {
+  return request({
+    url: '/mall-integral-obtain/certificate/upload',
+    method: 'post',
+    data
+  })
+}
+
+//用户-积分排行榜
+export function integralTop(query) {
+  return request({
+    url: '/mall-integral/user/top',
+    method: 'get',
+    params:query
+  })
+}
+
 // 商品兑换列表
 export function integralList(query) {
   return request({
@@ -157,7 +195,7 @@ export function sign(query) {
 export function signInfo(query) {
   return request({
     url: '/mall-sign/signCount',
-    method: 'post',
+    method: 'get',
     params:query
   })
 }

+ 7 - 10
src/components/SiderInfo.vue

@@ -31,12 +31,12 @@
                 </div>
                 <div class="info-item">
                     <div class="item-title">排行:</div>
-                    <div class="item-content blue">5名</div>
+                    <div class="item-content blue">{{ dataInfo.nowtop }}名</div>
                 </div>
-                <div class="info-item">
+                <!-- <div class="info-item">
                     <div class="item-title">勋章:</div>
                     <div class="item-content blue">{{ dataInfo.medalCount }}枚</div>
-                </div>
+                </div> -->
             </div>
         </div>
         <div class="sidebar-block sticky-block">
@@ -55,12 +55,12 @@
                 </div>
                 <div class="info-item">
                     <div class="item-title">排行:</div>
-                    <div class="item-content blue">5名</div>
+                    <div class="item-content blue">{{ dataInfo.nowtop }}名</div>
                 </div>
-                <div class="info-item">
+                <!-- <div class="info-item">
                     <div class="item-title">勋章:</div>
                     <div class="item-content blue">{{ dataInfo.medalCount }}枚</div>
-                </div>
+                </div> -->
             </div>
         </div>
     </div>
@@ -87,10 +87,7 @@ export default {
             });
         },
         getUserInfo(){
-            const parmas = {
-                userId:13683797487
-            }
-            useInfo(parmas).then(response=>{
+            useInfo().then(response=>{
                 this.dataInfo = response.data.data;
                 this.avatarUrl = this.dataInfo.httpFile + this.dataInfo.headImage;
             })

+ 1 - 1
src/permission.js

@@ -16,7 +16,7 @@ router.beforeEach((to, _from, next) => {
       next();
     }else{
       // window.location.href = 'http://dgt.dgtis.com/oneportal/login'
-      window.location.href = 'http://dgtcloud.dgtis.com/oneportal/login'
+      window.location.href = 'http://192.168.100.208:8080/oneportal/login'
     }
   }  
 })

+ 2 - 2
src/utils/request.js

@@ -4,7 +4,7 @@ import { getToken } from '@/utils/auth'
 
 // create an axios instance
 const service = axios.create({
-  baseURL: 'http://47.103.79.143:9085/admin', // api的base_url
+  baseURL: 'http://192.168.100.208:9083/admin', // api的base_url
   timeout: 10000 // request timeout
 })
 
@@ -32,7 +32,7 @@ service.interceptors.response.use(
           confirmButtonText: '重新登录',
           type: 'error'
         }).then(() => {
-            location.href = 'http://dgtcloud.dgtis.com/oneportal/login';
+            location.href = 'http://192.168.100.208:8080/oneportal/login';
         })
       }else{
         Message({

File diff suppressed because it is too large
+ 194 - 113
src/views/HomeView/Commend.vue


+ 70 - 68
src/views/HomeView/EarnPoints.vue

@@ -10,14 +10,24 @@
                         <el-button size="small" type="primary"  @click="dialogVisible = true">上传证书</el-button>
                         <el-table size="small" :data="dataList" border style="margin-top: 20px;width: 100%">
                             <el-table-column align="center" type="index" width="50" label="序号"></el-table-column>
-                            <el-table-column width="80" align="center" prop="type" label="类型"></el-table-column>
-                            <el-table-column align="center" prop="title" label="证书">
+                            <el-table-column align="center" prop="title" width="100" label="标题"></el-table-column>
+                            <el-table-column align="center" label="证书">
                                 <template slot-scope="props">
-                                    <a style="color: #1e80ff;" target="_blank" :href="props.row.file">{{ props.row.title }}</a>
+                                    <div v-for="(item,index) in props.row.files" :key="index">
+                                      <a style="color: #1e80ff;" target="_blank" :href="item.url">{{ item.oldName }}</a>
+                                    </div>
+                                    
                                 </template>
                             </el-table-column>
                             <el-table-column width="150" align="center" prop="createTime" label="上传时间"></el-table-column>
                         </el-table>
+                         <!-- 分页 -->
+                         <div class="myPage">
+                            <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                                :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="10"
+                                layout="total, sizes, prev, pager, next, jumper" :total="total">
+                            </el-pagination>
+                        </div>
                     </div>
                 </div>
             </div>
@@ -27,19 +37,12 @@
             title="上传证书"
             :visible.sync="dialogVisible"
             width="40%">
-            <el-form ref="dataForm" :model="dataForm" label-width="50px">
-                <el-form-item label="类型:">
-                    <el-select style="width: 95%;" size="small" v-model="dataForm.type"
-                            placeholder="请选择证书类型">
-                            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
-                            </el-option>
-                        </el-select>
-                </el-form-item>
-                <el-form-item label="名称:">
+            <el-form :rules="rules" ref="dataForm" :model="dataForm" label-width="80px">
+                <el-form-item label="名称:" prop="title">
                     <el-input placeholder="请填写证名称" size="small" style="width: 95%;" v-model="dataForm.title"></el-input>
                 </el-form-item>
                
-                <el-form-item label="证书:">
+                <el-form-item label="证书:" prop="fileIds">
                     <el-upload
                     :action="fileUrl"
                     :file-list="dataForm.files"
@@ -53,14 +56,13 @@
                 </el-form-item>
             </el-form>
             <span slot="footer" class="dialog-footer">
-                <!-- <el-button size="small" @click="dialogVisible = false">取 消</el-button> -->
                 <el-button size="small" type="primary" @click="submitForm">确 定</el-button>
             </span>
             </el-dialog>
     </div>
 </template>
 <script>
-import { msgList } from "@/api/allApi";
+import { certificatePage,certificateUpload } from "@/api/allApi";
 import SiderInfo from '@/components/SiderInfo.vue'
 export default{
   components: {
@@ -69,43 +71,25 @@ export default{
   data() {
     return {
         fileUrl: this.baseUrl,
-        dataList:[
-            {
-                title:'英语四级证书',
-                file: "https://xiaoyou.dgtis.com/images/image/2023/05/08/5hibpn5vzqr1i3z1cm3b.jpg",
-                fileName: "微信图片_20230217092706.jpg",
-                type: "类别1",
-                createTime: "2023-5-8",
-            }
-        ],
+        dataList:[],
         dialogVisible: false,
-        options: [{
-                value: '类别1',
-                label: '类别1'
-            }, {
-                value: '类别2',
-                label: '类别2'
-            }, {
-                value: '类别3',
-                label: '类别3'
-            }, {
-                value: '类别4',
-                label: '类别4'
-            }, {
-                value: '类别5',
-                label: '类别5'
-            }],
+        rules: {
+                title: [{ required: true, message: "请填写证书名称", trigger: "blur" }],
+                fileIds: [{ required: true, message: "请上传附件", trigger: "blur" }],
+            },
+            total: 0,
+            listQuery: {
+                page: 1,
+                limit: 10,
+            },
         dataForm: {
             title:'',
-            files:[],
-            fileName: '',
-            file:'',
-            createTime:'2023-5-8'
+            fileIds:'',
         }
     };
   },
   created(){
-    // this.getDataList();
+    this.getDataList();
   },
   methods:{
     beforeRemove(file, fileList) {
@@ -113,17 +97,12 @@ export default{
     },
     handleRemove(file, fileList) {
       console.log(file, fileList);
-      let files = [];
-        let names = [];
+      let fileIds = [];
         for (let i in fileList) {
-          let response = fileList[i].response;
-          let name = fileList[i].name;
-          let url = response.data.url;
-          files.push(url);
-          names.push(name);
+          let id = fileList[i].response.data.id;
+            fileIds.push(id);
         }
-        this.dataForm.file = files.join(",");
-        this.dataForm.fileName = names.join(",");
+        this.dataForm.fileIds = fileIds.join(",");
     },
     beforeUploadFile(file){
       console.log(file);
@@ -139,8 +118,7 @@ export default{
       console.log("------", "==========");
       console.log("res = " , res);
 
-      let files = [];
-        let names = [];
+      let fileIds = [];
         for (let i in fileList) {
           let response = fileList[i].response;
           if (response.errno && response.errno != "0") {
@@ -148,14 +126,11 @@ export default{
             // 上传失败移除该 file 对象
             fileList.splice(i, 1);
           } else {
-            let name = fileList[i].name;
-            let url = fileList[i].response.data.url;
-            files.push(url);
-            names.push(name);
+            let id = fileList[i].response.data.id;
+            fileIds.push(id);
           }
         }
-        this.dataForm.file = files.join(",");
-        this.dataForm.fileName = names.join(",");
+        this.dataForm.fileIds = fileIds.join(",");
     },
     resetForm() {
         this.$refs['dataForm'].resetFields();
@@ -163,20 +138,41 @@ export default{
     submitForm() {
         this.$refs['dataForm'].validate((valid) => {
           if (valid) {
-            this.dataList.push(this.dataForm);
-            console.log(this.dataList);
-            this.dialogVisible = false;
-            this.resetForm();
+            certificateUpload(this.dataForm)
+                            .then((response) => {
+                                this.dialogVisible = false;
+                                this.$notify({
+                                    title: "成功",
+                                    message: "证书上传成功",
+                                    type: "success",
+                                    duration: 2000,
+                                });
+                                this.getDataList();
+                            })
+                            .catch(() => { });
           } else {
             return false;
           }
         });
       },
     getDataList(){
-        msgList().then(response=>{
-            this.dataList = response.data.data.list; 
+        certificatePage(this.listQuery).then(response=>{
+            this.dataList = response.data.data.items; 
+            this.total = response.data.data.total;
         })
     },
+    handleFilter() {
+            this.listQuery.page = 1
+            this.getDataList()
+        },
+        handleSizeChange(val) {
+            this.listQuery.limit = val
+            this.getDataList()
+        },
+        handleCurrentChange(val) {
+            this.listQuery.page = val
+            this.getDataList()
+        },
     
   },
 }
@@ -213,4 +209,10 @@ export default{
     font-size: 18px;
     font-weight: 600;
 }
+.myPage {
+    margin-top: 30px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
 </style>

+ 10 - 15
src/views/HomeView/SignIn.vue

@@ -57,12 +57,12 @@
             </div>
             <div class="info-item">
                     <div class="item-title">排行:</div>
-                    <div class="item-content blue">5名</div>
+                    <div class="item-content blue">{{ dataInfo.nowtop }}名</div>
                 </div>
-                <div class="info-item">
+                <!-- <div class="info-item">
                     <div class="item-title">勋章:</div>
                     <div class="item-content blue">{{ dataInfo.medalCount }}枚</div>
-                </div>
+                </div> -->
           </div>
         </div>
         <div class="sidebar-block sticky-block">
@@ -83,12 +83,12 @@
             </div>
             <div class="info-item">
                     <div class="item-title">排行:</div>
-                    <div class="item-content blue">5名</div>
+                    <div class="item-content blue">{{ dataInfo.nowtop }}名</div>
                 </div>
-                <div class="info-item">
+                <!-- <div class="info-item">
                     <div class="item-title">勋章:</div>
                     <div class="item-content blue">{{ dataInfo.medalCount }}枚</div>
-                </div>
+                </div> -->
           </div>
         </div>
       </div>
@@ -115,7 +115,7 @@ export default {
     };
   },
   created() {
-    // this.getSignInfo();
+    this.getSignInfo();
     this.getUserInfo();
   },
   methods: {
@@ -128,19 +128,13 @@ export default {
       console.log(date);
     },
     getUserInfo() {
-      const parmas = {
-        userId: 13683797487,
-      };
-      useInfo(parmas).then((response) => {
+      useInfo().then((response) => {
         this.dataInfo = response.data.data;
         this.avatarUrl = this.dataInfo.httpFile + this.dataInfo.headImage;
       });
     },
     getSignInfo() {
-      const parmas = {
-        userId: 13683797487,
-      };
-      signInfo(parmas).then((response) => {
+      signInfo().then((response) => {
           this.markDate = response.data.data.signDays;
           this.integral = response.data.data.integral;
           this.signDays = response.data.data.signDays.length;
@@ -153,6 +147,7 @@ export default {
           message: '签到成功!',
           type: 'success'
         });
+        this.getSignInfo();
         this.getUserInfo();
       });
     },

+ 10 - 22
src/views/PointsRank/History.vue

@@ -20,7 +20,7 @@
                   <div class="right-Integral title-text">积分</div>
                 </div>
               </div>
-              <div v-for="(item,index) in 10" :key="index" class="list-title list-item">
+              <div v-for="(item,index) in dataList" :key="index" class="list-title list-item">
                 <div class="title-left">
                   <div class="left-rank">
                     <img v-if="index==0" style="width: 35px;" :src="firstIcon"/>
@@ -29,12 +29,12 @@
                     <div v-else>{{ index+1 }}</div>
                   </div>
                   <div class="left-avatar">
-                    <el-avatar :size="35" :src="avatarUrl"></el-avatar>
+                    <img width="35" height="35" style="border-radius: 50%;" :src="httpFile + item.headImage"/>
                   </div>
-                  <div class="left-userName item-text">兔子爱吃香蕉皮</div>
+                  <div class="left-userName item-text">{{ item.userName }}</div>
                 </div>
                 <div class="title-right">
-                  <div class="right-Integral item-text">10000</div>
+                  <div class="right-Integral item-text">{{ item.integral }}</div>
                 </div>
               </div>
             </div>
@@ -47,7 +47,7 @@
     
   
   <script>
-import { msgList } from "@/api/allApi";
+import { integralTop } from "@/api/allApi";
 import SiderInfo from "@/components/SiderInfo.vue";
 export default {
   components: {
@@ -55,36 +55,24 @@ export default {
   },
   data() {
     return {
+      httpFile:'',
       firstIcon: require('@/assets/image/first.png'),
       secondIcon: require('@/assets/image/second.png'),
       thirdIcon: require('@/assets/image/third.png'),
-      avatarUrl:
-        "https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png",
       dataList: [],
-      page: 1,
-      pages: 1,
     };
   },
   created() {
-    // this.getDataList();
+    this.getDataList();
   },
   methods: {
-    handleClickMag(id) {
-      this.$router.push({
-        path: "/home/index/msgDetail",
-        query: {
-          id: id,
-        },
-      });
-    },
     getDataList() {
       let data = {
-        limit: 10,
-        page: this.page,
         type: 0,
       };
-      msgList(data).then((response) => {
-        this.dataList = response.data.data.list;
+      integralTop(data).then((response) => {
+        this.httpFile = 'http://dgt.dgtis.com/oneportal';
+        this.dataList = response.data.data.items;
       });
     },
   },

+ 11 - 23
src/views/PointsRank/Present.vue

@@ -20,7 +20,7 @@
                   <div class="right-Integral title-text">积分</div>
                 </div>
               </div>
-              <div v-for="(item,index) in 10" :key="index" class="list-title list-item">
+              <div v-for="(item,index) in dataList" :key="index" class="list-title list-item">
                 <div class="title-left">
                   <div class="left-rank">
                     <img v-if="index==0" style="width: 35px;" :src="firstIcon"/>
@@ -29,12 +29,12 @@
                     <div v-else>{{ index+1 }}</div>
                   </div>
                   <div class="left-avatar">
-                    <el-avatar :size="35" :src="avatarUrl"></el-avatar>
+                    <img width="35" height="35" style="border-radius: 50%;" :src="httpFile + item.headImage"/>
                   </div>
-                  <div class="left-userName item-text">兔子爱吃香蕉皮</div>
+                  <div class="left-userName item-text">{{ item.userName }}</div>
                 </div>
                 <div class="title-right">
-                  <div class="right-Integral item-text">10000</div>
+                  <div class="right-Integral item-text">{{ item.integral }}</div>
                 </div>
               </div>
             </div>
@@ -47,7 +47,7 @@
     
   
   <script>
-import { msgList } from "@/api/allApi";
+import { integralTop } from "@/api/allApi";
 import SiderInfo from "@/components/SiderInfo.vue";
 export default {
   components: {
@@ -55,36 +55,24 @@ export default {
   },
   data() {
     return {
+      httpFile:'',
       firstIcon: require('@/assets/image/first.png'),
       secondIcon: require('@/assets/image/second.png'),
       thirdIcon: require('@/assets/image/third.png'),
-      avatarUrl:
-        "https://cube.elemecdn.com/3/7c/3ea6beec64369c2642b92c6726f1epng.png",
       dataList: [],
-      page: 1,
-      pages: 1,
     };
   },
   created() {
-    // this.getDataList();
+    this.getDataList();
   },
   methods: {
-    handleClickMag(id) {
-      this.$router.push({
-        path: "/home/index/msgDetail",
-        query: {
-          id: id,
-        },
-      });
-    },
     getDataList() {
       let data = {
-        limit: 10,
-        page: this.page,
-        type: 0,
+        type: 1,
       };
-      msgList(data).then((response) => {
-        this.dataList = response.data.data.list;
+      integralTop(data).then((response) => {
+        this.httpFile = response.data.data.httpFile;
+        this.dataList = response.data.data.items;
       });
     },
   },