Browse Source

bug_remove

guojy 1 year ago
parent
commit
da00556588

+ 45 - 9
src/course/courseManage/create.vue

@@ -6,7 +6,7 @@
     <h3>{{ title }}</h3>
     <el-form :model="courseDeail" label-width="110px">
       <el-form-item label="课程名称:">
-        <el-input v-model.trim="courseDeail.name" style="width: 40%"></el-input>
+        <el-input :maxlength="50" v-model.trim="courseDeail.name" style="width: 40%" placeholder="输入课程名称,最多50字符"></el-input>
       </el-form-item>
       <el-form-item label="预览图:">
         <div style="width: 68px" @click="showSelectImg(1)">
@@ -41,15 +41,20 @@
         </el-switch>
       </el-form-item>
       <el-form-item label="课程介绍:">
-        <div style="display: flex">
+        <div style="display: flex;">
           <div class="img_all">
             <template v-for="(item, index) in courseImages">
-              <userImage
-                width="68px"
-                radius="5px"
-                height="68px"
-                :img_url="item"
-              ></userImage>
+              <div class="imgout">
+                <userImage
+                  width="68px"
+                  radius="5px"
+                  height="68px"
+                  :img_url="item"
+                ></userImage>
+                <div class="imgDelete" @click="imgsDelete(index)">
+                  <i class="el-icon-delete" style="color: #FFF;font-size: 18px;"></i>
+                </div>
+              </div>
             </template>
           </div>
           <div class="cursor" @click="showSelectImg(2)">
@@ -148,11 +153,18 @@ export default {
     },
   },
   methods: {
+    //删除介绍图片
+    imgsDelete(index){
+      let list = this.courseDeail.images.split(",");
+      list.splice(index,1)
+      this.courseDeail.images = list.join(',')
+    },
     //章节信息校验
     validateURL() {
       let result = false;
       result = this.courseDeail.sections.every((item) => {
-        return validateURL(item.link) && item.name !== "";
+        return item.link !== '' && item.name !== "";
+        // return validateURL(item.link) && item.name !== "";
       });
       return result;
     },
@@ -391,8 +403,32 @@ export default {
 }
 .img_all {
   display: flex;
+  flex-wrap: wrap;
   & > div {
     margin-right: 10px;
+    margin-bottom: 10px;
+  }
+  .imgout{
+    position: relative;
+    .imgDelete{
+      width: 100%;
+      height: 100%;
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      cursor: pointer;
+      position: absolute;
+      left:0;
+      top:0;
+      background-color: rgba(0,0,0,.3);
+      opacity: 0;
+      transition: opacity 0.3s ease;
+    } 
+    &:hover{
+      .imgDelete{
+        opacity:1;
+      }
+    }
   }
 }
 .cursor {

+ 2 - 1
src/course/dealerManage/edit.vue

@@ -240,8 +240,9 @@ export default {
     },
     //查看明细
     courseRecord(row, index) {
+      console.log(row)
       this.$router.push({
-        path: `/course/courseRecord/${this.$route.params.id}/${row.id}`,
+        path: `/course/courseRecord/${this.$route.params.id}/${row.subjectId}`,
         query: {
           name: row.subjectName,
         },

+ 4 - 2
src/course/dealerManage/home.vue

@@ -16,10 +16,11 @@
         >经销商邀请二维码</el-button
       >
       <div class="search">
+        <!-- @keyup.enter.native="teamSearch" -->
         <el-input
           placeholder="请输入用户名"
           v-model.trim="teamValue"
-          @keyup.enter.native="teamSearch"
+          @input="teamSearch"
         >
           <i slot="prefix" class="el-input__icon el-icon-search"></i>
         </el-input>
@@ -188,8 +189,9 @@ export default {
     cancleQr() {},
     creatQrCode() {
       if (!this.qrcodeStatus) {
+        console.log(`${window.location.href.split('/#')[0]}/m/#/courseLogin?pid=0`)
         this.qrcode = new QRCode(this.$refs.qrCodeUrl, {
-          text: "https://www.baidu.com/", // 需要转换为二维码的内容
+          text: `${window.location.href.split('/#')[0]}/m/#/courseLogin?pid=0`, // 需要转换为二维码的内容
           width: 300,
           height: 300,
           colorDark: "#000000",

+ 11 - 2
src/course/setting/home.vue

@@ -22,7 +22,7 @@
         </el-table-column>
         <el-table-column fixed="right" label="操作" width="250" align="center">
           <template slot-scope="scope">
-            <el-button type="text" @click="courseDel(scope.row, scope.$index)"
+            <el-button type="text" v-if="showDel(scope.row)" @click="courseDel(scope.row, scope.$index)"
               >删除</el-button
             >
           </template>
@@ -115,6 +115,13 @@ export default {
   created() {
     this.getList();
   },
+  computed:{
+    showDel(row){
+      return (row)=>{
+        return !(localStorage.getItem('Course-Id') == row.auId)
+      }
+    }
+  },
   methods: {
     // 删除管理员
     deleteAdmin(id) {
@@ -179,7 +186,7 @@ export default {
         };
         getAssignAccount(data).then((res) => {
           res.active = false;
-          this.userList.push(res);
+          this.userList =[res];
         });
       } else {
         this.$message({
@@ -241,6 +248,8 @@ export default {
     },
     // 删除管理员
     courseDel(row) {
+      console.log(row)
+      console.log(localStorage.getItem('Course-Id'))
       this.$confirm("确定要删除当前用户吗?", "提示", {
         confirmButtonText: "确认",
         cancelButtonText: "取消",

+ 19 - 10
src/course/statistics/home.vue

@@ -19,16 +19,17 @@
             <el-input
               placeholder="搜索经销商"
               v-model.trim="searchDealer"
-              @keyup.enter.native="dealerSearch"
+              @input="dealerSearch"
             >
               <i slot="prefix" class="el-input__icon el-icon-search"></i>
             </el-input>
           </div>
+          <!-- @keyup.enter.native="courseSearch" -->
           <div class="search" v-else>
             <el-input
               placeholder="搜索课程"
               v-model.trim="searchText"
-              @keyup.enter.native="courseSearch"
+              @input="courseSearch"
             >
               <i slot="prefix" class="el-input__icon el-icon-search"></i>
             </el-input>
@@ -202,6 +203,8 @@ export default {
       ],
       recordList: [],
       recordDetails: [],
+      subjectId:0,
+      userId:0,
     };
   },
   watch: {
@@ -277,15 +280,15 @@ export default {
       });
     },
     //获取指定经销商/课程的订购明细
-    getAssignDrtailList(type, id) {
+    getAssignDrtailList() {
       let data = {
         page: this.page1.cur,
         pageSize: this.page1.size,
       };
-      if (type == 1) {
-        data.userId = id;
-      } else {
-        data.subjectId = id;
+      if (this.userId) {
+        data.userId = this.userId;
+      } else if(this.subjectId) {
+        data.subjectId = this.subjectId;
       }
       getDealerOrCourseRecode(data).then((res) => {
         this.rLoading = false
@@ -301,7 +304,7 @@ export default {
         this.getList();
       } else if (type == 1&&this.activeIndex != '1'){
         this.loading = true
-        this.getCourseList();
+        this.getCourseList(1,this.userId);
       }else if(type == 2){
         this.rLoading = true
         this.getAssignDrtailList()
@@ -310,16 +313,22 @@ export default {
     // 初始化明细表单并关闭弹窗
     cancle() {
       this.recordDetails=[]
+      this.page1.cur = 1;
+      this.page1.total = 0;
+      this.subjectId = 0;
+      this.userId = 0;
       this.showDetail = false;
     },
     // 查看明细
     toDetail(row) {
       if (row.userId && !row.subjectId) {
         this.rLoading = true
-        this.getAssignDrtailList(1, row.userId);
+        this.userId = row.userId;
+        this.getAssignDrtailList(1);
       } else if (!row.userId && row.subjectId) {
         this.rLoading = true
-        this.getAssignDrtailList(2, row.subjectId);
+        this.subjectId = row.subjectId;
+        this.getAssignDrtailList(2);
       }
       this.showDetail = true;
     },

+ 2 - 2
src/course/user/login.vue

@@ -151,8 +151,8 @@ export default {
     },
     // 清缓存
     clearData() {
-      localStorage.clear();
-      sessionStorage.clear();
+      // localStorage.clear();
+      // sessionStorage.clear();
     },
   },
   created() {

+ 7 - 3
src/store/modules/course.js

@@ -33,9 +33,13 @@ const courseStore = {
         },
         // 退出登录
         CourseLogOut({ commit, state }) {
-            localStorage.clear()
-            sessionStorage.clear()
-            removeAllToken()
+            // localStorage.clear()
+            // sessionStorage.clear()
+            localStorage.removeItem("Course-Token")
+            localStorage.removeItem("Course-Id")
+            // Cookies.remove('Course-Token')
+            // Cookies.remove("Course-Id")
+            // removeAllToken()
             location.reload() // 重新刷新页面会清空VUEX数据,所以不用清空VUEX
         },
     }

+ 81 - 81
src/utils/auth.js

@@ -12,76 +12,76 @@ const PASW = 'pasw'
 
 // 提示跳转
 export function openUrl(num) {
-  let url='http://www.baidu.com';
-  if(num==1){
-    url='https://www.yuque.com/docs/share/4551830c-25c8-44ae-8130-368c88bac624?# 《A分、B分常见问题》'
-  }else if(num==2){
-    url='https://www.yuque.com/docs/share/2300b9bb-84ab-48ae-afd9-a19da38147ba?# 《如何设置自动积分?》'
-  }else if(num==3){
-    url='https://www.yuque.com/docs/share/4cb21924-c9ee-4a4d-91f4-58db8be9547b?# 《基础分、工龄分是什么?》'
-  }else if(num==4){
-    url='https://www.yuque.com/docs/share/971c4cd7-5498-4fd6-a97c-ef08d62079c1?# 《系统配置》'
-  }else if(num==5){
-    url='https://www.yuque.com/docs/share/4551830c-25c8-44ae-8130-368c88bac624?# 《A分、B分常见问题》'
-  }else if(num==6){
-    url='https://www.yuque.com/docs/share/8cae70cf-3961-4e91-848d-d903f0323004?# 《如何邀请员工注册并加入企业?》'
-  }else if(num==7){
-    url='https://www.yuque.com/docs/share/8f7a1871-a886-48f7-9745-fd2ad13cbbcc?# 《角色权限操作说明(视频)》'
-  }else if(num==8){
-    url='https://www.yuque.com/docs/share/bd17afd5-8381-467d-ab65-a10661c73388?# 《积分权限是什么?有什么用?》'
-  }else if(num==9){
-    url='https://www.yuque.com/docs/share/2ef16237-4bc3-4ab8-8195-bc506098c0d5?# 《什么是每月奖扣目标,有什么用?》'
-  }else if(num==10){
-    url='https://www.yuque.com/docs/share/e8c6c82d-0f9f-4663-ada5-95dbd46ab1db?# 《审批流程说明》'
-  }else if(num==11){
-    url='https://www.yuque.com/docs/share/155191a9-fab6-447f-a7da-099506b322e6?# 《第一步:班次管理》'
-  }else if(num==12){
-    url='https://www.yuque.com/docs/share/6e16186a-21a1-4f26-bd76-0967cfbcff85?# 《第二步:创建加班规则》'
-  }else if(num==13){
-    url='https://www.yuque.com/docs/share/86a48ef0-5b91-416b-8bb4-b51248bab89b?# 《第三步:创建考勤组》'
-  }else if(num==14){
-    url='https://www.yuque.com/docs/share/6c233543-b04e-442b-8629-622b41465c56?# 《第四步:创建假期类型》'
-  }else if(num==15){
-    url='https://www.yuque.com/docs/share/44aa8b5b-ef80-420b-8fd2-6902a08179ae?# 《自定义B分的使用场景有哪些?》'
-  }else if(num==16){
-    url='https://www.yuque.com/docs/share/a3c8a68c-6706-4dbf-9cad-8886a8c904ff?# 《积分规则常见问题》'
-  }else if(num==17){
-    url='https://www.yuque.com/docs/share/4551830c-25c8-44ae-8130-368c88bac624?# 《A分、B分常见问题》'
-  }else if(num==18){
-    url='https://www.yuque.com/docs/share/2ef16237-4bc3-4ab8-8195-bc506098c0d5?# 《什么是每月奖扣目标,如何使用?》'
-  }else if(num==19){
-    url='https://www.yuque.com/docs/share/97a89371-71c4-42c0-b01e-4c51b746ffe0?# 《什么是重复任务》'
+  let url = 'http://www.baidu.com';
+  if (num == 1) {
+    url = 'https://www.yuque.com/docs/share/4551830c-25c8-44ae-8130-368c88bac624?# 《A分、B分常见问题》'
+  } else if (num == 2) {
+    url = 'https://www.yuque.com/docs/share/2300b9bb-84ab-48ae-afd9-a19da38147ba?# 《如何设置自动积分?》'
+  } else if (num == 3) {
+    url = 'https://www.yuque.com/docs/share/4cb21924-c9ee-4a4d-91f4-58db8be9547b?# 《基础分、工龄分是什么?》'
+  } else if (num == 4) {
+    url = 'https://www.yuque.com/docs/share/971c4cd7-5498-4fd6-a97c-ef08d62079c1?# 《系统配置》'
+  } else if (num == 5) {
+    url = 'https://www.yuque.com/docs/share/4551830c-25c8-44ae-8130-368c88bac624?# 《A分、B分常见问题》'
+  } else if (num == 6) {
+    url = 'https://www.yuque.com/docs/share/8cae70cf-3961-4e91-848d-d903f0323004?# 《如何邀请员工注册并加入企业?》'
+  } else if (num == 7) {
+    url = 'https://www.yuque.com/docs/share/8f7a1871-a886-48f7-9745-fd2ad13cbbcc?# 《角色权限操作说明(视频)》'
+  } else if (num == 8) {
+    url = 'https://www.yuque.com/docs/share/bd17afd5-8381-467d-ab65-a10661c73388?# 《积分权限是什么?有什么用?》'
+  } else if (num == 9) {
+    url = 'https://www.yuque.com/docs/share/2ef16237-4bc3-4ab8-8195-bc506098c0d5?# 《什么是每月奖扣目标,有什么用?》'
+  } else if (num == 10) {
+    url = 'https://www.yuque.com/docs/share/e8c6c82d-0f9f-4663-ada5-95dbd46ab1db?# 《审批流程说明》'
+  } else if (num == 11) {
+    url = 'https://www.yuque.com/docs/share/155191a9-fab6-447f-a7da-099506b322e6?# 《第一步:班次管理》'
+  } else if (num == 12) {
+    url = 'https://www.yuque.com/docs/share/6e16186a-21a1-4f26-bd76-0967cfbcff85?# 《第二步:创建加班规则》'
+  } else if (num == 13) {
+    url = 'https://www.yuque.com/docs/share/86a48ef0-5b91-416b-8bb4-b51248bab89b?# 《第三步:创建考勤组》'
+  } else if (num == 14) {
+    url = 'https://www.yuque.com/docs/share/6c233543-b04e-442b-8629-622b41465c56?# 《第四步:创建假期类型》'
+  } else if (num == 15) {
+    url = 'https://www.yuque.com/docs/share/44aa8b5b-ef80-420b-8fd2-6902a08179ae?# 《自定义B分的使用场景有哪些?》'
+  } else if (num == 16) {
+    url = 'https://www.yuque.com/docs/share/a3c8a68c-6706-4dbf-9cad-8886a8c904ff?# 《积分规则常见问题》'
+  } else if (num == 17) {
+    url = 'https://www.yuque.com/docs/share/4551830c-25c8-44ae-8130-368c88bac624?# 《A分、B分常见问题》'
+  } else if (num == 18) {
+    url = 'https://www.yuque.com/docs/share/2ef16237-4bc3-4ab8-8195-bc506098c0d5?# 《什么是每月奖扣目标,如何使用?》'
+  } else if (num == 19) {
+    url = 'https://www.yuque.com/docs/share/97a89371-71c4-42c0-b01e-4c51b746ffe0?# 《什么是重复任务》'
   }
 
-  window.open(url,'_blank');
+  window.open(url, '_blank');
 }
 
 // 获取唯一标识(uid)
 export function generateUUID() {
-	var d = new Date().getTime();
-	var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
-		var r = (d + Math.random() * 16) % 16 | 0;
-		d = Math.floor(d / 16);
-		return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
-	});
-	return uuid;
+  var d = new Date().getTime();
+  var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+    var r = (d + Math.random() * 16) % 16 | 0;
+    d = Math.floor(d / 16);
+    return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
+  });
+  return uuid;
 };
 
-  //将部门链接在一起
-export function returnDeptName(arr){
-    let data=arr.map(item=>{
-        let str='';
-        item.dept_list.forEach((e,index)=>{
-            if(item.dept_list.length-index>1){
-               str+=e.dept_name+','
-            }else{
-               str+=e.dept_name
-            }
-        })
-        item.deptName=str
-        return item
-      })
-    return data
+//将部门链接在一起
+export function returnDeptName(arr) {
+  let data = arr.map(item => {
+    let str = '';
+    item.dept_list.forEach((e, index) => {
+      if (item.dept_list.length - index > 1) {
+        str += e.dept_name + ','
+      } else {
+        str += e.dept_name
+      }
+    })
+    item.deptName = str
+    return item
+  })
+  return data
 }
 function hexToDec() {
   let str =
@@ -114,7 +114,7 @@ export function returnJSEncrypt(data, is = true) {
 export function getCache(key) {
   return JSON.parse(localStorage.getItem(key))
 }
-export function getLocal(key){
+export function getLocal(key) {
   return localStorage.getItem(key)
 }
 // 设置缓存
@@ -123,7 +123,7 @@ export function setCache(key, data) {
 }
 // 清除缓存
 export function removeCache(key) {
-  if (typeof(key) === 'string') {
+  if (typeof (key) === 'string') {
     localStorage.removeItem(key)
   } else {
     if (key.length > 0) {
@@ -137,7 +137,7 @@ export function removeCache(key) {
 export function getDept(id) {
   if (id) {
     let map = getCache('dept_tree_pin')[id];
-    return map||{}
+    return map || {}
   } else {
     return getCache('dept_tree_pin')
   }
@@ -159,13 +159,13 @@ export function getEmployeeMap(status) {
 export function getEmployeeMapAll() {
   return JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP_ALL'))
 }
-export function getEmployeeMapItem(id){
-   let map=JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP_ALL'))
-   if(map[id]){
-      return map[id]
-   }else{
-      return {}
-   }
+export function getEmployeeMapItem(id) {
+  let map = JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP_ALL'))
+  if (map[id]) {
+    return map[id]
+  } else {
+    return {}
+  }
 }
 
 // 获取积分类型
@@ -173,12 +173,12 @@ export function getTyps(id) {
   if (id) {
     var arr = getCache('SET_POINT_TYPES')
     var item = arr.filter(element => {
-      return typeof(id) === 'string' ? element.code == id : element.id == id
+      return typeof (id) === 'string' ? element.code == id : element.id == id
     })
     return item[0]
   } else {
     var arr = getCache('SET_POINT_TYPES')
-    return arr.filter(function(item) {
+    return arr.filter(function (item) {
       return item.code != 'JX';
     });
   }
@@ -200,11 +200,11 @@ export function getCourseUserData() {
 //是否平台管理或者平台创始人
 export function getIsAdministrator() {
   var userInfo = getUserData();
-  return userInfo.is_site_owner||userInfo.is_site_manager
+  return userInfo.is_site_owner || userInfo.is_site_manager
 }
 
-function returnRole(str){
-  return supremeAuthority()==str
+function returnRole(str) {
+  return supremeAuthority() == str
 }
 
 //判断是否具有权限
@@ -219,10 +219,10 @@ export function getIsIdentity(key) {
   return is
 }
 // 返回高权限  str最高权限是否匹配  id指定人员最高权限
-export function supremeAuthority(str,id) {
-  if(str){
+export function supremeAuthority(str, id) {
+  if (str) {
     return returnRole(str)
-  }else if (id) {
+  } else if (id) {
     const roleList = getEmployeeMapItem(id).employee_detail.role_list
     const roleAll = ['creator', 'admin', 'point_manager', 'dept_manager', 'employee']
     const userRole = roleList.map(e => e.name)
@@ -252,7 +252,7 @@ export function supremeAuthority(str,id) {
 // _debounce(this.XXX(),1000)
 export function _debounce(fn, delay = 500) {
   let timer = null
-  return function() {
+  return function () {
     const arg = arguments
     clearTimeout(timer)
     timer = setTimeout(() => {

+ 2 - 2
src/utils/axiosKc.js

@@ -13,9 +13,9 @@ import qs from 'qs'
 import Vue from 'vue'
 const service = axios.create({
   // baseURL: process.env.BASE_API,
-  baseURL:'https://oa.g107.com',
+  // baseURL:'https://oa.g107.com',
   // baseURL:'https://3g954g5149.picp.vip',
-  // baseURL:'http://192.168.0.66:8081',
+  baseURL:'http://192.168.0.66:8081',
   
   timeout: 20000,
   headers: {