|
@@ -7,78 +7,43 @@
|
|
|
</page-title>
|
|
</page-title>
|
|
|
<div class="edit-view__content-wrapper">
|
|
<div class="edit-view__content-wrapper">
|
|
|
<div class="edit-view__content-section">
|
|
<div class="edit-view__content-section">
|
|
|
- <el-form
|
|
|
|
|
- :model="formData"
|
|
|
|
|
- :rules="rules"
|
|
|
|
|
- ref="form"
|
|
|
|
|
- label-width="130px"
|
|
|
|
|
- label-position="right"
|
|
|
|
|
- size="small"
|
|
|
|
|
- style="max-width: 500px"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-form :model="formData" :rules="rules" ref="form" label-width="130px" label-position="right" size="small"
|
|
|
|
|
+ style="max-width: 500px">
|
|
|
<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"> </el-input>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="detail" label="详情" style="width: calc(100vw - 450px)">
|
|
<el-form-item prop="detail" label="详情" style="width: calc(100vw - 450px)">
|
|
|
- <el-input
|
|
|
|
|
- v-model="formData.detail"
|
|
|
|
|
- type="textarea"
|
|
|
|
|
- :autosize="{ minRows: 3, maxRows: 20 }"
|
|
|
|
|
- placeholder="请输入任务详情"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-input v-model="formData.detail" type="textarea" :autosize="{ minRows: 3, maxRows: 20 }"
|
|
|
|
|
+ placeholder="请输入任务详情">
|
|
|
</el-input>
|
|
</el-input>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="awardType" label="奖励类型">
|
|
<el-form-item prop="awardType" label="奖励类型">
|
|
|
- <el-select
|
|
|
|
|
- v-model="formData.awardType"
|
|
|
|
|
- clearable
|
|
|
|
|
- filterable
|
|
|
|
|
- placeholder="请选择"
|
|
|
|
|
- @change="changeAwardType"
|
|
|
|
|
- >
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in awardTypeOptions"
|
|
|
|
|
- :key="item.value"
|
|
|
|
|
- :label="item.label"
|
|
|
|
|
- :value="item.value"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-select v-model="formData.awardType" clearable filterable placeholder="请选择"
|
|
|
|
|
+ @change="changeAwardType">
|
|
|
|
|
+ <el-option v-for="item in awardTypeOptions" :key="item.value" :label="item.label"
|
|
|
|
|
+ :value="item.value">
|
|
|
</el-option>
|
|
</el-option>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item
|
|
|
|
|
- prop="metaPropId"
|
|
|
|
|
- label="道具"
|
|
|
|
|
- v-if="formData.awardType && formData.awardType === 'META_PROP'"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-form-item prop="metaPropId" label="道具"
|
|
|
|
|
+ v-if="formData.awardType && formData.awardType === 'META_PROP'">
|
|
|
<el-select v-model="formData.metaPropId" placeholder="请选择" filterable>
|
|
<el-select v-model="formData.metaPropId" placeholder="请选择" filterable>
|
|
|
<el-option v-for="item in metaProps" :key="item.id" :label="item.name" :value="item.id">
|
|
<el-option v-for="item in metaProps" :key="item.id" :label="item.name" :value="item.id">
|
|
|
</el-option>
|
|
</el-option>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item
|
|
|
|
|
- prop="awardPic"
|
|
|
|
|
- label="奖励图片"
|
|
|
|
|
- v-if="formData.awardType && formData.awardType === 'NFT'"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-form-item prop="awardPic" label="奖励图片" v-if="formData.awardType && formData.awardType === 'NFT'">
|
|
|
<single-upload v-model="formData.awardPic"> </single-upload>
|
|
<single-upload v-model="formData.awardPic"> </single-upload>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item
|
|
|
|
|
- prop="goldNum"
|
|
|
|
|
- label="奖励金币数量"
|
|
|
|
|
- v-if="formData.awardType && formData.awardType === 'GOLD'"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-form-item prop="goldNum" label="奖励金币数量" v-if="formData.awardType && formData.awardType === 'GOLD'">
|
|
|
<el-input-number type="goldNum" v-model="formData.goldNum" :step="1" :min="1">
|
|
<el-input-number type="goldNum" v-model="formData.goldNum" :step="1" :min="1">
|
|
|
</el-input-number>
|
|
</el-input-number>
|
|
|
<div class="tip">输入规则:正整数,最小为1</div>
|
|
<div class="tip">输入规则:正整数,最小为1</div>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item prop="type" label="任务类型">
|
|
<el-form-item prop="type" label="任务类型">
|
|
|
<el-select v-model="formData.type" clearable filterable placeholder="请选择" @change="change">
|
|
<el-select v-model="formData.type" clearable filterable placeholder="请选择" @change="change">
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in typeOptions"
|
|
|
|
|
- :key="item.value"
|
|
|
|
|
- :label="item.label"
|
|
|
|
|
- :value="item.value"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <el-option v-for="item in typeOptions" :key="item.value" :label="item.label"
|
|
|
|
|
+ :value="item.value">
|
|
|
</el-option>
|
|
</el-option>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -112,6 +77,12 @@
|
|
|
<el-input-number v-model="formData.value" :min="0"> </el-input-number>
|
|
<el-input-number v-model="formData.value" :min="0"> </el-input-number>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
+ <el-form-item label="所属频道" prop="channelId">
|
|
|
|
|
+ <el-select v-model="formData.channelId" placeholder="请选择" style="width: 100%">
|
|
|
|
|
+ <el-option v-for="item in channels" :key="item.id" :label="item.name" :value="item.id">
|
|
|
|
|
+ </el-option>
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
<el-form-item prop="autoReceive" label="是否自动领取">
|
|
<el-form-item prop="autoReceive" label="是否自动领取">
|
|
|
<el-switch v-model="formData.autoReceive"> </el-switch>
|
|
<el-switch v-model="formData.autoReceive"> </el-switch>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -136,168 +107,177 @@
|
|
|
<script>
|
|
<script>
|
|
|
import { reg } from '../util/regRules';
|
|
import { reg } from '../util/regRules';
|
|
|
export default {
|
|
export default {
|
|
|
- name: 'MetaTaskEdit',
|
|
|
|
|
- created() {
|
|
|
|
|
- if (this.$route.query.id) {
|
|
|
|
|
- this.$http
|
|
|
|
|
- .get('metaTask/get/' + this.$route.query.id)
|
|
|
|
|
- .then(res => {
|
|
|
|
|
- this.formData = res;
|
|
|
|
|
- })
|
|
|
|
|
- .catch(e => {
|
|
|
|
|
- console.log(e);
|
|
|
|
|
- this.$message.error(e.error);
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- this.$http.get('/metaProp/findAll').then(res => {
|
|
|
|
|
- this.metaProps = res;
|
|
|
|
|
- });
|
|
|
|
|
- },
|
|
|
|
|
- data() {
|
|
|
|
|
- return {
|
|
|
|
|
- metaProps: [],
|
|
|
|
|
- reg,
|
|
|
|
|
- saving: false,
|
|
|
|
|
- formData: {},
|
|
|
|
|
- rules: {
|
|
|
|
|
- name: [
|
|
|
|
|
- {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请输入任务名称',
|
|
|
|
|
- trigger: 'blur'
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
- detail: [
|
|
|
|
|
- {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请输入任务详情',
|
|
|
|
|
- trigger: 'blur'
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
- type: [
|
|
|
|
|
- {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请输入任务类型',
|
|
|
|
|
- trigger: 'blur'
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
- value: [
|
|
|
|
|
- {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请指定参数配置',
|
|
|
|
|
- trigger: 'blur'
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
- goldNum: [
|
|
|
|
|
- {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请输入奖励金币数量',
|
|
|
|
|
- trigger: 'blur'
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- validator: (rule, value, callback) => {
|
|
|
|
|
- if (!this.reg.test(value)) {
|
|
|
|
|
- callback(new Error('奖励金币数量必须为大于1的整数'));
|
|
|
|
|
- return;
|
|
|
|
|
- } else {
|
|
|
|
|
- callback();
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
- awardType: [
|
|
|
|
|
- {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请选择奖励类型',
|
|
|
|
|
- trigger: 'blur'
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
- metaPropId: [
|
|
|
|
|
- {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请选择道具',
|
|
|
|
|
- trigger: 'blur'
|
|
|
|
|
- }
|
|
|
|
|
- ],
|
|
|
|
|
- awardPic: [
|
|
|
|
|
- {
|
|
|
|
|
- required: true,
|
|
|
|
|
- message: '请上传奖励图片',
|
|
|
|
|
- trigger: 'blur'
|
|
|
|
|
- }
|
|
|
|
|
- ]
|
|
|
|
|
- },
|
|
|
|
|
- typeOptions: [
|
|
|
|
|
- // { label: '单日签到', value: 'SIGN_IN_SINGLE_DAY' },
|
|
|
|
|
- // { label: '连续多日签到', value: 'SIGN_IN_CONTINUOUS' },
|
|
|
|
|
- { label: '收集藏品', value: 'COLLECT_COLLECTION' },
|
|
|
|
|
- { label: '每日在线时长', value: 'ON_LINE_TIME_DAILY' },
|
|
|
|
|
- { label: '累计', value: 'ACCUMULATE' }
|
|
|
|
|
- ],
|
|
|
|
|
- awardTypeOptions: [
|
|
|
|
|
- { label: '空', value: 'NULL' },
|
|
|
|
|
- { label: '金币', value: 'GOLD' },
|
|
|
|
|
- { label: 'NFT', value: 'NFT' },
|
|
|
|
|
- { label: '元宇宙道具', value: 'META_PROP' }
|
|
|
|
|
- ]
|
|
|
|
|
- };
|
|
|
|
|
- },
|
|
|
|
|
- methods: {
|
|
|
|
|
- changeAwardType(row) {
|
|
|
|
|
- this.$delete(this.formData, 'metaPropId');
|
|
|
|
|
- this.$delete(this.formData, 'awardPic');
|
|
|
|
|
- this.$delete(this.formData, 'goldNum');
|
|
|
|
|
- },
|
|
|
|
|
- change() {
|
|
|
|
|
- if (this.formData.value) {
|
|
|
|
|
- this.$delete(this.formData, 'value');
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- onSave() {
|
|
|
|
|
- this.$refs.form.validate(valid => {
|
|
|
|
|
- if (valid) {
|
|
|
|
|
- this.submit();
|
|
|
|
|
- } else {
|
|
|
|
|
- return false;
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- },
|
|
|
|
|
- submit() {
|
|
|
|
|
- let data = { ...this.formData };
|
|
|
|
|
|
|
+ name: 'MetaTaskEdit',
|
|
|
|
|
+ created() {
|
|
|
|
|
+ if (this.$route.query.id) {
|
|
|
|
|
+ this.$http
|
|
|
|
|
+ .get('metaTask/get/' + this.$route.query.id)
|
|
|
|
|
+ .then(res => {
|
|
|
|
|
+ this.formData = res;
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch(e => {
|
|
|
|
|
+ console.log(e);
|
|
|
|
|
+ this.$message.error(e.error);
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ this.$http.get('/metaProp/findAll').then(res => {
|
|
|
|
|
+ this.metaProps = res;
|
|
|
|
|
+ });
|
|
|
|
|
+ this.$http.get('/metaChannel/findAll').then(res => {
|
|
|
|
|
+ this.channels = res;
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ data() {
|
|
|
|
|
+ return {
|
|
|
|
|
+ channels: [],
|
|
|
|
|
+ metaProps: [],
|
|
|
|
|
+ reg,
|
|
|
|
|
+ saving: false,
|
|
|
|
|
+ formData: {},
|
|
|
|
|
+ rules: {
|
|
|
|
|
+ name: [
|
|
|
|
|
+ {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请输入任务名称',
|
|
|
|
|
+ trigger: 'blur'
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ detail: [
|
|
|
|
|
+ {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请输入任务详情',
|
|
|
|
|
+ trigger: 'blur'
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ type: [
|
|
|
|
|
+ {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请输入任务类型',
|
|
|
|
|
+ trigger: 'blur'
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ value: [
|
|
|
|
|
+ {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请指定参数配置',
|
|
|
|
|
+ trigger: 'blur'
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ goldNum: [
|
|
|
|
|
+ {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请输入奖励金币数量',
|
|
|
|
|
+ trigger: 'blur'
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ validator: (rule, value, callback) => {
|
|
|
|
|
+ if (!this.reg.test(value)) {
|
|
|
|
|
+ callback(new Error('奖励金币数量必须为大于1的整数'));
|
|
|
|
|
+ return;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ callback();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ awardType: [
|
|
|
|
|
+ {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请选择奖励类型',
|
|
|
|
|
+ trigger: 'blur'
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ metaPropId: [
|
|
|
|
|
+ {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请选择道具',
|
|
|
|
|
+ trigger: 'blur'
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ channelId: [
|
|
|
|
|
+ {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请选择所属通道',
|
|
|
|
|
+ trigger: 'blur'
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ awardPic: [
|
|
|
|
|
+ {
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请上传奖励图片',
|
|
|
|
|
+ trigger: 'blur'
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ typeOptions: [
|
|
|
|
|
+ // { label: '单日签到', value: 'SIGN_IN_SINGLE_DAY' },
|
|
|
|
|
+ // { label: '连续多日签到', value: 'SIGN_IN_CONTINUOUS' },
|
|
|
|
|
+ { label: '收集藏品', value: 'COLLECT_COLLECTION' },
|
|
|
|
|
+ { label: '每日在线时长', value: 'ON_LINE_TIME_DAILY' },
|
|
|
|
|
+ { label: '累计', value: 'ACCUMULATE' }
|
|
|
|
|
+ ],
|
|
|
|
|
+ awardTypeOptions: [
|
|
|
|
|
+ { label: '空', value: 'NULL' },
|
|
|
|
|
+ { label: '金币', value: 'GOLD' },
|
|
|
|
|
+ { label: 'NFT', value: 'NFT' },
|
|
|
|
|
+ { label: '元宇宙道具', value: 'META_PROP' }
|
|
|
|
|
+ ]
|
|
|
|
|
+ };
|
|
|
|
|
+ },
|
|
|
|
|
+ methods: {
|
|
|
|
|
+ changeAwardType(row) {
|
|
|
|
|
+ this.$delete(this.formData, 'metaPropId');
|
|
|
|
|
+ this.$delete(this.formData, 'awardPic');
|
|
|
|
|
+ this.$delete(this.formData, 'goldNum');
|
|
|
|
|
+ },
|
|
|
|
|
+ change() {
|
|
|
|
|
+ if (this.formData.value) {
|
|
|
|
|
+ this.$delete(this.formData, 'value');
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ onSave() {
|
|
|
|
|
+ this.$refs.form.validate(valid => {
|
|
|
|
|
+ if (valid) {
|
|
|
|
|
+ this.submit();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ submit() {
|
|
|
|
|
+ let data = { ...this.formData };
|
|
|
|
|
|
|
|
- this.saving = true;
|
|
|
|
|
- this.$http
|
|
|
|
|
- .post('/metaTask/save', data, { body: 'json' })
|
|
|
|
|
- .then(res => {
|
|
|
|
|
- this.saving = false;
|
|
|
|
|
- this.$message.success('成功');
|
|
|
|
|
- this.$router.go(-1);
|
|
|
|
|
- })
|
|
|
|
|
- .catch(e => {
|
|
|
|
|
- console.log(e);
|
|
|
|
|
- this.saving = false;
|
|
|
|
|
- this.$message.error(e.error);
|
|
|
|
|
- });
|
|
|
|
|
- },
|
|
|
|
|
- onDelete() {
|
|
|
|
|
- this.$confirm('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
|
|
|
|
|
- .then(() => {
|
|
|
|
|
- return this.$http.post(`/metaTask/del/${this.formData.id}`);
|
|
|
|
|
- })
|
|
|
|
|
- .then(() => {
|
|
|
|
|
- this.$message.success('删除成功');
|
|
|
|
|
- this.$router.go(-1);
|
|
|
|
|
- })
|
|
|
|
|
- .catch(e => {
|
|
|
|
|
- if (e !== 'cancel') {
|
|
|
|
|
- console.log(e);
|
|
|
|
|
- this.$message.error((e || {}).error || '删除失败');
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ this.saving = true;
|
|
|
|
|
+ this.$http
|
|
|
|
|
+ .post('/metaTask/save', data, { body: 'json' })
|
|
|
|
|
+ .then(res => {
|
|
|
|
|
+ this.saving = false;
|
|
|
|
|
+ this.$message.success('成功');
|
|
|
|
|
+ this.$router.go(-1);
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch(e => {
|
|
|
|
|
+ console.log(e);
|
|
|
|
|
+ this.saving = false;
|
|
|
|
|
+ this.$message.error(e.error);
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ onDelete() {
|
|
|
|
|
+ this.$confirm('删除将无法恢复,确认要删除么?', '警告', { type: 'error' })
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ return this.$http.post(`/metaTask/del/${this.formData.id}`);
|
|
|
|
|
+ })
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ this.$message.success('删除成功');
|
|
|
|
|
+ this.$router.go(-1);
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch(e => {
|
|
|
|
|
+ if (e !== 'cancel') {
|
|
|
|
|
+ console.log(e);
|
|
|
|
|
+ this.$message.error((e || {}).error || '删除失败');
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
};
|
|
};
|
|
|
</script>
|
|
</script>
|
|
|
-<style lang="less" scoped>
|
|
|
|
|
-
|
|
|
|
|
-</style>
|
|
|
|
|
|
|
+<style lang="less" scoped></style>
|