guojy vor 1 Jahr
Ursprung
Commit
99b99b3c59

+ 4 - 16
src/api/course.js

@@ -1,18 +1,6 @@
 
 import axiosKc from '@/utils/axiosKc'
-//根据wo_token获取管理员id和管理员token
-// export function get_site_info() {
-//     return axiosKc('get', '/mkt/admin/login')
-// }
-  
-//   export function get_account_info() {
-//     return axiosKc('post', '/api/pro/account/info')
-//   }
-  
-//   export function get_dept_tree() {
-//     return axiosKc('get', '/api/pro/department/tree', '', 'v2')
-//   }
-  
-//   export function getUserInfo() {
-//     return axiosKc('get', '/api/pro/employee/detail')
-//   }
+// 根据wo_token获取管理员相关信息
+export function getUserInfo() {
+    return axiosKc('post', '/mkt/admin/login')
+}

+ 83 - 71
src/course/courseManage/create.vue

@@ -9,37 +9,21 @@
         <el-input v-model.trim="courseDeail.name"></el-input>
       </el-form-item>
       <el-form-item label="预览图:">
-        <el-upload
-          action="#"
-          list-type="picture-card"
-          :auto-upload="false"
-          :file-list="courseDeail.img_url"
-          :limit="1"
-          :on-change="uploadChange"
-        >
-          <i slot="default" class="el-icon-plus"></i>
-          <div slot="file" slot-scope="{ file }">
-            <img
-              class="el-upload-list__item-thumbnail"
-              :src="file.url"
-              alt=""
-            />
-            <span class="el-upload-list__item-actions">
-              <span
-                class="el-upload-list__item-preview"
-                @click="handlePictureCardPreview(file)"
-              >
-                <i class="el-icon-zoom-in"></i>
-              </span>
-              <span
-                class="el-upload-list__item-delete"
-                @click="handleRemove(file)"
-              >
-                <i class="el-icon-delete"></i>
-              </span>
-            </span>
+        <div style="width: 68px;" @click="showSelectImg()">
+          <userImage
+            v-if="courseDeail.thumb"
+            width="68px"
+            height="68px"
+            :img_url="courseDeail.thumb"
+            :user_name="courseDeail.name"
+          ></userImage>
+          <div v-else class="cursor">
+            <div>
+              +
+            </div>
+            <!-- <div>上传预览图</div> -->
           </div>
-        </el-upload>
+        </div>
       </el-form-item>
       <el-form-item label="价格:">
         <el-input-number
@@ -63,7 +47,7 @@
           action="#"
           list-type="picture-card"
           :auto-upload="false"
-          :file-list="courseDeail.imgList"
+          :file-list="courseDeail.images"
           :limit="20"
           multiple
           :on-change="uploadChange2"
@@ -97,14 +81,14 @@
         <div class="sectionout">
           <div
             class="sectionInner"
-            v-for="(item, index) in courseDeail.courseSection"
+            v-for="(item, index) in courseDeail.sections"
             :key="index"
           >
             <div class="sectionName">
               <el-input v-model.trim="item.name"></el-input>
             </div>
             <div class="sectionUrl">
-              <el-input v-model.trim="item.url"></el-input>
+              <el-input v-model.trim="item.link"></el-input>
             </div>
             <div class="del">
               <el-button
@@ -123,7 +107,7 @@
         </div>
       </el-form-item>
 
-      <el-form-item style="display: flex;flex-direction: row-reverse;">
+      <el-form-item style="display: flex; flex-direction: row-reverse">
         <el-button @click="$router.go(-1)">取消</el-button>
         <el-button @click="iffirm">{{ alterCreate }}</el-button>
       </el-form-item>
@@ -131,52 +115,56 @@
     <el-dialog :visible.sync="dialogVisible">
       <img width="100%" :src="dialogImageUrl" alt="" />
     </el-dialog>
+    <image-cropper
+      v-loading="company_img_loading"
+      field="file"
+      :width="imgWidth"
+      :height="imgHeight"
+      :url="'https://integralsys.oss-cn-shenzhen.aliyuncs.com'"
+      @close="company_img_show = false"
+      @crop-upload-success="company_img_success"
+      langType="zh"
+      v-if="company_img_show"
+    ></image-cropper>
   </div>
 </template>
 <script>
+import ImageCropper from "@/components/ImageCropper";
 export default {
   name: "courseEdit",
+  components: { ImageCropper },
   data() {
     return {
       title: "",
+      company_img_show:false,
+      company_img_loading: false,
       alterCreate: "保存",
+      imgIndex: 1,
+      imgWidth: 300,
+      imgHeight: 300,
       // 个人信息
       courseDeail: {
         id: 0,
         name: "",
         price: 0,
-        img_url: [
-          {
-            name: "dsd.jpg",
-            url: "../../../static/images/321.jpg",
-          },
-        ],
-        imgList: [
-          {
-            name: "dsd.png",
-            url: "../../../static/images/2.png",
-          },
-          {
-            name: "dsd.png",
-            url: "../../../static/images/1.png",
-          },
-        ],
-        courseSection: [
+        thumb: "",
+        images: [],
+        sections: [
           {
             name: "精讲1",
-            url: "http:sasdsada.com",
+            link: "http:sasdsada.com",
           },
           {
             name: "精讲1",
-            url: "http:sasdsada.com",
+            link: "http:sasdsada.com",
           },
           {
             name: "精讲1",
-            url: "http:sasdsada.com",
+            link: "http:sasdsada.com",
           },
           {
             name: "精讲1",
-            url: "http:sasdsada.com",
+            link: "http:sasdsada.com",
           },
         ],
       },
@@ -186,13 +174,23 @@ export default {
   },
   computed: {},
   methods: {
+    //预览图上传成功
+    company_img_success(resData) {
+      console.log(resData)
+      this.courseDeail.thumb = resData.url;
+      this.company_img_show = false;
+    },
+    //图片放大
+    showSelectImg() {
+      this.company_img_show = true;
+    },
     // 添加课程
     addSection() {
       let section = {
         name: "",
-        url: "",
+        link: "",
       };
-      this.courseDeail.courseSection.push(section);
+      this.courseDeail.sections.push(section);
     },
     // 删除课程
     sectionDel(index, item) {
@@ -202,7 +200,7 @@ export default {
         type: "warning",
       })
         .then(() => {
-          this.courseDeail.courseSection.splice(index, 1);
+          this.courseDeail.sections.splice(index, 1);
         })
         .catch((err) => {
           this.$message({
@@ -211,6 +209,9 @@ export default {
           });
         });
     },
+    suceessChange(res) {
+      console.log(res);
+    },
     // 上传图片失败
     uploadErr(err, file, fileList) {
       console.log(err);
@@ -218,11 +219,11 @@ export default {
     },
     //上传预览图
     uploadChange(file, fileList) {
-      this.courseDeail.img_url.push(file);
+      this.courseDeail.thumb.push(file);
     },
     // 上传介绍图组
     uploadChange2(file, fileList) {
-      this.courseDeail.imgList.push(file);
+      this.courseDeail.images.push(file);
     },
     // 删除预览图
     handleRemove(file) {
@@ -246,13 +247,13 @@ export default {
       })
         .then(() => {
           if (type) {
-            let newList = this.courseDeail.imgList.filter((item) => {
+            let newList = this.courseDeail.images.filter((item) => {
               return item.url !== url;
             });
-            this.courseDeail.imgList = newList;
+            this.courseDeail.images = newList;
           } else {
             console.log(123);
-            this.courseDeail.img_url = [];
+            this.courseDeail.thumb = [];
           }
         })
         .catch((err) => {
@@ -266,8 +267,8 @@ export default {
     iffirm() {
       if (
         !this.courseDeail.name == "" &&
-        !this.courseDeail.imgList.length == 0 &&
-        !this.courseDeail.img_url == "" &&
+        !this.courseDeail.images.length == 0 &&
+        !this.courseDeail.thumb == "" &&
         !this.courseDeail.price !== 0
       ) {
         this.$confirm("确定保存当前页面信息?", "提示", {
@@ -298,18 +299,17 @@ export default {
     //修改保存
     saveAlter() {
       this.$message({
-        message: '修改成功!',
-        type: 'success',
+        message: "修改成功!",
+        type: "success",
         showClose: true,
         duration: 2000,
       });
-      
     },
     //新建角色保存post
     saveCreate() {
       this.$message({
-        message: '新建课程成功!',
-        type: 'success',
+        message: "新建课程成功!",
+        type: "success",
         showClose: true,
         duration: 2000,
       });
@@ -344,7 +344,7 @@ export default {
   height: auto;
   margin: 0 auto;
   margin-top: 10px;
-  background-color: #FFF;
+  background-color: #fff;
   border-radius: 5px;
   padding: 30px 60px;
   h3 {
@@ -385,4 +385,16 @@ export default {
     }
   }
 }
+.cursor{
+  &>div{
+    height: 68px;
+    width: 68px;
+    border: 2px dashed #f1f1f1;
+    border-radius: 5px;
+    font-size: 30px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+}
 </style>

+ 53 - 13
src/course/courseManage/home.vue

@@ -12,9 +12,9 @@
         <el-table-column label="价格" align="center">
           <template slot-scope="scope"> ¥{{ scope.row.price }} </template>
         </el-table-column>
-        <el-table-column label="课程名称" align="center">
+        <el-table-column label="是否上架" align="center">
           <template slot-scope="scope">
-            {{ scope.row.isRaking ? "是" : "否" }}
+            {{ scope.row.enable ? "是" : "否" }}
           </template>
         </el-table-column>
         <el-table-column fixed="right" label="操作" width="250" align="center">
@@ -65,31 +65,55 @@ export default {
           id: 123455,
           name: "课程精讲1",
           price: 598,
-          isRaking: true,
+          enable: true,
         },
         {
           id: 123453,
           name: "课程精讲2",
           price: 698,
-          isRaking: true,
+          enable: true,
         },
         {
           id: 123452,
           name: "课程精讲3",
           price: 798,
-          isRaking: false,
+          enable: false,
         },
         {
           id: 123451,
           name: "课程精讲4",
           price: 898,
-          isRaking: true,
+          enable: true,
         },
       ],
     };
   },
-  created() {},
+  created() {
+    this.getCourseList()
+  },
   methods: {
+    //获取课程列表
+    getCourseList(){
+      let data = {
+        size:this.page.size,
+        page:this.page.cur
+      }
+      this.$axiosKc('get',`/mkt/admin/${this.$getCourseId()}/subject/list`,data).then(res=>{
+        if(res.data.code == 1){
+          this.courseList = res.data.data.list
+          this.page.total = res.data.data.total
+          this.page.size = res.data.data.size
+          this.page.cur = res.data.data.page
+        }else{
+          this.$message({
+            message: res.data.message,
+            type: 'error',
+            showClose: true,
+            duration: 3000,
+          });
+        }
+      })
+    },
     // 上一页
     prevPage(){
       console.log(this.page)
@@ -113,6 +137,27 @@ export default {
     courseCreate(){
       this.$router.push('/course/courseCreate')
     },
+    // 删除
+    deleteCourse(id){
+      this.$axiosKc('post',`/mkt/admin/${this.$getCourseId()}/subject/delete/${id}`).then(res=>{
+        if(res.data.code == 1){
+          this.$message({
+            message: res.data.message,
+            type: 'success',
+            showClose: true,
+            duration: 3000,
+          });
+          this.getCourseList();
+        }else{
+          this.$message({
+            message: res.data.message,
+            type: 'error',
+            showClose: true,
+            duration: 3000,
+          });
+        }
+      })
+    },
     // 删除课程
     courseDel(row) {
       this.$confirm('确定删除当前课程吗?', '提示', {
@@ -120,12 +165,7 @@ export default {
         cancelButtonText: '取消',
         type: 'warning',
       }).then(action => {
-        this.$message({
-          message: '删除成功!',
-          type: 'success',
-          showClose: true,
-          duration: 2000,
-        });
+        this.deleteCourse(row.id)
       }).catch(() => {
       });
       

+ 0 - 7
src/course/index.vue

@@ -133,15 +133,8 @@ export default {
     if(this.$route.path!='/course'){
       this.menuIndex =this.$getCache('course_path')!=1? this.$getCache('course_path'):1;
     }
-    this.getAccountInfo()
   },
   methods: {
-    //根据微信token获取当前登录用户数据
-    getAccountInfo(){
-      axiosKc('get','/mkt/admin/login').then(res=>{
-        console.log(res)
-      })
-    },
     //全局刷新不闪烁
     reload() {
       this.isRouterAlive = false;

+ 26 - 5
src/course/user/login.vue

@@ -50,7 +50,7 @@
 </template>
 
 <script>
-import { setCourseToken, returnJSEncrypt,_debounce } from '@/utils/auth';
+import { setCourseToken, setCourseId,_debounce } from '@/utils/auth';
 export default {
   data() {
     return {
@@ -60,20 +60,41 @@ export default {
     };
   },
   methods: {
-    //临时指定id获取token
+    //临时指定id获取用户token
     getToken(){
       let url = '/mkt/demo/token/wo/'
       let wxId = '11770'
+      let that = this
       this.$axiosKc('get',`${url}${wxId}`).then((res)=>{
-        // console.log(res)
         let data = res.data
         if(data.code == 1){
-          setCourseToken(data.data)
-          this.$message("登陆成功!")
+          that.getAccountIdToken(data.data)
+        }else{
+          this.$message(data.message)
+        }
+      })
+    },
+    //根据用户token获取用户adminUserId和auToken
+    getAccountIdToken(token){
+      this.$axiosKc('post','/mkt/admin/login',{},'','','',token).then(res=>{
+        let data = res.data
+        if(data.code == 1){
+          setCourseToken(res.data.data.auToken)
+          setCourseId(res.data.data.adminUserId)
+          localStorage.setItem('Course-Token',res.data.data.auToken)
+          localStorage.setItem('Course-Id',res.data.data.adminUserId)
+          this.$message({
+            message: '登陆成功!',
+            type: 'success',
+            showClose: true,
+            duration: 2000,
+          });
           this.$router.push('/course')
         }else{
           this.$message(data.message)
         }
+      }).catch(err=>{
+
       })
     },
     // 微信扫码

+ 2 - 1
src/main.js

@@ -7,7 +7,7 @@ import moment from 'moment' // 时间库
 import App from './App'
 import router from './router'
 import store from './store'
-import {getDept,openUrl, getToken, getTyps, getTypsName, supremeAuthority, getUserData, getEmployeeMap,getEmployeeMapAll,getEmployeeMapItem,getIsIdentity,getCache,setCache,removeCache,returnDeptName,getIsAdministrator} from '@/utils/auth'
+import {getDept,openUrl, getToken, getCourseId,getTyps, getTypsName, supremeAuthority, getUserData, getEmployeeMap,getEmployeeMapAll,getEmployeeMapItem,getIsIdentity,getCache,setCache,removeCache,returnDeptName,getIsAdministrator} from '@/utils/auth'
 import './performanceSet' // 绩效系统相关配置
 import {onFilePreView } from '@/okr/utils/auth';
 import { VueOkrTree } from "vue-okr-tree";
@@ -45,6 +45,7 @@ Vue.prototype.$axiosKq = axiosKq
 Vue.prototype.$axiosKc = axiosKc
 Vue.prototype.$moment = moment
 Vue.prototype.$getToken = getToken
+Vue.prototype.$getCourseId = getCourseId
 Vue.prototype.$serveAd = process.env.SERVE_AD
 Vue.prototype.$serverdomain= process.env.BASE_API
 Vue.prototype.$getIsIdentity = getIsIdentity //在积分系统里 判断是否具备某项权限

+ 5 - 74
src/store/modules/course.js

@@ -1,98 +1,29 @@
 import {
-    loginByUsername,
     getUserInfo,
-    get_employee_map,
-    get_employee_map_all,
-    get_point_types,
-    get_site_info,
-    get_dept_tree,
-    get_account_info
-} from '@/api/login'
+} from '@/api/course'
 import { removeAllToken, getCache, setCache } from '@/utils/auth'
 const courseStore = {
     state: {
-        course_token: '',
-        course_user_info: {},
-        course_site_info: {},
         course_account_info: {
             "id": 2722,
-            "account_id": 183,
-            "site_id": 389,
-            "name": "郭家裕1",
-            "img_url": "",
-            "tel": "13553212681",
-            "status": 1,
-            "is_creator": 0,
-            "is_site_owner": 0,
-            "is_site_manager": 0,
-            "post": "",
-            "accedence_time": "2022-12-22",
-            "letter_index": "G",
-            "post_info": [],
-            "has_sm_scheme": 0,
-            "wechat_bind": true
+            "name": "管理员",
+            "img_url": ""
         },//个人账号信息
     },
 
     mutations: {
-        SET_COURSEUSERINFO: (state, data) => {
-            state.course_user_info = data
-        },
-        SET_COURSESITEINFO: (state, data) => {
-            state.course_site_info = data
-        },
         SET_COURSEACCOUNTINFO: (state, data) => {
             state.course_account_info = data
         }
     },
 
     actions: {
-        //公司信息
-        get_course_site_info({ commit }, isUpdate) {
-            return new Promise((resolve, reject) => {
-                const site_info = getCache('course_site_info')
-                if (site_info && !isUpdate) {
-                    commit('SET_COURSESITEINFO', site_info)
-                    resolve(site_info)
-                } else {
-                    get_course_site_info().then(response => {
-                        if (response.data.code == 1) {
-                            commit('SET_COURSESITEINFO', response.data.data)
-                            setCache('course_site_info', response.data.data)
-                            resolve(response.data.data)
-                        }
-                    }).catch(error => {
-                        reject(error)
-                    })
-                }
-            })
-        },
-        //平台信息
-        get_course_account_info({ commit }, isUpdate) {
-            return new Promise((resolve, reject) => {
-                const account_info = getCache('course_account_info')
-                if (account_info && !isUpdate) {
-                    commit('SET_COURSEACCOUNTINFO', account_info)
-                    resolve(account_info)
-                } else {
-                    get_course_account_info().then(response => {
-                        if (response.data.code == 1) {
-                            commit('SET_COURSEACCOUNTINFO', response.data.data)
-                            setCache('course_account_info', response.data.data)
-                            resolve(response.data.data)
-                        }
-                    }).catch(error => {
-                        reject(error)
-                    })
-                }
-            })
-        },
-        // 获取用户信息
+        // 获取当前管理员信息
         getCourseUserInfo({ commit }) {
             return new Promise((resolve, reject) => {
                 getUserInfo().then(response => {
                     let data = response.data.data.user
-                    commit('SET_COURSEUSERINFO', data)
+                    commit('SET_COURSEACCOUNTINFO', data)
                     setCache('course_account', data)
                     resolve(data)
                 }).catch(error => {

+ 8 - 0
src/utils/auth.js

@@ -6,6 +6,7 @@ import {
 const publicKey = hexToDec();
 const TokenKey = 'Admin-Token'
 const CourseTokenKey = 'Course-Token'
+const CourseId = 'Course-Id'
 const USER = 'user'
 const PASW = 'pasw'
 
@@ -269,6 +270,12 @@ export function setCourseToken(token) {
 export function getCourseToken() {
   return Cookies.get(CourseTokenKey)
 }
+export function setCourseId(id) {
+  return Cookies.set(CourseId, id)
+}
+export function getCourseId() {
+  return Cookies.get(CourseId)
+}
 export function getUser() {
   return Cookies.get(USER)
 }
@@ -291,5 +298,6 @@ export function removeAllToken() {
   Cookies.remove('pasw')
   Cookies.remove(TokenKey)
   Cookies.remove(CourseTokenKey)
+  Cookies.remove(CourseId)
   return true
 }

+ 3 - 2
src/utils/axiosKc.js

@@ -138,8 +138,9 @@ export default (type, url, data, versions, Content_Type, transform,isToken) => {
   if (transform) {
     transformRequest = transform
   }
-  if (getCache('Course-Token')) {
-    Token = getCache('Course-Token');
+  console.log(localStorage.getItem('Course-Token'))
+  if (localStorage.getItem('Course-Token')) {
+    Token = localStorage.getItem('Course-Token');
   }
   if(isToken){
     Token=isToken