feature_0521
郑皇 6 years ago
parent bb643cc2e1
commit 39370ea641

@ -1,29 +1,36 @@
<template>
<div class="div-page">
<Spin size="large" fix v-if="loading"></Spin>
<template>
<Row class="search-row">
<i-col span="8">
<p class=""
style="font-size: 16px;line-height: 22px;margin-top: 10px;margin-left: 20px;margin-right: 20px;">
招募令
</p>
<p class=""
style="font-size: 13px;line-height: 32px;margin-left: 20px;margin-right: 20px;">
便于门店进行推广员招募
</p>
<p
class
style="font-size: 16px;line-height: 22px;margin-top: 10px;margin-left: 20px;margin-right: 20px;"
>招募令</p>
<p
class
style="font-size: 13px;line-height: 32px;margin-left: 20px;margin-right: 20px;"
>便于门店进行推广员招募</p>
</i-col>
<i-col span="8">
<span class="">使用范围{{ recruit.organizations.length || 0 }}家零售公司{{
<span class>
使用范围{{ recruit.organizations.length || 0 }}家零售公司{{
recruit.stores.length || 0
}}家店铺</span>
<span class=""
}}家店铺
</span>
<span
class
style="border: 0px; color: rgb(52, 150, 235); margin-left: 15px; cursor: pointer;"
@click="showStores">修改</span>
@click="showStores"
>修改</span>
</i-col>
<i-col span="8">
<i-switch size="large"
<i-switch
size="large"
v-model="recruit.status !== undefined && recruit.status == 2"
@on-change="witchChange">
@on-change="witchChange"
>
<span slot="open">开启</span>
<span slot="close">关闭</span>
</i-switch>
@ -32,12 +39,11 @@
<div>
<p style="margin:10px 0 10px -480px;text-align:center">招募海报</p>
<div style="text-align: center;">
<img style="width:500px;height:500px"
:src="recruit.scheduleVO.logo"
alt="" />
<img style="width:500px;height:500px" :src="recruit.scheduleVO.logo" alt />
</div>
<!-- <div style="margin-top:20px;text-align: center;"><Button ghost type="primary">上传</Button></div> -->
<Upload v-show="showUpload"
<Upload
v-show="showUpload"
ref="upload"
:show-upload-list="false"
:on-success="uploadImgSuccess"
@ -45,42 +51,35 @@
:max-size="2048"
:before-upload="handleBeforeUpload"
multiple
action=""
style="padding-top:10px;text-align: center;">
<Button ghost
type="primary">上传</Button>
action
style="padding-top:10px;text-align: center;"
>
<Button ghost type="primary">上传</Button>
</Upload>
<div style="margin-top:20px;text-align: center;">
<Button type="primary"
size="large"
@click="onEdit"
style="margin-right:10px">{{ btnStr }}</Button>
<Button v-show="showUpload"
type="text"
size="large"
@click="onCancel">取消</Button>
<Button type="primary" size="large" @click="onEdit" style="margin-right:10px">{{ btnStr }}</Button>
<Button v-show="showUpload" type="text" size="large" @click="onCancel"></Button>
</div>
</div>
</template>
<selectStoreStep @doShow="doShow"
:schedule="recruit"
:show="showStoreCheck"></selectStoreStep>
<selectStoreStep @doShow="doShow" :schedule="recruit" :show="showStoreCheck"></selectStoreStep>
</div>
</template>
<script>
import selectStoreStep from '../activity/selectStoreStep'
import store from '../../store'
import bulletinService from '../../services/recruit/Bulletin'
import http from '../../services/CommonHttp'
import axios from 'axios'
import selectStoreStep from "../activity/selectStoreStep";
import store from "../../store";
import bulletinService from "../../services/recruit/Bulletin";
import http from "../../services/CommonHttp";
import axios from "axios";
export default {
components: {
selectStoreStep,
selectStoreStep
},
data() {
return {
showStoreCheck: false,
loading: false,
recruit: {
id: null,
status: 0,
@ -89,7 +88,7 @@ export default {
id: null,
name: "招募令",
categoryId: 4,
categoryCode: 'recruit',
categoryCode: "recruit",
logo: "",
description: "",
appId: "",
@ -97,152 +96,169 @@ export default {
title: "招募令",
mediaId: "",
uri: "",
params: [],
params: []
},
categoryCode: 'recruit',
categoryCode: "recruit",
name: "招募令",
beginTime: '2020-06-03',
endTime: '2020-06-22',
content: '招募令',
beginTime: "2020-06-03",
endTime: "2020-06-22",
content: "招募令",
params: [],
organizations: [],
stores: [],
stores: []
},
showUpload: false,
btnStr: '编辑',
imgUrl: '',
btnStr: "编辑",
imgUrl: "",
onWitch: false,
uploadUrl: '',
oldImg: '',
}
uploadUrl: "",
oldImg: ""
};
},
mounted: function() {},
created() {
this.initData()
this.initData();
},
inject: ['reload'],
inject: ["reload"],
methods: {
witchChange(status) {
if (status) {
this.recruit.status = 2
this.recruit.status = 2;
this.recruit.scheduleVO.status = 1;
this.recruit.scheduleVO.params.forEach((item) => {
item.status = 1
})
this.recruit.params.forEach((item) => {
item.status = 1
})
this.recruit.stores.forEach((item) => {
item.status = 1
})
this.recruit.scheduleVO.params.forEach(item => {
item.status = 1;
});
this.recruit.params.forEach(item => {
item.status = 1;
});
this.recruit.stores.forEach(item => {
item.status = 1;
});
} else {
this.recruit.status = 3
this.recruit.status = 3;
this.recruit.scheduleVO.status = 2;
this.recruit.scheduleVO.params.forEach((item) => {
item.status = 2
})
this.recruit.params.forEach((item) => {
item.status = 2
})
this.recruit.stores.forEach((item) => {
item.status = 2
})
this.recruit.scheduleVO.params.forEach(item => {
item.status = 2;
});
this.recruit.params.forEach(item => {
item.status = 2;
});
this.recruit.stores.forEach(item => {
item.status = 2;
});
}
this.save();
},
initData() {
let that = this
let that = this;
bulletinService.getDetail(
{},
function(data) {
if (data.data.results !== null) {
if (data.data.results.scheduleVO.params.length > 0) {
that.imgUrl = data.data.results.scheduleVO.params[0].defaultVal
that.oldImg = data.data.results.scheduleVO.params[0].defaultVal
that.imgUrl = data.data.results.scheduleVO.params[0].defaultVal;
that.oldImg = data.data.results.scheduleVO.params[0].defaultVal;
}
that.recruit = { ...that.recruit, ...data.data.results }
that.recruit = { ...that.recruit, ...data.data.results };
}
},
function(err) {
that.$Message.error('网络异常,请重试')
that.setNoLoading()
that.$Message.error("网络异常,请重试");
that.setNoLoading();
}
)
);
},
doShow() {
this.showStoreCheck = false
this.showStoreCheck = false;
let _this = this;
this.recruit = { ...this.recruit, ...store.getters.useData }
this.recruit.organizations = this._.filter(store.getters.useData.company, item => {
return _this._.find(store.getters.useData.stores, store => store.parentId == item.id) !== undefined
})
store.commit('ReSET_useData');
this.$forceUpdate()
this.recruit = { ...this.recruit, ...store.getters.useData };
this.recruit.organizations = this._.filter(
store.getters.useData.company,
item => {
return (
_this._.find(
store.getters.useData.stores,
store => store.parentId == item.id
) !== undefined
);
}
);
store.commit("ReSET_useData");
this.$forceUpdate();
this.save();
},
showStores() {
this.recruit.company = [...this.recruit.organizations]
store.commit('SET_useData', {
this.recruit.company = [...this.recruit.organizations];
store.commit("SET_useData", {
...store.getters.useData,
...this.recruit
})
});
console.log({
...store.getters.useData,
...this.recruit,
})
this.showStoreCheck = true
...this.recruit
});
this.showStoreCheck = true;
},
onEdit() {
if (this.btnStr == '编辑') {
this.showUpload = true
this.btnStr = '保存'
if (this.btnStr == "编辑") {
this.showUpload = true;
this.btnStr = "保存";
} else {
let _this = this
let param = { ...this.recruit }
this.save();
}
},
save() {
let _this = this;
this.loading = true;
let param = { ...this.recruit };
if (param.stores.length <= 0) {
_this.$Message.error('请至少选择一个店铺')
_this.loading = false
return false
_this.$Message.error("请至少选择一个店铺");
_this.loading = false;
return false;
}
param.isGetActivityInfo = true
param.isGetActivityInfo = true;
bulletinService.dosave(
param,
function(data) {
console.log(data)
_this.$Message.info('保存成功')
_this.btnStr = '编辑'
_this.showUpload = false
console.log(data);
_this.$Message.info("保存成功");
_this.btnStr = "编辑";
_this.showUpload = false;
_this.loading = false;
},
function(err) {
_this.$Message.error('网络异常,请重试')
_this.setNoLoading()
}
)
_this.$Message.error("网络异常,请重试");
_this.setNoLoading();
_this.loading = false;
}
);
},
onCancel() {
this.showUpload = false
this.imgUrl = this.oldImg
this.btnStr = '编辑'
this.showUpload = false;
this.imgUrl = this.oldImg;
this.btnStr = "编辑";
},
uploadImgSuccess(res, file) {
this.imageName = file.name
this.imageName = file.name;
},
handleBeforeUpload(res) {
const _this = this
let data = new FormData()
data.append('file', res)
const _this = this;
let data = new FormData();
data.append("file", res);
axios({
method: 'post',
url: '/upload',
method: "post",
url: "/upload",
data: data,
headers: {
'Content-Type': 'multipart/form-data',
},
"Content-Type": "multipart/form-data"
}
}).then(function(res) {
if (res.data.success) {
console.log(res)
_this.uploadUrl = res.data.results.localPath
_this.imgUrl = res.data.results.localPath
_this.recruit.params = [{
console.log(res);
_this.uploadUrl = res.data.results.localPath;
_this.imgUrl = res.data.results.localPath;
_this.recruit.params = [
{
attr: 2,
defaultVal: res.data.results.localPath,
description: "",
@ -252,15 +268,16 @@ export default {
limitUpper: "",
name: "recruitImage",
type: 1
}]
_this.recruit.scheduleVO.params = _this.recruit.params
_this.recruit.scheduleVO.logo = res.data.results.localPath
}
})
return false
},
},
];
_this.recruit.scheduleVO.params = _this.recruit.params;
_this.recruit.scheduleVO.logo = res.data.results.localPath;
}
});
return false;
}
}
};
</script>
<style scoped></style>

@ -2,117 +2,92 @@
<div class>
<Row>
<i-col :span="12">
<Form ref="welcomeForm"
:model="welcome"
:rules="welcomeRules">
<FormItem label="欢迎语内容"
prop="content">
<i-input v-model="welcome.content"
<Form ref="welcomeForm" :model="welcome" :rules="welcomeRules">
<FormItem label="欢迎语内容" prop="content">
<i-input
v-model="welcome.content"
type="textarea"
style="height: 220px"
:autosize="{ minRows: 10, maxRows: 10 }"
placeholder="请输入欢迎语内容,最多100个字"></i-input>
placeholder="请输入欢迎语内容,最多100个字"
></i-input>
</FormItem>
<Row style="margin-bottom: 10px"
<Row
style="margin-bottom: 10px"
:gutter="10"
class="inputItem"
v-for="(item, index) in welcome.params"
:key="index">
:key="index"
>
<div v-if="item.type == 3">
<i-col style="line-height: 32px"
:span="2">标题 {{ index + 1 }}</i-col>
<i-col style="line-height: 32px" :span="2">标题 {{ index + 1 }}</i-col>
<i-col :span="3">
<i-input class="inputClass"
type="text"
disabled
v-model="item.key"></i-input>
<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 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 style="line-height: 32px"
:span="2">URI {{ index + 1 }}</i-col>
<i-col style="line-height: 32px" :span="2">URI {{ index + 1 }}</i-col>
<i-col :span="3">
<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 style="line-height: 32px"
:span="2">MediaId{{ index + 1 }}</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-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 style="line-height: 32px" :span="4">标题 {{ index + 1 }}</i-col>
<i-col :span="6">
<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 style="line-height: 32px"
:span="4">URL {{ index + 1 }}</i-col>
<i-col style="line-height: 32px" :span="4">URL {{ index + 1 }}</i-col>
<i-col :span="6">
<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>
</div>
<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>
<i-col :span="16">
<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>
</div>
<i-col :span="4">
<Button type="error"
@click="delActivityInput(index)">删除</Button>
<Button type="error" @click="delActivityInput(index)"></Button>
</i-col>
</Row>
<FormItem v-if="paramFilter()">
<Button type="text"
@click="() => (showMessageTypes = true)"
icon="md-add">添加图片/网页/小程序消息</Button>
<Button type="text" @click="() => (showMessageTypes = true)" icon="md-add">添加图片/网页/小程序消息</Button>
</FormItem>
<FormItem label="配置范围: ">
<span @click="showStores"
v-if="welcome.stores.length > 0">{{ welcome.stores[0].name }}{{ welcome.stores.length }}家店铺</span>
<Button type="text"
<span
@click="showStores"
v-if="welcome.stores.length > 0"
>{{ welcome.stores[0].name }}{{ welcome.stores.length }}家店铺</span>
<Button
type="text"
v-if="welcome.stores.length <= 0"
@click="showStores"
icon="md-add">全部店铺</Button>
icon="md-add"
>全部店铺</Button>
</FormItem>
<FormItem>
<Button type="primary"
<Button
type="primary"
:loading="loading"
long
@click="submit">{{loading ? "保存中" : "确定"}}</Button>
@click="submit"
>{{loading ? "保存中" : "确定"}}</Button>
</FormItem>
</Form>
</i-col>
</Row>
<Modal v-model="showMessageTypes"
title="添加图片/网页/小程序消息"
:footer-hide="true">
<Modal v-model="showMessageTypes" title="添加图片/网页/小程序消息" :footer-hide="true">
<Row :gutter="24">
<i-col :span="8">
<Upload ref="upload"
<Upload
ref="upload"
:show-upload-list="false"
:on-success="uploadImgSuccess"
:format="['jpg', 'jpeg', 'png']"
@ -122,77 +97,49 @@
multiple
type="drag"
action
style="width: 100%;">
style="width: 100%;"
>
<div style="width: 100%;">
<Button long
type="primary">{{imageUploading ? "上传中..." : "图片"}}</Button>
<Button long type="primary">{{imageUploading ? "上传中..." : "图片"}}</Button>
</div>
</Upload>
</i-col>
<i-col :span="8">
<Button long
@click="doShowWeb"
type="primary">网页</Button>
<Button long @click="doShowWeb" type="primary">网页</Button>
</i-col>
<i-col :span="8">
<Button long
@click="doShowMini"
type="primary">小程序</Button>
<Button long @click="doShowMini" type="primary">小程序</Button>
</i-col>
</Row>
</Modal>
<Modal v-model="showWeb"
title="添加网页消息"
:loading="true">
<Form ref="webForm"
:model="webForm"
:rules="webFormRules">
<FormItem label="标题"
prop="title">
<i-input v-model="webForm.title"
type="text"
placeholder="请输入网页标题"></i-input>
<Modal v-model="showWeb" title="添加网页消息" :loading="true">
<Form ref="webForm" :model="webForm" :rules="webFormRules">
<FormItem label="标题" prop="title">
<i-input v-model="webForm.title" type="text" placeholder="请输入网页标题"></i-input>
</FormItem>
<FormItem label="添加网页消息"
prop="url">
<i-input v-model="webForm.url"
type="text"
placeholder="以http或https开头"></i-input>
<FormItem label="添加网页消息" prop="url">
<i-input v-model="webForm.url" type="text" placeholder="以http或https开头"></i-input>
</FormItem>
</Form>
<div slot="footer">
<Button type="primary"
@click="cancelWeb">取消</Button>
<Button type="primary"
@click="okWeb">确定</Button>
<Button type="primary" @click="cancelWeb"></Button>
<Button type="primary" @click="okWeb"></Button>
</div>
</Modal>
<Modal v-model="showMini"
title="添加小程序消息"
:loading="true">
<Form ref="miniForm"
:model="miniForm"
:rules="miniFormRules">
<FormItem label="标题"
prop="key">
<i-input v-model="miniForm.key"
type="text"
placeholder="请输入标题"></i-input>
<Modal v-model="showMini" title="添加小程序消息" :loading="true">
<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">
<i-input v-model="miniForm.appid"
type="text"
placeholder="请输入appid"></i-input>
<FormItem label="APPID" prop="appid">
<i-input v-model="miniForm.appid" type="text" placeholder="请输入appid"></i-input>
</FormItem>
<FormItem label="URI"
prop="uri">
<i-input v-model="miniForm.uri"
type="text"
placeholder="请输入URl"></i-input>
<FormItem label="URI" prop="uri">
<i-input v-model="miniForm.uri" type="text" placeholder="请输入URl"></i-input>
</FormItem>
<FormItem label="封面图">
<Upload ref="upload"
<Upload
ref="upload"
:show-upload-list="false"
:on-success="miniUploadImgSuccess"
:format="['jpg', 'jpeg', 'png']"
@ -201,29 +148,32 @@
multiple
type="drag"
action
style="display: inline-block;">
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"
<img
v-if="miniForm.limitUpper"
:src="miniForm.limitUpper"
alt
style="width: 100%; height: auto" />
style="width: 100%; height: auto"
/>
</div>
</Upload>
</FormItem>
</Form>
<div slot="footer">
<Button type="primary"
@click="cancelMini">取消</Button>
<Button type="primary"
@click="okMini">确定</Button>
<Button type="primary" @click="cancelMini"></Button>
<Button type="primary" @click="okMini"></Button>
</div>
</Modal>
<selectStoreStep :title="'配置范围'"
<selectStoreStep
:title="'配置范围'"
:isModify="id>0"
@doShow="doShow"
:schedule="welcome"
:show="showStoreCheck"></selectStoreStep>
:show="showStoreCheck"
></selectStoreStep>
</div>
</template>
@ -321,6 +271,7 @@ export default {
doShow() {
this.showStoreCheck = false;
this.welcome = store.getters.useData;
this.submit();
},
onExceededSize() {
console.log("失败");

@ -30,7 +30,7 @@ module.exports = {
/* 使用代理 后台接口路径 */
// proxy: 'http://192.168.1.123:8312/'
// proxy: 'http://192.168.31.177:8312/'
proxy: "http://111.231.218.44:8080/",
proxy: "http://localhost:8080/",
// proxy: 'http://jdxdev.vipgz4.idcfengye.com/'
},
};

Loading…
Cancel
Save