3 changed files with 1570 additions and 0 deletions
@ -0,0 +1,247 @@ |
|||||
|
<template> |
||||
|
<div class="company-edit"> |
||||
|
<!-- Drawer抽屉 --> |
||||
|
<Drawer :title="title" v-model="visible" width="500" draggable :mask-closable="type == '0'"> |
||||
|
<div :style="{ maxHeight: maxHeight }" class="drawer-content"> |
||||
|
<div class="drawer-header"> |
||||
|
<div style="margin-right: 16px">优惠券配置</div> |
||||
|
</div> |
||||
|
<Form ref="form" :model="form" :rules="formValidate" label-position="top"> |
||||
|
<Row :gutter="32"> |
||||
|
<Col span="24"> |
||||
|
<FormItem label="优惠券名称" prop="name"> |
||||
|
<Input v-model="form.name" /> |
||||
|
</FormItem> |
||||
|
</Col> |
||||
|
</Row> |
||||
|
<Row :gutter="32"> |
||||
|
<Col span="24"> |
||||
|
<FormItem label="发券总数" prop="totalCount"> |
||||
|
<Input v-model="form.totalCount" /> |
||||
|
</FormItem> |
||||
|
</Col> |
||||
|
</Row> |
||||
|
<Row :gutter="32"> |
||||
|
<Col span="24"> |
||||
|
<FormItem label="适用范围" prop="applyScene"> |
||||
|
<RadioGroup v-model="form.applyScene"> |
||||
|
<Radio label="0">全部</Radio> |
||||
|
<Radio label="1">外卖/买饭</Radio> |
||||
|
<Radio label="2">快递/跑腿</Radio> |
||||
|
<Radio label="3">二手物品交易</Radio> |
||||
|
</RadioGroup> |
||||
|
</FormItem> |
||||
|
</Col> |
||||
|
</Row> |
||||
|
<Row :gutter="32"> |
||||
|
<Col span="24"> |
||||
|
<FormItem label="使用门槛"> |
||||
|
<RadioGroup v-model="form.type"> |
||||
|
<Radio label="2">无门槛</Radio> |
||||
|
<Radio label="1">满<Input v-model='form.minAmount' style="width: 50px;"></Input >元可使用</Radio> |
||||
|
</RadioGroup> |
||||
|
</FormItem> |
||||
|
</Col> |
||||
|
</Row> |
||||
|
<Row :gutter="32"> |
||||
|
<Col span="24"> |
||||
|
<FormItem label="优惠金额"> |
||||
|
<Input v-model='form.discountAmount'></Input> |
||||
|
</FormItem> |
||||
|
</Col> |
||||
|
</Row> |
||||
|
<Row :gutter="32"> |
||||
|
<Col span="24"> |
||||
|
<FormItem label="每人限领数量"> |
||||
|
<Input v-model='form.limitPerUser'></Input> |
||||
|
</FormItem> |
||||
|
</Col> |
||||
|
</Row> |
||||
|
|
||||
|
<Row :gutter="32"> |
||||
|
<Col span="24"> |
||||
|
<FormItem label="有效期"> |
||||
|
<RadioGroup v-model="form.validType" vertical> |
||||
|
<Radio label="1">固定日期</Radio> |
||||
|
<DatePicker @on-change="changeDate" v-if="form.validType == '1'" type="daterange" split-panels placeholder="选择起始时间" style="width: 200px"></DatePicker> |
||||
|
<Radio label="2">领券后<Input v-model='form.validDays' style="width: 50px;"></Input >天有效</Radio> |
||||
|
</RadioGroup> |
||||
|
|
||||
|
</FormItem> |
||||
|
</Col> |
||||
|
</Row> |
||||
|
</Form> |
||||
|
</div> |
||||
|
<div class="drawer-footer br" v-show="type != '0'"> |
||||
|
<Button type="primary" :loading="submitLoading" @click="submit">提交</Button> |
||||
|
<Button @click="visible = false">取消</Button> |
||||
|
</div> |
||||
|
</Drawer> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { |
||||
|
addCoupon, |
||||
|
editCoupon |
||||
|
} from "@/api/app"; |
||||
|
import dict from "@/views/my-components/hiver/dict"; |
||||
|
import uploadPicInput from "@/views/my-components/hiver/upload-pic-input"; |
||||
|
import regionTreeChoose from "@/views/my-components/hiver/region-tree-choose"; |
||||
|
export default { |
||||
|
name: "company", |
||||
|
components: { |
||||
|
dict, |
||||
|
uploadPicInput, |
||||
|
regionTreeChoose |
||||
|
}, |
||||
|
props: { |
||||
|
value: { |
||||
|
type: Boolean, |
||||
|
default: false, |
||||
|
}, |
||||
|
data: { |
||||
|
type: Object, |
||||
|
}, |
||||
|
type: { |
||||
|
type: String, |
||||
|
default: "0", |
||||
|
}, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
menkan:'', |
||||
|
xianzhi:'', |
||||
|
youxiao:'', |
||||
|
|
||||
|
roleList: [], |
||||
|
visible: this.value, |
||||
|
title: "", |
||||
|
data: [], |
||||
|
passColor: "", |
||||
|
submitLoading: false, |
||||
|
maxHeight: 510, |
||||
|
form: { |
||||
|
name: '', //优惠券名称 |
||||
|
applyScene:'', //适用场景:0-通用,1-外卖/买饭,2-快递/跑腿,3-二手物品交易 |
||||
|
type:'', //优惠券类型:1-满减券,2-无门槛直减券 |
||||
|
minAmount:'', //使用门槛金额 |
||||
|
discountAmount:'', //抵扣面额 |
||||
|
totalCount:'', //发行总数 |
||||
|
limitPerUser:1, //每人最多限领张数 |
||||
|
validType:'', //有效期类型:1-绝对时间段有效,2-领取后相对天数有效 |
||||
|
validStartTime:'', //有效期开始时间 |
||||
|
validEndTime:'', //有效期结束时间 |
||||
|
validDays:'', //自领取之日起有效天数 |
||||
|
|
||||
|
issuerType:1, //发放方:1-平台,2-商家 |
||||
|
issuerId:0, //发放方ID 0-平台 |
||||
|
status:1, //状态:0-已下架/停发,1-发放中 |
||||
|
regionId:JSON.parse(this.getStore("user")).departmentId, //学校id |
||||
|
}, |
||||
|
formValidate: { |
||||
|
// 表单验证规则 |
||||
|
name: [{ |
||||
|
required: true, |
||||
|
message: "请输入优惠券名称", |
||||
|
trigger: "change" |
||||
|
}, ], |
||||
|
contacts: [{ |
||||
|
required: true, |
||||
|
message: "请输入联系人", |
||||
|
trigger: "change" |
||||
|
}, ], |
||||
|
mobile: [{ |
||||
|
required: true, |
||||
|
message: "请输入手机号", |
||||
|
trigger: "change" |
||||
|
}, ], |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
init() { |
||||
|
|
||||
|
}, |
||||
|
changeDate(v){ |
||||
|
console.log(v) |
||||
|
this.form.validStartTime = v[0] |
||||
|
this.form.validEndTime = v[1] |
||||
|
}, |
||||
|
submit() { |
||||
|
this.$refs.form.validate((valid) => { |
||||
|
if (valid) { |
||||
|
if (this.type == "1") { |
||||
|
// 编辑 |
||||
|
this.submitLoading = true; |
||||
|
editCoupon(this.form).then((res) => { |
||||
|
this.submitLoading = false; |
||||
|
if (res.success) { |
||||
|
this.$Message.success("操作成功"); |
||||
|
this.$emit("on-submit", true); |
||||
|
this.visible = false; |
||||
|
} |
||||
|
}); |
||||
|
} else { |
||||
|
// 添加1 |
||||
|
this.submitLoading = true; |
||||
|
addCoupon(this.form).then((res) => { |
||||
|
this.submitLoading = false; |
||||
|
if (res.success) { |
||||
|
this.$Message.success("操作成功"); |
||||
|
this.$emit("on-submit", true); |
||||
|
this.visible = false; |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
setCurrentValue(value) { |
||||
|
if (value === this.visible) { |
||||
|
return; |
||||
|
} |
||||
|
if (this.type == "1") { |
||||
|
this.title = "编辑优惠券信息"; |
||||
|
this.maxHeight = |
||||
|
Number(document.documentElement.clientHeight - 121) + "px"; |
||||
|
} else if (this.type == "2") { |
||||
|
this.title = "新增优惠券"; |
||||
|
this.maxHeight = |
||||
|
Number(document.documentElement.clientHeight - 121) + "px"; |
||||
|
} else { |
||||
|
this.title = "优惠券详情"; |
||||
|
this.maxHeight = "100%"; |
||||
|
} |
||||
|
// 清空数据 |
||||
|
this.$refs.form.resetFields(); |
||||
|
if (this.type == "0" || this.type == "1") { |
||||
|
// 回显数据 |
||||
|
let data = this.data; |
||||
|
// 回显 |
||||
|
this.form = data; |
||||
|
this.form.applyScene = JSON.stringify(this.form.applyScene) |
||||
|
this.form.type = JSON.stringify(this.form.type) |
||||
|
this.form.validType = JSON.stringify(this.form.validType) |
||||
|
console.log('优惠券',this.form) |
||||
|
} |
||||
|
this.visible = value; |
||||
|
}, |
||||
|
}, |
||||
|
watch: { |
||||
|
value(val) { |
||||
|
this.setCurrentValue(val); |
||||
|
}, |
||||
|
visible(value) { |
||||
|
this.$emit("input", value); |
||||
|
}, |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.init(); |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style lang="less"> |
||||
|
@import "@/styles/drawer-common.less"; |
||||
|
</style> |
||||
@ -0,0 +1,315 @@ |
|||||
|
<template> |
||||
|
<div class="search"> |
||||
|
<Button @click="findAllRecords" type="primary" icon="md-add">新增商品</Button> |
||||
|
<Card> |
||||
|
<Table :loading="loading" border :columns="columns" :data="data" :size="tableSize" ref="table" |
||||
|
sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect"></Table> |
||||
|
<Row type="flex" justify="end" class="page"> |
||||
|
<Page :current="searchForm.pageNum" :total="total" :page-size="searchForm.pageSize" |
||||
|
@on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]" |
||||
|
size="small" show-total show-elevator show-sizer></Page> |
||||
|
</Row> |
||||
|
</Card> |
||||
|
<Modal :title="商品维护" v-model="tranVisiable" :mask-closable="false" :scrollabele="true" :width="1000"> |
||||
|
<transfer-station v-if="tranVisiable" ref="dialog"></transfer-station> |
||||
|
<div slot="footer" v-show=tranVisiable> |
||||
|
<Button type="text" @click="tranVisiable = false">关闭</Button> |
||||
|
</div> |
||||
|
</Modal> |
||||
|
</div> |
||||
|
|
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { |
||||
|
addLogisticsStation, |
||||
|
updateLogisticsStation, |
||||
|
deleteLogisticsStation, |
||||
|
getLogisticsStationPageList |
||||
|
} from "@/api/app"; |
||||
|
import uploadPicInput from "@/views/my-components/hiver/upload-pic-input"; |
||||
|
import transferStation from "@/views/app/business/lineManage/transferStation.vue"; |
||||
|
import { |
||||
|
shortcuts |
||||
|
} from "@/libs/shortcuts"; |
||||
|
export default { |
||||
|
name: "logisticsAddress", |
||||
|
components: { |
||||
|
uploadPicInput, |
||||
|
transferStation |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
exportTitle: "商品", |
||||
|
tableSize: "default", |
||||
|
showType: "0", |
||||
|
tranVisiable:false, |
||||
|
stationModalVisible: false, |
||||
|
openSearch: true, // 显示搜索 |
||||
|
openTip: true, // 显示提示 |
||||
|
loading: true, // 表单加载状态 |
||||
|
modalType: 0, // 添加或编辑标识 |
||||
|
modalVisible: false, // 添加或编辑显示 |
||||
|
modalTitle: "", // 添加或编辑标题 |
||||
|
searchForm: { |
||||
|
pageNum: 1, |
||||
|
pageSize: 10, |
||||
|
circuitId:"", |
||||
|
stationName:"" |
||||
|
}, |
||||
|
selectDate: null, |
||||
|
options: { |
||||
|
shortcuts: shortcuts, |
||||
|
}, |
||||
|
form: { |
||||
|
circuitId:'', |
||||
|
stationName:'', |
||||
|
freightRules:'', |
||||
|
landingFeeRules:'', |
||||
|
deliveryFeeRules:'' |
||||
|
}, |
||||
|
submitLoading: false, // 添加或编辑提交状态 |
||||
|
selectList: [], // 多选数据 |
||||
|
columns: [ |
||||
|
{ |
||||
|
type: "index", |
||||
|
width: 60, |
||||
|
align: "center", |
||||
|
fixed: "left", |
||||
|
}, |
||||
|
{ |
||||
|
title: "线路id", |
||||
|
key: "circuitId", |
||||
|
minWidth: 125, |
||||
|
sortable: true, |
||||
|
fixed: "left", |
||||
|
}, |
||||
|
{ |
||||
|
title: "商品名称", |
||||
|
key: "stationName", |
||||
|
minWidth: 125, |
||||
|
sortable: true, |
||||
|
fixed: "left", |
||||
|
}, |
||||
|
{ |
||||
|
title: "运费规则", |
||||
|
key: "freightRules", |
||||
|
minWidth: 125, |
||||
|
sortable: true, |
||||
|
fixed: "left", |
||||
|
}, |
||||
|
{ |
||||
|
title: "落地费规则", |
||||
|
key: "landingFeeRules", |
||||
|
minWidth: 125, |
||||
|
sortable: true, |
||||
|
fixed: "left", |
||||
|
}, |
||||
|
{ |
||||
|
title: "送货费规则", |
||||
|
key: "deliveryFeeRules", |
||||
|
minWidth: 125, |
||||
|
sortable: true, |
||||
|
fixed: "left", |
||||
|
}, |
||||
|
{ |
||||
|
title: "操作", |
||||
|
key: "action", |
||||
|
width: 200, |
||||
|
align: "center", |
||||
|
fixed: "right", |
||||
|
render: (h, params) => { |
||||
|
return h("div", [ |
||||
|
h( |
||||
|
"a", { |
||||
|
on: { |
||||
|
click: () => { |
||||
|
this.edit(params.row); |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"编辑" |
||||
|
), |
||||
|
h("Divider", { |
||||
|
props: { |
||||
|
type: "vertical", |
||||
|
}, |
||||
|
}), |
||||
|
h( |
||||
|
"a", { |
||||
|
on: { |
||||
|
click: () => { |
||||
|
this.edit(params.row); |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"下架" |
||||
|
), |
||||
|
h("Divider", { |
||||
|
props: { |
||||
|
type: "vertical", |
||||
|
}, |
||||
|
}), |
||||
|
h( |
||||
|
"a", { |
||||
|
on: { |
||||
|
click: () => { |
||||
|
this.remove(params.row); |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
"删除" |
||||
|
), |
||||
|
]); |
||||
|
}, |
||||
|
}, |
||||
|
], |
||||
|
data: [], // 表单数据 |
||||
|
total: 0, // 表单数据总数 |
||||
|
rechargeWorkerId: "", |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
init() { |
||||
|
// this.getDataList(); |
||||
|
}, |
||||
|
initRecharge(data) { |
||||
|
//data是父组件弹窗传递过来的值,我们可以打印看看 |
||||
|
console.log(data); |
||||
|
this.searchForm.circuitId = data.id; |
||||
|
this.getDataList(); |
||||
|
}, |
||||
|
changePage(v) { |
||||
|
this.searchForm.pageNum = v; |
||||
|
this.getDataList(); |
||||
|
this.clearSelectAll(); |
||||
|
}, |
||||
|
exportCustomData() { |
||||
|
this.loading = true; |
||||
|
if(this.showType == 1){ //新增 |
||||
|
addLogisticsStation(this.form).then((res) => { |
||||
|
this.loading = false; |
||||
|
if (res.code == 200) { |
||||
|
this.$Message.success("保存成功"); |
||||
|
this.getDataList(); |
||||
|
} |
||||
|
}); |
||||
|
}else if(this.showType == 2){ //编辑 |
||||
|
updateLogisticsStation(this.form).then((res) => { |
||||
|
this.loading = false; |
||||
|
if (res.code == 200) { |
||||
|
this.$Message.success("保存成功"); |
||||
|
this.getDataList(); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
changePageSize(v) { |
||||
|
this.searchForm.pageSize = v; |
||||
|
this.getDataList(); |
||||
|
}, |
||||
|
remove(v) { |
||||
|
this.$Modal.confirm({ |
||||
|
title: "确认删除", |
||||
|
content: "您确认要删除该商品吗?", |
||||
|
loading: true, |
||||
|
onOk: () => { |
||||
|
deleteLogisticsStation({ |
||||
|
id: v.id |
||||
|
}).then((res) => { |
||||
|
this.$Modal.remove(); |
||||
|
if (res.success) { |
||||
|
this.clearSelectAll(); |
||||
|
this.$Message.success("删除成功"); |
||||
|
this.getDataList(); |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
}); |
||||
|
}, |
||||
|
changeSort(e) { |
||||
|
this.searchForm.sort = e.key; |
||||
|
this.searchForm.order = e.order; |
||||
|
if (e.order === "normal") { |
||||
|
this.searchForm.order = ""; |
||||
|
} |
||||
|
this.getDataList(); |
||||
|
}, |
||||
|
findAllRecords(v) { |
||||
|
this.tranVisiable = true; |
||||
|
console.log(v) |
||||
|
this.$nextTick(() => { |
||||
|
this.$refs.dialog.initRecharges(v); |
||||
|
}); |
||||
|
}, |
||||
|
clearSelectAll() { |
||||
|
this.$refs.table.selectAll(false); |
||||
|
}, |
||||
|
changeSelect(e) { |
||||
|
this.selectList = e; |
||||
|
}, |
||||
|
selectDateRange(v) { |
||||
|
if (v) { |
||||
|
this.searchForm.startDate = v[0]; |
||||
|
this.searchForm.endDate = v[1]; |
||||
|
} |
||||
|
}, |
||||
|
addStation() { |
||||
|
this.form = { |
||||
|
circuitId:'', |
||||
|
stationName:'', |
||||
|
freightRules:'', |
||||
|
landingFeeRules:'', |
||||
|
deliveryFeeRules:'' |
||||
|
} |
||||
|
this.showType = "1"; |
||||
|
this.form.circuitId = this.searchForm.circuitId |
||||
|
this.stationModalVisible = true |
||||
|
}, |
||||
|
edit(v) { |
||||
|
// 转换null为"" |
||||
|
for (let attr in v) { |
||||
|
if (v[attr] == null) { |
||||
|
v[attr] = ""; |
||||
|
} |
||||
|
} |
||||
|
let str = JSON.stringify(v); |
||||
|
let data = JSON.parse(str); |
||||
|
this.form = data; |
||||
|
this.showType = "2"; |
||||
|
this.stationModalVisible = true; |
||||
|
}, |
||||
|
changeTableSize(v) { |
||||
|
this.tableSize = v; |
||||
|
}, |
||||
|
exportData() { |
||||
|
this.$refs.table.exportCsv({ |
||||
|
filename: "数据", |
||||
|
}); |
||||
|
}, |
||||
|
getDataList(params) { |
||||
|
this.loading = true; |
||||
|
// 带多条件搜索参数获取表单数据 请自行修改接口 |
||||
|
getLogisticsStationPageList(this.searchForm).then((res) => { |
||||
|
debugger; |
||||
|
this.loading = false; |
||||
|
if (res.code == 200) { |
||||
|
this.data = res.result.records; |
||||
|
this.total = res.result.total; |
||||
|
if (this.data && this.data.length == 0 && this.searchForm.pageNum > 1) { |
||||
|
this.searchForm.pageNum -= 1; |
||||
|
this.getDataList(); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
}, |
||||
|
mounted() { |
||||
|
//this.init(); |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style lang="less"> |
||||
|
//@import "@/styles/table-common.less"; |
||||
|
</style> |
||||
File diff suppressed because it is too large
Loading…
Reference in new issue