增加任务中心
This commit is contained in:
parent
49b95137b6
commit
89bbccf174
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,41 @@
|
|||
import $http from '@/utils/httpRequest'
|
||||
function add(data) {
|
||||
return $http({
|
||||
url: 'app/taskCenter/insertTaskCenter',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
function del(id) {
|
||||
return $http({
|
||||
url: 'app/taskCenter/deleteTaskCenter?id='+id,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
function getList(data) {
|
||||
return $http({
|
||||
url: 'app/taskCenter/selectTaskCenter',
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
function get(id) {
|
||||
return $http({
|
||||
url: 'app/taskCenter' + id,
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
function update(data) {
|
||||
return $http({
|
||||
url: 'app/taskCenter/updateTaskCenter',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
export default {
|
||||
add
|
||||
, del,
|
||||
get, getList,
|
||||
update
|
||||
}
|
||||
|
|
@ -38,6 +38,7 @@ const mainRoutes = {
|
|||
{path: '/allocationList',component: _import('allocation/allocationList'),name: 'allocationList',meta: {title: '配置列表', isTab: true}},
|
||||
{path: '/financeList', component: _import('finance/financeList'), name: 'financeList', meta: {title: '财务中心', isTab: true}},
|
||||
{path: '/message', component: _import('message/message'), name: 'message', meta: {title: '消息中心', isTab: true}},
|
||||
{path: '/renwu', component: _import('renwu/index'), name: 'renwu', meta: {title: '任务中心', isTab: false}},
|
||||
{path: '/taskConfig', component: _import('taskConfig/taskConfig'), name: 'taskConfig', meta: {title: '任务配置', isTab: true}},
|
||||
{path: '/bannerList', component: _import('banner/bannerList'), name: 'bannerList', meta: {title: '首页装修', isTab: true}},
|
||||
{path: '/mission', component: _import('mission/mission'), name: 'mission', meta: {title: '短剧中心', isTab: true}},
|
||||
|
|
|
|||
|
|
@ -0,0 +1,194 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
:title="title"
|
||||
width="800px"
|
||||
top="20px"
|
||||
:visible.sync="dialogVisible"
|
||||
@close="diaClose"
|
||||
:close-on-click-modal="true"
|
||||
>
|
||||
<div style="max-height: 70vh; overflow-y: scroll">
|
||||
<el-form ref="table" :rules="rules" :model="form" label-width="100px">
|
||||
<el-form-item label="标题" required>
|
||||
<el-input v-model="form.title"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="任务类型" required>
|
||||
<el-radio-group v-model="form.type">
|
||||
<el-radio :label="1">普通任务</el-radio>
|
||||
<el-radio :label="2">打卡任务</el-radio>
|
||||
<el-radio :label="9">其他</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="奖励图标">
|
||||
<el-upload
|
||||
class="avatar-uploader"
|
||||
v-model="form.rewardImg"
|
||||
:action="$http.adornUrl('alioss/upload')"
|
||||
:show-file-list="false"
|
||||
:on-success="uploadSuccess"
|
||||
>
|
||||
<div class="upload-file-box">
|
||||
<img v-if="form.rewardImg" :src="form.rewardImg" class="avatar" />
|
||||
<i v-else class="el-icon-plus avatar-uploader-icon iconss"></i>
|
||||
</div>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item label="跳转类型" required>
|
||||
<el-radio-group v-model="form.jumpType">
|
||||
<el-radio :label="1">内部路径</el-radio>
|
||||
<el-radio :label="2">外部路径</el-radio>
|
||||
<el-radio :label="3">内部tabbar页面</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="按钮跳转地址" required>
|
||||
<el-input v-model="form.buttonUrl"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="达标次数" required v-if="form.type == 2">
|
||||
<el-input-number :min="0" v-model="form.number"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="详情描述" required>
|
||||
<el-input v-model="form.detail"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="奖励描述" required>
|
||||
<el-input v-model="form.rewardDetail"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="按钮背景色">
|
||||
<el-input v-model="form.buttonBgColor"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="按钮字体色 ">
|
||||
<el-input v-model="form.buttonFontColor"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="按钮内容">
|
||||
<el-input v-model="form.buttonTitle"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="diaClose">取 消</el-button>
|
||||
<el-button type="primary" @click="confirm">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import $api from "@/api/renwu.js";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
title: "",
|
||||
rules: {
|
||||
title: [{ required: true, message: "请输入任务名称", trigger: "blur" }],
|
||||
},
|
||||
form: {
|
||||
url: "",
|
||||
type: 1,
|
||||
buttonBgColor: "",
|
||||
buttonFontColor: "",
|
||||
buttonTitle: "",
|
||||
buttonUrl: "",
|
||||
detail: "",
|
||||
jumpType: 1,
|
||||
number: 0,
|
||||
rewardDetail: "",
|
||||
rewardImg: "",
|
||||
title: "",
|
||||
},
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
uploadSuccess(file) {
|
||||
this.form.rewardImg = file.data;
|
||||
console.log(this.form.rewardImg);
|
||||
},
|
||||
open(item) {
|
||||
console.log(item);
|
||||
this.dialogVisible = true;
|
||||
if (item) {
|
||||
this.form = {
|
||||
...item,
|
||||
};
|
||||
}
|
||||
this.title = item ? "修改任务" : "新增任务";
|
||||
},
|
||||
diaClose() {
|
||||
this.dialogVisible = false;
|
||||
this.form = {
|
||||
url: "",
|
||||
type: 1,
|
||||
buttonBgColor: "",
|
||||
buttonFontColor: "",
|
||||
buttonTitle: "",
|
||||
buttonUrl: "",
|
||||
detail: "",
|
||||
jumpType: 1,
|
||||
number: 0,
|
||||
rewardDetail: "",
|
||||
rewardImg: "",
|
||||
title: "",
|
||||
};
|
||||
},
|
||||
async confirm() {
|
||||
|
||||
if(!this.form.title){
|
||||
return this.$message.error("请输入任务名称");
|
||||
}
|
||||
if(!this.form.buttonUrl){
|
||||
return this.$message.error("请输入按钮跳转地址");
|
||||
}
|
||||
if(!this.form.detail){
|
||||
this.$message.error("请输入详情描述");
|
||||
}
|
||||
if(!this.form.rewardDetail){
|
||||
this.$message.error("请输入奖励描述");
|
||||
}
|
||||
this.submit();
|
||||
},
|
||||
async submit() {
|
||||
let res = { data: { code: 1 } };
|
||||
if (this.form.id) {
|
||||
res = await $api.update(this.form);
|
||||
} else {
|
||||
res = await $api.add(this.form);
|
||||
}
|
||||
console.log(res);
|
||||
const { data } = res;
|
||||
if (data.code == 0) {
|
||||
this.$message.success(this.form.id ? "修改成功" : "添加成功");
|
||||
this.$emit("refresh");
|
||||
this.diaClose();
|
||||
} else {
|
||||
this.$message.error(data.msg);
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.el-form-item__label {
|
||||
text-align: left;
|
||||
}
|
||||
::v-deep .el-form-item__label {
|
||||
text-align: left;
|
||||
}
|
||||
.dialog-footer {
|
||||
padding-top: 20px;
|
||||
}
|
||||
.upload-file-box {
|
||||
border-radius: 6px;
|
||||
width: 148px;
|
||||
height: 148px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
overflow: hidden;
|
||||
border: 1px solid #c0c4cc;
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,159 @@
|
|||
<template>
|
||||
<div class="">
|
||||
<el-button type="primary" @click="openAddZhuanpan">添加任务</el-button>
|
||||
<div class="zhanwei"></div>
|
||||
<el-table :border="true" :data="tableData">
|
||||
<el-table-column label="标题" prop="title"></el-table-column>
|
||||
|
||||
<el-table-column label="任务类型">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ returnTypeName(scope.row.type) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="详情描述">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.detail }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="奖励描述">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.rewardDetail }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="奖励图片">
|
||||
<template slot-scope="scope">
|
||||
<img
|
||||
style="width: 50px; height: 50px"
|
||||
v-if="scope.row.rewardImg"
|
||||
:src="scope.row.rewardImg"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="达标次数">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.type == 2">{{ scope.row.number }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="跳转类型">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ returnJumpTypeName(scope.row.jumpType) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="跳转路径">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.buttonUrl }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="编辑">
|
||||
<template slot-scope="scope">
|
||||
<el-button type="text" size="mini" @click="openAddZhuanpan(scope.row)"
|
||||
>编辑</el-button
|
||||
>
|
||||
<el-button type="text" size="mini" @click="del(scope.row)"
|
||||
>删除</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="pagination">
|
||||
<el-pagination
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:page-sizes="[10, 20, 30, 40]"
|
||||
:page-size="limit"
|
||||
:current-page="page"
|
||||
layout="total,sizes, prev, pager, next,jumper"
|
||||
:total="total"
|
||||
>
|
||||
</el-pagination>
|
||||
</div>
|
||||
<add-renwu ref="refRenwu" @refresh="init"></add-renwu>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import $api from "@/api/renwu.js";
|
||||
import addRenwu from "./components/pop-add-renwu.vue";
|
||||
|
||||
export default {
|
||||
components: { addRenwu },
|
||||
data() {
|
||||
return {
|
||||
total: 0,
|
||||
tableData: [],
|
||||
page: 1,
|
||||
limit: 10,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
handleSizeChange() {
|
||||
this.page = 1;
|
||||
this.init();
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.page = val;
|
||||
this.init();
|
||||
},
|
||||
returnJumpTypeName(type) {
|
||||
const $types = {
|
||||
1: "内部路径",
|
||||
2: "外部路径",
|
||||
3: "内部tabbar页面",
|
||||
};
|
||||
return $types[type] ? $types[type] : "";
|
||||
},
|
||||
returnTypeName(type) {
|
||||
const $types = {
|
||||
1: "普通任务",
|
||||
2: "打卡任务",
|
||||
9: "其他",
|
||||
};
|
||||
return $types[type] ? $types[type] : "";
|
||||
},
|
||||
//数据初始化
|
||||
async init() {
|
||||
const { data } = await $api.getList({
|
||||
page: this.page,
|
||||
limit: this.limit,
|
||||
});
|
||||
this.tableData = data.data.records;
|
||||
this.total = data.data.total;
|
||||
},
|
||||
del(item) {
|
||||
this.$confirm("是否删除该任务?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
})
|
||||
.then(() => {
|
||||
$api.del(item.id).then((res) => {
|
||||
const data = res.data;
|
||||
if (data.code == 0) {
|
||||
this.$message.success("删除成功");
|
||||
this.init();
|
||||
} else {
|
||||
this.$message.error(data.msg || "删除失败");
|
||||
}
|
||||
});
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
openAddZhuanpan(item) {
|
||||
this.$refs.refRenwu.open(item);
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.init();
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.zhanwei {
|
||||
height: 20px;
|
||||
}
|
||||
.pagination {
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
}
|
||||
</style>
|
||||
Loading…
Reference in New Issue