Commit 7acf9aac authored by lixy's avatar lixy

旅行:删除、上架、下架、编辑、创建

parent 68bd2c2d
......@@ -146,3 +146,23 @@ export function getAllTourTag(query) {
params: query
});
}
/**
* 获取全部旅游标签
* @param query
*/
export function goodDel(id) {
return fetch({
url: '/api/tour/good/admin/goodDel/' + id,
method: 'get'
});
}
/**
* 上架、下架
* */
export function upStatusChange(query) {
return fetch({
url: '/api/tour/good/admin/upStatus',
method: 'get',
params: query
});
}
<template>
<div class="app-container calendar-list-container" v-loading.body="showLoadingBody">
<div v-if="!oneTourDialogVisible">
<div class="filter-container" ref="filter-container">
......@@ -7,15 +6,15 @@
<el-row>
<el-col :span="8">
<el-form-item label="旅行名称">
<el-input v-model.number="listQuery.code" placeholder="请输入旅行名称"></el-input>
<el-input v-model.number="listQuery.name" placeholder="请输入旅行名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="标签">
<el-select class="filter-item" v-model="listQuery.status" placeholder="请选择标签">
<el-select class="filter-item" v-model="listQuery.tagId" placeholder="请选择标签">
<el-option :key="undefined" label="无" :value="undefined"></el-option>
<el-option v-for="(val, key, index) in getAllVehicleStatus() " :key="val.code" :label="val.val"
:value="val.code"></el-option>
<el-option v-for="val in allLabelList" :key="val.id" :label="val.name"
:value="val.id"></el-option>
</el-select>
</el-form-item>
</el-col>
......@@ -51,19 +50,31 @@
</template>
</el-table-column>
<el-table-column width="200" align="center" label="销量">
<el-table-column width="100" align="center" label="销量">
<template scope="scope">
<span>{{scope.row.saleCount}}</span>
</template>
</el-table-column>
<el-table-column align="center" width="200" label="操作">
<el-table-column align="center" width="300" label="操作">
<template scope="scope">
<el-button v-if="tourManage_btn_edit" size="small" type="success" @click="handleUpdate(scope.row)">编辑
</el-button>
<el-button size="small" type="warn" @click="undercarriageHandler(scope.row)">
<el-button size="small" type="primary" v-if="scope.row.status==2|| scope.row.status==0" @click="upStatus(scope.row)">
</el-button>
<el-button size="small" type="danger" @click="deleteHandler(scope.row)">删除
<el-button size="small" type="warn" v-if="scope.row.status==1" @click="upStatus(scope.row)">下架
</el-button>
<el-popover
ref="popover5"
placement="top"
width="160"
v-model="scope.row.visible2">
<p>确定删除吗?</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="scope.row.visible2 = false">取消</el-button>
<el-button type="primary" size="mini" @click="deleteHandler(scope.row)">确定</el-button>
</div>
</el-popover>
<el-button type="danger" size="small" v-popover:popover5>删除</el-button>
</template>
</el-table-column>
</el-table>
......@@ -102,7 +113,10 @@
import {
page,
goodsEdit
goodsEdit,
getAllTourTag,
goodDel,
upStatusChange
} from 'api/tourManage';
import Element1 from "../admin/menu/components/element";
......@@ -129,6 +143,7 @@
saleCount: undefined,//销量
stock: undefined,//总数量
},
allLabelList:[],//全部标签
rules: {
subordinateBranch: [
{
......@@ -305,7 +320,9 @@
listLoading: true,
listQuery: {
page: 1,
limit: 20
limit: 20,
tagId: undefined,
name: '',//关键词
},
inline: true,
tourManage_btn_edit: false,//编辑
......@@ -324,6 +341,7 @@
},
created() {
this.getList();
this.getAllLabelList();//获取全部标签
this.tourManage_btn_edit = true;//this.elements['tourManage:btn_edit'];
this.tourManage_btn_add = true;//this.elements['tourManage:btn_add'];
},
......@@ -461,11 +479,20 @@
}
},
methods: {
/**
* 获取全部旅游标签
* */
getAllLabelList() {
getAllTourTag().then(response => {
this.allLabelList = response.data;
});
},
/**
* 添加
* */
handleCreate() {
this.resetTemp();
this.oneTourRow = {};
this.modalTitle = '创建';
this.oneTourDialogVisible = true;
},
......@@ -473,8 +500,53 @@
* 操作-删除
* */
deleteHandler(row) {
this.oneTourRow = row;
this.oneTourDialogVisible = true;
goodDel(row.id).then(response => {
if (response.status === 200) {
this.$notify({
title: '成功',
message: '删除成功',
type: 'success',
duration: 2000
});
this.oneTourDialogVisible = false;
this.getList();
} else {
this.$notify({
title: '删除失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
},
/**
* 上架、下架 参数 id status 1-上架;2-下架 post
*/
upStatus(row){
let params = {
id: row.id,
status: row.status==1?2:1
};
upStatusChange(params).then(response => {
if (response.status === 200) {
this.$notify({
title: '成功',
message: '成功',
type: 'success',
duration: 2000
});
this.oneTourDialogVisible = false;
this.getList();
} else {
this.$notify({
title: '失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
},
/**
* 编辑
......@@ -717,6 +789,9 @@
if (!this.$utils.isEmpty(response.data.data) && this.$utils.isInteger(response.data.totalCount)) {
listRs = response.data.data;
totalCountRs = response.data.totalCount;
listRs.map(function(item){
item.visible2 = false;
});
}
this.listLoading = false;
this.list = listRs;
......
......@@ -5,15 +5,15 @@
<el-row style="margin: 10px 0;" v-for="item in lists"
:key="item.id">
<el-col :span="8">
<el-form-item label="出发地" >
<el-autocomplete
class="inline-input"
style="margin-left: 10px;"
v-model="item.name"
:fetch-suggestions="querySearch"
placeholder="请输入内容"
@select="handleSelect"
></el-autocomplete>
<el-form-item label="出发地">
<el-select v-model="item.name" filterable placeholder="请选择">
<el-option
v-for="iitem in allCompaniesArr"
:key="iitem.value"
:label="iitem.name"
:value="iitem.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
......@@ -29,13 +29,13 @@
<!--</el-time-picker>-->
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="排序">
<el-input style="width: 150px;" type="number" min="0" v-model="item.rank" placeholder="请输入排序"></el-input>
<el-button type="danger" size="small" @click="deleteItem(item)">删除</el-button>
</el-form-item>
</el-col>
<!--<el-col :span="3"> <el-button type="danger" size="small" @click="deleteItem(item)">删除</el-button></el-col>-->
<!--<el-col :span="8">-->
<!--<el-form-item label="排序">-->
<!--<el-input style="width: 150px;" type="number" min="0" v-model="item.rank" placeholder="请输入排序"></el-input>-->
<!--<el-button type="danger" size="small" @click="deleteItem(item)">删除</el-button>-->
<!--</el-form-item>-->
<!--</el-col>-->
<el-col :span="3"> <el-button type="danger" size="small" @click="deleteItem(item)">删除</el-button></el-col>
</el-row>
</el-form>
......@@ -78,10 +78,11 @@
return {
isVisible: false,
time:"",
lists: [],//新增项
t: {},
lists:[],
num: 0,
obj:{}//新增项
obj:{},//新增项
allCompaniesArr:[],
}
},
created() {
......@@ -103,13 +104,14 @@
mounted() {
let that = this;
let arr = [];
this.list.map(function(item){debugger
this.list.map(function(item){
item.h = parseInt(item.departTime / 3600);
item.s = (item.departTime-item.h*3600)/60;
item.departTimeNew = item.h+":"+item.s;
item.rank = item.rank?item.rank:0;
item.visible2 = false;
arr.push(item);
let c = that.objDeepCopy(item);
arr.push(c);
});
this.lists = arr;
this.isVisible = true;
......@@ -120,14 +122,50 @@
])
},
methods: {
deleteHandler(){},
changeDeparture(item){
let select = {};
this.allCompaniesArr.map(function(ii){
if(ii.id == item.name){
select = ii;
}
});
this.lists.map(function(iitem){debugger
if(iitem.id == item.id){
iitem.name = select.name;
iitem.address = select.address;
iitem.companyId = select.id;
iitem.addrProvince = select.addrProvince;
iitem.addrCity = select.addrCity;
iitem.longitude = select.longitude;
iitem.latitude = select.latitude;
}
});
debugger
},
/**
* 深拷贝
*/
objDeepCopy (source) {
var sourceCopy = source instanceof Array ? [] : {};
for (var item in source) {
sourceCopy[item] = typeof source[item] === 'object' ? objDeepCopy(source[item]) : source[item];
}
return sourceCopy;
},
addTime(){
this.t = {
let t = {
addrCity: undefined,
addrDetail: undefined,
addrProvince: undefined,
id: undefined,
companyId: undefined,
latitude: undefined,
longitude: undefined,
name: "",
rank: 0,
zoneId: undefined,
departTime: 28800,
};
this.lists.push(this.t);
this.lists.push(t);
},
/**
* 改变出发时间
......@@ -137,19 +175,11 @@
val.departTime = arr[0]*3600+ arr[1]*60;
console.log(val);
},
changeTime(val){
// if(typeof val == "object"){
// let hour = val.departTime.getHours();
// let sec = val.departTime.getMinutes();
// val.departTime = hour*3600+ sec*60;
// console.log(val.departTime);
// }
},
/**
* 删除分公司出发地
* */
deleteItem(obj){
this.lists.splice(this.lists.indexOf(obj),1);
this.list.splice(this.list.indexOf(obj),1);
console.log(obj);
},
/**
......@@ -157,14 +187,31 @@
* */
okHandler() {
let arr = [];
// this.lists.map(function(item){
let that = this;
// this.list.map(function(item){
// // 时间转时间戳
// let hour = item.departTime_new.getHours();
// let sec = item.departTime_new.getMinutes();
// item.departTime = hour*3600+ sec*60;
// });
this.lists.map(function(item){
let departTime = item.departTime;
let select = {};
that.allCompaniesArr.map(function(ii){
if(ii.id == item.name){
item.name = ii.name;
item.companyId = ii.id;
item.longitude = ii.longitude;
item.latitude = ii.latitude;
item.departTime = departTime;
}
});
});
debugger
// this.lists.map(function)
this.$emit('departureEvent', this.lists);
console.log( this.list)
console.log( this.lists)
},
/**
* 弹框-取消
......@@ -183,11 +230,6 @@
// 调用 callback 返回建议列表的数据
cb(results);
},
handleSelect(item) {
this.lists.splice(this.lists.indexOf(item),1);
item.departTime = 28800;
this.lists.push(item);
},
createFilter(queryString) {
return (restaurant) => {
return (restaurant.name.indexOf(queryString.toLowerCase()) != -1);
......
......@@ -102,7 +102,7 @@
<el-button type="primary" size="mini" @click="deleteHandler()">确定</el-button>
</div>
</el-popover>
<el-button v-if="form.headTitle == '途径地名称'" type="danger" v-popover:popover5>删除</el-button>
<el-button v-if="form.showTitle == '途径地编辑'" type="danger" v-popover:popover5>删除</el-button>
<el-button type="primary" @click="okHandler('form')">确 定</el-button>
</div>
</el-dialog>
......@@ -255,7 +255,7 @@
this.form = this.obj;
this.listQuery.addrProvince = this.obj.province;
this.listQuery.addrCity = this.obj.city;
this.keyword = row.keyword;
this.keyword = row.keyword?row.keyword:"东莞市";
this.isVisible = true;
},
computed: {
......
......@@ -33,6 +33,10 @@
<el-radio class="radio" v-model="form.isMember" label="1">启用会员价</el-radio>
<el-radio class="radio" v-model="form.isMember" label="0">不启用会员价</el-radio>
</el-form-item>
<el-form-item label="" prop="mileage">
<el-radio class="radio" v-model="form.isOutside" label="0">省内</el-radio>
<el-radio class="radio" v-model="form.isOutside" label="1">省外</el-radio>
</el-form-item>
<el-row>
<el-col :span="4">
<el-form-item label="库存" prop="amount">
......@@ -134,6 +138,7 @@
:on-success="handleAvatarSuccess"
list-type="picture">
<img v-if="$utils.isString(form.cover) && !$utils.isEmpty(form.cover)" :src="form.cover" style="width:300px;max-height:300px;">
<i v-else class="el-icon-plus avatar-uploader-icon" style="lineHeight:100px;width:300px;height: 100px;border: 1px dashed #ccc;"></i>
</el-upload>
<!--<el-dialog v-model="dialogVisible" size="tiny">-->
<!--<img width="100%" :src="form.cover" alt="">-->
......@@ -167,8 +172,8 @@
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancelTour">取 消</el-button>
<el-button type="primary" v-if="title=='创建'" @click="create()">确 定</el-button>
<el-button type="primary" v-if="title=='编辑'" @click="update()">确 定</el-button>
<el-button type="primary" v-if="title=='创建' && !isCreate" @click="create()">确 定</el-button>
<el-button type="primary" v-if="title=='编辑' && !isCreate" @click="update()">确 定</el-button>
</div>
<!--编辑出发地-->
<departureModal v-if="editDepartureVisible" :list="departureList" v-on:departureEvent = "departureEvent"></departureModal>
......@@ -236,11 +241,13 @@
destinationObj:{name: ""},//目的地
departureList: [],//出发地列表
departureObj:{name: ""},//出发地
pathway: undefined,//途径地
pathway: [],//途径地
isCreate: false,//是否点击了创建-确定
fileList2:[],
activeName2: 'first',//行程亮点
form: {
childPrice: undefined,//儿童价
isOutside:"0",
tourDepartVo:undefined,//type:0出发地 1途径地 2目的地
content: undefined,//行程亮点
cover:undefined,//封面图
......@@ -316,8 +323,10 @@
},
},
mounted() {
let row = this.oneTourRow;
this.getOneGoods(row.id);
if(this.title == "编辑"){
let row = this.oneTourRow;
this.getOneGoods(row.id);
}
this.cleanForm();
this.oneTourDialogVisible = true;
},
......@@ -384,33 +393,116 @@
/**
* 创建
* */
create(){},
create(){
this.isCreate = true;
//旅游标签
let tagDTOS = [];
this.form.tagDTOS.map(function(item){
if(item.tagId){
tagDTOS.push({tagId: item.tagId});
} else {
tagDTOS.push({tagId: item.id});
}
});
let siteDTOS = [];
//出发地
this.departureList.map(function(item){
let p = {
name: item.name,
departTime:item.departTime?item.departTime:0,
address: item.addrDetail?item.addrDetail: item.address,
companyId: item.companyId,
province: item.addrProvince?item.addrProvince:item.province,
provinceName:item.provinceName?item.provinceName:'',
cityName: item.cityName?item.cityName:'',
city: item.addrCity?item.addrCity: item.city,
longitude: item.longitude,
latitude: item.latitude,
type: 0,
rank: item.rank
};
siteDTOS.push(p);
});
//途径地
this.pathway.map(function(item){
let p = {
name: item.name,
address: item.addrDetail?item.addrDetail: item.address,
// companyId: item.id,
province: item.addrProvince?item.addrProvince:item.province,
provinceName:item.provinceName?item.provinceName:'',
cityName: item.cityName?item.cityName:'',
city: item.addrCity?item.addrCity: item.city,
longitude: item.longitude,
latitude: item.latitude,
type: 1,
rank: item.rank
};
siteDTOS.push(p);
});
//destinationObj目的地
let destinationObj = this.destinationObj;
let p = {
name: destinationObj.name,
address: destinationObj.addrDetail?destinationObj.addrDetail: destinationObj.address,
province: destinationObj.addrProvince?destinationObj.addrProvince:destinationObj.province,
provinceName:destinationObj.provinceName?destinationObj.provinceName:'',
cityName: destinationObj.cityName?destinationObj.cityName:'',
city: destinationObj.addrCity?destinationObj.addrCity: destinationObj.city,
longitude: destinationObj.longitude,
latitude: destinationObj.latitude,
type: 2
};
siteDTOS.push(p);
let params = {
isOutside: this.form.isOutside,//省内、省外
name: this.form.name,//旅游路线名称
cover: this.form.cover,//封面图
price: this.form.price,//成人价
childPrice: this.form.childPrice,//儿童价
viewCount: this.form.viewCount,//商品浏览量
saleCount: this.form.saleCount,//商品销售量
describe: this.form.describe,//商品描述
content: this.form.content,//商品详情(行程亮点)
introduce: this.form.introduce,//行程介绍
explain: this.form.explain,//费用说明
rank: this.form.rank,//旅行排序
recommend: this.form.recommend,//是否推荐:0-未推荐;1-已推荐
isMember: this.form.isMember,//是否启用会员价
stock: this.form.stock,//库存
unit: this.form.unit,//单位
number: this.form.number,//活动天数
bannerDTOS: this.form.bannerDTOS,//banner轮播图
siteDTOS: siteDTOS,//出发地type=0,途径地type=1,目的地type=2
priceDTOS: this.form.tourDepartTimeVo,//活动日期
tagDTOS: tagDTOS//旅游标签
};
console.log(params);
goodsEdit(params).then(response => {
if (response.status === 200) {
this.$notify({
title: '成功',
message: '添加成功',
type: 'success',
duration: 2000
});
this.$emit("oneTourDialogEvent", true);
} else {
this.$notify({
title: '添加失败',
message: rsCode.msg[response.code] ? rsCode.msg[response.code] : '操作失败!',
type: 'error',
duration: 2000
});
}
});
},
/**
* 编辑
* */
update(){
// {"name":"ssss","cover":"ssss","price":"500","childPrice":100,"viewCount":"100","saleCount":"100","describe":"225555","content":"235685","introduce":"sssss","explain":"dddss","rank":1,
// "recommend":1,"isMember":1,"stock":2,"unit":"元/个","number":2,
// "bannerDTOS":[
// {"cover":"ssssss"}, {"cover":"ssssss"}, {"cover":"ssssss"}
// ],
// "siteDTOS":[
// {"name":"ssssss","address":"ssssss","companyId":2,"province":1000,"provinceName":10002,"city":10001,"cityName":10002,"longitude":12.00000,"latitude":23.6552,"type":0,"rank":1},
// {"name":"ssssss","address":"ssssss","companyId":2,"province":1000,"provinceName":10002,"city":10001,"cityName":10002,"longitude":12.00000,"latitude":23.6552,"type":1,"rank":1},
// {"name":"ssssss","address":"ssssss","companyId":2,"province":1000,"provinceName":10002,"city":10001,"cityName":10002,"longitude":12.00000,"latitude":23.6552,"type":2,"rank":1}
// ],
// "priceDTOS":[
// {"startTime":"2019-06-01","endTime":"2019-06-03","stock":50},
// {"startTime":"2019-06-02","endTime":"2019-06-04","stock":50},
// {"startTime":"2019-06-03","endTime":"2019-06-05","stock":50}
// ],
// "tagDTOS":[
// {"tagId":1},
// {"tagId":2}
//
// ]
// }
//旅游标签
this.isCreate = true;
let tagDTOS = [];
this.form.tagDTOS.map(function(item){
if(item.tagId){
......@@ -427,14 +519,13 @@
// });
let siteDTOS = [];
// {"name":"ssssss","address":"ssssss","companyId":2,"province":1000,"provinceName":10002,"city":10001,"cityName":10002,"longitude":12.00000,"latitude":23.6552,"type":0,"rank":1}
//出发地
this.departureList.map(function(item){
let p = {
name: item.name,
departTime:item.departTime?item.departTime:0,
address: item.addrDetail?item.addrDetail: item.address,
companyId: item.id,
companyId: item.companyId,
province: item.addrProvince?item.addrProvince:item.province,
provinceName:item.provinceName?item.provinceName:'',
cityName: item.cityName?item.cityName:'',
......@@ -477,10 +568,9 @@
type: 2
};
siteDTOS.push(p);
// siteDTOS.push(this.destinationObj);
let params = {
id: this.form.id,
isOutside: this.form.isOutside,//省内、省外
name: this.form.name,//旅游路线名称
cover: this.form.cover,//封面图
price: this.form.price,//成人价
......@@ -694,6 +784,7 @@
});
this.fileList2 = fileList2;
this.form.isMember = this.form.isMember+"";
this.form.isOutside = this.form.isOutside+"";
})
},
querySearch(queryString, cb) {
......@@ -778,19 +869,41 @@
* 清空旅游弹框数据
*/
cleanForm() {
this.form = {
bannerDTOS:[],
value11: "",
radio: "1",
vehicleId: null,
numberPlate: null,
operator: null,
date: null,
mileage: null,
amount: null,
approvers: null,
branchCompanyId: null
}
this.onePathObj = {name: ""};//待编辑的途径地
this.destinationObj ={name: ""},//目的地
this.departureList= [],//出发地列表
this.departureObj={name: ""},//出发地
this.pathway= [],//途径地
this.fileList2=[],
this.activeName2= 'first',//行程亮点
this.form= {
isOutside: "0",//省内、省外
childPrice: undefined,//儿童价
tourDepartVo:undefined,//type:0出发地 1途径地 2目的地
content: undefined,//行程亮点
cover:undefined,//封面图
describe: undefined,//描述
introduce: undefined,//行程介绍
crtTime: undefined,
explain: undefined,//费用说明
name: undefined,//旅行名称
price: undefined,//成人价
rank: undefined,
recommend: 0,//是否推荐0:不推荐,1推荐
saleCount: undefined,//初始销量
status: undefined,//0:未发布,1:上架 2:下架
stock: undefined,//总人数
unit: undefined,//单位
updTime: undefined,//更新时间
viewCount: undefined,//浏览量
isMember: "0",//是否是会员商品0不启用,1启用
tagDTOS: undefined,//旅行标签
bannerDTOS:[],//banner轮播
tourDepartTimeVo:[],//活动时间
},
this.showDestinationVisible= false,//编辑目的地
this.showPathWayVisible= false,//编辑途径地
this.showTimeVisible= false;//编辑时间
}
}
}
......
......@@ -93,7 +93,16 @@
watch: {
isVisible(newValue, oldValue){
if(!newValue){
this.$emit('tourDepartTimeEvent', false);
let arr = [];
this.list.map(function(item){
if(item.startTime){
arr.push(item);
}
});
let params = {
priceDTOS: arr
};
this.$emit('tourDepartTimeEvent', params);
}
},
},
......@@ -166,7 +175,16 @@
* 弹框-取消
* */
cancel() {
this.$emit('tourDepartTimeEvent', false);
let arr = [];
this.list.map(function(item){
if(item.startTime){
arr.push(item);
}
});
let params = {
priceDTOS: arr
};
this.$emit('tourDepartTimeEvent', params);
},
dateChange1(val) { this.filters.startDate = val; },
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment