Просмотр исходного кода

feat: 公共订单统计及携程账号信息管理

LaveyD 1 неделя назад
Родитель
Сommit
b8ff3adbf6

+ 4 - 2
config/index.js

@@ -44,14 +44,16 @@ module.exports = {
     proxyTable: {
       '/tenant': {
       // target: 'https://pdev.cleartv.cn/cticketmember/',
-        target: 'http://114.104.160.233:28002/',
+        // target: 'http://114.104.160.233:28002/',
+        target: 'http://114.104.160.118:18001/',
         // target: 'https://oriented-quail-refined.ngrok-free.app/',
         changeOrigin: true,
         rewrite: (path) => path.replace(/^\/api/, '')
       },
       '/platform': {
       // target: 'https://pdev.cleartv.cn/cticketmember/',
-        target: 'http://114.104.160.233:28002/',
+        // target: 'http://114.104.160.233:28002/',
+        target: 'http://114.104.160.118:18001/',
         // target: 'https://oriented-quail-refined.ngrok-free.app/',
         changeOrigin: true,
         rewrite: (path) => path.replace(/^\/api/, '')

Разница между файлами не показана из-за своего большого размера
+ 796 - 0
docs/平台运营端.html


+ 17 - 0
src/api/platform.js

@@ -40,6 +40,9 @@ export function getOrderList (params) {
 export function getOrderById (params) {
   return http.post('/platform/order/getById', { data: params })
 }
+export function getPlatformOrderStatistics (params) {
+  return http.post('/platform/order/statistics', { data: params })
+}
 export function getUploadFileList (params) {
   return http.post('/platform/publicUploadFile', { data: params })
 }
@@ -70,3 +73,17 @@ export function deleteCache (params) {
 export function uploadFile (params) {
   return http.post('/platform/file/upload', { data: params })
 }
+
+// 携程账号信息管理
+export function getXcAccountList () {
+  return http.post('/platform/xcAccountParam', {})
+}
+export function addXcAccount (params) {
+  return http.post('/platform/xcAccountParam/add', { data: params })
+}
+export function updateXcAccount (params) {
+  return http.post('/platform/xcAccountParam/update', { data: params })
+}
+export function deleteXcAccount (params) {
+  return http.post('/platform/xcAccountParam/delete', { data: params })
+}

+ 6 - 0
src/router/index.js

@@ -130,6 +130,12 @@ let routerMap = [
         name: 'systemConfig',
         component: () => import('@/views/systemSetting/systemConfig'),
         meta: { title: '平台系统总配置', permissionName: '' }
+      },
+      {
+        path: 'xcAccountParam',
+        name: 'xcAccountParam',
+        component: () => import('@/views/systemSetting/xcAccountParam'),
+        meta: { title: '携程账号信息管理', permissionName: 'system_setting:users' }
       }
     ]
   },

+ 20 - 218
src/views/systemSetting/order.vue

@@ -1,235 +1,37 @@
 <template>
   <div class="form-wrap">
-    <div class="searchBox">
-      <el-form
-        ref="form"
-        :model="form"
-        :inline="true"
-        label-width="100px">
-        <el-form-item
-          label="起始时间"
-          prop="timeBegin">
-          <el-date-picker
-            v-model="form.timeBegin"
-            type="datetime"
-            placeholder="选择日期时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item
-          label="截止时间"
-          prop="timeEnd">
-          <el-date-picker
-            v-model="form.timeEnd"
-            type="datetime"
-            placeholder="选择日期时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item
-          label="项目ID"
-          prop="projectId">
-          <el-select
-            v-model="form.projectId"
-            filterable
-            clearable
-            placeholder="请选择项目">
-            <el-option
-              label="全部"
-              value=""></el-option>
-            <el-option
-              v-for="item in projectList"
-              :key="item.id"
-              :label="item.projectName"
-              :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item
-          label="订单号"
-          prop="orderNo">
-          <el-input
-            v-model="form.orderNo"
-            clearable></el-input>
-        </el-form-item>
-        <el-form-item
-          label="合作方订单号"
-          prop="partnerOrderNo">
-          <el-input
-            v-model="form.partnerOrderNo"
-            clearable></el-input>
-        </el-form-item>
-        <el-form-item
-          label="分销商"
-          prop="otaSourceId">
-          <el-select
-            v-model="form.otaSourceId"
-            filterable
-            clearable
-            placeholder="请选择分销商">
-            <el-option
-              label="全部"
-              value=""></el-option>
-            <el-option
-              v-for="item in otaSourceList"
-              :key="item.id"
-              :label="item.otaSourceName"
-              :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <div class="btn-wrap">
-        <el-button
-          type="primary"
-          @click="getOrderList">搜索</el-button>
-      </div>
-    </div>
-    <div class="tableBox">
-      <!-- <div class="block-title">
-        公共订单列表
-      </div> -->
-
-      <el-table
-        v-loading="loading"
-        row-class-name="is-center"
-        :data="tableData">
-        <el-table-column
-          prop="createTime"
-          label="创建时间" />
-        <el-table-column
-          prop="orderNo"
-          label="订单号" />
-        <el-table-column
-          prop="partnerOrderNo"
-          label="合作方订单号" />
-        <el-table-column
-          prop="projectName"
-          label="项目名称" />
-        <el-table-column
-          prop="otaSourceCode"
-          label="分销商编码" />
-        <el-table-column
-          prop="otaSourceName"
-          label="分销商名称" />
-        <el-table-column
-          fixed="right"
-          label="操作"
-          width="80">
-          <template slot-scope="scope">
-            <el-button
-              type="text"
-              @click="showDialog('detail',scope.row)">详情</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-    </div>
-
-    <el-pagination
-      background
-      :page-size="10"
-      @current-change="handlePage"
-      layout="prev, pager, next"
-      :total="total">
-    </el-pagination>
-
-    <ElDialog
-      title="订单详情"
-      width="80%"
-      v-model="detailVisible">
-      <DetailDialog :order-item="currentItem"></DetailDialog>
-    </ElDialog>
+    <el-tabs v-model="activeTab">
+      <el-tab-pane label="订单列表" name="list">
+        <OrderList />
+      </el-tab-pane>
+      <el-tab-pane label="订单统计" name="statistics">
+        <OrderStatistics v-if="tabLoaded.statistics" />
+      </el-tab-pane>
+    </el-tabs>
   </div>
 </template>
 
 <script>
-import { getProjectList, getOrderList, getOtaSourceList } from '@/api/platform'
-import moment from 'moment'
-import ElDialog from '@/components/Dialog'
-import DetailDialog from './order/DetailDialog'
+import OrderList from './order/OrderList'
+import OrderStatistics from './order/OrderStatistics'
 
 export default {
   components: {
-    ElDialog,
-    DetailDialog
-  },
-  computed: {
-    canAddUsers () {
-      return true
-      // return this.$store.state.user.permissionList.includes('system_settings:add_users')
-    }
-  },
-
-  created () {
-    this.getProjectList()
-    this.getOtaSourceList()
-    this.getOrderList()
+    OrderList,
+    OrderStatistics
   },
   data () {
     return {
-      loading: false,
-      addVisible: false,
-      editVisible: false,
-      tableData: [],
-      otaSourceList: [],
-      projectList: [],
-      total: 0,
-      form: {
-        timeBegin: moment().subtract(1, 'months').startOf('day'),
-        timeEnd: moment().endOf('day'),
-        projectName: '', // 账号名
-        projectId: '',
-        otaSourceId: '', // 分销商
-        orderNo: '',
-        partnerOrderNo: '',
-        pageNum: 1,
-        pageSize: 10
-      },
-      // 当前账号对象
-      currentItem: {},
-      detailVisible: false
+      activeTab: 'list',
+      tabLoaded: {
+        list: true,
+        statistics: false
+      }
     }
   },
-  methods: {
-    showDialog (type, item) {
-      this[`${type}Visible`] = true
-      this.currentItem = item
-    },
-    getProjectList () {
-      getProjectList({
-        pageSize: -1,
-        pageNum: 1
-      }).then(res => {
-        this.projectList = res.data.records || []
-      })
-    },
-    getOrderList (goFirst) {
-      this.loading = true
-      if (goFirst) {
-        this.form.pageNum = 1
-      }
-      if (!this.form.timeBegin || !this.form.timeEnd) {
-        this.$message.error('请选择起始时间和截止时间')
-        return
-      }
-      if (this.form.timeBegin) {
-        this.form.timeBegin = moment(this.form.timeBegin).format('YYYY-MM-DD HH:mm:ss')
-      }
-      if (this.form.timeEnd) {
-        this.form.timeEnd = moment(this.form.timeEnd).format('YYYY-MM-DD HH:mm:ss')
-      }
-      getOrderList(this.form).then(res => {
-        this.loading = false
-        this.tableData = res.data.records || []
-        this.total = res.data.total || 0
-      })
-    },
-    getOtaSourceList () {
-      getOtaSourceList({ pageSize: -1, pageNum: 1 }).then(res => {
-        this.otaSourceList = res.data.records || []
-      })
-    },
-    handlePage (pageNum) {
-      this.form.pageNum = pageNum
-      this.getOrderList()
+  watch: {
+    activeTab (val) {
+      this.tabLoaded[val] = true
     }
   }
 }

+ 229 - 0
src/views/systemSetting/order/OrderList.vue

@@ -0,0 +1,229 @@
+<template>
+  <div>
+    <div class="searchBox">
+      <el-form
+        ref="form"
+        :model="form"
+        :inline="true"
+        label-width="100px">
+        <el-form-item
+          label="起始时间"
+          prop="timeBegin">
+          <el-date-picker
+            v-model="form.timeBegin"
+            type="datetime"
+            placeholder="选择日期时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item
+          label="截止时间"
+          prop="timeEnd">
+          <el-date-picker
+            v-model="form.timeEnd"
+            type="datetime"
+            placeholder="选择日期时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item
+          label="项目ID"
+          prop="projectId">
+          <el-select
+            v-model="form.projectId"
+            filterable
+            clearable
+            placeholder="请选择项目">
+            <el-option
+              label="全部"
+              value=""></el-option>
+            <el-option
+              v-for="item in projectList"
+              :key="item.id"
+              :label="item.projectName"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item
+          label="订单号"
+          prop="orderNo">
+          <el-input
+            v-model="form.orderNo"
+            clearable></el-input>
+        </el-form-item>
+        <el-form-item
+          label="合作方订单号"
+          prop="partnerOrderNo">
+          <el-input
+            v-model="form.partnerOrderNo"
+            clearable></el-input>
+        </el-form-item>
+        <el-form-item
+          label="分销商"
+          prop="otaSourceId">
+          <el-select
+            v-model="form.otaSourceId"
+            filterable
+            clearable
+            placeholder="请选择分销商">
+            <el-option
+              label="全部"
+              value=""></el-option>
+            <el-option
+              v-for="item in otaSourceList"
+              :key="item.id"
+              :label="item.otaSourceName"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div class="btn-wrap">
+        <el-button
+          type="primary"
+          @click="getOrderList">搜索</el-button>
+      </div>
+    </div>
+    <div class="tableBox">
+      <el-table
+        v-loading="loading"
+        row-class-name="is-center"
+        :data="tableData">
+        <el-table-column
+          prop="createTime"
+          label="创建时间" />
+        <el-table-column
+          prop="orderNo"
+          label="订单号" />
+        <el-table-column
+          prop="partnerOrderNo"
+          label="合作方订单号" />
+        <el-table-column
+          prop="projectName"
+          label="项目名称" />
+        <el-table-column
+          prop="otaSourceCode"
+          label="分销商编码" />
+        <el-table-column
+          prop="otaSourceName"
+          label="分销商名称" />
+        <el-table-column
+          fixed="right"
+          label="操作"
+          width="80">
+          <template slot-scope="scope">
+            <el-button
+              type="text"
+              @click="showDialog('detail',scope.row)">详情</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+
+    <el-pagination
+      background
+      :page-size="10"
+      @current-change="handlePage"
+      layout="prev, pager, next"
+      :total="total">
+    </el-pagination>
+
+    <ElDialog
+      title="订单详情"
+      width="80%"
+      v-model="detailVisible">
+      <DetailDialog :order-item="currentItem"></DetailDialog>
+    </ElDialog>
+  </div>
+</template>
+
+<script>
+import { getProjectList, getOrderList, getOtaSourceList } from '@/api/platform'
+import moment from 'moment'
+import ElDialog from '@/components/Dialog'
+import DetailDialog from './DetailDialog'
+
+export default {
+  name: 'OrderList',
+  components: {
+    ElDialog,
+    DetailDialog
+  },
+  created () {
+    this.getProjectList()
+    this.getOtaSourceList()
+    this.getOrderList()
+  },
+  data () {
+    return {
+      loading: false,
+      addVisible: false,
+      editVisible: false,
+      tableData: [],
+      otaSourceList: [],
+      projectList: [],
+      total: 0,
+      form: {
+        timeBegin: moment().subtract(1, 'months').startOf('day'),
+        timeEnd: moment().endOf('day'),
+        projectName: '',
+        projectId: '',
+        otaSourceId: '',
+        orderNo: '',
+        partnerOrderNo: '',
+        pageNum: 1,
+        pageSize: 10
+      },
+      currentItem: {},
+      detailVisible: false
+    }
+  },
+  methods: {
+    showDialog (type, item) {
+      this[`${type}Visible`] = true
+      this.currentItem = item
+    },
+    getProjectList () {
+      getProjectList({
+        pageSize: -1,
+        pageNum: 1
+      }).then(res => {
+        this.projectList = res.data.records || []
+      })
+    },
+    getOrderList (goFirst) {
+      this.loading = true
+      if (goFirst) {
+        this.form.pageNum = 1
+      }
+      if (!this.form.timeBegin || !this.form.timeEnd) {
+        this.$message.error('请选择起始时间和截止时间')
+        return
+      }
+      if (this.form.timeBegin) {
+        this.form.timeBegin = moment(this.form.timeBegin).format('YYYY-MM-DD HH:mm:ss')
+      }
+      if (this.form.timeEnd) {
+        this.form.timeEnd = moment(this.form.timeEnd).format('YYYY-MM-DD HH:mm:ss')
+      }
+      getOrderList(this.form).then(res => {
+        this.loading = false
+        this.tableData = res.data.records || []
+        this.total = res.data.total || 0
+      })
+    },
+    getOtaSourceList () {
+      getOtaSourceList({ pageSize: -1, pageNum: 1 }).then(res => {
+        this.otaSourceList = res.data.records || []
+      })
+    },
+    handlePage (pageNum) {
+      this.form.pageNum = pageNum
+      this.getOrderList()
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 151 - 0
src/views/systemSetting/order/OrderStatistics.vue

@@ -0,0 +1,151 @@
+<template>
+  <div>
+    <div class="searchBox">
+      <el-form
+        ref="form"
+        :model="form"
+        :inline="true"
+        label-width="100px">
+        <el-form-item
+          label="起始时间"
+          prop="timeBegin">
+          <el-date-picker
+            v-model="form.timeBegin"
+            type="datetime"
+            placeholder="选择日期时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item
+          label="截止时间"
+          prop="timeEnd">
+          <el-date-picker
+            v-model="form.timeEnd"
+            type="datetime"
+            placeholder="选择日期时间">
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div class="btn-wrap">
+        <el-button
+          type="primary"
+          @click="getStatistics">搜索</el-button>
+        <el-button
+          type="success"
+          :loading="exportLoading"
+          @click="handleExport">导出</el-button>
+      </div>
+    </div>
+    <div class="tableBox">
+      <el-table
+        v-loading="loading"
+        row-class-name="is-center"
+        :data="tableData">
+        <el-table-column
+          prop="projectName"
+          label="项目名称" />
+        <el-table-column
+          prop="count"
+          label="订单数量" />
+      </el-table>
+    </div>
+
+    <el-pagination
+      background
+      :page-size="form.pageSize"
+      @current-change="handlePage"
+      layout="prev, pager, next"
+      :total="total">
+    </el-pagination>
+  </div>
+</template>
+
+<script>
+import { getPlatformOrderStatistics } from '@/api/platform'
+import moment from 'moment'
+
+export default {
+  name: 'OrderStatistics',
+  data () {
+    return {
+      loading: false,
+      exportLoading: false,
+      tableData: [],
+      total: 0,
+      form: {
+        id: '',
+        export: false,
+        exportDetail: false,
+        timeBegin: moment().subtract(1, 'months').startOf('day'),
+        timeEnd: moment().endOf('day'),
+        pageNum: 1,
+        pageSize: 10
+      }
+    }
+  },
+  created () {
+    this.getStatistics()
+  },
+  methods: {
+    getStatistics (goFirst) {
+      if (goFirst) {
+        this.form.pageNum = 1
+      }
+      if (!this.form.timeBegin || !this.form.timeEnd) {
+        this.$message.error('请选择起始时间和截止时间')
+        return
+      }
+      this.loading = true
+      const params = {
+        ...this.form,
+        timeBegin: moment(this.form.timeBegin).format('YYYY-MM-DD HH:mm:ss'),
+        timeEnd: moment(this.form.timeEnd).format('YYYY-MM-DD HH:mm:ss'),
+        export: false,
+        exportDetail: false
+      }
+      getPlatformOrderStatistics(params).then(res => {
+        this.loading = false
+        this.tableData = res.data || []
+        this.total = res.total || 0
+      }).catch(() => {
+        this.loading = false
+      })
+    },
+    handleExport () {
+      if (!this.form.timeBegin || !this.form.timeEnd) {
+        this.$message.error('请选择起始时间和截止时间')
+        return
+      }
+      this.exportLoading = true
+      const params = {
+        ...this.form,
+        timeBegin: moment(this.form.timeBegin).format('YYYY-MM-DD HH:mm:ss'),
+        timeEnd: moment(this.form.timeEnd).format('YYYY-MM-DD HH:mm:ss'),
+        export: true,
+        exportDetail: false
+      }
+      getPlatformOrderStatistics(params).then(() => {
+        this.exportLoading = false
+        this.$notify({
+          title: '提示',
+          message: '导出成功',
+          type: 'success'
+        })
+      }).catch(() => {
+        this.exportLoading = false
+        this.$notify.error({
+          title: '提示',
+          message: '导出失败'
+        })
+      })
+    },
+    handlePage (pageNum) {
+      this.form.pageNum = pageNum
+      this.getStatistics()
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 1 - 1
src/views/systemSetting/project.vue

@@ -43,7 +43,7 @@
         </el-table-column>
         <el-table-column
           prop="id"
-          label="分销商ID"
+          label="项目ID"
           width="200">
         </el-table-column>
         <el-table-column

+ 212 - 0
src/views/systemSetting/xcAccountParam.vue

@@ -0,0 +1,212 @@
+<template>
+  <div class="form-wrap">
+    <div class="searchBox">
+      <div class="btn-wrap">
+        <el-button
+          type="primary"
+          @click="showDialog('add')">新增账号</el-button>
+      </div>
+    </div>
+    <div class="tableBox">
+      <el-table
+        v-loading="loading"
+        row-class-name="is-center"
+        :data="tableData">
+        <el-table-column
+          prop="createTime"
+          label="创建时间"
+          width="180">
+        </el-table-column>
+        <el-table-column
+          prop="updateTime"
+          label="更新时间"
+          width="180">
+        </el-table-column>
+        <el-table-column
+          prop="accountId"
+          label="接口帐号"
+          min-width="160">
+        </el-table-column>
+        <el-table-column
+          prop="secretKey"
+          label="接口密钥"
+          min-width="200"
+          show-overflow-tooltip>
+        </el-table-column>
+        <el-table-column
+          prop="aesKey"
+          label="AES 加密密钥"
+          min-width="200"
+          show-overflow-tooltip>
+        </el-table-column>
+        <el-table-column
+          prop="aesVector"
+          label="AES 加密初始向量"
+          min-width="200"
+          show-overflow-tooltip>
+        </el-table-column>
+        <el-table-column
+          fixed="right"
+          label="操作"
+          width="160">
+          <template slot-scope="scope">
+            <el-button
+              type="text"
+              @click="showDialog('edit', scope.row)">编辑</el-button>
+            <el-button
+              type="text"
+              @click="handleDelete(scope.row)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+
+    <!-- 新增/编辑弹框 -->
+    <el-dialog
+      :title="dialogType === 'add' ? '新增账号' : '编辑账号'"
+      :visible.sync="dialogVisible"
+      width="600px">
+      <el-form
+        ref="accountForm"
+        :model="accountForm"
+        label-width="130px">
+        <el-form-item
+          label="接口帐号"
+          prop="accountId"
+          :rules="[{ required: true, message: '请输入接口帐号', trigger: 'blur' }]">
+          <el-input
+            v-model="accountForm.accountId"
+            placeholder="请输入接口帐号"></el-input>
+        </el-form-item>
+        <el-form-item
+          label="接口密钥"
+          prop="secretKey"
+          :rules="[{ required: true, message: '请输入接口密钥', trigger: 'blur' }]">
+          <el-input
+            v-model="accountForm.secretKey"
+            placeholder="请输入接口密钥"></el-input>
+        </el-form-item>
+        <el-form-item
+          label="AES 加密密钥"
+          prop="aesKey"
+          :rules="[{ required: true, message: '请输入AES 加密密钥', trigger: 'blur' }]">
+          <el-input
+            v-model="accountForm.aesKey"
+            placeholder="请输入AES 加密密钥"></el-input>
+        </el-form-item>
+        <el-form-item
+          label="AES 加密初始向量"
+          prop="aesVector"
+          :rules="[{ required: true, message: '请输入AES 加密初始向量', trigger: 'blur' }]">
+          <el-input
+            v-model="accountForm.aesVector"
+            placeholder="请输入AES 加密初始向量"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button
+          type="primary"
+          :loading="submitLoading"
+          @click="handleSubmit">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getXcAccountList, addXcAccount, updateXcAccount, deleteXcAccount } from '@/api/platform'
+
+export default {
+  name: 'XcAccountParam',
+  data () {
+    return {
+      loading: false,
+      submitLoading: false,
+      tableData: [],
+      dialogVisible: false,
+      dialogType: 'add',
+      accountForm: {
+        id: '',
+        accountId: '',
+        secretKey: '',
+        aesKey: '',
+        aesVector: ''
+      }
+    }
+  },
+  created () {
+    this.getList()
+  },
+  methods: {
+    getList () {
+      this.loading = true
+      getXcAccountList().then(res => {
+        this.loading = false
+        this.tableData = res.data || []
+      }).catch(() => {
+        this.loading = false
+      })
+    },
+    showDialog (type, row) {
+      this.dialogType = type
+      if (type === 'edit' && row) {
+        this.accountForm = {
+          id: row.id,
+          accountId: row.accountId,
+          secretKey: row.secretKey,
+          aesKey: row.aesKey,
+          aesVector: row.aesVector
+        }
+      } else {
+        this.accountForm = {
+          id: '',
+          accountId: '',
+          secretKey: '',
+          aesKey: '',
+          aesVector: ''
+        }
+      }
+      this.dialogVisible = true
+      this.$nextTick(() => {
+        this.$refs.accountForm && this.$refs.accountForm.clearValidate()
+      })
+    },
+    handleSubmit () {
+      this.$refs.accountForm.validate(valid => {
+        if (!valid) return
+        this.submitLoading = true
+        const api = this.dialogType === 'add' ? addXcAccount : updateXcAccount
+        const params = { ...this.accountForm }
+        if (this.dialogType === 'add') {
+          delete params.id
+        }
+        api(params).then(() => {
+          this.submitLoading = false
+          this.dialogVisible = false
+          this.$message.success(this.dialogType === 'add' ? '新增成功' : '编辑成功')
+          this.getList()
+        }).catch(() => {
+          this.submitLoading = false
+        })
+      })
+    },
+    handleDelete (row) {
+      this.$confirm('确定删除该账号?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(() => {
+        deleteXcAccount({ idList: [row.id] }).then(() => {
+          this.$message.success('删除成功')
+          this.getList()
+        })
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>