feature_0521
zhenghuang 6 years ago
parent e2699eee7e
commit fe0480eb22

@ -1,39 +1,147 @@
<template>
<div class="activity_code">
<Table :loading="loading" border :columns="columns" :data="data"></Table>
<Page
:total="totalSize"
:current="pageNum"
:page-size="pageSize"
show-elevator
show-total
placement="top"
@on-change="handlePage"
class-name="ks-page"
></Page>
<Table :loading="loading"
border
:columns="columns"
:data="data"></Table>
<Page :total="totalSize"
:current="pageNum"
:page-size="pageSize"
show-elevator
show-total
placement="top"
@on-change="handlePage"
class-name="ks-page"></Page>
</div>
</template>
<script>
import { activityCodeList } from '../../services/ActivityManager/ActivityManager';
export default {
name: "ActivityCode",
data() {
data () {
let _this = this;
return {
loading: false,
totalSize: 0,
pageNum: 1,
pageSize: 10,
data: []
data: [],
instanceId: 0,
columns: [
{
type: "index",
width: 80,
align: "center",
title: "序号",
},
{
title: "所属零售公司",
key: "organizational.name",
render (h, params) {
return h("span", params.row["organizational"]["name"]);
},
},
{
title: "零售公司编号",
key: "organizational.code",
render (h, params) {
return h("span", params.row["organizational"]["code"]);
},
},
{
title: "店铺名称",
key: "store.name",
render (h, params) {
return h("span", params.row["store"]["name"]);
},
},
{
title: "店铺编号",
key: "store.code",
render (h, params) {
return h("span", params.row["store"]["code"]);
},
},
{
title: "推广码",
key: "qrCode",
render (h, params) {
return h("div", {
class: "qrcode" }, [
h(
"Button",
{
props: { type: "primary", size: "small" },
style: { marginRight: "8px" },
on: { "mouseover.native": () => _this.showQrcode(params.row) }
},
"二维码"
),
h(
"div",
{
class: "qrcodeBox",
style: { display: "none" }
}, [
h(
"img",
{ attrs: { src: params.row.qrCode } }
)]
)
]);
},
},
{
title: "操作",
key: "action",
width: 200,
render (h, p) {
return h("div", [
h(
"Button",
{
props: { type: "primary", size: "small" },
style: { marginRight: "8px" },
on: {
click: () => _this.guideCode(p.row),
},
},
"查看导购码"
)
]);
},
},
]
};
},
created () {
this.instanceId = this.$route.query.instanceId;
this.load();
},
methods: {
handlePage(value) {
handlePage (value) {
this.pageNum = value;
this.load();
},
load() {}
showQrcode (row) {
console.log(row)
},
load (params = {}) {
let _this = this;
this.loading = true;
params.pageSize = this.pageSize;
params.pageNum = this.pageNum;
params.instanceId = this.instanceId;
activityCodeList(params, res => {
_this.data = res.data.results.this.records
_this.totalSize = res.data.results.this.total
_this.loading = false;
})
}
}
};
</script>
<style></style>
<style>
</style>

@ -1,119 +1,102 @@
<template>
<Modal
v-model="dispalyModal"
width="1000"
:loading="loading"
:mask-closable="false"
@on-cancel="cancel"
@on-ok="save"
>
<p slot="header" style="color:#f60;text-align:left">
<Modal v-model="dispalyModal"
width="1000"
:loading="loading"
:mask-closable="false"
@on-cancel="cancel"
@on-ok="save">
<p slot="header"
style="color:#f60;text-align:left">
<span>配置活动</span>
</p>
<div>基本配置</div>
<Form
ref="formValidate"
:model="formValidate"
:rules="ruleValidate"
:label-width="80"
>
<Form ref="formValidate"
:model="formValidate"
:rules="ruleValidate"
:label-width="80">
<Row>
<i-col style="text-align: left;" span="8">
<FormItem label="" prop="uploadImg">
<Upload
ref="upload"
:show-upload-list="false"
:on-success="uploadImgSuccess"
:format="['jpg', 'jpeg', 'png']"
:max-size="2048"
:before-upload="handleBeforeUpload"
multiple
type="drag"
action=""
style="display: inline-block;"
>
<i-col style="text-align: left;"
span="8">
<FormItem label=""
prop="logo">
<Upload ref="upload"
:show-upload-list="false"
:on-success="uploadImgSuccess"
:format="['jpg', 'jpeg', 'png']"
:max-size="2048"
:before-upload="handleBeforeUpload"
multiple
type="drag"
action=""
style="display: inline-block;">
<div style="width: 200px;height:200px;line-height: 200px;">
<span v-if="!formValidate.logo"></span>
<img
v-if="formValidate.logo"
:src="`/kiisoo-ic` + formValidate.logo"
alt=""
style="width: 100%; height: auto"
/>
<img v-if="formValidate.logo"
:src="`/kiisoo-ic` + formValidate.logo"
alt=""
style="width: 100%; height: auto" />
</div>
</Upload>
</FormItem>
</i-col>
<i-col span="15" offset="1">
<FormItem label="活动名称" prop="activityName">
<i-input
type="text"
v-model="formValidate.name"
placeholder="请输入活动名称"
></i-input>
<i-col span="15"
offset="1">
<FormItem label="活动名称"
prop="name">
<i-input type="text"
v-model="formValidate.name"
placeholder="请输入活动名称"></i-input>
</FormItem>
<Form-item label="活动描述" prop="activityDsc">
<i-input
v-model="formValidate.description"
type="textarea"
:autosize="{ minRows: 3 }"
placeholder="请输入活动描述"
></i-input>
<Form-item label="活动描述"
prop="description">
<i-input v-model="formValidate.description"
type="textarea"
: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 label="APPID"
prop="appId">
<i-input type="text"
v-model="formValidate.appId"
placeholder="请输入appid"></i-input>
</FormItem>
<FormItem label="URI" prop="uri">
<i-input
type="text"
v-model="formValidate.uri"
placeholder="请输入URI"
></i-input>
<FormItem label="URI"
prop="uri">
<i-input type="text"
v-model="formValidate.uri"
placeholder="请输入URI"></i-input>
</FormItem>
</i-col>
</Row>
</Form>
<div class="topic">活动类型</div>
<Row
:gutter="10"
class="inputItem"
v-for="(item, index) in formValidate.params"
:key="index"
>
<Row :gutter="10"
class="inputItem"
v-for="(item, index) in formValidate.params"
:key="index">
<i-col :span="2"> 类型{{ index + 1 }} </i-col>
<i-col :span="9">
<i-input
class="inputClass"
type="text"
v-model="item.name"
placeholder="参数名称"
></i-input>
<i-input class="inputClass"
type="text"
v-model="item.name"
placeholder="参数名称"></i-input>
</i-col>
<i-col :span="9">
<i-input
class="inputClass"
type="text"
style="margin-left: 20px"
v-model="item.key"
placeholder="默认值"
></i-input>
<i-input class="inputClass"
type="text"
style="margin-left: 20px"
v-model="item.key"
placeholder="默认值"></i-input>
</i-col>
<i-col :span="4">
<Button
style="margin-left: 20px"
type="error"
@click="delActivityInput(index)"
>删除</Button
>
<Button style="margin-left: 20px"
type="error"
@click="delActivityInput(index)">删除</Button>
</i-col>
</Row>
<Button style="margin-top: 10px" type="primary" @click="addActivityInput"
>+添加活动类型</Button
>
<Button style="margin-top: 10px"
type="primary"
@click="addActivityInput">+添加活动类型</Button>
</Modal>
</template>
<script>
@ -121,7 +104,7 @@ import ActivityManager from "../../services/ActivityManager/ActivityManager";
import axios from "axios";
export default {
name: "addActivity",
data() {
data () {
return {
dispalyModal: false,
currentStep: 0,
@ -149,7 +132,7 @@ export default {
id: String,
},
watch: {
addActivityModal(val) {
addActivityModal (val) {
console.log(111, val);
this.dispalyModal = val;
if (val === true && this.id) {
@ -178,9 +161,9 @@ export default {
}
},
},
mounted() {},
mounted () { },
methods: {
addActivityInput() {
addActivityInput () {
let params = [...this.formValidate.params];
params.push({
defaultVal: "",
@ -196,7 +179,7 @@ export default {
this.$set(this.formValidate, "params", params);
this.$forceUpdate();
},
delActivityInput(index) {
delActivityInput (index) {
if (this.formValidate.params.length <= 1) {
this.$Message.error("至少需要填写一个活动类型!");
return;
@ -204,22 +187,22 @@ export default {
this.formValidate.params.splice(index, 1);
this.$forceUpdate();
},
cancel() {
cancel () {
this.$emit("dispalyAddActivityModal", false, false);
},
getActivityData() {
getActivityData () {
let that = this;
let data = {
id: that.id,
};
ActivityManager.getActivityInfo(data, function(data) {
ActivityManager.getActivityInfo(data, function (data) {
that.formValidate = data.data.results;
});
},
uploadImgSuccess(res, file) {
uploadImgSuccess (res, file) {
this.imageName = file.name;
},
handleBeforeUpload(res) {
handleBeforeUpload (res) {
const me = this;
let data = new FormData();
data.append("file", res);
@ -230,7 +213,7 @@ export default {
headers: {
"Content-Type": "multipart/form-data",
},
}).then(function(res) {
}).then(function (res) {
if (res.data.success) {
// me.formValidate.logo = res.data.results;
me.$set(me.formValidate, "logo", res.data.results);
@ -239,7 +222,7 @@ export default {
});
return false;
},
save() {
save () {
let that = this;
if (that.formValidate.params.length <= 0) {
that.$Message.error("至少需要填写一个活动类型!");
@ -260,7 +243,7 @@ export default {
if (valid) {
// param = JSON.stringify(param)
let data = { ...that.formValidate, isGetActivityInfo: true };
ActivityManager.addOreditActivity(data, function(data) {
ActivityManager.addOreditActivity(data, function (data) {
that.addActivityModal = false;
that.formValidate = {};
that.$emit("dispalyAddActivityModal", false, true);

@ -1,35 +1,40 @@
<template>
<div style="padding: 0 40px;">
<div class="selectClass">
<Checkbox
:indeterminate="indeterminate"
:value="allSelect"
@click.prevent.native="handleCheckAll"
>&nbsp;&nbsp;&nbsp;全选</Checkbox
>
<i-input
icon="search"
@on-change="doSearch"
placeholder="请输入店铺名称"
style="width: 250px"
></i-input>
<Checkbox :indeterminate="indeterminate"
:value="allSelect"
@click.prevent.native="handleCheckAll">&nbsp;&nbsp;&nbsp;全选</Checkbox>
<i-input icon="search"
@on-change="doSearch"
placeholder="请输入店铺名称"
style="width: 250px"></i-input>
</div>
<div class="companyTable">
<div class="companyListClass">
<Row :gutter="10">
<div v-if="loading" style="padding: 50px 0" class="loading">
<div v-if="loading"
style="padding: 50px 0"
class="loading">
<Spin fix>加载中...</Spin>
</div>
<CheckboxGroup size="large" @on-change="onChange" v-model="isSelect">
<i-col span="8" :key="index" v-for="(item, index) in shopList">
<Checkbox size="large" :label="item.value" border>
<CheckboxGroup size="large"
@on-change="onChange"
v-model="isSelect">
<i-col span="8"
:key="index"
v-for="(item, index) in shopList">
<Checkbox size="large"
:label="item.value"
border>
<span>{{ item.label }}</span>
</Checkbox>
</i-col>
</CheckboxGroup>
</Row>
</div>
<Spin size="large" fix v-if="loading"></Spin>
<Spin size="large"
fix
v-if="loading"></Spin>
</div>
</div>
</template>
@ -38,7 +43,7 @@ import ActivityManager from "../../services/ActivityManager/ActivityManager";
import store from "../../store/index";
export default {
name: "useActivityStepThree",
data() {
data () {
return {
indeterminate: false,
allSelect: false,
@ -52,7 +57,7 @@ export default {
orginShopList: [],
};
},
mounted() {
mounted () {
this.getShopInfo();
let _this = this;
if (store.getters.useData.stores) {
@ -62,15 +67,15 @@ export default {
}
},
computed: {
userData() {
userData () {
return store.getters.userData || {};
},
store() {
store () {
return store.getters.store || [];
},
},
methods: {
handleCheckAll() {
handleCheckAll () {
let _this = this;
if (this.indeterminate) {
this.allSelect = false;
@ -98,7 +103,7 @@ export default {
}
});
},
doSearch(e) {
doSearch (e) {
const keyword = e.target.value;
let that = this;
that.shopList = [];
@ -112,7 +117,7 @@ export default {
that.shopList = that.orginShopList;
}
},
onChange(data) {
onChange (data) {
let _this = this;
if (data.length === this.isSelect.length) {
this.indeterminate = false;
@ -134,7 +139,7 @@ export default {
}
});
},
getShopInfo() {
getShopInfo () {
let that = this;
let companyIds = [];
this.companys.forEach((item) => {
@ -145,9 +150,12 @@ export default {
customerIds: companyIds.join(","),
};
that.loading = true;
ActivityManager.getShop(data, function(data) {
ActivityManager.getShop(data, function (data) {
that.shopList = [];
that.shopListData = data.data.results;
if (store.getters.useData.stores.length == that.shopListData.length) {
that.allSelect = true;
}
data.data.results.forEach((element) => {
that.isSelect.push("");
that.selectValue.push("");
@ -160,7 +168,7 @@ export default {
that.loading = false;
});
},
isSelectAllCompany() {
isSelectAllCompany () {
if (this.allSelect === true) {
this.isSelect.forEach((element, index) => {
this.isSelect.splice(index, 1, true);
@ -177,7 +185,7 @@ export default {
});
}
},
selectTag(value, index) {
selectTag (value, index) {
this.isSelect.splice(index, 1, !this.isSelect[index]);
if (this.isSelect[index] === true) {
this.selectValue.splice(index, 1, value.value);

@ -1,39 +1,40 @@
<template>
<div style="padding: 0 40px;">
<div class="selectClass">
<Checkbox
:indeterminate="indeterminate"
:value="allSelect"
@click.prevent.native="handleCheckAll"
>&nbsp;&nbsp;&nbsp;全选</Checkbox
>
<i-input
icon="search"
@on-change="doSearch"
placeholder="请输入零售公司名称"
style="width: 250px"
></i-input>
<Checkbox :indeterminate="indeterminate"
:value="allSelect"
@click.prevent.native="handleCheckAll">&nbsp;&nbsp;&nbsp;全选</Checkbox>
<i-input icon="search"
@on-change="doSearch"
placeholder="请输入零售公司名称"
style="width: 250px"></i-input>
</div>
<div class="companyTable">
<div class="companyListClass">
<Row :gutter="10">
<div v-show="loading" style="padding: 50px 0" class="loading">
<div v-show="loading"
style="padding: 50px 0"
class="loading">
<Spin fix>加载中...</Spin>
</div>
<CheckboxGroup
size="large"
@on-change="onChange"
v-model="checkCompanys"
>
<i-col span="8" :key="index" v-for="(item, index) in companyList">
<Checkbox size="large" :label="item.value" border>
<CheckboxGroup size="large"
@on-change="onChange"
v-model="checkCompanys">
<i-col span="8"
:key="index"
v-for="(item, index) in companyList">
<Checkbox size="large"
:label="item.value"
border>
<span>{{ item.label }}</span>
</Checkbox>
</i-col>
</CheckboxGroup>
</Row>
</div>
<Spin size="large" fix v-if="loading"></Spin>
<Spin size="large"
fix
v-if="loading"></Spin>
</div>
</div>
</template>
@ -42,7 +43,7 @@ import ActivityManager from "../../services/ActivityManager/ActivityManager";
import store from "../../store/index";
export default {
name: "useActivityStepTwo",
data() {
data () {
return {
indeterminate: false,
allSelect: false,
@ -53,7 +54,7 @@ export default {
loading: false,
};
},
mounted() {
mounted () {
this.getCompanyInfo();
let _this = this;
console.log(111, store.getters.useData);
@ -70,7 +71,7 @@ export default {
}
},
methods: {
onChange(data) {
onChange (data) {
let _this = this;
if (data.length === this.companyList.length) {
this.indeterminate = false;
@ -93,7 +94,7 @@ export default {
}
});
},
doSearch(e) {
doSearch (e) {
const keyword = e.target.value;
let that = this;
that.companyList = [];
@ -107,15 +108,18 @@ export default {
that.companyList = that.orginCompanyList;
}
},
getCompanyInfo() {
getCompanyInfo () {
let that = this;
let data = {
userId: JSON.parse(sessionStorage.getItem("loginInfo")).userId,
};
this.loading = true;
ActivityManager.getCompany(data, function(data) {
ActivityManager.getCompany(data, function (data) {
that.companyList = [];
that.companyListdata = data.data.results;
if (store.getters.useData.company.length == that.companyListdata.length) {
that.allSelect = true;
}
data.data.results.forEach((element) => {
that.companyList.push({
label: element.name,
@ -126,7 +130,8 @@ export default {
that.loading = false;
});
},
handleCheckAll() {
handleCheckAll () {
let _this = this;
if (this.indeterminate) {
this.allSelect = false;
} else {
@ -146,7 +151,7 @@ export default {
this.checkCompanys.forEach((item) => {
const c = _this._.find(
_this.companyListdata,
(shop) => shop.id == item
(company) => company.id == item
);
if (c) {
store.getters.useData.company.push(c);

@ -4,7 +4,7 @@
* @date 2020/05/19
*/
import http from "../CommonHttp";
import http from '../CommonHttp'
/**
* 活动池列表
@ -13,69 +13,76 @@ import http from "../CommonHttp";
* @returns {Promise<any>} 返回Promise对象
*/
export function getActivityList(params, call) {
return http.get("/activity/schedule/list/all", params).then(call);
return http.get('/activity/schedule/list/all', params).then(call)
}
/**
* 新增或修改活动池
*/
export function addOreditActivity(params, call) {
return http.post("/activity/schedule/save", params).then(call);
return http.post('/activity/schedule/save', params).then(call)
}
/**
* 获取活动池详情
*/
export function getActivityInfo(params, call) {
return http.get("/activity/schedule/detail", params).then(call);
return http.get('/activity/schedule/detail', params).then(call)
}
/**
* 上传图片
*/
export function uploadImg(params, call) {
return http.post("/upload", params).then(call);
return http.post('/upload', params).then(call)
}
/**
* 获取零售公司
*/
export function getCompany(params, call) {
return http.get("/retail/company", params).then(call);
return http.get('/retail/company', params).then(call)
}
/**
* 获取店铺
*/
export function getShop(params, call) {
return http.post("poi/store/user/shopDTO", params).then(call);
return http.post('poi/store/user/shopDTO', params).then(call)
}
/**
* 根据活动池新建/编辑实例
*/
export function saveActivityData(params, call) {
return http.post("activity/instance/save", params).then(call);
return http.post('activity/instance/save', params).then(call)
}
/**
* 活动实例分页列表
*/
export function getActivityTableData(params, call) {
return http.get("activity/instance/list", params).then(call);
return http.get('activity/instance/list', params).then(call)
}
/**
* 活动实例终止
*/
export function instanceTerminate(params, call) {
return http.post("activity/instance/terminate", params).then(call);
return http.post('activity/instance/terminate', params).then(call)
}
/**
* 活动实例详情
*/
export function instanceDetail(params, call) {
return http.post("activity/instance/detail", params).then(call);
return http.post('activity/instance/detail', params).then(call)
}
export function activityCodeList(params, call) {
return http.get('activity/instance/StoreCode', params).then(call)
}
export function guideCodeList(params, call) {
return http.get('activity/instance/GuideCode', params).then(call)
}
export default {
getActivityList,
@ -88,4 +95,6 @@ export default {
saveActivityData,
instanceTerminate,
instanceDetail,
};
activityCodeList,
guideCodeList,
}

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save