pull/1/head
parent
38e5fe394b
commit
c07e56183c
11 changed files with 1031 additions and 169 deletions
@ -0,0 +1,43 @@ |
||||
import request from "utils/axios.js"; |
||||
// table
|
||||
const getByPage = (params) => { |
||||
return request.postJson("/oil-refinery/oilRefineryProduct/getByPage", params); |
||||
}; |
||||
// 新增
|
||||
const save = (params) => { |
||||
return request.postJson("/oil-refinery/oilRefineryProduct/save", params); |
||||
}; |
||||
// 修改
|
||||
const update = (params) => { |
||||
return request.postJson("/oil-refinery/oilRefineryProduct/update", params); |
||||
}; |
||||
// 调价记录table
|
||||
const getByPageRecord = (params) => { |
||||
return request.postJson( |
||||
"/oil-refinery/oilRefineryPriceChangelog/getByPage", |
||||
params |
||||
); |
||||
}; |
||||
// 批量修改
|
||||
const updateBatchEnable = (params) => { |
||||
return request.postJson( |
||||
"/oil-refinery/oilRefineryProduct/updateBatchEnable", |
||||
params |
||||
); |
||||
}; |
||||
// 调价
|
||||
const modifyPrice = (params) => { |
||||
return request.postJson( |
||||
"/oil-refinery/oilRefineryProduct/modifyPrice", |
||||
params |
||||
); |
||||
}; |
||||
|
||||
export default { |
||||
getByPage, |
||||
save, |
||||
update, |
||||
getByPageRecord, |
||||
updateBatchEnable, |
||||
modifyPrice, |
||||
}; |
||||
@ -0,0 +1,46 @@ |
||||
<template> |
||||
<div class="pagination"> |
||||
<el-pagination |
||||
background |
||||
@size-change="handleSizeChange" |
||||
@current-change="handleCurrentChange" |
||||
:current-page="parameter.currentPage" |
||||
:page-size="parameter.pageSize" |
||||
:popper-append-to-body="false" |
||||
:page-sizes="[10, 20, 30, 50]" |
||||
layout="total, sizes, prev, pager, next, jumper" |
||||
:total="parameter.total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
props: { |
||||
parameter: Object, |
||||
}, |
||||
data() { |
||||
return {}; |
||||
}, |
||||
methods: { |
||||
// currentPage change |
||||
handleCurrentChange(page) { |
||||
this.parameter.currentPage = page; |
||||
this.$emit("searchAgain"); |
||||
}, |
||||
// pageSize change |
||||
handleSizeChange(size) { |
||||
this.parameter.currentPage = 1; |
||||
this.parameter.pageSize = size; |
||||
this.$emit("searchAgain"); |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.pagination { |
||||
text-align: center; |
||||
} |
||||
</style> |
||||
@ -0,0 +1,84 @@ |
||||
<template> |
||||
<el-dialog |
||||
title="调价" |
||||
:visible="controlWindows.adjust" |
||||
width="30%" |
||||
:before-close="closeWindow" |
||||
@opened="openDrawer" |
||||
> |
||||
<div class="adjust"> |
||||
<el-form ref="form" :rules="rules" :model="form" label-width="120px"> |
||||
<el-form-item label="成本价" prop="floorPrice"> |
||||
<el-input |
||||
maxlength="50" |
||||
v-checkNum |
||||
v-model="form.floorPrice" |
||||
placeholder="请输入成本价" |
||||
></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="企业销售价" prop="salePrice2company"> |
||||
<el-input |
||||
maxlength="50" |
||||
v-checkNum |
||||
v-model="form.salePrice2company" |
||||
placeholder="请输入企业销售价" |
||||
></el-input> |
||||
</el-form-item> |
||||
</el-form> |
||||
</div> |
||||
<span slot="footer" class="dialog-footer"> |
||||
<el-button @click="controlWindows.adjust = false">取 消</el-button> |
||||
<el-button type="primary" @click="submit">确 定</el-button> |
||||
</span> |
||||
</el-dialog> |
||||
</template> |
||||
|
||||
<script> |
||||
import serve from "api/product.js"; |
||||
|
||||
export default { |
||||
props: { |
||||
controlWindows: Object, |
||||
}, |
||||
data() { |
||||
return { |
||||
form: {}, |
||||
rules: { |
||||
floorPrice: [ |
||||
{ required: true, message: "请输入成本价", trigger: "blur" }, |
||||
], |
||||
salePrice2company: [ |
||||
{ required: true, message: "请选择修改状态", trigger: "blur" }, |
||||
], |
||||
}, |
||||
}; |
||||
}, |
||||
methods: { |
||||
openDrawer() {}, |
||||
submit() { |
||||
this.$refs["form"].validate((valid) => { |
||||
if (valid) { |
||||
Object.assign(this.form, this.controlWindows.addInfo); |
||||
serve.modifyPrice(this.form).then((res) => { |
||||
this.$message.success(res.msg); |
||||
this.closeWindow(); |
||||
}); |
||||
} |
||||
}); |
||||
}, |
||||
closeWindow() { |
||||
this.form = {}; |
||||
this.$emit("closeWindow"); |
||||
this.controlWindows.adjust = false; |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.adjust { |
||||
.el-input { |
||||
width: 200px; |
||||
} |
||||
} |
||||
</style> |
||||
@ -0,0 +1,85 @@ |
||||
<template> |
||||
<el-dialog |
||||
title="批量修改" |
||||
:visible="controlWindows.batch" |
||||
width="30%" |
||||
:before-close="closeWindow" |
||||
@opened="openDrawer" |
||||
> |
||||
<div class="batch"> |
||||
<el-form ref="form" :rules="rules" :model="form" label-width="120px"> |
||||
<el-form-item> |
||||
<p class="tip"> |
||||
已选择 <span>{{ multipleRowList.length }}</span> 条数据 |
||||
</p> |
||||
</el-form-item> |
||||
<el-form-item label="状态" prop="enableMark"> |
||||
<el-radio-group v-model="form.enableMark"> |
||||
<el-radio label="ENABLE">启用</el-radio> |
||||
<el-radio label="DISABLE">禁用</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-form> |
||||
</div> |
||||
<span slot="footer" class="dialog-footer"> |
||||
<el-button @click="controlWindows.batch = false">取 消</el-button> |
||||
<el-button type="primary" @click="submit">确 定</el-button> |
||||
</span> |
||||
</el-dialog> |
||||
</template> |
||||
|
||||
<script> |
||||
import serve from "api/product.js"; |
||||
|
||||
export default { |
||||
props: { |
||||
controlWindows: Object, |
||||
multipleRowList: Array, |
||||
}, |
||||
data() { |
||||
return { |
||||
list: [], |
||||
form: {}, |
||||
rules: { |
||||
enableMark: [ |
||||
{ required: true, message: "请选择修改状态", trigger: "blur" }, |
||||
], |
||||
}, |
||||
}; |
||||
}, |
||||
methods: { |
||||
openDrawer() { |
||||
this.list = JSON.parse(JSON.stringify(this.multipleRowList)); |
||||
}, |
||||
submit() { |
||||
this.$refs["form"].validate((valid) => { |
||||
if (valid) { |
||||
this.list.map((item) => { |
||||
item.enableMark = this.form.enableMark; |
||||
}); |
||||
serve.updateBatchEnable(this.list).then((res) => { |
||||
this.$message.success(res.msg); |
||||
this.closeWindow(); |
||||
}); |
||||
} |
||||
}); |
||||
}, |
||||
closeWindow() { |
||||
this.list = []; |
||||
this.form = {}; |
||||
this.$emit("closeWindow"); |
||||
this.controlWindows.batch = false; |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.batch { |
||||
.tip { |
||||
span { |
||||
color: orange; |
||||
} |
||||
} |
||||
} |
||||
</style> |
||||
@ -0,0 +1,180 @@ |
||||
<template> |
||||
<el-drawer |
||||
title="创建订单" |
||||
direction="rtl" |
||||
size="40%" |
||||
:visible="controlWindows.create" |
||||
@opened="openDrawer" |
||||
:before-close="closeWindow" |
||||
> |
||||
<div class="create"> |
||||
<el-form ref="form" :model="form" :rules="rules" label-width="100px"> |
||||
<el-form-item label="客户名称" prop="productName"> |
||||
<el-input |
||||
maxlength="50" |
||||
v-model="form.productName" |
||||
placeholder="请输入客户名称" |
||||
></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="炼厂名称" prop="refineryId"> |
||||
<el-select v-model="form.refineryId" placeholder="请选择炼厂"> |
||||
<el-option |
||||
v-for="(item, index) in refineryList" |
||||
:key="index" |
||||
:label="item.refineryName" |
||||
:value="item.id" |
||||
></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="产品类型" prop="productType"> |
||||
<el-select v-model="form.productType" placeholder="请选择产品类型"> |
||||
<el-option |
||||
v-for="(item, index) in productTypeList" |
||||
:key="index" |
||||
:label="item.label" |
||||
:value="item.value" |
||||
></el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item label="产品名称" prop="productName"> |
||||
<el-input |
||||
maxlength="50" |
||||
v-model="form.productName" |
||||
placeholder="请输入产品名称" |
||||
></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="销售价" prop="productName"> |
||||
<el-input |
||||
maxlength="50" |
||||
v-model="form.productName" |
||||
placeholder="请输入销售价" |
||||
></el-input> |
||||
元/吨 |
||||
</el-form-item> |
||||
<el-form-item label="预约提货量" prop="productName"> |
||||
<el-input |
||||
maxlength="50" |
||||
v-model="form.productName" |
||||
placeholder="请输入预约提货量" |
||||
></el-input> |
||||
吨 |
||||
</el-form-item> |
||||
</el-form> |
||||
</div> |
||||
<div class="buttons"> |
||||
<el-button @click="controlWindows.create = false">取消 </el-button> |
||||
<el-button @click="submit">确定</el-button> |
||||
</div> |
||||
</el-drawer> |
||||
</template> |
||||
|
||||
<script> |
||||
import serve from "api/product.js"; |
||||
import refineryServe from "api/refineryInfo.js"; |
||||
export default { |
||||
props: { |
||||
controlWindows: Object, |
||||
// refineryTypeEnum: Array, |
||||
}, |
||||
data() { |
||||
return { |
||||
form: {}, |
||||
refineryList: [], |
||||
productTypeList: [ |
||||
{ |
||||
label: "0#柴", |
||||
value: "0#", |
||||
}, |
||||
{ |
||||
label: "-10#柴", |
||||
value: "-10#", |
||||
}, |
||||
{ |
||||
label: "92#汽", |
||||
value: "92#", |
||||
}, |
||||
{ |
||||
label: "95#汽", |
||||
value: "95#", |
||||
}, |
||||
], |
||||
rules: { |
||||
productName: [ |
||||
{ required: true, message: "请输入产品名称", trigger: "blur" }, |
||||
], |
||||
refineryId: [ |
||||
{ required: true, message: "请选择炼厂", trigger: "blur" }, |
||||
], |
||||
enableMark: [ |
||||
{ required: true, message: "请选择启用状态", trigger: "blur" }, |
||||
], |
||||
productType: [ |
||||
{ required: true, message: "请选择产品类型", trigger: "blur" }, |
||||
], |
||||
}, |
||||
}; |
||||
}, |
||||
created() { |
||||
this.findByEntity(); |
||||
}, |
||||
methods: { |
||||
openDrawer() {}, |
||||
submit() { |
||||
this.$refs["form"].validate((valid) => { |
||||
if (valid) { |
||||
this.judgeInterface(this.form).then((res) => { |
||||
if (res.code === 20000) { |
||||
this.$message.success(res.msg); |
||||
this.closeWindow(); |
||||
} |
||||
}); |
||||
} |
||||
}); |
||||
}, |
||||
judgeInterface(form) { |
||||
let { id } = this.controlWindows.addInfo; |
||||
if (id) return serve.update(form); |
||||
else return serve.save(form); |
||||
}, |
||||
//炼厂list |
||||
findByEntity() { |
||||
refineryServe.findByEntity().then((res) => { |
||||
this.refineryList = res.data; |
||||
}); |
||||
}, |
||||
closeWindow() { |
||||
this.$emit("closeWindow"); |
||||
this.$refs.form.clearValidate(); |
||||
this.form = {}; |
||||
this.controlWindows.create = false; |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.create { |
||||
padding: 20px; |
||||
.el-input, |
||||
.el-select, |
||||
.el-textarea { |
||||
width: 300px; |
||||
} |
||||
} |
||||
.buttons { |
||||
position: absolute; |
||||
left: 0; |
||||
bottom: 0; |
||||
padding-right: 40px; |
||||
width: 100%; |
||||
height: 80px; |
||||
line-height: 80px; |
||||
text-align: right; |
||||
border-top: 1px solid #f2f3f5; |
||||
.el-button { |
||||
text-align: right; |
||||
font-size: 14px; |
||||
border-radius: 5px; |
||||
} |
||||
} |
||||
</style> |
||||
@ -0,0 +1,287 @@ |
||||
<template> |
||||
<el-drawer |
||||
title="调价记录" |
||||
direction="ltr" |
||||
size="60%" |
||||
:visible="controlWindows.record" |
||||
:before-close="closeWindow" |
||||
@opened="openDrawer" |
||||
> |
||||
<div class="record"> |
||||
<div class="frame record-frame"> |
||||
<!-- <el-input |
||||
class="mr20" |
||||
placeholder="创建人" |
||||
v-model="parameter.params.productName" |
||||
:fetch-suggestions="querySearchAsync" |
||||
@select="handleSelect" |
||||
|
||||
></el-input> --> |
||||
<el-date-picker |
||||
v-model="datetime" |
||||
type="datetimerange" |
||||
align="right" |
||||
start-placeholder="开始时间" |
||||
end-placeholder="结束时间" |
||||
:default-time="['00:00:00', '23:59:59']" |
||||
value-format="yyyy-MM-dd HH:mm:ss" |
||||
@change="changeDateTime" |
||||
> |
||||
</el-date-picker> |
||||
|
||||
<div class="buttons"> |
||||
<el-button icon="el-icon-search" @click="search">查询</el-button> |
||||
<el-button icon="el-icon-refresh" @click="initDateTime" |
||||
>重置</el-button |
||||
> |
||||
</div> |
||||
</div> |
||||
<div class="table"> |
||||
<el-table |
||||
v-if="tableHeight" |
||||
ref="multipleTable" |
||||
:height="tableHeight" |
||||
:data="tableData" |
||||
style="width: 100%" |
||||
> |
||||
<el-table-column label="成本价"> |
||||
<template slot-scope="{ row }"> |
||||
{{ row.floorPrice }}/{{ row.measurement }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="上次成本价"> |
||||
<template slot-scope="{ row }"> |
||||
{{ row.lastFloorPrice }}/{{ row.measurement }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="企业销售价"> |
||||
<template slot-scope="{ row }"> |
||||
{{ row.salePrice2company }}/{{ row.measurement }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="上次企业销售价"> |
||||
<template slot-scope="{ row }"> |
||||
{{ row.lastSalePrice2company }}/{{ row.measurement }}</template |
||||
> |
||||
</el-table-column> |
||||
<el-table-column label="个人销售价"> |
||||
<template slot-scope="{ row }"> |
||||
{{ row.salePrice2personal }}/{{ row.measurement }} |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="上次个人销售价"> |
||||
<template slot-scope="{ row }"> |
||||
{{ row.lastSalePrice2personal }}/{{ row.measurement }}</template |
||||
> |
||||
</el-table-column> |
||||
<el-table-column label="时间" width="235"> |
||||
<template slot-scope="{ row }"> |
||||
<p class="gray"> |
||||
创建人 <span>{{ row.createUserName }}</span> |
||||
</p> |
||||
<p class="gray"> |
||||
创建时间 <span>{{ row.createTime }}</span> |
||||
</p> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
<!-- <el-pagination |
||||
class="record-el-pagination" |
||||
background |
||||
@size-change="handleSizeChange" |
||||
@current-change="handleCurrentChange" |
||||
:current-page="parameter.currentPage" |
||||
:page-size="parameter.pageSize" |
||||
:popper-append-to-body="false" |
||||
:page-sizes="[10, 20, 30, 50]" |
||||
layout="total, sizes, prev, pager, next, jumper" |
||||
:total="total" |
||||
> |
||||
</el-pagination> --> |
||||
<!-- 分页 --> |
||||
<pagination |
||||
class="record-el-pagination" |
||||
:parameter="parameter" |
||||
@searchAgain="getByPageRecord" |
||||
/> |
||||
</div> |
||||
</div> |
||||
<div class="footer-buttons"> |
||||
<el-button @click="controlWindows.record = false">关闭 </el-button> |
||||
<!-- <el-button @click="submit">确定</el-button> --> |
||||
</div> |
||||
</el-drawer> |
||||
</template> |
||||
|
||||
<script> |
||||
import serve from "api/product.js"; |
||||
|
||||
import pagination from "components/pagination/index.vue"; |
||||
export default { |
||||
props: { |
||||
controlWindows: Object, |
||||
}, |
||||
data() { |
||||
return { |
||||
datetime: [], |
||||
tableHeight: 0, |
||||
tableData: [], |
||||
total: 0, |
||||
parameter: { |
||||
currentPage: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
params: { |
||||
startCreateTime: "", |
||||
endCreateTime: "", |
||||
}, |
||||
}, |
||||
}; |
||||
}, |
||||
components: { |
||||
pagination, |
||||
}, |
||||
created() {}, |
||||
mounted() {}, |
||||
methods: { |
||||
openDrawer() { |
||||
let { id } = this.controlWindows.addInfo; |
||||
if (id) { |
||||
this.$nextTick(() => { |
||||
this.heightHandle(); |
||||
window.addEventListener( |
||||
"resize", |
||||
this.$utils.debounce(this.heightHandle, 500) |
||||
); |
||||
}); |
||||
this.initDateTime(); |
||||
this.parameter.params.productId = id; |
||||
this.getByPageRecord(); |
||||
} |
||||
}, |
||||
initDateTime() { |
||||
let now = new Date().getTime(); |
||||
let beforeDay30 = now - 1000 * 60 * 60 * 24 * 30; |
||||
let nowRes = this.$utils.parseTime(now); |
||||
let beforeDay30Res = this.$utils.parseTime(beforeDay30); |
||||
let { y, M, d } = nowRes; |
||||
let { y: beforey, M: beforeM, d: befored } = beforeDay30Res; |
||||
this.datetime = [ |
||||
`${beforey}-${beforeM}-${befored} 00:00:00`, |
||||
`${y}-${M}-${d} 23:59:59`, |
||||
]; |
||||
this.changeDateTime(this.datetime); |
||||
}, |
||||
changeDateTime(val) { |
||||
if (val) { |
||||
this.parameter.params.startCreateTime = val[0]; |
||||
this.parameter.params.endCreateTime = val[1]; |
||||
} |
||||
}, |
||||
search() { |
||||
this.parameter.currentPage = 1; |
||||
this.getByPageRecord(); |
||||
}, |
||||
// table |
||||
getByPageRecord() { |
||||
serve.getByPageRecord(this.parameter).then((res) => { |
||||
this.tableData = res.data.list; |
||||
this.parameter.total = res.data.totalPage; |
||||
}); |
||||
}, |
||||
// table height |
||||
heightHandle() { |
||||
let bodyHeight = document.body.clientHeight; |
||||
let drawerHeaderHeight = |
||||
this.obtainElement(".el-drawer__header").clientHeight; |
||||
let frameHeight = this.obtainElement(".record-frame").clientHeight; |
||||
let paginationHeight = this.obtainElement( |
||||
".record-el-pagination" |
||||
).clientHeight; |
||||
this.tableHeight = |
||||
bodyHeight - drawerHeaderHeight - frameHeight - paginationHeight - 230; |
||||
}, |
||||
obtainElement(className) { |
||||
return document.documentElement.querySelector(className); |
||||
}, |
||||
closeWindow() { |
||||
window.removeEventListener( |
||||
"resize", |
||||
this.$utils.debounce(this.heightHandle, 500) |
||||
); |
||||
this.$emit("closeWindow"); |
||||
this.parameter = { |
||||
currentPage: 1, |
||||
pageSize: 10, |
||||
total: 0, |
||||
params: { startCreateTime: "", endCreateTime: "" }, |
||||
}; |
||||
this.controlWindows.addInfo = {}; |
||||
this.controlWindows.record = false; |
||||
}, |
||||
}, |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.record { |
||||
padding: 0 20px; |
||||
.el-input, |
||||
.el-select, |
||||
.el-textarea { |
||||
width: 300px; |
||||
} |
||||
.frame { |
||||
padding: 20px; |
||||
border-radius: 6px; |
||||
border: 1px solid #e3e3e5; |
||||
background: #fff; |
||||
.el-input, |
||||
.el-select { |
||||
width: 183px; |
||||
height: 40px; |
||||
} |
||||
.el-input + .el-input, |
||||
.el-input + .el-select, |
||||
.el-select + .el-select, |
||||
.el-select + .el-input, |
||||
.el-input + .el-date-picker { |
||||
margin-right: 20px; |
||||
margin-bottom: 15px; |
||||
} |
||||
.mr20 { |
||||
margin-right: 20px; |
||||
} |
||||
.buttons { |
||||
text-align: right; |
||||
} |
||||
} |
||||
.table { |
||||
overflow: hidden; |
||||
margin-top: 20px; |
||||
padding-bottom: 20px; |
||||
background: #fff; |
||||
border-radius: 6px; |
||||
border: 1px solid #e3e3e5; |
||||
.record-el-pagination { |
||||
margin-top: 15px; |
||||
} |
||||
} |
||||
} |
||||
.footer-buttons { |
||||
position: absolute; |
||||
left: 0; |
||||
bottom: 0; |
||||
padding-right: 40px; |
||||
width: 100%; |
||||
height: 80px; |
||||
line-height: 80px; |
||||
text-align: right; |
||||
border-top: 1px solid #f2f3f5; |
||||
.el-button { |
||||
text-align: right; |
||||
font-size: 14px; |
||||
border-radius: 5px; |
||||
} |
||||
} |
||||
</style> |
||||
Loading…
Reference in new issue