活动地图

master
lion 4 years ago
parent 46169e5f25
commit 07c135f75e

@ -7,6 +7,8 @@
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= webpackConfig.name %></title> <title><%= webpackConfig.name %></title>
<script charset="utf-8" src="https://map.qq.com/api/gljs?v=2.exp&key=4VBBZ-HAA3X-QKI46-7GAL2-LQEOT-BEBKN"></script> <script charset="utf-8" src="https://map.qq.com/api/gljs?v=2.exp&key=4VBBZ-HAA3X-QKI46-7GAL2-LQEOT-BEBKN"></script>
<script charset="utf-8" src="http://map.qq.com/api/js?v=2.exp&key=4VBBZ-HAA3X-QKI46-7GAL2-LQEOT-BEBKN"></script>
<script src="http://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>
</head> </head>
<body> <body>
<noscript> <noscript>

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@ -14,6 +14,7 @@
</slot> </slot>
</LxHeader> </LxHeader>
</div> </div>
<div class="table-tree"> <div class="table-tree">
<el-table :data="tableData" :height="tableHeight" style="width: 100%"> <el-table :data="tableData" :height="tableHeight" style="width: 100%">
<el-table-column type="index" width="50" label="序号" align="center"> </el-table-column> <el-table-column type="index" width="50" label="序号" align="center"> </el-table-column>
@ -25,23 +26,22 @@
style="margin-left: 10px;">订单</Button> style="margin-left: 10px;">订单</Button>
<Button ghost size="small" @click="edit(scope.row)" type="primary" <Button ghost size="small" @click="edit(scope.row)" type="primary"
style="margin-left: 10px;">编辑</Button> style="margin-left: 10px;">编辑</Button>
<Button ghost size="small" type="error" @click="del(scope.row)" <Button ghost size="small" type="error" @click="del(scope.row)" style="margin-left: 10px;">删除</Button>
style="margin-left: 10px;">删除</Button>
<Button v-if="scope.row['status']==1" ghost size="small" type="info" @click="changeStatus(scope.row)" <Button v-if="scope.row['status']==1" ghost size="small" type="info" @click="changeStatus(scope.row)"
style="margin-left: 10px;">下架</Button> style="margin-left: 10px;">下架</Button>
<Button v-if="scope.row['status']==0" ghost size="small" type="warning" @click="changeStatus(scope.row)" <Button v-if="scope.row['status']==0" ghost size="small" type="warning" @click="changeStatus(scope.row)"
style="margin-left: 10px;">上架</Button> style="margin-left: 10px;">上架</Button>
</div> </div>
<div v-else-if="column.type=='dateRange'"> <div v-else-if="column.type=='dateRange'">
{{scope.row["start_time"]+"至"+scope.row["end_time"]}} {{scope.row["start_time"]+"-"+changeEndTime(scope.row["end_time"])}}
</div> </div>
<div v-else-if="column.type=='status'"> <div v-else-if="column.type=='status'">
<el-tag v-if="scope.row['status']==1" type="" effect="dark" > <el-tag v-if="scope.row['status']==1" type="" effect="dark">
上架中 上架中
</el-tag> </el-tag>
<el-tag v-if="scope.row['status']==0" type="info" effect="dark" > <el-tag v-if="scope.row['status']==0" type="info" effect="dark">
下架 下架
</el-tag> </el-tag>
</div> </div>
<div v-else>{{scope.row[column.field]}}</div> <div v-else>{{scope.row[column.field]}}</div>
@ -60,43 +60,34 @@
<el-row> <el-row>
<el-col :span="10"> <el-col :span="10">
<el-form-item label="活动名称" prop="name"> <el-form-item label="活动名称" prop="name">
<el-input v-model="form.name" placeholder="请填写活动名称" autocomplete="off"></el-input> <el-input v-model="form.name" placeholder="请填写活动名称" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10" :offset="4"> <el-col :span="10" :offset="4">
<el-form-item label="所属区域" prop="area"> <el-form-item label="所属区域" prop="area">
<el-select v-model="form.area" placeholder="请选择所属区域" style="width:100%"> <el-select v-model="form.area" placeholder="请选择所属区域" style="width:100%">
<el-option <el-option v-for="item in parameters.activityArea" :key="item.value" :label="item.value"
v-for="item in parameters.activityArea" :value="item.id">
:key="item.value" </el-option>
:label="item.value" </el-select>
:value="item.id">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10"> <el-col :span="10">
<el-form-item label="关联类型" prop="type"> <el-form-item label="关联类型" prop="type">
<el-select v-model="form.type" placeholder="请选择关联类型" style="width:100%"> <el-select v-model="form.type" placeholder="请选择关联类型" style="width:100%">
<el-option <el-option v-for="item in parameters.activityType" :key="item.value" :label="item.value"
v-for="item in parameters.activityType" :value="item.id">
:key="item.value" </el-option>
:label="item.value" </el-select>
:value="item.id">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10" :offset="4"> <el-col :span="10" :offset="4">
<el-form-item label="关联内容" prop="con"> <el-form-item label="关联内容" prop="con">
<el-select v-model="form.form" placeholder="请选择关联内容" style="width:100%"> <el-select v-model="form.form" placeholder="请选择关联内容" style="width:100%">
<el-option <el-option v-for="item in parameters.activityCon" :key="item.value" :label="item.value"
v-for="item in parameters.activityCon" :value="item.id">
:key="item.value" </el-option>
:label="item.value" </el-select>
:value="item.id">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="10"> <el-col :span="10">
@ -119,39 +110,33 @@
<el-input v-model="form.latitude" placeholder="请填写地址纬度" autocomplete="off"></el-input> <el-input v-model="form.latitude" placeholder="请填写地址纬度" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="20" :offset="2">
<div id="containers" style="width:100%;height:300px;margin-bottom:20px"></div>
</el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="开始时间" prop="start_time"> <el-form-item label="开始时间" prop="start_time">
<el-date-picker <el-date-picker style="width:100%" v-model="form.start_time" type="datetime"
style="width:100%" value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择活动开始时间" @change="isShowTime">
v-model="form.start_time"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择活动开始时间">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="结束时间" prop="end_time"> <el-form-item label="结束时间" prop="end_time">
<el-time-select <el-time-select style="width:100%" placeholder="结束时间" value-format="HH:mm:ss" v-model="form.end_time"
style="width:100%" :picker-options="{
placeholder="结束时间"
v-model="form.end_time"
:picker-options="{
start: '00:00', start: '00:00',
step: '00:15', step: '00:15',
end: '24:00', end: '24:00',
minTime: showTime
}"> }">
</el-time-select> </el-time-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="预定截止" prop="end_plan"> <el-form-item label="预定截止" prop="end_plan">
<el-date-picker <el-date-picker style="width:100%" v-model="form.end_plan" type="datetime"
style="width:100%" value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择预定截止时间">
v-model="form.end_plan"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择预定截止时间">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -168,85 +153,48 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="目标群体" prop="group"> <el-form-item label="目标群体" prop="group">
<el-select v-model="form.target" placeholder="请选择目标群体" style="width:100%"> <el-select v-model="form.target" placeholder="请选择目标群体" style="width:100%">
<el-option <el-option v-for="item in parameters.activityGroup" :key="item.value" :label="item.value"
v-for="item in parameters.activityGroup" :value="item.id">
:key="item.value" </el-option>
:label="item.value" </el-select>
:value="item.id">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="海报图" prop="cover"> <el-form-item label="海报图" prop="cover">
<el-upload <el-upload action="/api/admin/upload-file" list-type="picture-card" :file-list="coverlist" ref="pictureUpload"
action="/api/admin/upload-file" :limit="1" :auto-upload="true" :data="uploadOther"
list-type="picture-card" :on-success="function(responsose,file,fileList) {return handlesuccess(responsose,file,fileList,1)}">
:file-list="coverlist" <i slot="default" class="el-icon-plus"></i>
ref="pictureUpload" <div slot="file" slot-scope="{file}">
:limit="1" <img class="el-upload-list__item-thumbnail" :src="file.url" alt="">
:auto-upload="true" <span class="el-upload-list__item-actions">
:data="uploadOther" <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
:on-success="function(responsose,file,fileList) {return handlesuccess(responsose,file,fileList,1)}" <i class="el-icon-zoom-in"></i>
>
<i slot="default" class="el-icon-plus"></i>
<div slot="file" slot-scope="{file}">
<img
class="el-upload-list__item-thumbnail"
:src="file.url" alt=""
>
<span class="el-upload-list__item-actions">
<span
class="el-upload-list__item-preview"
@click="handlePictureCardPreview(file)"
>
<i class="el-icon-zoom-in"></i>
</span>
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleRemove(file)"
>
<i class="el-icon-delete"></i>
</span>
</span> </span>
</div> <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)">
<i class="el-icon-delete"></i>
</span>
</span>
</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item label="banner图(最多三张)" prop="banners_list">
<el-upload <el-form-item label="轮播图(最多三张)" prop="banners_list">
action="/api/admin/upload-file" <el-upload action="/api/admin/upload-file" list-type="picture-card" :file-list="bannersList"
list-type="picture-card" ref="pictureUploads" :limit="3" :auto-upload="true" :data="uploadOther"
:file-list="bannersList" :on-success="function(responsose,file,fileList) {return handlesuccess(responsose,file,fileList,2)}">
ref="pictureUploads" <i slot="default" class="el-icon-plus"></i>
:limit="3" <div slot="file" slot-scope="{file}">
:auto-upload="true" <img class="el-upload-list__item-thumbnail" :src="file.url" alt="">
:data="uploadOther" <span class="el-upload-list__item-actions">
:on-success="function(responsose,file,fileList) {return handlesuccess(responsose,file,fileList,2)}" <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
> <i class="el-icon-zoom-in"></i>
<i slot="default" class="el-icon-plus"></i>
<div slot="file" slot-scope="{file}">
<img
class="el-upload-list__item-thumbnail"
:src="file.url" alt=""
>
<span class="el-upload-list__item-actions">
<span
class="el-upload-list__item-preview"
@click="handlePictureCardPreview(file)"
>
<i class="el-icon-zoom-in"></i>
</span>
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleRemove(file)"
>
<i class="el-icon-delete"></i>
</span>
</span> </span>
</div> <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)">
<i class="el-icon-delete"></i>
</span>
</span>
</div>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
@ -290,7 +238,7 @@
return { return {
dialogFormVisible: false, dialogFormVisible: false,
formLabelWidth: "120px", formLabelWidth: "120px",
selectedValue:null, selectedValue: null,
dialogImageUrl: '', dialogImageUrl: '',
dialogVisible: false, dialogVisible: false,
disabled: false, disabled: false,
@ -310,65 +258,66 @@
}, },
parameters: { parameters: {
activityArea: [{ activityArea: [{
id:1, id: 1,
value:"本馆" value: "本馆"
},{ }, {
id:2, id: 2,
value:"馆外" value: "馆外"
}], }],
activityType: [{ activityType: [{
id:1, id: 1,
value:"公益" value: "公益"
},{ }, {
id:2, id: 2,
value:"商业" value: "商业"
}], }],
activityCon: [{ activityCon: [{
id:1, id: 1,
value:"讲座" value: "讲座"
},{ }, {
id:2, id: 2,
value:"主题参观" value: "主题参观"
},{ }, {
id:3, id: 3,
value:"体验活动" value: "体验活动"
}], }],
activityGroup:[{ activityGroup: [{
id:1, id: 1,
value:"幼儿园" value: "幼儿园"
},{ }, {
id:2, id: 2,
value:"小学生" value: "小学生"
},{ }, {
id:3, id: 3,
value:"初中生" value: "初中生"
},{ }, {
id:4, id: 4,
value:"高中生" value: "高中生"
}] }]
}, },
form: { form: {
name:"", name: "",
area:"", area: "",
type:"", type: "",
form:"", form: "",
target:"", target: "",
address:"", address: "",
assemble: "", assemble: "",
cover:"", cover: "",
start_time:"", start_time: "",
end_time:"", end_time: "",
end_plan:"", end_plan: "",
total:0, total: 0,
content:"", content: "",
price:"", price: "",
longitude:"", longitude: "",
latitude:"", latitude: "",
banners_list:[] banners_list: []
}, },
coverlist:[], showTime: "",
bannersList:[], coverlist: [],
bannersList: [],
// fileList:[], // fileList:[],
columns: [{ columns: [{
field: "name", field: "name",
@ -384,22 +333,22 @@
field: "dateRange", field: "dateRange",
title: "活动时间", title: "活动时间",
type: "dateRange", type: "dateRange",
align:"center", align: "center",
width:300 width: 300
}, },
{ {
field: "end_plan", field: "end_plan",
title: "截止时间", title: "截止时间",
type: "string", type: "string",
align:"center", align: "center",
width:160 width: 160
}, },
{ {
field: "status", field: "status",
title: "状态", title: "状态",
type: "status", type: "status",
align:"center", align: "center",
width:120 width: 120
}, },
{ {
field: "操作", field: "操作",
@ -413,20 +362,107 @@
required: true, required: true,
message: '请输入活动名称', message: '请输入活动名称',
trigger: 'blur' trigger: 'blur'
}],
longitude: [{
required: true,
message: '请输入经度',
trigger: 'blur'
}],
latitude: [{
required: true,
message: '请输入纬度',
trigger: 'blur'
}],
start_time: [{
required: true,
message: '请选择开始时间',
trigger: 'blur'
}],
end_time: [{
required: true,
message: '请选择结束时间',
trigger: 'blur'
}],
end_plan: [{
required: true,
message: '请选择截止日期',
trigger: 'blur'
}] }]
}, },
markerLayer: {},
map: {},
imgsrc: "/src/assets/imgs/ditu.png"
} }
}, },
mounted() { mounted() {
},
destroyed() {
},
beforeUpdate() {
}, },
created() { created() {
this.uploadOther.token = getToken(); this.uploadOther.token = getToken();
this.initLoad(); this.initLoad();
this.load(); this.load();
},
watch: {
dialogFormVisible(newVal, oldVal) {
if (newVal == true) {
let that = this;
that.markerLayer = new TMap.MultiMarker({});
that.initMap();
}
}
}, },
methods: { methods: {
initMap() {
//
// if (!!this.map) {
// this.map.destroy();
// }
this.$nextTick(() => {
let that = this;
console.log(window); // window
var center = new window.TMap.LatLng(31.302377, 120.625826)
//
var map = new window.TMap.Map("containers", {
zoom: 18, //
center: center, //
});
console.log(map);
this.map = map;
map.on("click", (e) => {
this.markerLayer.setGeometries([]);
const position = e.latLng;
that.form.longitude = position.lng,
that.form.latitude = position.lat,
this.addImgMarker(position);
});
})
},
addImgMarker(data) {
this.markerLayer = new TMap.MultiMarker({
map: this.map,
//
styles: {
//styleId"myStyle"stylesstyleId
myStyle: new TMap.MarkerStyle({
width: 25, //
height: 35, //
src: this.imgsrc, //
//
anchor: {
x: 16,
y: 32
},
}),
},
});
},
initLoad() { initLoad() {
var that = this; var that = this;
var clientHeight = document.documentElement.clientHeight var clientHeight = document.documentElement.clientHeight
@ -442,7 +478,7 @@
listactive({ listactive({
page: this.paginations.page, page: this.paginations.page,
page_size: this.paginations.page_size, page_size: this.paginations.page_size,
name:this.searchFields.name name: this.searchFields.name
}).then(res => { }).then(res => {
this.tableData = res.data; this.tableData = res.data;
this.paginations.total = res.total this.paginations.total = res.total
@ -453,16 +489,18 @@
info(obj) { info(obj) {
var that = this; var that = this;
get(obj.id).then(res => { get(obj.id).then(res => {
that.coverlist = [];
let result = Object.assign(that.form, res); let result = Object.assign(that.form, res);
that.form = result; that.form = result;
that.form.end_time = result.end_time.substring(11,result.end_time.length); that.showTime = result.start_time.substring(11, result.start_time.length);
that.form.end_time = result.end_time.substring(11, result.end_time.length);
result.cover_upload.coverType = "cover"; result.cover_upload.coverType = "cover";
that.coverlist.push(result.cover_upload); that.coverlist.push(result.cover_upload);
let _files = []; let _files = [];
for (var mod of result.banners) { for (var mod of result.banners) {
let m = Object.assign({}, mod); let m = Object.assign({}, mod);
m.url = mod.upload.url; m.url = mod.upload.url;
m.id= mod.upload.id; m.id = mod.upload.id;
m.coverType = "poster"; m.coverType = "poster";
_files.push(m); _files.push(m);
} }
@ -479,13 +517,13 @@
if (obj) { if (obj) {
var that = this; var that = this;
that.info(obj); that.info(obj);
} else { } else {}
}
this.dialogFormVisible = true; this.dialogFormVisible = true;
}, },
submitForm(formName) { submitForm(formName) {
var that = this; var that = this;
that.form.end_time = that.form.start_time.substring(0,10)+" "+that.form.end_time+":00"; that.form.end_time = that.form.start_time.substring(0, 10) + " " + that.form.end_time;
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
if (that.form.id) { if (that.form.id) {
@ -510,20 +548,20 @@
} }
}); });
}, },
changeStatus(obj){ changeStatus(obj) {
var that = this; var that = this;
if (obj) { if (obj) {
let status = obj.status==0?1:0; let status = obj.status == 0 ? 1 : 0;
let para={ let para = {
id:obj.id, id: obj.id,
status:status status: status
} }
this.$Modal.confirm({ this.$Modal.confirm({
title: '确认要变更状态?', title: '确认要变更状态?',
onOk: () => { onOk: () => {
chanStatus({ chanStatus({
id:para.id, id: para.id,
status:para.status status: para.status
}).then(response => { }).then(response => {
this.$Message.success('操作成功'); this.$Message.success('操作成功');
that.load(); that.load();
@ -540,8 +578,8 @@
}, },
resetForm(formName) { resetForm(formName) {
var that = this; var that = this;
this.coverlist=[]; this.coverlist = [];
this.bannersList=[]; this.bannersList = [];
this.$refs.tiny.setContent(""); this.$refs.tiny.setContent("");
this.$refs[formName].resetFields(); this.$refs[formName].resetFields();
that.dialogFormVisible = false; that.dialogFormVisible = false;
@ -567,11 +605,11 @@
} }
}, },
handleRemove(file) { handleRemove(file) {
if(file.coverType=="cover"){ if (file.coverType == "cover") {
this.coverlist=[]; this.coverlist = [];
}else if(file.coverType=="poster"){ } else if (file.coverType == "poster") {
for(var i = 0; i < this.bannersList.length; i++){ for (var i = 0; i < this.bannersList.length; i++) {
if(this.bannersList[i].url==file.url){ if (this.bannersList[i].url == file.url) {
this.bannersList.splice(i, 1) this.bannersList.splice(i, 1)
} }
} }
@ -582,28 +620,32 @@
this.dialogVisible = true; this.dialogVisible = true;
}, },
handlesuccess(response, file, fileList, index) { handlesuccess(response, file, fileList, index) {
if(index==1){ if (index == 1) {
let listid=""; let listid = "";
for (var m of fileList) { for (var m of fileList) {
m.coverType = "cover"; m.coverType = "cover";
if (m.response) if (m.response)
listid=m.response.id; listid = m.response.id;
else else
listid=m.id; listid = m.id;
} }
this.coverlist=fileList; this.coverlist = fileList;
this.form.cover = listid; this.form.cover = listid;
}else{ } else {
let listUrl = []; let listUrl = [];
for (var m of fileList) { for (var m of fileList) {
m.coverType = "poster"; m.coverType = "poster";
if (m.response) if (m.response)
listUrl.push({"upload_id":m.response.id}); listUrl.push({
"upload_id": m.response.id
});
else else
listUrl.push({"upload_id":m.id}); listUrl.push({
"upload_id": m.id
});
} }
this.bannersList=fileList this.bannersList = fileList
this.form.banners_list = listUrl this.form.banners_list = listUrl
} }
}, },
@ -611,12 +653,22 @@
this.paginations.page = page; this.paginations.page = page;
this.load(); this.load();
}, },
toactive(obj){ toactive(obj) {
if(obj.id){ if (obj.id) {
let url = "/#/order/activeorder?activity_id="+obj.id; let url = "/#/order/activeorder?activity_id=" + obj.id;
window.location.href = url window.location.href = url
} }
}, },
changeEndTime(val) {
if (val) {
val = val.substring(11, val.length);
return val
}
},
isShowTime(val) {
this.showTime = val.substring(11, val.length);
},
} }
}; };
</script> </script>

Loading…
Cancel
Save