Li,Jiajia 6 년 전
부모
커밋
6cccdc1e65
8개의 변경된 파일234개의 추가작업 그리고 272개의 파일을 삭제
  1. 0 133
      src/api/article.js
  2. 59 0
      src/api/interface.js
  3. 43 0
      src/api/rule.js
  4. 9 0
      src/utils/index.js
  5. 25 25
      src/utils/request.js
  6. 0 79
      src/views/mock/index.vue
  7. 76 24
      src/views/mock/interface.vue
  8. 22 11
      src/views/mock/rule.vue

+ 0 - 133
src/api/article.js

@@ -1,133 +0,0 @@
-import request from '@/utils/request'
-
-export function fetchList(query) {
-  return request({
-    url: '/article/list',
-    method: 'get',
-    params: query
-  })
-}
-
-export function fetchArticle(id) {
-  return request({
-    url: '/article/detail',
-    method: 'get',
-    params: { id }
-  })
-}
-
-export function fetchPv(pv) {
-  return request({
-    url: '/article/pv',
-    method: 'get',
-    params: { pv }
-  })
-}
-
-export function createArticle(data) {
-  return request({
-    url: '/article/create',
-    method: 'post',
-    data
-  })
-}
-
-export function updateArticle(data) {
-  return request({
-    url: '/article/update',
-    method: 'post',
-    data
-  })
-}
-
-// ================================== Interface ======================================
-
-export function fetchEnvInfo(envChannel) {
-  return request({
-    url: '/api/mock/envConfig/getAllEnvConfigByChannel',
-    method: 'get',
-    params: { channelId: envChannel }
-  })
-}
-
-export function fetchServiceById(data) {
-  return request({
-    url: '/api/mock/methodConfig/query',
-    method: 'post',
-    data
-  })
-}
-
-export function fetchServiceList(data) {
-  return request({
-    url: '/api/mock/methodConfig/query',
-    method: 'post',
-    data
-  })
-}
-
-export function fetchConsumerList() {
-  return request({
-    url: '/api/mock/dubboConsumer/getAll',
-    method: 'get',
-    params: {}
-  })
-}
-
-export function createService(data) {
-  return request({
-    url: '/api/mock/methodConfig/add',
-    method: 'post',
-    data
-  })
-}
-
-export function updateService(data) {
-  return request({
-    url: '/api/mock/methodConfig/update',
-    method: 'post',
-    data
-  })
-}
-
-// ================================== Rule ======================================
-
-export function fetchRuleById(data) {
-  return request({
-    url: '/api/mock/mockRule/query',
-    method: 'post',
-    data
-  })
-}
-
-export function fetchRuleList(data) {
-  return request({
-    url: '/api/mock/mockRule/query',
-    method: 'post',
-    data
-  })
-}
-
-export function createRule(data) {
-  return request({
-    url: '/api/mock/mockRule/add',
-    method: 'post',
-    data
-  })
-}
-
-export function updateRule(data) {
-  return request({
-    url: '/api/mock/mockRule/update',
-    method: 'post',
-    data
-  })
-}
-
-export function changeStatus(data) {
-  return request({
-    url: '/api/mock/mockRule/changeStatus',
-    method: 'post',
-    data
-  })
-}

+ 59 - 0
src/api/interface.js

@@ -0,0 +1,59 @@
+import request from '@/utils/request'
+
+// ================================== Interface ======================================
+
+export function fetchEnvInfo(envChannel) {
+  return request({
+    url: '/api/mock/envConfig/getAllEnvConfigByChannel',
+    method: 'get',
+    params: { channelId: envChannel }
+  })
+}
+
+export function fetchServiceById(data) {
+  return request({
+    url: '/api/mock/methodConfig/query',
+    method: 'post',
+    data
+  })
+}
+
+export function fetchServiceList(data) {
+  return request({
+    url: '/api/mock/methodConfig/query',
+    method: 'post',
+    data
+  })
+}
+
+export function fetchConsumerList() {
+  return request({
+    url: '/api/mock/dubboConsumer/getAll',
+    method: 'get',
+    params: {}
+  })
+}
+
+export function createService(data) {
+  return request({
+    url: '/api/mock/methodConfig/add',
+    method: 'post',
+    data
+  })
+}
+
+export function updateService(data) {
+  return request({
+    url: '/api/mock/methodConfig/update',
+    method: 'post',
+    data
+  })
+}
+
+export function changeStatus(data) {
+  return request({
+    url: '/api/mock/methodConfig/changeStatus',
+    method: 'post',
+    data
+  })
+}

+ 43 - 0
src/api/rule.js

@@ -0,0 +1,43 @@
+import request from '@/utils/request'
+
+// ================================== Rule ======================================
+
+export function fetchRuleById(data) {
+  return request({
+    url: '/api/mock/mockRule/query',
+    method: 'post',
+    data
+  })
+}
+
+export function fetchRuleList(data) {
+  return request({
+    url: '/api/mock/mockRule/query',
+    method: 'post',
+    data
+  })
+}
+
+export function createRule(data) {
+  return request({
+    url: '/api/mock/mockRule/add',
+    method: 'post',
+    data
+  })
+}
+
+export function updateRule(data) {
+  return request({
+    url: '/api/mock/mockRule/update',
+    method: 'post',
+    data
+  })
+}
+
+export function changeStatus(data) {
+  return request({
+    url: '/api/mock/mockRule/changeStatus',
+    method: 'post',
+    data
+  })
+}

+ 9 - 0
src/utils/index.js

@@ -108,3 +108,12 @@ export function param2Obj(url) {
       '"}'
   )
 }
+
+// 判断字符是否为空的方法
+export function isEmpty(obj) {
+  if (typeof obj === 'undefined' || obj == null || obj === '') {
+    return true
+  } else {
+    return false
+  }
+}

+ 25 - 25
src/utils/request.js

@@ -1,5 +1,5 @@
 import axios from 'axios'
-import { MessageBox, Message } from 'element-ui'
+import { Message } from 'element-ui'
 import store from '@/store'
 import { getToken } from '@/utils/auth'
 
@@ -44,32 +44,32 @@ service.interceptors.response.use(
    */
   response => {
     const res = response.data
-
+    return res
     // if the custom code is not 20000, it is judged as an error.
-    if (res.code !== 200) {
-      // Message({
-      //   message: res.message || 'Error',
-      //   type: 'error',
-      //   duration: 5 * 1000
-      // })
+    // if (res.code !== 200) {
+    //   // Message({
+    //   //   message: res.message || 'Error',
+    //   //   type: 'error',
+    //   //   duration: 5 * 1000
+    //   // })
 
-      // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
-      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
-        // to re-login
-        MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
-          confirmButtonText: 'Re-Login',
-          cancelButtonText: 'Cancel',
-          type: 'warning'
-        }).then(() => {
-          store.dispatch('user/resetToken').then(() => {
-            location.reload()
-          })
-        })
-      }
-      return Promise.reject(new Error(res.message || 'Error'))
-    } else {
-      return res
-    }
+    //   // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
+    //   if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+    //     // to re-login
+    //     MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
+    //       confirmButtonText: 'Re-Login',
+    //       cancelButtonText: 'Cancel',
+    //       type: 'warning'
+    //     }).then(() => {
+    //       store.dispatch('user/resetToken').then(() => {
+    //         location.reload()
+    //       })
+    //     })
+    //   }
+    //   return Promise.reject(new Error(res.message || 'Error'))
+    // } else {
+    //   return res
+    // }
   },
   error => {
     console.log('err' + error) // for debug

+ 0 - 79
src/views/mock/index.vue

@@ -1,79 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-table
-      v-loading="listLoading"
-      :data="list"
-      element-loading-text="Loading"
-      border
-      fit
-      highlight-current-row
-    >
-      <el-table-column align="center" label="ID" width="95">
-        <template slot-scope="scope">
-          {{ scope.$index }}
-        </template>
-      </el-table-column>
-      <el-table-column label="Title">
-        <template slot-scope="scope">
-          {{ scope.row.title }}
-        </template>
-      </el-table-column>
-      <el-table-column label="Author" width="110" align="center">
-        <template slot-scope="scope">
-          <span>{{ scope.row.author }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="Pageviews" width="110" align="center">
-        <template slot-scope="scope">
-          {{ scope.row.pageviews }}
-        </template>
-      </el-table-column>
-      <el-table-column class-name="status-col" label="Status" width="110" align="center">
-        <template slot-scope="scope">
-          <el-tag :type="scope.row.status | statusFilter">{{ scope.row.status }}</el-tag>
-        </template>
-      </el-table-column>
-      <el-table-column align="center" prop="created_at" label="Display_time" width="200">
-        <template slot-scope="scope">
-          <i class="el-icon-time" />
-          <span>{{ scope.row.display_time }}</span>
-        </template>
-      </el-table-column>
-    </el-table>
-  </div>
-</template>
-
-<script>
-import { getList } from '@/api/table'
-
-export default {
-  filters: {
-    statusFilter(status) {
-      const statusMap = {
-        published: 'success',
-        draft: 'gray',
-        deleted: 'danger'
-      }
-      return statusMap[status]
-    }
-  },
-  data() {
-    return {
-      list: null,
-      listLoading: true
-    }
-  },
-  created() {
-    this.fetchData()
-  },
-  methods: {
-    fetchData() {
-      this.listLoading = true
-      getList().then(response => {
-        this.list = response.data.items
-        this.listLoading = false
-      })
-    }
-  }
-}
-</script>

+ 76 - 24
src/views/mock/interface.vue

@@ -35,7 +35,7 @@
       style="width: 100%;"
       @sort-change="sortChange"
     >
-      <el-table-column label="ID" prop="id" sortable="custom" align="center" width="80">
+      <el-table-column label="ID" prop="id" sortable="custom" align="center" width="60">
         <template slot-scope="scope">
           <span>{{ scope.row.id }}</span>
         </template>
@@ -89,7 +89,7 @@
           <span style="color:red;">{{ scope.row.remark }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="操作" align="center" width="230" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" width="320px" class-name="small-padding fixed-width">
         <template slot-scope="{row}">
           <el-button type="primary" size="mini" @click="handleUpdate(row)">
             编辑
@@ -97,6 +97,12 @@
           <el-button type="primary" size="mini" @click="handleCopy(row)">
             复制
           </el-button>
+          <el-button v-if="row.methodStatus!=1" size="mini" type="success" @click="handleModifyStatus(row, 1)">
+            开启
+          </el-button>
+          <el-button v-if="row.methodStatus!=0" size="mini" type="danger" @click="handleModifyStatus(row, 0)">
+            关闭
+          </el-button>
           <el-button type="primary" size="mini" @click="redirectTo(row.id, row.methodName)">
             规则 >>
           </el-button>
@@ -186,7 +192,7 @@
 </style>
 
 <script>
-import { fetchEnvInfo, fetchServiceById, fetchServiceList, fetchConsumerList, createService, updateService } from '@/api/article'
+import { fetchEnvInfo, fetchServiceById, fetchServiceList, fetchConsumerList, createService, updateService, changeStatus } from '@/api/interface'
 import waves from '@/directive/waves' // waves directive
 import { parseTime } from '@/utils'
 import Pagination from '@/components/Pagination' // secondary package based on el-pagination
@@ -212,7 +218,6 @@ const protocols = [
 ]
 
 // var envTypeID = 1;
-
 // arr to obj, such as { CN : "China", US : "USA" }
 const calendarTypeKeyValue = calendarTypeOptions.reduce((acc, cur) => {
   acc[cur.key] = cur.display_name
@@ -243,6 +248,7 @@ export default {
       total: 0,
       listLoading: true,
       statusMappings: new Map([[1, '已开启'], [0, '未开启']]),
+      statusOperateMap: new Map([[1, '开启'], [0, '关闭']]),
       listQuery: {
         curIndex: 1,
         pageSize: 20,
@@ -326,7 +332,7 @@ export default {
     getList() {
       this.listLoading = true
       fetchServiceList(this.listQuery).then(response => {
-        console.log(this.listQuery)
+        // console.log(this.listQuery)
         this.list = response.data.mockMethodList
         this.total = response.data.total
         // Just to simulate the time of the request
@@ -337,7 +343,7 @@ export default {
       })
     },
     updateEnvChannel(v) {
-      console.log(v)
+      // console.log(v)
       this.serviceData.envChannel = v
       this.envSelections = []
       fetchEnvInfo(v).then(response => {
@@ -358,6 +364,14 @@ export default {
           consumerSel.display_name = sel.customizeName
           this.consumerSelections.push(consumerSel)
         }
+        // console.log(this.serviceData.consumerIds)
+        // for (var op of this.consumerSelections) {
+        //   if (op.key in this.serviceData.consumerIds) {
+        //     this.consumerSelected.push(op)
+        //     // this.consumerSelected = op.display_name
+        //   }
+        // }
+        // console.log(this.consumerSelected)
       })
     },
     dialogOpenInit() {
@@ -368,13 +382,28 @@ export default {
       // this.listQuery.page = 1
       this.getList()
     },
-    // handleModifyStatus(row, status) {
-    //   this.$message({
-    //     message: '操作Success',
-    //     type: 'success'
-    //   })
-    //   row.status = status
-    // },
+    handleModifyStatus(row, status) {
+      var statusData = {
+        id: row.id,
+        methodStatus: status
+      }
+      // console.log(statusData)
+      changeStatus(statusData).then(response => {
+        // console.log(response)
+        if (response.code === 200) {
+          row.methodStatus = status
+          this.$message({
+            message: row.id.toString() + ' ' + this.statusOperateMap.get(status) + '成功!',
+            type: 'success'
+          })
+        } else {
+          this.$message({
+            message: row.id.toString() + ' ' + this.statusOperateMap.get(status) + '失败!',
+            type: 'danger'
+          })
+        }
+      })
+    },
     sortChange(data) {
       const { prop, order } = data
       if (prop === 'id') {
@@ -422,24 +451,41 @@ export default {
           // this.serviceData.id = parseInt(Math.random() * 100) + 1024 // mock a id
           // this.temp.author = 'vue-element-admin'
           delete this.serviceData.id
-          this.serviceData.consumerIds = '[' + this.serviceData.consumerIds.toString() + ']'
+          delete this.serviceData.bizLine
+          delete this.serviceData.bizModuleId
+          delete this.serviceData.bizName
+          delete this.serviceData.consumerCustomizeName
+          delete this.serviceData.consumerNames
+          delete this.serviceData.createTime
+          delete this.serviceData.createTimeStr
+          delete this.serviceData.envName
+          delete this.serviceData.updateTime
+          delete this.serviceData.updateTimeStr
+          delete this.serviceData.zkAddress
+          if (typeof this.serviceData.consumerIds === 'object') {
+            this.serviceData.consumerIds = '[' + this.serviceData.consumerIds.toString() + ']'
+          }
+          // console.log('#######################')
+          // console.log(this.serviceData)
+          // console.log('#######################')
           createService(this.serviceData).then(response => {
             // this.list.unshift(this.serviceData)
+            // console.log(response)
             if (response.code === 200) {
               this.dialogFormVisible = false
               this.getList()
               this.$notify({
                 title: 'Success',
-                message: 'Created Successfully',
+                message: response.msg,
                 type: 'success',
-                duration: 2000
+                duration: 10000
               })
             } else {
               this.$notify({
                 title: 'Failed',
-                message: 'Created Failed',
-                type: 'danger',
-                duration: 2000
+                message: response.msg,
+                type: 'error',
+                duration: 10000
               })
             }
           })
@@ -449,7 +495,7 @@ export default {
     handleUpdate(row) {
       var queryData = { id: row.id }
       fetchServiceById(queryData).then(response => {
-        console.log(response)
+        // console.log(response)
         var rowData = response.data.mockMethodList
         // this.serviceData.timestamp = new Date(this.temp.timestamp)
         // console.log(this.serviceData)
@@ -458,7 +504,12 @@ export default {
         this.serviceDataExt.id = row.id
         this.serviceDataExt.bizLine = row.bizLine
         this.serviceDataExt.bizModuleId = row.bizModuleId
-        this.serviceData.consumerIds = this.serviceData.consumerIds.split('[')[1].split(']')[0].split(',')
+        // console.log(this.serviceData.consumerIds.split('[')[1].split(']')[0].split(','))
+        if (this.serviceData.consumerIds === '[]') {
+          this.serviceData.consumerIds = []
+        } else {
+          this.serviceData.consumerIds = this.serviceData.consumerIds.split('[')[1].split(']')[0].split(',').map(value => { return parseInt(value) })
+        }
         // console.log(this.serviceData)
         // this.serviceData.timestamp = new Date(this.temp.timestamp)
         this.dialogStatus = 'update'
@@ -499,21 +550,22 @@ export default {
             remark: this.serviceData.remark,
             updator: ''
           }
+          // console.log(tempData)
           updateService(tempData).then(response => {
             if (response.code === 200) {
               this.dialogFormVisible = false
               this.getList()
               this.$notify({
                 title: 'Success',
-                message: 'Update Successfully',
+                message: response.msg,
                 type: 'success',
                 duration: 2000
               })
             } else {
               this.$notify({
                 title: 'Failed',
-                message: 'Update Failed',
-                type: 'danger',
+                message: response.msg,
+                type: 'error',
                 duration: 2000
               })
             }

+ 22 - 11
src/views/mock/rule.vue

@@ -133,7 +133,7 @@
 </style>
 
 <script>
-import { fetchEnvInfo, fetchRuleById, fetchRuleList, createRule, updateRule, changeStatus } from '@/api/article'
+import { fetchEnvInfo, fetchRuleById, fetchRuleList, createRule, updateRule, changeStatus } from '@/api/rule'
 import waves from '@/directive/waves' // waves directive
 import { parseTime } from '@/utils'
 import Pagination from '@/components/Pagination' // secondary package based on el-pagination
@@ -286,17 +286,28 @@ export default {
         if (valid) {
           // this.ruleData.id = parseInt(Math.random() * 100) + 1024 // mock a id
           // this.temp.author = 'vue-element-admin'
-        //   delete this.ruleData.id
+          //   delete this.ruleData.id
+          delete this.ruleData.id
           this.ruleData.methodId = parseInt(this.$route.path.split('/')[3])
-          createRule(this.ruleData).then(() => {
-            this.list.unshift(this.ruleData)
-            this.dialogFormVisible = false
-            this.$notify({
-              title: 'Success',
-              message: 'Created Successfully',
-              type: 'success',
-              duration: 2000
-            })
+          createRule(this.ruleData).then(response => {
+            // this.list.unshift(this.serviceData)
+            if (response.code === 200) {
+              this.dialogFormVisible = false
+              this.getList()
+              this.$notify({
+                title: 'Success',
+                message: 'Created Successfully',
+                type: 'success',
+                duration: 2000
+              })
+            } else {
+              this.$notify({
+                title: 'Failed',
+                message: 'Created Failed',
+                type: 'error',
+                duration: 2000
+              })
+            }
           })
         }
       })