licailing 3 жил өмнө
parent
commit
ae664238c3

+ 9 - 0
src/main/vue/src/router.js

@@ -742,6 +742,15 @@ const router = new Router({
                         title: '拍卖'
                         title: '拍卖'
                     }
                     }
                 },
                 },
+                {
+                    path: '/auctionUsedList',
+                    name: 'AuctionUsedList',
+                    component: () =>
+                        import(/* webpackChunkName: "auctionUsedList" */ '@/views/AuctionUsedList.vue'),
+                    meta: {
+                        title: '拍卖'
+                    }
+                },
                 {
                 {
                     path: '/auctionRecordEdit',
                     path: '/auctionRecordEdit',
                     name: 'AuctionRecordEdit',
                     name: 'AuctionRecordEdit',

+ 151 - 33
src/main/vue/src/views/AuctionActivityEdit.vue

@@ -2,7 +2,7 @@
     <div class="edit-view">
     <div class="edit-view">
         <page-title>
         <page-title>
             <el-button @click="$router.go(-1)" :disabled="saving">取消</el-button>
             <el-button @click="$router.go(-1)" :disabled="saving">取消</el-button>
-            <el-button @click="onDelete" :disabled="saving" type="danger" v-if="formData.id"> 删除 </el-button>
+            <!-- <el-button @click="onDelete" :disabled="saving" type="danger" v-if="formData.id"> 删除 </el-button> -->
             <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
             <el-button @click="onSave" :loading="saving" type="primary">保存</el-button>
         </page-title>
         </page-title>
         <div class="edit-view__content-wrapper">
         <div class="edit-view__content-wrapper">
@@ -14,18 +14,18 @@
                     label-width="110px"
                     label-width="110px"
                     label-position="right"
                     label-position="right"
                     size="small"
                     size="small"
-                    style="max-width: 700px"
+                    style="max-width: 750px"
                 >
                 >
                     <el-form-item prop="name" label="拍卖名称">
                     <el-form-item prop="name" label="拍卖名称">
-                        <el-input v-model="formData.name"></el-input>
+                        <el-input v-model="formData.name" style="width: 500px" :disabled="!canEdit"></el-input>
                     </el-form-item>
                     </el-form-item>
                     <el-form-item prop="pic" label="图片">
                     <el-form-item prop="pic" label="图片">
                         <object-upload
                         <object-upload
                             v-model="formData.pic[0]"
                             v-model="formData.pic[0]"
-                            :disabled="!canEdit"
                             compress
                             compress
                             width="3000"
                             width="3000"
                             height="3000"
                             height="3000"
+                            :disabled="!canEdit"
                         ></object-upload>
                         ></object-upload>
                         <div class="tip">支持JPG、PNG、GIF、MP4,推荐长宽比1:1</div>
                         <div class="tip">支持JPG、PNG、GIF、MP4,推荐长宽比1:1</div>
                     </el-form-item>
                     </el-form-item>
@@ -47,9 +47,9 @@
                         <el-input-number v-model="yOffset"></el-input-number>
                         <el-input-number v-model="yOffset"></el-input-number>
                     </el-form-item>
                     </el-form-item>
                     <div class="inline-wrapper">
                     <div class="inline-wrapper">
-                        <el-form-item prop="minterId" label="铸造者">
+                        <el-form-item prop="sellerId" label="起拍者">
                             <minter-select
                             <minter-select
-                                v-model="formData.minterId"
+                                v-model="formData.sellerId"
                                 @detail="onMinterDetail"
                                 @detail="onMinterDetail"
                                 :disabled="!canEdit"
                                 :disabled="!canEdit"
                             ></minter-select>
                             ></minter-select>
@@ -70,7 +70,13 @@
                         <rich-text v-model="formData.detail"></rich-text>
                         <rich-text v-model="formData.detail"></rich-text>
                     </el-form-item>
                     </el-form-item>
                     <el-form-item prop="auctionType" label="拍卖类型">
                     <el-form-item prop="auctionType" label="拍卖类型">
-                        <el-select v-model="formData.auctionType" clearable filterable placeholder="请选择">
+                        <el-select
+                            v-model="formData.auctionType"
+                            clearable
+                            filterable
+                            placeholder="请选择"
+                            :disabled="!canEdit"
+                        >
                             <el-option
                             <el-option
                                 v-for="item in auctionTypeOptions"
                                 v-for="item in auctionTypeOptions"
                                 :key="item.value"
                                 :key="item.value"
@@ -82,21 +88,47 @@
                     </el-form-item>
                     </el-form-item>
                     <div class="inline-wrapper">
                     <div class="inline-wrapper">
                         <el-form-item prop="startingPrice" label="起拍价">
                         <el-form-item prop="startingPrice" label="起拍价">
-                            <el-input-number type="number" v-model="formData.startingPrice"></el-input-number>
+                            <el-input-number
+                                type="number"
+                                v-model="formData.startingPrice"
+                                :disabled="!canEdit"
+                            ></el-input-number>
                         </el-form-item>
                         </el-form-item>
                         <el-form-item prop="increment" label="加价幅度">
                         <el-form-item prop="increment" label="加价幅度">
-                            <el-input-number type="number" v-model="formData.increment"></el-input-number>
+                            <el-input-number
+                                type="number"
+                                v-model="formData.increment"
+                                :disabled="!canEdit"
+                            ></el-input-number>
                         </el-form-item>
                         </el-form-item>
                     </div>
                     </div>
                     <div class="inline-wrapper">
                     <div class="inline-wrapper">
                         <el-form-item prop="deposit" label="保证金">
                         <el-form-item prop="deposit" label="保证金">
-                            <el-input-number type="number" v-model="formData.deposit"></el-input-number>
+                            <el-input-number
+                                type="number"
+                                v-model="formData.deposit"
+                                :disabled="!canEdit"
+                            ></el-input-number>
                         </el-form-item>
                         </el-form-item>
                         <el-form-item prop="fixedPrice" label="一口价">
                         <el-form-item prop="fixedPrice" label="一口价">
-                            <el-input-number type="number" v-model="formData.fixedPrice"></el-input-number>
+                            <el-input-number
+                                type="number"
+                                v-model="formData.fixedPrice"
+                                :disabled="!canEdit"
+                            ></el-input-number>
                         </el-form-item>
                         </el-form-item>
                     </div>
                     </div>
-                    <el-form-item prop="startTime" label="拍卖开始时间">
+                    <div class="inline-wrapper">
+                        <el-form-item prop="royalties" label="版税(%)">
+                            <el-input-number v-model="formData.royalties" :min="0" :max="99" :disabled="!canEdit">
+                            </el-input-number>
+                        </el-form-item>
+                        <el-form-item prop="serviceCharge" label="手续费(%)">
+                            <el-input-number v-model="formData.serviceCharge" :min="0" :max="99" :disabled="!canEdit">
+                            </el-input-number>
+                        </el-form-item>
+                    </div>
+                    <el-form-item prop="startTime" label="开始时间">
                         <el-date-picker
                         <el-date-picker
                             v-model="formData.startTime"
                             v-model="formData.startTime"
                             type="datetime"
                             type="datetime"
@@ -118,16 +150,6 @@
                     <!-- <el-form-item prop="purchasePrice" label="出价">
                     <!-- <el-form-item prop="purchasePrice" label="出价">
                         <el-input-number type="number" v-model="formData.purchasePrice"></el-input-number>
                         <el-input-number type="number" v-model="formData.purchasePrice"></el-input-number>
                     </el-form-item> -->
                     </el-form-item> -->
-                    <div class="inline-wrapper">
-                        <el-form-item prop="royalties" label="版税(%)">
-                            <el-input-number v-model="formData.royalties" :min="0" :max="99" :disabled="!canEdit">
-                            </el-input-number>
-                        </el-form-item>
-                        <el-form-item prop="serviceCharge" label="手续费(%)">
-                            <el-input-number v-model="formData.serviceCharge" :min="0" :max="99" :disabled="!canEdit">
-                            </el-input-number>
-                        </el-form-item>
-                    </div>
                     <!-- <el-form-item prop="purchaserId" label="买家id">
                     <!-- <el-form-item prop="purchaserId" label="买家id">
                         <el-input-number type="number" v-model="formData.purchaserId"></el-input-number>
                         <el-input-number type="number" v-model="formData.purchaserId"></el-input-number>
                     </el-form-item>
                     </el-form-item>
@@ -158,9 +180,9 @@
                     </el-form-item> -->
                     </el-form-item> -->
                     <el-form-item class="form-submit">
                     <el-form-item class="form-submit">
                         <el-button @click="onSave" :loading="saving" type="primary"> 保存 </el-button>
                         <el-button @click="onSave" :loading="saving" type="primary"> 保存 </el-button>
-                        <el-button @click="onDelete" :disabled="saving" type="danger" v-if="formData.id">
+                        <!-- <el-button @click="onDelete" :disabled="saving" type="danger" v-if="formData.id">
                             删除
                             删除
-                        </el-button>
+                        </el-button> -->
                         <el-button @click="$router.go(-1)" :disabled="saving">取消</el-button>
                         <el-button @click="$router.go(-1)" :disabled="saving">取消</el-button>
                     </el-form-item>
                     </el-form-item>
                 </el-form>
                 </el-form>
@@ -171,6 +193,7 @@
 <script>
 <script>
 import resolveUrl from 'resolve-url';
 import resolveUrl from 'resolve-url';
 import ModelUpload from '../components/ModelUpload.vue';
 import ModelUpload from '../components/ModelUpload.vue';
+import { format, parse, isBefore } from 'date-fns';
 export default {
 export default {
     name: 'AuctionActivityEdit',
     name: 'AuctionActivityEdit',
     components: { ModelUpload },
     components: { ModelUpload },
@@ -180,6 +203,7 @@ export default {
                 .get('auctionActivity/get/' + this.$route.query.id)
                 .get('auctionActivity/get/' + this.$route.query.id)
                 .then(res => {
                 .then(res => {
                     this.formData = res;
                     this.formData = res;
+                    this.canEdit = res.source !== 'TRANSFER';
                 })
                 })
                 .catch(e => {
                 .catch(e => {
                     console.log(e);
                     console.log(e);
@@ -194,7 +218,98 @@ export default {
                 pic: [],
                 pic: [],
                 source: 'OFFICIAL'
                 source: 'OFFICIAL'
             },
             },
-            rules: {},
+            rules: {
+                name: [
+                    {
+                        required: true,
+                        message: '请输入名称',
+                        trigger: 'blur'
+                    }
+                ],
+                pic: [
+                    {
+                        validator: (rule, value, callback) => {
+                            if (value) {
+                                if (!(value instanceof Array)) {
+                                    callback(new Error('请上传内容'));
+                                    return;
+                                } else {
+                                    for (let f of value) {
+                                        if (!f.url) {
+                                            callback(new Error('请上传内容'));
+                                            return;
+                                        }
+                                    }
+                                }
+                                callback();
+                            } else {
+                                callback(new Error('请上传内容'));
+                            }
+                        },
+                        trigger: 'blur'
+                    }
+                ],
+                seller: [
+                    {
+                        required: true,
+                        message: '请输入铸造者',
+                        trigger: 'blur'
+                    }
+                ],
+                sellerId: [
+                    {
+                        required: true,
+                        message: '请输入铸造者ID',
+                        trigger: 'blur'
+                    }
+                ],
+                detail: [
+                    {
+                        required: true,
+                        message: '请输入详情',
+                        trigger: 'blur'
+                    }
+                ],
+                increment: [{ required: true, message: '请输入加价幅度' }],
+                royalties: [{ required: true, message: '请填写版税' }],
+                serviceCharge: [{ required: true, message: '请填手续费' }],
+                auctionType: [{ required: true, message: '请选择拍卖类型' }],
+                startTime: [
+                    {
+                        validator: (rule, value, callback) => {
+                            if (!value) {
+                                callback(new Error('请填写发布时间'));
+                                // } else if (isBefore(parse(value, 'yyyy-MM-dd HH:mm:ss', new Date()), new Date())) {
+                                //     callback(new Error('发布时间不能小于当前时间'));
+                            } else {
+                                callback();
+                            }
+                        },
+                        trigger: 'blur'
+                    }
+                ],
+                endTime: [
+                    {
+                        validator: (rule, value, callback) => {
+                            if (!value) {
+                                callback(new Error('请填写结束时间'));
+                            } else if (isBefore(parse(value, 'yyyy-MM-dd HH:mm:ss', new Date()), new Date())) {
+                                callback(new Error('结束时间不能小于当前时间'));
+                            } else if (this.formData.scheduleSale) {
+                                if (
+                                    isBefore(
+                                        parse(value, 'yyyy-MM-dd HH:mm:ss', new Date()),
+                                        parse(this.formData.startTime, 'yyyy-MM-dd HH:mm:ss', new Date())
+                                    )
+                                ) {
+                                    callback(new Error('结束时间不能小于发布时间'));
+                                }
+                            }
+                        },
+                        trigger: 'blur'
+                    }
+                ]
+            },
             auctionTypeOptions: [
             auctionTypeOptions: [
                 { label: '虚拟藏品', value: 'NFT' },
                 { label: '虚拟藏品', value: 'NFT' },
                 { label: '实物', value: 'ENTITY' }
                 { label: '实物', value: 'ENTITY' }
@@ -203,6 +318,7 @@ export default {
                 { label: '未开始', value: 'NOTSTARTED' },
                 { label: '未开始', value: 'NOTSTARTED' },
                 { label: '进行中', value: 'ONGOING' },
                 { label: '进行中', value: 'ONGOING' },
                 { label: '成交', value: 'PURCHASED' },
                 { label: '成交', value: 'PURCHASED' },
+                { label: '一口价成交', value: 'FIXED_PRICE_PURCHASED' },
                 { label: '流拍', value: 'PASS' },
                 { label: '流拍', value: 'PASS' },
                 { label: '完成', value: 'FINISH' }
                 { label: '完成', value: 'FINISH' }
             ],
             ],
@@ -211,14 +327,16 @@ export default {
                 { label: '转让拍卖', value: 'TRANSFER' }
                 { label: '转让拍卖', value: 'TRANSFER' }
             ],
             ],
             cateogories: ['勋章', '收藏品', '数字艺术', '门票', '游戏', '音乐', '使用', '其他'],
             cateogories: ['勋章', '收藏品', '数字艺术', '门票', '游戏', '音乐', '使用', '其他'],
-            customUrl: resolveUrl(this.$baseUrl, 'upload/3dModel')
+            customUrl: resolveUrl(this.$baseUrl, 'upload/3dModel'),
+            canEdit: true
         };
         };
     },
     },
-    computed: {
-        canEdit() {
-            return !!!this.$route.query.id;
-        }
-    },
+    // computed: {
+    //     canEdit() {
+    //         // return !!!this.$route.query.id;
+    //         return this.formData.source === 'TRANSFER';
+    //     }
+    // },
     methods: {
     methods: {
         onSave() {
         onSave() {
             this.$refs.form.validate(valid => {
             this.$refs.form.validate(valid => {
@@ -236,7 +354,7 @@ export default {
             }
             }
 
 
             this.saving = true;
             this.saving = true;
-            
+
             this.$http
             this.$http
                 .post('/auctionActivity/save', data, { body: 'json' })
                 .post('/auctionActivity/save', data, { body: 'json' })
                 .then(res => {
                 .then(res => {
@@ -274,7 +392,7 @@ export default {
             this.$set(this.formData, 'sellerId', e.id);
             this.$set(this.formData, 'sellerId', e.id);
             this.$set(this.formData, 'seller', e.nickname);
             this.$set(this.formData, 'seller', e.nickname);
             this.$set(this.formData, 'sellerAvatar', e.avatar);
             this.$set(this.formData, 'sellerAvatar', e.avatar);
-        },
+        }
     }
     }
 };
 };
 </script>
 </script>

+ 26 - 7
src/main/vue/src/views/AuctionActivityList.vue

@@ -22,7 +22,7 @@
         </page-title>
         </page-title>
         <div class="filters-container">
         <div class="filters-container">
             <el-input
             <el-input
-                placeholder="搜索..."
+                placeholder="搜索拍卖名称..."
                 v-model="search"
                 v-model="search"
                 clearable
                 clearable
                 class="filter-item search"
                 class="filter-item search"
@@ -30,6 +30,20 @@
             >
             >
                 <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button>
                 <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button>
             </el-input>
             </el-input>
+            <created-at-picker
+                v-model="endTime"
+                @input="getData"
+                name="拍卖结束"
+                class="filter-item"
+            ></created-at-picker>
+            <el-select v-model="status" clearable class="filter-item" placeholder="请选择状态" @change="getData">
+                <el-option
+                    v-for="item in statusOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                ></el-option>
+            </el-select>
         </div>
         </div>
         <el-table
         <el-table
             :data="tableData"
             :data="tableData"
@@ -43,7 +57,7 @@
             v-loading="fetchingData"
             v-loading="fetchingData"
         >
         >
             <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
             <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
-            <el-table-column prop="id" label="ID" width="100"> </el-table-column>
+            <el-table-column prop="id" label="ID" width="90"> </el-table-column>
             <el-table-column prop="sellerId" label="起拍人ID"> </el-table-column>
             <el-table-column prop="sellerId" label="起拍人ID"> </el-table-column>
             <el-table-column prop="seller" label="起拍人昵称"> </el-table-column>
             <el-table-column prop="seller" label="起拍人昵称"> </el-table-column>
             <!-- <el-table-column prop="sellerAvatar" label="起拍人头像"> </el-table-column> -->
             <!-- <el-table-column prop="sellerAvatar" label="起拍人头像"> </el-table-column> -->
@@ -62,7 +76,7 @@
                 </template>
                 </template>
             </el-table-column>
             </el-table-column>
             <!-- <el-table-column prop="detail" label="详情"> </el-table-column> -->
             <!-- <el-table-column prop="detail" label="详情"> </el-table-column> -->
-            <el-table-column prop="category" label="分类"> </el-table-column>
+            <!-- <el-table-column prop="category" label="分类"> </el-table-column> -->
             <el-table-column prop="startingPrice" label="起拍价"> </el-table-column>
             <el-table-column prop="startingPrice" label="起拍价"> </el-table-column>
             <el-table-column prop="deposit" label="保证金"> </el-table-column>
             <el-table-column prop="deposit" label="保证金"> </el-table-column>
             <el-table-column prop="fixedPrice" label="一口价"> </el-table-column>
             <el-table-column prop="fixedPrice" label="一口价"> </el-table-column>
@@ -125,13 +139,16 @@ export default {
                 { label: '未开始', value: 'NOTSTARTED' },
                 { label: '未开始', value: 'NOTSTARTED' },
                 { label: '进行中', value: 'ONGOING' },
                 { label: '进行中', value: 'ONGOING' },
                 { label: '成交', value: 'PURCHASED' },
                 { label: '成交', value: 'PURCHASED' },
+                { label: '一口价成交', value: 'FIXED_PRICE_PURCHASED' },
                 { label: '流拍', value: 'PASS' },
                 { label: '流拍', value: 'PASS' },
                 { label: '完成', value: 'FINISH' }
                 { label: '完成', value: 'FINISH' }
             ],
             ],
             sourceOptions: [
             sourceOptions: [
                 { label: '官方拍卖', value: 'OFFICIAL' },
                 { label: '官方拍卖', value: 'OFFICIAL' },
                 { label: '转让拍卖', value: 'TRANSFER' }
                 { label: '转让拍卖', value: 'TRANSFER' }
-            ]
+            ],
+            endTime: '',
+            status: ''
         };
         };
     },
     },
     computed: {
     computed: {
@@ -162,7 +179,10 @@ export default {
             return '';
             return '';
         },
         },
         beforeGetData() {
         beforeGetData() {
-            return { search: this.search, query: { del: false } };
+            return {
+                search: this.search,
+                query: { del: false, endTime: this.endTime, status: this.status, source: 'OFFICIAL' }
+            };
         },
         },
         toggleMultipleMode(multipleMode) {
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;
             this.multipleMode = multipleMode;
@@ -237,5 +257,4 @@ export default {
     }
     }
 };
 };
 </script>
 </script>
-<style lang="less" scoped>
-</style>
+<style lang="less" scoped></style>

+ 260 - 0
src/main/vue/src/views/AuctionUsedList.vue

@@ -0,0 +1,260 @@
+<template>
+    <div class="list-view">
+        <page-title>
+            <!-- <el-button
+                @click="addRow"
+                type="primary"
+                icon="el-icon-plus"
+                :disabled="fetchingData || downloading"
+                class="filter-item"
+            >
+                新增
+            </el-button> -->
+            <!-- <el-button
+                @click="download"
+                icon="el-icon-upload2"
+                :loading="downloading"
+                :disabled="fetchingData"
+                class="filter-item"
+            >
+                导出
+            </el-button> -->
+        </page-title>
+        <div class="filters-container">
+            <el-input
+                placeholder="搜索拍卖名称..."
+                v-model="search"
+                clearable
+                class="filter-item search"
+                @keyup.enter.native="getData"
+            >
+                <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button>
+            </el-input>
+            <created-at-picker
+                v-model="endTime"
+                @input="getData"
+                name="拍卖结束"
+                class="filter-item"
+            ></created-at-picker>
+            <el-select v-model="status" clearable class="filter-item" placeholder="请选择状态" @change="getData">
+                <el-option
+                    v-for="item in statusOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                ></el-option>
+            </el-select>
+        </div>
+        <el-table
+            :data="tableData"
+            row-key="id"
+            ref="table"
+            header-row-class-name="table-header-row"
+            header-cell-class-name="table-header-cell"
+            row-class-name="table-row"
+            cell-class-name="table-cell"
+            :height="tableHeight"
+            v-loading="fetchingData"
+        >
+            <el-table-column v-if="multipleMode" align="center" type="selection" width="50"> </el-table-column>
+            <el-table-column prop="id" label="ID" width="90"> </el-table-column>
+            <el-table-column prop="sellerId" label="起拍人ID"> </el-table-column>
+            <el-table-column prop="seller" label="起拍人昵称"> </el-table-column>
+            <!-- <el-table-column prop="sellerAvatar" label="起拍人头像"> </el-table-column> -->
+            <el-table-column prop="name" label="拍卖名称"> </el-table-column>
+            <el-table-column prop="auctionType" label="拍卖类型" :formatter="auctionTypeFormatter"> </el-table-column>
+            <el-table-column prop="minter" label="铸造者"> </el-table-column>
+            <el-table-column prop="assetId" label="藏品ID"> </el-table-column>
+            <el-table-column prop="pic" label="作品内容" width="90" align="center">
+                <template slot-scope="{ row }">
+                    <el-image
+                        style="width: 30px; height: 30px"
+                        :src="row.pic[0].thumb || row.pic[0].url"
+                        fit="cover"
+                        :preview-src-list="row.pic.map(i => i.thumb || i.url)"
+                    ></el-image>
+                </template>
+            </el-table-column>
+            <!-- <el-table-column prop="detail" label="详情"> </el-table-column> -->
+            <!-- <el-table-column prop="category" label="分类"> </el-table-column> -->
+            <el-table-column prop="startingPrice" label="起拍价"> </el-table-column>
+            <el-table-column prop="deposit" label="保证金"> </el-table-column>
+            <el-table-column prop="fixedPrice" label="一口价"> </el-table-column>
+            <el-table-column prop="startTime" label="开始时间"> </el-table-column>
+            <el-table-column prop="increment" label="加价幅度"> </el-table-column>
+            <el-table-column prop="endTime" label="截止时间"> </el-table-column>
+            <el-table-column prop="purchasePrice" label="成交价"> </el-table-column>
+            <el-table-column prop="purchaserId" label="买家id"> </el-table-column>
+            <el-table-column prop="purchaser" label="买家"> </el-table-column>
+            <el-table-column prop="status" label="状态" :formatter="statusFormatter"> </el-table-column>
+            <el-table-column prop="source" label="来源" :formatter="sourceFormatter"> </el-table-column>
+            <el-table-column label="操作" align="center" fixed="right" width="150">
+                <template slot-scope="{ row }">
+                    <el-button @click="editRow(row)" type="primary" size="mini" plain>编辑</el-button>
+                    <!-- <el-button @click="deleteRow(row)" type="danger" size="mini" plain>删除</el-button> -->
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="pagination-wrapper">
+            <!-- <div class="multiple-mode-wrapper">
+                <el-button v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
+                <el-button-group v-else>
+                    <el-button @click="operation1">批量操作1</el-button>
+                    <el-button @click="operation2">批量操作2</el-button>
+                    <el-button @click="toggleMultipleMode(false)">取消</el-button>
+                </el-button-group>
+            </div> -->
+            <el-pagination
+                background
+                @size-change="onSizeChange"
+                @current-change="onCurrentChange"
+                :current-page="page"
+                :page-sizes="[10, 20, 30, 40, 50]"
+                :page-size="pageSize"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="totalElements"
+            >
+            </el-pagination>
+        </div>
+    </div>
+</template>
+<script>
+import { mapState } from 'vuex';
+import pageableTable from '@/mixins/pageableTable';
+
+export default {
+    name: 'AuctionActivityList',
+    mixins: [pageableTable],
+    data() {
+        return {
+            multipleMode: false,
+            search: '',
+            url: '/auctionActivity/all',
+            downloading: false,
+            auctionTypeOptions: [
+                { label: '虚拟藏品', value: 'NFT' },
+                { label: '实物', value: 'ENTITY' }
+            ],
+            statusOptions: [
+                { label: '未开始', value: 'NOTSTARTED' },
+                { label: '进行中', value: 'ONGOING' },
+                { label: '成交', value: 'PURCHASED' },
+                { label: '一口价成交', value: 'FIXED_PRICE_PURCHASED' },
+                { label: '流拍', value: 'PASS' },
+                { label: '完成', value: 'FINISH' }
+            ],
+            sourceOptions: [
+                { label: '官方拍卖', value: 'OFFICIAL' },
+                { label: '转让拍卖', value: 'TRANSFER' }
+            ],
+            endTime: '',
+            status: ''
+        };
+    },
+    computed: {
+        selection() {
+            return this.$refs.table.selection.map(i => i.id);
+        }
+    },
+    methods: {
+        auctionTypeFormatter(row, column, cellValue, index) {
+            let selectedOption = this.auctionTypeOptions.find(i => i.value === cellValue);
+            if (selectedOption) {
+                return selectedOption.label;
+            }
+            return '';
+        },
+        statusFormatter(row, column, cellValue, index) {
+            let selectedOption = this.statusOptions.find(i => i.value === cellValue);
+            if (selectedOption) {
+                return selectedOption.label;
+            }
+            return '';
+        },
+        sourceFormatter(row, column, cellValue, index) {
+            let selectedOption = this.sourceOptions.find(i => i.value === cellValue);
+            if (selectedOption) {
+                return selectedOption.label;
+            }
+            return '';
+        },
+        beforeGetData() {
+            return {
+                search: this.search,
+                query: { del: false, endTime: this.endTime, status: this.status, source: 'TRANSFER' }
+            };
+        },
+        toggleMultipleMode(multipleMode) {
+            this.multipleMode = multipleMode;
+            if (!multipleMode) {
+                this.$refs.table.clearSelection();
+            }
+        },
+        addRow() {
+            this.$router.push({
+                path: '/auctionActivityEdit',
+                query: {
+                    ...this.$route.query
+                }
+            });
+        },
+        editRow(row) {
+            this.$router.push({
+                path: '/auctionActivityEdit',
+                query: {
+                    id: row.id
+                }
+            });
+        },
+        download() {
+            this.downloading = true;
+            this.$axios
+                .get('/auctionActivity/excel', {
+                    responseType: 'blob',
+                    params: { size: 10000 }
+                })
+                .then(res => {
+                    console.log(res);
+                    this.downloading = false;
+                    const downloadUrl = window.URL.createObjectURL(new Blob([res.data]));
+                    const link = document.createElement('a');
+                    link.href = downloadUrl;
+                    link.setAttribute('download', res.headers['content-disposition'].split('filename=')[1]);
+                    document.body.appendChild(link);
+                    link.click();
+                    link.remove();
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.downloading = false;
+                    this.$message.error(e.error);
+                });
+        },
+        operation1() {
+            this.$notify({
+                title: '提示',
+                message: this.selection
+            });
+        },
+        operation2() {
+            this.$message('操作2');
+        },
+        deleteRow(row) {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
+                .then(() => {
+                    return this.$http.post(`/auctionActivity/del/${row.id}`);
+                })
+                .then(() => {
+                    this.$message.success('删除成功');
+                    this.getData();
+                })
+                .catch(e => {
+                    if (e !== 'cancel') {
+                        this.$message.error(e.error);
+                    }
+                });
+        }
+    }
+};
+</script>
+<style lang="less" scoped></style>