Explorar el Código

增加订单模块和操作日志模块

Limengbo hace 5 años
padre
commit
db4703b75e

+ 9 - 0
src/api/operation.js

@@ -0,0 +1,9 @@
+import request from '../utils/request';
+// 获取渠道列表
+export function getLogList (params) {
+  return request({
+    url: '/log',
+    method: 'get',
+    params
+  })
+}

+ 17 - 0
src/api/order.js

@@ -0,0 +1,17 @@
+import request from '../utils/request'
+
+// 获取课程列表
+export function getOrderList (params) {
+  return request({
+    url: '/orders',
+    method: 'get',
+    params
+  })
+}
+
+export function setOrderDetails (orderId) {
+  return request({
+    url: `/orders/${orderId}`,
+    method: 'get'
+  })
+}

+ 9 - 3
src/pages/layout/leftnav/LeftNav.vue

@@ -13,9 +13,15 @@
       <el-menu-item index="/course/index" route="/course/index">
         <span slot="title">课程管理</span>
       </el-menu-item>
-     <el-menu-item index="/relation/index" route="/relation/index">
-        <span slot="title">渠道课程管理</span>
-    </el-menu-item>
+      <el-menu-item index="/relation/index" route="/relation/index">
+          <span slot="title">渠道课程管理</span>
+      </el-menu-item>
+      <el-menu-item index="/order/index" route="/order/index">
+          <span slot="title">订单管理</span>
+      </el-menu-item>
+      <el-menu-item index="/operation/index" route="/operation/index">
+          <span slot="title">操作日志</span>
+      </el-menu-item>
     </el-menu>
   </div>
 </template>

+ 102 - 0
src/pages/operation/Operation.vue

@@ -0,0 +1,102 @@
+<template>
+  <div class="course">
+    <el-card class="box-card">
+      <div slot="header" class="clearfix">
+        <el-select v-model="orderParams.channelCode" placeholder="请选择渠道">
+          <el-option
+            v-for="item in channeList.list"
+            :key="item.code"
+            :label="item.title"
+            :value="item.code">
+          </el-option>
+        </el-select>
+        <el-input v-model="orderParams.userId" placeholder="请输入用户ID"></el-input>
+        <el-button type="primary" style="float: right;" @click="search">搜索</el-button>
+      </div>
+      <el-table
+        :data="logList.list"
+        style="width: 100%"
+        height="700">
+        <el-table-column
+          label="用户 ID"
+          prop="userId">
+        </el-table-column>
+        <el-table-column
+          label="渠道号"
+          prop="channelCode">
+        </el-table-column>
+        <el-table-column
+          label="Ip"
+          prop="ip">
+        </el-table-column>
+        <el-table-column
+          label="操作接口地址"
+          prop="requestUrl">
+        </el-table-column>
+        <el-table-column
+          label="传入参数"
+          prop="paramJson">
+        </el-table-column>
+        <el-table-column
+          label="返回值"
+          prop="returnData">
+        </el-table-column>
+      </el-table>
+      <el-pagination
+      v-if="logList.totalSize"
+      background
+      layout="prev, pager, next"
+      :total="logList.totalSize"
+      @current-change="changePage">
+      </el-pagination>
+  </el-card>
+  </div>
+</template>
+<script>
+import { mapGetters } from 'vuex';
+export default {
+  data() {
+    return {
+      orderParams: {
+        userId: '',
+        channelCode: '',
+        pageNum: 1,
+        pageSize: 10
+      }
+    }
+  },
+  computed: {
+    ...mapGetters({
+      channeList: 'channeList',
+      logList: 'logList'
+      })
+  },
+  created () {
+    this.$store.dispatch('getChannelList', {pageNo: '', pageSize: '' })
+  },
+  methods: {
+    // 搜索
+    search () {
+      this.$store.dispatch('getLogList', this.orderParams)
+    },
+    // 渠道下课程分页
+    changePage (e) {
+      this.orderParams.pageNum = e;
+      this.$store.dispatch('getLogList', this.orderParams)
+    }
+  },
+}
+</script>
+<style lang="less">
+  .el-pagination {
+    text-align: center;
+    margin-top: 20px;
+  }
+  .el-form-item__content {
+    width: 50%;
+  }
+  .el-input {
+    width: 217px;
+  }
+</style>
+

+ 138 - 0
src/pages/order/Order.vue

@@ -0,0 +1,138 @@
+<template>
+  <div class="course">
+    <el-card class="box-card">
+      <div slot="header" class="clearfix">
+        <el-select v-model="orderParams.channelCode" placeholder="请选择渠道">
+          <el-option
+            v-for="item in channeList.list"
+            :key="item.code"
+            :label="item.title"
+            :value="item.code">
+          </el-option>
+        </el-select>
+        <el-input v-model="orderParams.userId" placeholder="请输入用户ID"></el-input>
+        <el-date-picker
+          v-model="dateValue"
+          type="daterange"
+          align="right"
+          unlink-panels
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          :picker-options="pickerOptions">
+        </el-date-picker>
+        <el-button type="primary" style="float: right;" @click="search">搜索</el-button>
+      </div>
+      <el-table
+        :data="orderList.content"
+        style="width: 100%"
+        height="700">
+        <el-table-column
+          label="用户 ID"
+          prop="userId">
+        </el-table-column>
+        <el-table-column
+          label="订单名称"
+          prop="name">
+        </el-table-column>
+        <el-table-column
+          label="渠道号"
+          prop="channelCode">
+        </el-table-column>
+        <el-table-column
+          label="价格"
+          prop="price">
+        </el-table-column>
+        <el-table-column
+          label="用户手机"
+          prop="userPhone">
+        </el-table-column>
+      </el-table>
+      <el-pagination
+      v-if="orderList.totalElements"
+      background
+      layout="prev, pager, next"
+      :total="orderList.totalElements"
+      @current-change="changePage">
+      </el-pagination>
+  </el-card>
+  </div>
+</template>
+<script>
+import { mapGetters } from 'vuex';
+export default {
+  data() {
+    return {
+      pickerOptions: {
+        shortcuts: [{
+          text: '最近一周',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近一个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近三个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+            picker.$emit('pick', [start, end]);
+          }
+        }]
+      },
+      dateValue: '',
+      orderParams: {
+        userId: '',
+        channelCode: '',
+        pageNo: 1,
+        pageSize: 10
+      }
+    }
+  },
+  computed: {
+    ...mapGetters({
+      channeList: 'channeList',
+      orderList: 'orderList'
+      })
+  },
+  created () {
+    this.$store.dispatch('getChannelList', {pageNo: '', pageSize: '' })
+  },
+  methods: {
+    // 搜索
+    search () {
+      this.orderParams.startTime = this.dateValue.length > 1 ? this.dateValue[1].toLocaleDateString().replace(/\//g,'-') : ''
+      this.orderParams.endTime = this.dateValue.length > 1 ? this.dateValue[1].toLocaleDateString().replace(/\//g,'-') : ''
+      this.$store.dispatch('getOrderList', this.orderParams)
+    },
+    // 渠道下课程分页
+    changePage (e) {
+      this.orderParams.pageNo = e;
+      this.$store.dispatch('getRelationList', this.orderParams)
+    }
+  },
+}
+</script>
+<style lang="less">
+  .el-pagination {
+    text-align: center;
+    margin-top: 20px;
+  }
+  .el-form-item__content {
+    width: 50%;
+  }
+  .el-input {
+    width: 217px;
+  }
+</style>
+

+ 20 - 0
src/router/router.js

@@ -50,6 +50,26 @@ export default new Router({
         meta: { title: '渠道课程管理', url: '/relation/index' },
         component: () => import('@/pages/relation/Relation'),
       }]
+    },
+    {
+      path: '/order',
+      component: Layout,
+      children: [{
+        path: 'index',
+        name:'Order',
+        meta: { title: '渠道课程管理', url: '/order/index' },
+        component: () => import('@/pages/order/Order'),
+      }]
+    },
+    {
+      path: '/operation',
+      component: Layout,
+      children: [{
+        path: 'index',
+        name:'Operation',
+        meta: { title: '渠道课程管理', url: '/operation/index' },
+        component: () => import('@/pages/operation/Operation'),
+      }]
     }
   ]
 })

+ 3 - 1
src/store/getter.js

@@ -2,6 +2,8 @@ const getters = {
   flag: state => state.login.flag,
   channeList: state => state.channel.channeList,
   courseList: state => state.course.courseList,
-  relationList: state => state.relation.relationList
+  relationList: state => state.relation.relationList,
+  orderList: state => state.order.orderList,
+  logList: state => state.operation.logList,
 }
 export default getters

+ 5 - 2
src/store/index.js

@@ -5,7 +5,8 @@ import channel from './modules/channel'
 import course from './modules/course'
 import getters from './getter'
 import relation from './modules/relation'
-
+import order from './modules/order'
+import operation from './modules/operation'
 Vue.use(Vuex)
 
 const store = new Vuex.Store({
@@ -13,7 +14,9 @@ const store = new Vuex.Store({
     login,
     channel,
     course,
-    relation
+    relation,
+    order,
+    operation
   },
   getters
 })

+ 28 - 0
src/store/modules/operation.js

@@ -0,0 +1,28 @@
+import { getLogList } from '../../api/operation';
+
+const log = {
+  state: {
+    logList: {}
+  },
+  mutations: {
+    GET_LOG_LIST: (state, data) => {
+      state.logList = data
+    }
+  },
+  actions: {
+    getLogList({dispatch, commit }, data) {
+      return new Promise((resolve, reject) => {
+        getLogList(data).then(res => {
+          if(res.code == 200) {
+            resolve(res.data);
+            commit('GET_LOG_LIST', res.data)
+          }
+        }).catch(error => {
+          reject(error);
+        })
+      })
+    }
+  }
+}
+
+export default log

+ 28 - 0
src/store/modules/order.js

@@ -0,0 +1,28 @@
+import { getOrderList } from '../../api/order'
+
+const order = {
+  state: {
+    orderList: {}
+  },
+  mutations: {
+    GET_ORDER_LIST: (state, data) => {
+      state.orderList = data
+    }
+  },
+  actions: {
+    getOrderList({dispatch, commit }, data) {
+      return new Promise((resolve, reject) => {
+        getOrderList(data).then(res => {
+          if(res.code == 200) {
+            resolve(res.data);
+            commit('GET_ORDER_LIST', res.data)
+          }
+        }).catch(error => {
+          reject(error);
+        })
+      })
+    }
+  }
+}
+
+export default order