zx 3 years ago
parent 03a1b4bb3c
commit 6894407e54

@ -10,14 +10,6 @@ const routes = [
title: '首页',
},
children: [
// {
// path: '/home',
// name: 'Home',
// component: () => import("@/views/Home/index.vue"),
// meta: {
// title: '首页',
// }
// },
{
path: '/questManage',
name: "QuestManage",
@ -52,6 +44,15 @@ const routes = [
},
hidden: true
},
{
path: "/questManage/questDetail",
name: "QuestDetail",
component: () => import("@/views/QuestManage/_questDetail/index.vue"),
meta: {
title: '查看任务',
},
hidden: true
},
]
},
{

@ -16,7 +16,7 @@
</el-form-item>
<el-form-item>
<el-button @click="addConfirm" type="primary">确定</el-button>
<el-button @click="visible = false; setForm.name=''">取消</el-button>
<el-button @click="visible = false; setForm.name='';setForm.coverUrl=''">取消</el-button>
</el-form-item>
</el-form>
<template #reference>
@ -62,10 +62,13 @@
<uploadFile @change="handlerCoverUpload" :config="{ limit: 1, accept: '.jpg, .jpeg, .png, .gif'}">
<el-button>点击上传</el-button>
</uploadFile>
<el-link :href="$ImgUrl(setForm.coverUrl)" target="_blank">
{{setForm.coverUrl}}
</el-link>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="editVisible = false;setForm.name = ''">取消</el-button>
<el-button @click="editVisible = false;setForm.name = '';setForm.coverUrl = ''">取消</el-button>
<el-button @click="editConfirm" type="primary">确定</el-button>
</template>
</el-dialog>
@ -133,6 +136,11 @@ export default defineComponent({
},
handlerEdit(value) {
this.activeId = value
this.proxy.$post("/referenceGroup/detail", {id: value}).then(res => {
const data = res.data;
this.setForm.name = data.name;
this.setForm.coverUrl = data.coverUrl;
}).catch(() => {});
this.editVisible = true;
},
editConfirm() {
@ -171,7 +179,7 @@ export default defineComponent({
//
handlerChangeSort(value) {
let obj = {id: this.editId,sortWeight: this.sortValue*1}
this.proxy.$post("/reference/updSort", obj).then(res => {
this.proxy.$post("/referenceGroup/updSort", obj).then(res => {
this.getData();
this.isEditing = false;
this.editId = undefined;

@ -0,0 +1,3 @@
export function valueFormatter(row) {
return row.limitNum +' 以上 '
};

@ -0,0 +1,215 @@
<template>
<div class="main-content">
<div class="form-area">
<el-form size="default" :model="form" label-width="90px">
<el-form-item label="发布对象" style="width: 60%">
<el-radio-group disabled v-model="toRelease">
<el-radio :label="1">全部</el-radio>
<el-radio :label="2">指定经销商</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="toRelease == 2" label="经销商">
<el-select disabled multiple placeholder="请选择" v-model="form.departmentList" style="width: 90%">
<el-option v-for="item in departmentData" :key="item.id" :label="item.name" :value="item.departmentId"></el-option>
</el-select>
</el-form-item>
<el-form-item label="任务标题" style="width: 60%">
<el-input disabled placeholder="请输入" v-model="form.title" />
</el-form-item>
<el-form-item label="简介" style="width: 60%">
<el-input disabled placeholder="请输入" :rows="4" type="textarea" v-model="form.subtitle" />
</el-form-item>
<el-form-item label="时间" style="width: 60%">
<el-date-picker disabled value-format="YYYY-MM-DD HH:mm:ss" @change="timeChange" v-model="selTime" type="daterange"></el-date-picker>
</el-form-item>
<el-form-item label="标签类别">
<el-checkbox-group disabled v-model="form.tagList">
<el-checkbox v-for="(item,index) in tagData" :key="index" :label="item.id">
{{item.title}}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="选择车系" style="width: 90%">
<div>
<el-checkbox-group disabled v-model="form.brandList">
<el-checkbox v-for="(item,index) in brandData" :key="index" :label="item.id">
{{item.name}}
</el-checkbox>
</el-checkbox-group>
</div>
</el-form-item>
<el-form-item label="封面图片">
<uploadFile @change="handlerUpload" :config="{ limit: 1, accept: '.jpg, .jpeg, .png, .gif'}">
<el-icon v-if="form.coverUrl == ''" class="img-upload"><Plus /></el-icon>
<img v-else class="img-upload" :src="$ImgUrl(form.coverUrl)" />
</uploadFile>
</el-form-item>
<el-form-item label="素材"></el-form-item>
<el-transfer disabled style="padding:0px 0px 16px 30px;text-align: left; display: inline-block"
v-model="form.referenceList" :titles="['素材列表','已选素材']"
:data="refData" :props="{key: 'id',label: 'title'}">
</el-transfer>
<el-form-item label="教程"></el-form-item>
<el-transfer disabled style="padding:0px 0px 16px 30px;text-align: left; display: inline-block"
v-model="form.teachRefeList" :titles="['教程列表','已选教程']"
:data="teachData" :props="{key: 'id',label: 'title'}">
</el-transfer>
<el-form-item label="奖励规则">
<el-select disabled v-model="form.rewardRuleTemplateId" @change="ruleChange">
<el-option v-for="(item) in ruleData" :key="item.id" :value="item.id" :label="item.title">
</el-option>
</el-select>
<el-table :data="ruleTable.data" border style="margin-top: 16px">
<el-table-column prop="id" label="传播值" :formatter="valueFormatter"></el-table-column>
<el-table-column prop="reward" label="奖励积分"></el-table-column>
</el-table>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
import {defineComponent, reactive, ref, getCurrentInstance} from 'vue'
import {valueFormatter} from './config.js'
export default defineComponent({
name: 'v-questRelease',
setup() {
const activeId = reactive({
value: 0
});
const form = reactive({
title: '',
subtitle: '',
start: '',
end: '',
coverUrl: '',
rewardRuleTemplateId: null,
brandList: [],
tagList: [],
referenceList: [],
referenceUrlList: [],
teachRefeList: [],
teachRefeUrlList: [],
departmentList: [],
});
const toRelease = ref(1); //
const selTime = ref([]);
const tagData = ref([]);
const brandData = ref([]);
const ruleData = ref([]);
const refData = ref([]);
const teachData = ref([]);
const departmentData = ref([]);
const { proxy } = getCurrentInstance();
const ruleTable = reactive({
data: []
});
return {
form,proxy,selTime,valueFormatter,toRelease,
tagData,brandData,ruleData,refData,teachData,departmentData,
ruleTable,
activeId
}
},
mounted() {
this.getApi();
},
methods: {
getApi() {
this.proxy.$post("/tag/list", {}).then(res => {
this.tagData = res.data.records;
}).catch(() => {});
this.proxy.$post("/brand/list", {}).then(res => {
this.brandData = res.data.records;
}).catch(() => {});
this.proxy.$post("/rewardRuleTemplate/list", {}).then(res => {
this.ruleData = res.data.records;
}).catch(() => {});
this.proxy.$post("/reference/list", {}).then(res => {
this.refData = res.data.records;
}).catch(() => {});
this.proxy.$post("/teachingRefe/list", {}).then(res => {
this.teachData = res.data.records;
}).catch(() => {});
this.proxy.$post("/user/department", {}).then(res => {
const data = res.data;
this.departmentData = data;
}).catch(() => {});
if(this.$route.params.id) {
this.proxy.$post("/task/detail", {id: this.$route.params.id}).then(res => {
this.form.title = res.data.title;
this.form.subtitle = res.data.subtitle;
this.form.start = res.data.start;
this.form.end = res.data.end;
this.form.coverUrl = res.data.coverUrl;
this.selTime = [res.data.start,res.data.end]
this.form.rewardRuleTemplateId = res.data.rewardRuleTemplateId;
this.ruleChange(res.data.rewardRuleTemplateId);
res.data.referenceList.forEach(ele => {this.form.referenceList.push(ele.id)})
res.data.brandList.forEach(ele => {this.form.brandList.push(ele.id)})
res.data.tagList.forEach(ele => {this.form.tagList.push(ele.id)})
}).catch(() => {});
}
},
selectAll(value) {
if(value == true) {
//
} else {
this.form.series = []
}
},
ruleChange(value) {
this.proxy.$post("/rewardRuleTemplate/detail", {id: value}).then(res => {
this.ruleTable.data = res.data.ruleList
}).catch(() => {});
},
confirm() {
if(this.$route.params.id) {
let obj = Object.assign(this.form, {id: this.$route.params.id})
this.proxy.$post("/task/upd", obj).then(res => {
this.$message.success(res.data);
this.$router.go(-1);
}).catch(() => {});
} else {
this.proxy.$post("/task/add", this.form).then(res => {
this.$message.success(res.data);
this.$router.go(-1);
}).catch(() => {});
}
},
timeChange(val) {
this.form.start = val[0];
this.form.end = val[1]
},
handlerUpload(data) {
this.form.coverUrl = data.fileUrl
},
handlerRefUpload(data) {
if(data.fileUrl != null) {
this.form.referenceUrlList.push(data.fileUrl)
}
},
handlerTeachUpload(data) {
if(data.fileUrl != null) {
this.form.teachRefeUrlList.push(data.fileUrl)
}
}
}
})
</script>
<style lang="less">
.form-area {
width: 600px;
height: 300px;
}
.img-upload {
font-size: 28px;
color: #8c939d;
width: 135px;
height: 135px;
text-align: center;
border: 1px solid;
}
</style>

@ -57,7 +57,7 @@
<el-link type="primary" @click="goEdit(scope.row.id)"></el-link>
</div>
<div v-else>
<el-link type="primary" style="margin-right: 8px">查看</el-link>
<el-link type="primary" @click="goDetail(scope.row.id)" style="margin-right: 8px">查看</el-link>
<el-link type="primary" style="margin-right: 8px">传播效果</el-link>
<el-link v-if="scope.row.status == 1" type="danger" style="margin-right: 8px"></el-link>
</div>
@ -151,6 +151,9 @@ export default defineComponent({
goEdit(value) {
this.$router.push({ name: "QuestRelease", params:{id:value}})
},
goDetail(value) {
this.$router.push({ name: "QuestDetail", params:{id:value}})
},
}
})
</script>

@ -2,6 +2,17 @@
<div class="main-content">
<div class="form-area">
<el-form size="default" :model="form" label-width="90px">
<el-form-item label="发布对象" style="width: 60%">
<el-radio-group v-model="toRelease">
<el-radio :label="1">全部</el-radio>
<el-radio :label="2">指定经销商</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="toRelease == 2" label="经销商">
<el-select multiple placeholder="请选择" v-model="form.departmentList" style="width: 90%">
<el-option v-for="item in departmentData" :key="item.id" :label="item.name" :value="item.departmentId"></el-option>
</el-select>
</el-form-item>
<el-form-item label="任务标题" style="width: 60%">
<el-input placeholder="请输入" v-model="form.title" />
</el-form-item>
@ -99,20 +110,23 @@ export default defineComponent({
referenceUrlList: [],
teachRefeList: [],
teachRefeUrlList: [],
departmentList: [],
});
const toRelease = ref(1); //
const selTime = ref([]);
const tagData = ref([]);
const brandData = ref([]);
const ruleData = ref([]);
const refData = ref([]);
const teachData = ref([]);
const departmentData = ref([]);
const { proxy } = getCurrentInstance();
const ruleTable = reactive({
data: []
});
return {
form,proxy,selTime,valueFormatter,
tagData,brandData,ruleData,refData,teachData,
form,proxy,selTime,valueFormatter,toRelease,
tagData,brandData,ruleData,refData,teachData,departmentData,
ruleTable,
activeId
}
@ -137,6 +151,10 @@ export default defineComponent({
this.proxy.$post("/teachingRefe/list", {}).then(res => {
this.teachData = res.data.records;
}).catch(() => {});
this.proxy.$post("/user/department", {}).then(res => {
const data = res.data;
this.departmentData = data;
}).catch(() => {});
if(this.$route.params.id) {
this.proxy.$post("/task/detail", {id: this.$route.params.id}).then(res => {
this.form.title = res.data.title;

Loading…
Cancel
Save