Merge branch 'feature_0521' of http://git.51jingcheng.com/zhenghuang/bsdgy-front into feature_0521

feature_0521
liuyang 5 years ago
commit f1fb32f841

@ -52,6 +52,7 @@
import useTable from "./useTable"; import useTable from "./useTable";
import addActivity from "./addActivity"; import addActivity from "./addActivity";
import ActivityManager from "../../services/ActivityManager/ActivityManager"; import ActivityManager from "../../services/ActivityManager/ActivityManager";
import store from '../../store';
export default { export default {
name: "ActivityManager", name: "ActivityManager",
@ -72,6 +73,9 @@ export default {
roleCode: "" roleCode: ""
}; };
}, },
created () {
store.commit("RSET_useData")
},
mounted () { mounted () {
this.setMenuName("活动管理", "活动池"); this.setMenuName("活动管理", "活动池");
this.getActivityTable(); this.getActivityTable();

@ -1,109 +1,89 @@
<template> <template>
<Modal v-model="dispalyModal" <Modal v-model="dispalyModal" width="1000" :loading="true" :mask-closable="false">
width="1000" <p slot="header" style="color:#f60;text-align:left">
:loading="true"
:mask-closable="false">
<p slot="header"
style="color:#f60;text-align:left">
<span>配置活动</span> <span>配置活动</span>
</p> </p>
<div>基本配置</div> <div>基本配置</div>
<Form ref="formValidate" <Form ref="formValidate" :model="formValidate" :rules="ruleValidate" :label-width="80">
:model="formValidate"
:rules="ruleValidate"
:label-width="80">
<Row> <Row>
<i-col style="text-align: left;" <i-col style="text-align: left;" span="8">
span="8"> <FormItem label prop="logo">
<FormItem label="" <Upload
prop="logo"> ref="upload"
<Upload ref="upload" :show-upload-list="false"
:show-upload-list="false" :on-success="uploadImgSuccess"
:on-success="uploadImgSuccess" :format="['jpg', 'jpeg', 'png']"
:format="['jpg', 'jpeg', 'png']" :max-size="2048"
:max-size="2048" :before-upload="handleBeforeUpload"
:before-upload="handleBeforeUpload" multiple
multiple type="drag"
type="drag" action
action="" style="display: inline-block;"
style="display: inline-block;"> >
<div style="width: 200px;height:200px;line-height: 200px;"> <div style="width: 200px;height:200px;line-height: 200px;">
<span v-if="!formValidate.logo"></span> <span v-if="!formValidate.logo"></span>
<img v-if="formValidate.logo" <img
:src="`/kiisoo-ic` + formValidate.logo" v-if="formValidate.logo"
alt="" :src="`/kiisoo-ic` + formValidate.logo"
style="width: 100%; height: auto" /> alt
style="width: 100%; height: auto"
/>
</div> </div>
</Upload> </Upload>
</FormItem> </FormItem>
</i-col> </i-col>
<i-col span="15" <i-col span="15" offset="1">
offset="1"> <FormItem label="活动名称" prop="name">
<FormItem label="活动名称" <i-input type="text" v-model="formValidate.name" placeholder="请输入活动名称"></i-input>
prop="name">
<i-input type="text"
v-model="formValidate.name"
placeholder="请输入活动名称"></i-input>
</FormItem> </FormItem>
<Form-item label="活动描述" <Form-item label="活动描述" prop="description">
prop="description"> <i-input
<i-input v-model="formValidate.description" v-model="formValidate.description"
type="textarea" type="textarea"
:autosize="{ minRows: 3 }" :autosize="{ minRows: 3 }"
placeholder="请输入活动描述"></i-input> placeholder="请输入活动描述"
></i-input>
</Form-item> </Form-item>
<FormItem label="APPID" <Form-item label="欢迎语" prop="description">
prop="appId"> <i-input
<i-input type="text" v-model="formValidate.welcome"
v-model="formValidate.appId" type="textarea"
placeholder="请输入appid"></i-input> :autosize="{ minRows: 3 }"
placeholder="请输入欢迎语"
></i-input>
</Form-item>
<FormItem label="APPID" prop="appId">
<i-input type="text" v-model="formValidate.appId" placeholder="请输入appid"></i-input>
</FormItem> </FormItem>
<FormItem label="URI" <FormItem label="URI" prop="uri">
prop="uri"> <i-input type="text" v-model="formValidate.uri" placeholder="请输入URI"></i-input>
<i-input type="text"
v-model="formValidate.uri"
placeholder="请输入URI"></i-input>
</FormItem> </FormItem>
</i-col> </i-col>
</Row> </Row>
</Form> </Form>
<div class="topic">活动类型</div> <div class="topic">活动类型</div>
<Row :gutter="10" <Row :gutter="10" class="inputItem" v-for="(item, index) in formValidate.params" :key="index">
class="inputItem" <i-col :span="2">类型{{ index + 1 }}</i-col>
v-for="(item, index) in formValidate.params"
:key="index">
<i-col :span="2"> 类型{{ index + 1 }} </i-col>
<i-col :span="9"> <i-col :span="9">
<i-input class="inputClass" <i-input class="inputClass" type="text" v-model="item.name" placeholder="请输入活动类型名称"></i-input>
type="text"
v-model="item.name"
placeholder="请输入活动类型名称"></i-input>
</i-col> </i-col>
<i-col :span="9"> <i-col :span="9">
<i-input class="inputClass" <i-input
type="text" class="inputClass"
style="margin-left: 20px" type="text"
v-model="item.defaultVal" style="margin-left: 20px"
placeholder="请输入参数"></i-input> v-model="item.defaultVal"
placeholder="请输入参数"
></i-input>
</i-col> </i-col>
<i-col :span="4"> <i-col :span="4">
<Button style="margin-left: 20px" <Button style="margin-left: 20px" type="error" @click="delActivityInput(index)"></Button>
type="error"
@click="delActivityInput(index)">删除</Button>
</i-col> </i-col>
</Row> </Row>
<Button style="margin-top: 10px" <Button style="margin-top: 10px" type="primary" @click="addActivityInput">+</Button>
type="primary"
@click="addActivityInput">+添加活动类型</Button>
<div slot="footer"> <div slot="footer">
<Button type="primary" <Button type="primary" shape="circle" :loading="modal_loading" @click="cancel"></Button>
shape="circle" <Button type="primary" shape="circle" :loading="modal_loading" @click="save"></Button>
:loading="modal_loading"
@click="cancel">取消</Button>
<Button type="primary"
shape="circle"
:loading="modal_loading"
@click="save">确定</Button>
</div> </div>
</Modal> </Modal>
</template> </template>
@ -112,7 +92,7 @@ import ActivityManager from "../../services/ActivityManager/ActivityManager";
import axios from "axios"; import axios from "axios";
export default { export default {
name: "addActivity", name: "addActivity",
data () { data() {
return { return {
dispalyModal: false, dispalyModal: false,
currentStep: 0, currentStep: 0,
@ -122,25 +102,26 @@ export default {
loading: true, loading: true,
ruleValidate: { ruleValidate: {
name: [ name: [
{ required: true, message: "活动名称不能为空", trigger: "blur" }, { required: true, message: "活动名称不能为空", trigger: "blur" }
], ],
description: [ description: [
{ required: true, message: "活动描述不能为空", trigger: "blur" }, { required: true, message: "活动描述不能为空", trigger: "blur" }
], ],
appId: [{ required: true, message: "appId不能为空", trigger: "blur" }], appId: [{ required: true, message: "appId不能为空", trigger: "blur" }],
uri: [{ required: true, message: "URI不能为空", trigger: "blur" }], uri: [{ required: true, message: "URI不能为空", trigger: "blur" }],
welcome: [{ required: true, message: "请输入欢迎语", trigger: "blur" }]
// uploadImg: [ // uploadImg: [
// { required: true, message: '', trigger: 'blur' } // { required: true, message: '', trigger: 'blur' }
// ] // ]
}, }
}; };
}, },
props: { props: {
addActivityModal: Boolean, addActivityModal: Boolean,
id: String, id: String
}, },
watch: { watch: {
addActivityModal (val) { addActivityModal(val) {
this.dispalyModal = val; this.dispalyModal = val;
if (val === true && this.id) { if (val === true && this.id) {
this.getActivityData(); this.getActivityData();
@ -162,16 +143,16 @@ export default {
limitLower: "", limitLower: "",
limitUpper: "", limitUpper: "",
name: "", name: "",
type: 0, type: 0
}, }
]; ];
} }
this.$forceUpdate(); this.$forceUpdate();
}, }
}, },
mounted () { }, mounted() {},
methods: { methods: {
addActivityInput () { addActivityInput() {
let params = [...this.formValidate.params]; let params = [...this.formValidate.params];
params.push({ params.push({
defaultVal: "", defaultVal: "",
@ -182,12 +163,12 @@ export default {
limitLower: "", limitLower: "",
limitUpper: "", limitUpper: "",
name: "", name: "",
type: 0, type: 0
}); });
this.$set(this.formValidate, "params", params); this.$set(this.formValidate, "params", params);
this.$forceUpdate(); this.$forceUpdate();
}, },
delActivityInput (index) { delActivityInput(index) {
if (this.formValidate.params.length <= 1) { if (this.formValidate.params.length <= 1) {
this.$Message.error("至少需要填写一个活动类型!"); this.$Message.error("至少需要填写一个活动类型!");
return; return;
@ -195,22 +176,22 @@ export default {
this.formValidate.params.splice(index, 1); this.formValidate.params.splice(index, 1);
this.$forceUpdate(); this.$forceUpdate();
}, },
cancel () { cancel() {
this.$emit("dispalyAddActivityModal", false, false); this.$emit("dispalyAddActivityModal", false, false);
}, },
getActivityData () { getActivityData() {
let that = this; let that = this;
let data = { let data = {
id: that.id, id: that.id
}; };
ActivityManager.getActivityInfo(data, function (data) { ActivityManager.getActivityInfo(data, function(data) {
that.formValidate = data.data.results; that.formValidate = data.data.results;
}); });
}, },
uploadImgSuccess (res, file) { uploadImgSuccess(res, file) {
this.imageName = file.name; this.imageName = file.name;
}, },
handleBeforeUpload (res) { handleBeforeUpload(res) {
const me = this; const me = this;
let data = new FormData(); let data = new FormData();
data.append("file", res); data.append("file", res);
@ -219,18 +200,18 @@ export default {
url: "/upload", url: "/upload",
data: data, data: data,
headers: { headers: {
"Content-Type": "multipart/form-data", "Content-Type": "multipart/form-data"
}, }
}).then(function (res) { }).then(function(res) {
if (res.data.success) { if (res.data.success) {
// me.formValidate.logo = res.data.results; // me.formValidate.logo = res.data.results;
me.$set(me.formValidate, "logo", res.data.results); me.$set(me.formValidate, "logo", res.data.results.localPath);
console.log(me.formValidate.logo); console.log(me.formValidate.logo);
} }
}); });
return false; return false;
}, },
save () { save() {
let that = this; let that = this;
that.modal_loading = true; that.modal_loading = true;
let i = 0; let i = 0;
@ -264,13 +245,13 @@ export default {
} }
} }
} }
this.$refs["formValidate"].validate((valid) => { this.$refs["formValidate"].validate(valid => {
if (valid) { if (valid) {
// param = JSON.stringify(param) // param = JSON.stringify(param)
let data = { ...that.formValidate, isGetActivityInfo: true }; let data = { ...that.formValidate, isGetActivityInfo: true };
data.categoryId = 0; data.categoryId = 0;
data.categoryCode = "promotion"; data.categoryCode = "promotion";
ActivityManager.addOreditActivity(data, function (data) { ActivityManager.addOreditActivity(data, function(data) {
that.addActivityModal = false; that.addActivityModal = false;
that.formValidate = {}; that.formValidate = {};
that.modal_loading = false; that.modal_loading = false;
@ -281,8 +262,8 @@ export default {
that.$Message.error("表单验证失败!"); that.$Message.error("表单验证失败!");
} }
}); });
}, }
}, }
}; };
</script> </script>

@ -20,14 +20,32 @@
:key="index" :key="index"
> >
<div v-if="item.type == 3"> <div v-if="item.type == 3">
<i-col style="line-height: 32px" :span="4">APPID {{ index + 1 }}</i-col> <i-col style="line-height: 32px" :span="2">标题 {{ index + 1 }}</i-col>
<i-col :span="6"> <i-col :span="3">
<i-input class="inputClass" type="text" disabled v-model="item.key"></i-input>
</i-col>
<i-col style="line-height: 32px" :span="2">APPID {{ index + 1 }}</i-col>
<i-col :span="3">
<i-input class="inputClass" type="text" disabled v-model="item.defaultVal"></i-input> <i-input class="inputClass" type="text" disabled v-model="item.defaultVal"></i-input>
</i-col> </i-col>
<i-col style="line-height: 32px" :span="4">URI {{ index + 1 }}</i-col> <i-col style="line-height: 32px" :span="2">URI {{ index + 1 }}</i-col>
<i-col :span="6"> <i-col :span="3">
<i-input class="inputClass" type="text" disabled v-model="item.description"></i-input>
</i-col>
<i-col style="line-height: 32px" :span="2">MediaId{{ index + 1 }}</i-col>
<i-col :span="3">
<i-input class="inputClass" type="text" disabled v-model="item.limitLower"></i-input>
</i-col>
</div>
<div v-else-if="item.type == 2">
<i-col style="line-height: 32px" :span="4">标题 {{ index + 1 }}</i-col>
<i-col :span="8">
<i-input class="inputClass" type="text" disabled v-model="item.description"></i-input> <i-input class="inputClass" type="text" disabled v-model="item.description"></i-input>
</i-col> </i-col>
<i-col style="line-height: 32px" :span="4">URL {{ index + 1 }}</i-col>
<i-col :span="8">
<i-input class="inputClass" type="text" disabled v-model="item.defaultVal"></i-input>
</i-col>
</div> </div>
<div v-else> <div v-else>
<i-col style="line-height: 32px" :span="4">{{ item.name }}{{ index + 1 }}</i-col> <i-col style="line-height: 32px" :span="4">{{ item.name }}{{ index + 1 }}</i-col>
@ -91,6 +109,9 @@
</Modal> </Modal>
<Modal v-model="showWeb" title="添加网页消息" :loading="true"> <Modal v-model="showWeb" title="添加网页消息" :loading="true">
<Form ref="webForm" :model="webForm" :rules="webFormRules"> <Form ref="webForm" :model="webForm" :rules="webFormRules">
<FormItem label="标题" prop="url">
<i-input v-model="webForm.title" type="text" placeholder="请输入网页标题"></i-input>
</FormItem>
<FormItem label="添加网页消息" prop="url"> <FormItem label="添加网页消息" prop="url">
<i-input v-model="webForm.url" type="text" placeholder="以http或https开头"></i-input> <i-input v-model="webForm.url" type="text" placeholder="以http或https开头"></i-input>
</FormItem> </FormItem>
@ -102,12 +123,39 @@
</Modal> </Modal>
<Modal v-model="showMini" title="添加小程序消息" :loading="true"> <Modal v-model="showMini" title="添加小程序消息" :loading="true">
<Form ref="miniForm" :model="miniForm" :rules="miniFormRules"> <Form ref="miniForm" :model="miniForm" :rules="miniFormRules">
<FormItem label="标题" prop="key">
<i-input v-model="miniForm.key" type="text" placeholder="请输入标题"></i-input>
</FormItem>
<FormItem label="APPID" prop="appid"> <FormItem label="APPID" prop="appid">
<i-input v-model="miniForm.appid" type="text" placeholder="请输入appid"></i-input> <i-input v-model="miniForm.appid" type="text" placeholder="请输入appid"></i-input>
</FormItem> </FormItem>
<FormItem label="URI" prop="uri"> <FormItem label="URI" prop="uri">
<i-input v-model="miniForm.uri" type="text" placeholder="请输入URl"></i-input> <i-input v-model="miniForm.uri" type="text" placeholder="请输入URl"></i-input>
</FormItem> </FormItem>
<FormItem label="封面图">
<Upload
ref="upload"
:show-upload-list="false"
:on-success="miniUploadImgSuccess"
:format="['jpg', 'jpeg', 'png']"
:max-size="2048"
:before-upload="handleBeforeUploadMini"
multiple
type="drag"
action
style="display: inline-block;"
>
<div style="width: 200px;height:200px;line-height: 200px;border:1px dashed #dedede">
<span v-if="!miniForm.limitUpper"></span>
<img
v-if="miniForm.limitUpper"
:src="`/kiisoo-ic` + miniForm.limitUpper"
alt
style="width: 100%; height: auto"
/>
</div>
</Upload>
</FormItem>
</Form> </Form>
<div slot="footer"> <div slot="footer">
<Button type="primary" @click="cancelMini"></Button> <Button type="primary" @click="cancelMini"></Button>
@ -164,14 +212,16 @@ export default {
url: [ url: [
{ required: true, message: "请输入url", trigger: "blur" }, { required: true, message: "请输入url", trigger: "blur" },
{ validator: validateUrl, trigger: "blur" } { validator: validateUrl, trigger: "blur" }
] ],
title: [{ required: true, message: "请输入标题", trigger: "blur" }]
}, },
webForm: { url: "" }, webForm: { url: "", title: "" },
miniFormRules: { miniFormRules: {
appid: [{ required: true, message: "请输入url", trigger: "blur" }], appid: [{ required: true, message: "请输入appid", trigger: "blur" }],
uri: [{ required: true, message: "请输入url", trigger: "blur" }] uri: [{ required: true, message: "请输入uri", trigger: "blur" }],
key: [{ required: true, message: "请输入标题", trigger: "blur" }]
}, },
miniForm: { appid: "", uri: "" } miniForm: { appid: "", uri: "", limitLower: "", limitUpper: "", key: "" }
}; };
}, },
watch: { watch: {
@ -229,18 +279,22 @@ export default {
this.showStoreCheck = true; this.showStoreCheck = true;
}, },
uploadImgSuccess(res, file) {}, uploadImgSuccess(res, file) {},
miniUploadImgSuccess(res, file) {},
cancelWeb() { cancelWeb() {
this.showWeb = false; this.showWeb = false;
}, },
doShowWeb() { doShowWeb() {
this.showWeb = true; this.showWeb = true;
this.webForm = { url: "" }; this.webForm = { url: "", title: "" };
}, },
doShowMini() { doShowMini() {
this.showMini = true; this.showMini = true;
this.miniForm = { this.miniForm = {
appid: "", appid: "",
uri: "" uri: "",
limitLower: "",
limitUpper: "",
key: ""
}; };
}, },
cancelMini() { cancelMini() {
@ -253,7 +307,7 @@ export default {
_this.welcome.params.push({ _this.welcome.params.push({
attr: 2, attr: 2,
defaultVal: this.webForm.url, defaultVal: this.webForm.url,
description: this.webForm.url, description: this.webForm.title,
isRequired: 1, isRequired: 1,
key: "url", key: "url",
limitLower: null, limitLower: null,
@ -275,9 +329,9 @@ export default {
defaultVal: this.miniForm.appid, defaultVal: this.miniForm.appid,
description: this.miniForm.uri, description: this.miniForm.uri,
isRequired: 1, isRequired: 1,
key: "mini", key: this.miniForm.key,
limitLower: null, limitLower: this.miniForm.limitLower,
limitUpper: null, limitUpper: this.miniForm.limitUpper,
name: "小程序消息", name: "小程序消息",
type: 3 type: 3
}); });
@ -290,10 +344,36 @@ export default {
this.welcome.params.splice(index, 1); this.welcome.params.splice(index, 1);
this.$forceUpdate(); this.$forceUpdate();
}, },
handleBeforeUploadMini(res) {
const me = this;
let data = new FormData();
data.append("file", res);
data.append("needMediaId", "true");
console.log(data);
this.imageUploading = true;
axios({
method: "post",
url: "/upload",
data: data,
headers: {
"Content-Type": "multipart/form-data"
}
}).then(function(res) {
me.imageUploading = false;
if (res.data.success) {
// me.formValidate.logo = res.data.results;
me.miniForm.limitLower = res.data.results.mediaId;
me.miniForm.limitUpper = res.data.results.localPath;
me.showMessageTypes = false;
}
});
return false;
},
handleBeforeUpload(res) { handleBeforeUpload(res) {
const me = this; const me = this;
let data = new FormData(); let data = new FormData();
data.append("file", res); data.append("file", res);
data.append("needMediaId", "true");
console.log(data); console.log(data);
this.imageUploading = true; this.imageUploading = true;
axios({ axios({
@ -309,8 +389,8 @@ export default {
// me.formValidate.logo = res.data.results; // me.formValidate.logo = res.data.results;
me.welcome.params.push({ me.welcome.params.push({
attr: 2, attr: 2,
defaultVal: res.data.results, defaultVal: res.data.results.mediaId,
description: res.data.results, description: res.data.results.localPath,
isRequired: 1, isRequired: 1,
key: "image", key: "image",
limitLower: null, limitLower: null,
@ -325,10 +405,6 @@ export default {
}, },
submit() { submit() {
let _this = this; let _this = this;
if (this.welcome.params.length <= 0) {
_this.$Message.error("图片/网页/小程序消息至少添加一个");
return false;
}
if (this.welcome.stores.length <= 0) { if (this.welcome.stores.length <= 0) {
_this.$Message.error("请至少选择一个店铺"); _this.$Message.error("请至少选择一个店铺");
return false; return false;

Loading…
Cancel
Save