|
|
@@ -2,7 +2,7 @@
|
|
|
<div class="edit-view">
|
|
|
<page-title>
|
|
|
<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>
|
|
|
</page-title>
|
|
|
<div class="edit-view__content-wrapper">
|
|
|
@@ -14,18 +14,18 @@
|
|
|
label-width="110px"
|
|
|
label-position="right"
|
|
|
size="small"
|
|
|
- style="max-width: 700px"
|
|
|
+ style="max-width: 750px"
|
|
|
>
|
|
|
<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 prop="pic" label="图片">
|
|
|
<object-upload
|
|
|
v-model="formData.pic[0]"
|
|
|
- :disabled="!canEdit"
|
|
|
compress
|
|
|
width="3000"
|
|
|
height="3000"
|
|
|
+ :disabled="!canEdit"
|
|
|
></object-upload>
|
|
|
<div class="tip">支持JPG、PNG、GIF、MP4,推荐长宽比1:1</div>
|
|
|
</el-form-item>
|
|
|
@@ -47,9 +47,9 @@
|
|
|
<el-input-number v-model="yOffset"></el-input-number>
|
|
|
</el-form-item>
|
|
|
<div class="inline-wrapper">
|
|
|
- <el-form-item prop="minterId" label="铸造者">
|
|
|
+ <el-form-item prop="sellerId" label="起拍者">
|
|
|
<minter-select
|
|
|
- v-model="formData.minterId"
|
|
|
+ v-model="formData.sellerId"
|
|
|
@detail="onMinterDetail"
|
|
|
:disabled="!canEdit"
|
|
|
></minter-select>
|
|
|
@@ -70,7 +70,13 @@
|
|
|
<rich-text v-model="formData.detail"></rich-text>
|
|
|
</el-form-item>
|
|
|
<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
|
|
|
v-for="item in auctionTypeOptions"
|
|
|
:key="item.value"
|
|
|
@@ -82,21 +88,47 @@
|
|
|
</el-form-item>
|
|
|
<div class="inline-wrapper">
|
|
|
<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 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>
|
|
|
</div>
|
|
|
<div class="inline-wrapper">
|
|
|
<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 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>
|
|
|
</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
|
|
|
v-model="formData.startTime"
|
|
|
type="datetime"
|
|
|
@@ -118,16 +150,6 @@
|
|
|
<!-- <el-form-item prop="purchasePrice" label="出价">
|
|
|
<el-input-number type="number" v-model="formData.purchasePrice"></el-input-number>
|
|
|
</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-input-number type="number" v-model="formData.purchaserId"></el-input-number>
|
|
|
</el-form-item>
|
|
|
@@ -158,9 +180,9 @@
|
|
|
</el-form-item> -->
|
|
|
<el-form-item class="form-submit">
|
|
|
<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-form-item>
|
|
|
</el-form>
|
|
|
@@ -171,6 +193,7 @@
|
|
|
<script>
|
|
|
import resolveUrl from 'resolve-url';
|
|
|
import ModelUpload from '../components/ModelUpload.vue';
|
|
|
+import { format, parse, isBefore } from 'date-fns';
|
|
|
export default {
|
|
|
name: 'AuctionActivityEdit',
|
|
|
components: { ModelUpload },
|
|
|
@@ -180,6 +203,7 @@ export default {
|
|
|
.get('auctionActivity/get/' + this.$route.query.id)
|
|
|
.then(res => {
|
|
|
this.formData = res;
|
|
|
+ this.canEdit = res.source !== 'TRANSFER';
|
|
|
})
|
|
|
.catch(e => {
|
|
|
console.log(e);
|
|
|
@@ -194,7 +218,98 @@ export default {
|
|
|
pic: [],
|
|
|
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: [
|
|
|
{ label: '虚拟藏品', value: 'NFT' },
|
|
|
{ label: '实物', value: 'ENTITY' }
|
|
|
@@ -203,6 +318,7 @@ export default {
|
|
|
{ label: '未开始', value: 'NOTSTARTED' },
|
|
|
{ label: '进行中', value: 'ONGOING' },
|
|
|
{ label: '成交', value: 'PURCHASED' },
|
|
|
+ { label: '一口价成交', value: 'FIXED_PRICE_PURCHASED' },
|
|
|
{ label: '流拍', value: 'PASS' },
|
|
|
{ label: '完成', value: 'FINISH' }
|
|
|
],
|
|
|
@@ -211,14 +327,16 @@ export default {
|
|
|
{ label: '转让拍卖', value: 'TRANSFER' }
|
|
|
],
|
|
|
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: {
|
|
|
onSave() {
|
|
|
this.$refs.form.validate(valid => {
|
|
|
@@ -236,7 +354,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
this.saving = true;
|
|
|
-
|
|
|
+
|
|
|
this.$http
|
|
|
.post('/auctionActivity/save', data, { body: 'json' })
|
|
|
.then(res => {
|
|
|
@@ -274,7 +392,7 @@ export default {
|
|
|
this.$set(this.formData, 'sellerId', e.id);
|
|
|
this.$set(this.formData, 'seller', e.nickname);
|
|
|
this.$set(this.formData, 'sellerAvatar', e.avatar);
|
|
|
- },
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
</script>
|