Merge branch 'projects/mes-test' into projects/mes-dy

This commit is contained in:
helloDy 2023-11-24 09:14:32 +08:00
commit 8004c85c32
117 changed files with 1499 additions and 1420 deletions

View File

@ -1,7 +1,7 @@
/* /*
* @Author: zhp * @Author: zhp
* @Date: 2023-11-07 19:47:48 * @Date: 2023-11-07 19:47:48
* @LastEditTime: 2023-11-16 17:49:23 * @LastEditTime: 2023-11-23 13:57:41
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
*/ */
@ -104,3 +104,18 @@ export function getMaterialList(data) {
data: data data: data
}) })
} }
export function getMaterialCode(data) {
return request({
url: '/extend/process-equ-material-bom/getCode',
method: 'get',
params: data
})
}
export function createProcessEquMaterialBomDetList(data) {
return request({
url: '/extend/process-equ-material-bom-det/createByList',
method: 'post',
data: data
})
}

View File

@ -1,7 +1,7 @@
/* /*
* @Author: zhp * @Author: zhp
* @Date: 2023-11-09 09:37:14 * @Date: 2023-11-09 09:37:14
* @LastEditTime: 2023-11-16 17:47:21 * @LastEditTime: 2023-11-23 14:15:45
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
*/ */
@ -104,3 +104,19 @@ export function getValueList(data) {
params: data params: data
}) })
} }
export function getValueCode(data) {
return request({
url: '/extend/process-equ-value-bom/getCode',
method: 'get',
params: data
})
}
export function createProcessEquValueBomDetList(data) {
return request({
url: '/extend/process-equ-value-bom-det/createByList',
method: 'post',
data: data
})
}

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="16px" height="16px" viewBox="0 0 16 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>rollback</title>
<g id="页面" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="按钮与选择" transform="translate(-135.000000, -282.000000)" fill-rule="nonzero">
<g id="编组-3" transform="translate(127.000000, 274.000000)">
<g id="rollback" transform="translate(8.000000, 8.000000)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="16" height="16"></rect>
<path d="M11.390625,3.78125 L5.71875,3.78125 L5.71875,2.625 C5.71875,2.5203125 5.5984375,2.4625 5.5171875,2.5265625 L3.2984375,4.2765625 C3.234375,4.3265625 3.234375,4.4234375 3.2984375,4.4734375 L5.5171875,6.2234375 C5.5984375,6.2875 5.71875,6.2296875 5.71875,6.125 L5.71875,4.96875 L11.203125,4.96875 C11.7554097,4.96875 12.203125,5.41646525 12.203125,5.96875 L12.203125,11.3125 C12.203125,11.8647847 11.7554097,12.3125 11.203125,12.3125 L2.93775156,12.3125 L2.93775156,12.3125 C2.55569144,12.3125 2.36466138,12.4938859 2.36466138,12.8566576 C2.36466138,13.5 2.93775156,13.5 2.93775156,13.5 C2.93775156,13.5 5.75537604,13.5 11.390625,13.5 C13,13.5 13.390625,12.8986083 13.390625,11.9909216 L13.390625,4.96875 C13.390625,4.06071182 13,3.78125 11.390625,3.78125 Z" id="路径" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -33,6 +33,7 @@ export default {
addUrl: '', addUrl: '',
pageUrl: '', pageUrl: '',
infoUrl: '', infoUrl: '',
deleteUrl: '',
basePath: '', basePath: '',
form: {} form: {}
}; };
@ -60,7 +61,7 @@ export default {
return this.$axios({ return this.$axios({
url, url,
method, method,
params: method === 'get' ? payload : null, params: (method === 'get' || method === 'delete') ? payload : null,
data: method !== 'get' ? payload : null, data: method !== 'get' ? payload : null,
}) })
}, },
@ -77,6 +78,7 @@ export default {
return this.http(this.infoUrl == '' ? this.infoPath : this.infoUrl, 'get', payload); return this.http(this.infoUrl == '' ? this.infoPath : this.infoUrl, 'get', payload);
}, },
del(payload) { del(payload) {
debugger;
return this.http(this.deleteUrl == '' ? this.deletePath : this.deleteUrl, 'delete', payload); return this.http(this.deleteUrl == '' ? this.deletePath : this.deleteUrl, 'delete', payload);
}, },

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-07-19 15:18:30 * @Date: 2021-07-19 15:18:30
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2023-11-22 13:58:30 * @LastEditTime: 2023-11-23 11:14:30
* @Description: * @Description:
--> -->
<template> <template>
@ -730,21 +730,21 @@ export default {
} }
}, },
// watch: { watch: {
// clientWidth(val) { clientWidth(val) {
// if (!this.timer) { if (!this.timer) {
// this.clientWidth = val this.clientWidth = val
// this.beilv2 = this.clientWidth / 1920 this.beilv2 = this.clientWidth / 1920
// this.timer = true this.timer = true
// let _this = this let _this = this
// setTimeout(function () { setTimeout(function () {
// _this.timer = false _this.timer = false
// }, 500) }, 500)
// } }
// // //
// this.windowWidth(val); this.windowWidth(val);
// } }
// }, },
created() { created() {
// this.fetchList('exception-alarm') // this.fetchList('exception-alarm')
// this.fetchList('inAndOutOfEachLine') // this.fetchList('inAndOutOfEachLine')
@ -941,7 +941,7 @@ export default {
</style> </style>
<style lang="scss"> <style lang="scss" >
.visual-container { .visual-container {
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 8px; width: 8px;

View File

@ -60,7 +60,7 @@
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24"> <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="24">
<base-container1 :beilv="1" :title="'设备状态监控'" :title-icon="'1_5'"> <base-container1 :beilv="1" :title="'设备状态监控'" :title-icon="'1_5'">
<div class="visual-select"> <div class="visual-select">
<el-select v-model="modelMonth" size="mini" placeholder=""> <el-select class="coldSelect" v-model="modelMonth" size="mini" placeholder="">
<el-option key="1" value="钢1线" label="钢1线" default /> <el-option key="1" value="钢1线" label="钢1线" default />
</el-select> </el-select>
</div> </div>
@ -634,21 +634,21 @@ export default {
} }
} }
}, },
watch: { // watch: {
clientWidth(val) { // clientWidth(val) {
if (!this.timer) { // if (!this.timer) {
this.clientWidth = val // this.clientWidth = val
this.beilv2 = this.clientWidth / 1920 // this.beilv2 = this.clientWidth / 1920
this.timer = true // this.timer = true
let _this = this // let _this = this
setTimeout(function () { // setTimeout(function () {
_this.timer = false // _this.timer = false
}, 500) // }, 500)
} // }
// // //
this.windowWidth(val); // this.windowWidth(val);
} // }
}, // },
created() { created() {
// this.fetchList('exception-alarm') // this.fetchList('exception-alarm')
// this.fetchList('inAndOutOfEachLine') // this.fetchList('inAndOutOfEachLine')
@ -658,6 +658,7 @@ export default {
this.windowWidth(document.documentElement.clientWidth) this.windowWidth(document.documentElement.clientWidth)
}, },
mounted() { mounted() {
console.log(1111);
const _this = this; const _this = this;
_this.beilv2 = document.documentElement.clientWidth / 1920 _this.beilv2 = document.documentElement.clientWidth / 1920
window.onresize = () => { window.onresize = () => {
@ -686,6 +687,7 @@ export default {
methods: { methods: {
windowWidth(value) { windowWidth(value) {
this.clientWidth = value this.clientWidth = value
this.beilv2 = this.clientWidth / 1920
}, },
// erd.listenTo(document.getElementById("box"), (element) => { // erd.listenTo(document.getElementById("box"), (element) => {
// var width = element.offsetWidth; // var width = element.offsetWidth;
@ -1057,7 +1059,7 @@ export default {
} }
</style> </style>
<style lang="scss"> <style lang="scss" >
.visual-container { .visual-container {
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 8px; width: 8px;
@ -1096,23 +1098,25 @@ export default {
background-color: rgba($color: #5bc4be, $alpha: 1); background-color: rgba($color: #5bc4be, $alpha: 1);
} }
} }
.el-input { .coldSelect{
min-height: 10px; .el-input {
} min-height: 10px;
}
.el-input__inner { .el-input__inner {
background-color: rgba($color: #31878c, $alpha: 0.29); background-color: rgba($color: #31878c, $alpha: 0.29);
border: rgba($color: #31878c, $alpha: 0.29); border: rgba($color: #31878c, $alpha: 0.29);
color: aliceblue; color: aliceblue;
} }
.el-divider--vertical { .el-divider--vertical {
height: 174px; height: 174px;
width: 1px; width: 1px;
border: rgba(255, 255, 255, 0.15); border: rgba(255, 255, 255, 0.15);
color: rgba(255, 255, 255, 0.15); color: rgba(255, 255, 255, 0.15);
margin-left: 3em; margin-left: 3em;
} }
}
</style> </style>
<style scoped> <style scoped>

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-07-19 15:18:30 * @Date: 2021-07-19 15:18:30
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2023-10-17 11:10:22 * @LastEditTime: 2023-11-23 11:11:35
* @Description: * @Description:
--> -->
<template> <template>
@ -44,7 +44,7 @@
<el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8"> <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8">
<base-container :title="'各工序缺陷汇总'" :title-icon="'5_2'"> <base-container :title="'各工序缺陷汇总'" :title-icon="'5_2'">
<div class="visual-select"> <div class="visual-select">
<el-select v-model="modelMonth" size="mini" placeholder=""> <el-select class="coldSelect" v-model="modelMonth" size="mini" placeholder="">
<el-option key="1" value="钢1线" label="钢1线" default /> <el-option key="1" value="钢1线" label="钢1线" default />
</el-select> </el-select>
</div> </div>
@ -740,16 +740,16 @@ export default {
// this.fetchList('order-process') // this.fetchList('order-process')
// this.fetchList('line-chart-data') // this.fetchList('line-chart-data')
this.init() this.init()
this.windowWidth(document.documentElement.clientWidth)
}, },
mounted() { mounted() {
const _this = this; this.windowWidth(document.documentElement.clientWidth)
window.onresize = () => { // const _this = this;
return (() => { // window.onresize = () => {
_this.clientWidth = `${document.documentElement.clientWidth}` // return (() => {
this.beilv2 = _this.clientWidth / 1920 // _this.clientWidth = `${document.documentElement.clientWidth}`
})() // this.beilv2 = _this.clientWidth / 1920
} // })()
// }
// this.beilv2 = window.innerWidth / 1920 // this.beilv2 = window.innerWidth / 1920
// addEventListener('resize', resizeFun = () => { // addEventListener('resize', resizeFun = () => {
// this.beilv2 = window.innerWidth / 1920 // this.beilv2 = window.innerWidth / 1920
@ -770,6 +770,7 @@ export default {
methods: { methods: {
windowWidth(value) { windowWidth(value) {
this.clientWidth = value this.clientWidth = value
this.beilv2 = this.clientWidth / 1920
}, },
// fetchList(type) { // fetchList(type) {
// switch (type) { // switch (type) {
@ -932,7 +933,8 @@ export default {
background-color: rgba($color: #5bc4be, $alpha: 1); background-color: rgba($color: #5bc4be, $alpha: 1);
} }
} }
.el-input { .coldSelect{
.el-input {
min-height: 10px; min-height: 10px;
} }
@ -949,6 +951,7 @@ export default {
color: rgba(255, 255, 255, 0.15); color: rgba(255, 255, 255, 0.15);
margin-left: 3em; margin-left: 3em;
} }
}
</style> </style>

View File

@ -202,12 +202,11 @@ export default {
} }
}, },
created() { created() {
// this.init() // $('.hiprintEpContainer').empty()
// console.log('aaaaaa')
// this.otherPaper()
}, },
destroyed () { destroyed () {
$('.hiprintEpContainer').empty() $('.hiprintEpContainer').empty()
console.log(11111)
}, },
methods: { methods: {
// handleClose() { // handleClose() {
@ -215,6 +214,7 @@ export default {
// }, // },
closed() { closed() {
$('.hiprintEpContainer').empty() $('.hiprintEpContainer').empty()
$('.hiprint-printTemplate').empty()
}, },
init(data) { init(data) {
this.drawer = true this.drawer = true
@ -256,17 +256,17 @@ export default {
// console.log(this.modelData) // console.log(this.modelData)
// console.log($('#hiprint-printTemplate').empty()) // console.log($('#hiprint-printTemplate').empty())
if (this.modelData != {}) { // if () {
console.log(this.modelData); // console.log(this.modelData);
$('.hiprintEpContainer').empty() // $('.hiprintEpContainer').empty()
hiprint.PrintElementTypeManager.build('.hiprintEpContainer', provider.value) // hiprint.PrintElementTypeManager.build('.hiprintEpContainer', provider.value)
$('.hiprint-printTemplate').empty() // $('.hiprint-printTemplate').empty()
hiprintTemplate = new hiprint.PrintTemplate({ // hiprintTemplate = new hiprint.PrintTemplate({
template: JSON.parse(this.modelData), // template: JSON.parse(this.modelData),
settingContainer: '#PrintElementOptionSetting', // settingContainer: '#PrintElementOptionSetting',
paginationContainer: '.hiprint-printPagination' // paginationContainer: '.hiprint-printPagination'
}) // })
} else { // } else {
$('.hiprintEpContainer').empty() $('.hiprintEpContainer').empty()
console.log(this.modelData); console.log(this.modelData);
hiprint.PrintElementTypeManager.build('.hiprintEpContainer', provider.value) hiprint.PrintElementTypeManager.build('.hiprintEpContainer', provider.value)
@ -275,11 +275,11 @@ export default {
const template = provider.value const template = provider.value
// console.log(template) // console.log(template)
hiprintTemplate = new hiprint.PrintTemplate({ hiprintTemplate = new hiprint.PrintTemplate({
template: template, template: this.modelData != '' ? JSON.parse(this.modelData) : {},
settingContainer: '#PrintElementOptionSetting', settingContainer: '#PrintElementOptionSetting',
paginationContainer: '.hiprint-printPagination' paginationContainer: '.hiprint-printPagination'
}) })
} // }
hiprintTemplate.design('#hiprint-printTemplate') hiprintTemplate.design('#hiprint-printTemplate')
// console.log(hiprintTemplate) // console.log(hiprintTemplate)
console.log(hiprintTemplate); console.log(hiprintTemplate);

View File

@ -236,212 +236,10 @@ export const aProvider = function (ops) {
}; };
}; };
// 自定义设计元素2
export const bProvider = function (ops) {
var addElementTypes = function (context) {
context.removePrintElementTypes("bProviderModule");
context.addPrintElementTypes(
"bProviderModule",
[
new hiprint.PrintElementTypeGroup("常规", [
{
tid: 'bProviderModule.header', title: '单据表头', data: '单据表头', type: 'text',
options: {
testData: '单据表头',
height: 17,
fontSize: 16.5,
fontWeight: "700",
textAlign: "center",
hideTitle: true
}
},
{
tid: 'bProviderModule.type', title: '单据类型', data: '单据类型', type: 'text',
options: {
testData: '单据类型',
height: 16,
fontSize: 15,
fontWeight: "700",
textAlign: "center",
hideTitle: true
}
},
{
tid: 'bProviderModule.order', title: '订单编号', data: 'XS888888888', type: 'text',
options: {
field: 'orderId',
testData: 'XS888888888',
height: 16,
fontSize: 6.75,
fontWeight: "700",
textAlign: "left",
textContentVerticalAlign: "middle"
}
},
{
tid: 'bProviderModule.date', title: '业务日期', data: '2020-01-01', type: 'text',
options: {
field: 'date',
testData: '2020-01-01',
height: 16,
fontSize: 6.75,
fontWeight: "700",
textAlign: "left",
textContentVerticalAlign: "middle"
}
},
{
tid: 'bProviderModule.barcode', title: '条形码', data: 'XS888888888', type: 'text',
options: {
field: 'barcode',
testData: 'XS888888888',
height: 32,
fontSize: 12,
lineHeight: 18,
textType: "barcode"
}
},
{
tid: 'bProviderModule.qrcode', title: '二维码', data: 'XS888888888', type: 'text',
options: {
field: 'qrcode',
testData: 'XS888888888',
height: 32,
fontSize: 12,
lineHeight: 18,
textType: "qrcode"
}
},
{
tid: 'bProviderModule.platform', title: '平台名称', data: '平台名称', type: 'text',
options: {
testData: '平台名称',
height: 17,
fontSize: 16.5,
fontWeight: "700",
textAlign: "center",
hideTitle: true
}
},
{tid: 'bProviderModule.image', title: 'Logo', data: 'data: image/png;base64iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAHVklEQVR4nO2dT2wUVRzHv2/2T5eSAlvFilwgQUH+eLACaUxEiJLAxdh44MDZi2ChUIrSFtoCgbbSP4GDdwgeEA8kRTAI0iIGBL1ITLxgLAlCsCKBYndnx7zd35pl2+7On/de387OJ9l00515/z7z/szMmzfs7869mD0yCjw2gZAB4VhAiln4/dUaRGdU18aOnzw9dn24ioGJj0soFsJr1z2yNm+qN2/fvRFL8XyMYqTmFfxZ+TwMc1xKDsL/f2Ms8xGeLwuIRpCKx99MHf/i4uPrw5GQ9jIAfsCMXfw2HkuOX03Wb1qLh4+uIGFJjzecPoS5iEhUTg1hDMaM2GuRk6cGMTQUCYmPQQq86CMAkkPDkQirGAzXf7Du34ejN9IHmETCRjQGPL6D+4NnYDEJDQmXbaY6on/dm2Vm/jHdZe0Almm6Ll+YNQbzasX7765BNHI1o0sOYRghwExg7MG9dDQSiqsdwHuZmlFKMjLwQ3QcFtjlSxHTenLO3Lp7vfU09AOS41Ka+HC6CjIDIaqmguvIPgBtIgOcDhjVlMTQtarKOScumR/teCdpxoeNZGJCapjFt7Rcywrb2MYtnQBatCpZTzCkYCF+5suKRXf+6EvOmv0GSzwrhB/QpmGkBYZSpqvIZAlp8ZeMLFwKUH3z2gqWyd/+3F/5b1yRQQMCN8gQspeaKt+SAItSCxCiPjIjhDEkjRAMxmCZSbgZkYke537qdxl57KM8C0OkkD0ADohMXIlwgPIuBFFC9uS3p2XGflFSRAgpdxlZeBl84jUQr0ImjDTKGWZZBwE0eCkCL0J20UgjgGCwEDHNPjB86PbiilshfGRxOBCRD0tLCSWTnzMLO9yE4EbIzjIdTdmGpc8/rB4qK0c4FcKbqe7pyWZJ0k1lZhsnQnZq3EzV00dHDjupKXaFNGtcM7YA+Io+WzRIz2R0UxkWxY6QJgCHlCbfPlzAsZytj2ks5RCVZUGKCdkOoEt+Wl3RkCcjyzGv5wIS6aIynZJCQni7d0TTjPFaMFDg9wGNa8qRQn3KVEI+1rjPmKpm5KNzTemmMp7AZEK2AehXmz7bbC1SM/IZoH10pJ/K+hnyhXBrvZpmoBHAURf7HaV9daQ3v6Zk7hhWVr4AYDOAzzRNeKPHAyW7r459Yj/deUynMcyqqpY9/fXW+RTwkiF/ms5pADcd7nMbwAkBcfMM3wOwwOF+rys46TxCt+T72d2NG0YSg2fnC58ANDkbAZyVH41QNgAYVBTXNiMxeLYG6qawvagmGqGoTHOfwcAe6T8TvWwYlTC7OsALgRDNCIRoRiBEMwIhmhEI0YxAiGYEQjRDtZCY9iUyEaVpVi3kvuL4RKA0zSqF8Ad5TimMTxSnKO1KUCWEZ6hDVaYk0KFKigohbSUuI0uHiieKZQtp89kM+U7ZUmQKafHp4wpSH/eWJaTT5zPkD8g62GQI8cXqDTZok/HEsWgh+3Of2y4D2kU/0idKyEOaJdgqKLxSotXlfLFJESXkicKZGTrys6g0iRIyD8AvAFYLCq+UWC1yACOyD+Hrf1wAUCcwTN2pozzXiEqn6E59JoBvANQKDldHaimvM0WmTcawlydw2Oc1pY7yKFQGJJ4YxqiTXyEp/OlkBeVNyn0SmZdO5gC47rOOfjXlaY6sCGRfXKwA8LVP+pRaykuFzEhUXH7nR9P3AFYqiEsWKykP0mpGFlU3qKI0IlmlKD6RrKK0R1VEpvIW7uwSHXnVUdqVoHqSwz+K4xOB0jQH87I0IxCiGYEQzQiEaEYgRDMCIZoRCNGMQIhmBEI0gwuJK0xScKZemHiY1mzqUxThYgBLHO7zQOAzGnMBPOdwn8WC4rbDNjaSWVajQaEUp9wBsB7ALY/hLAVwHsB89VmwRXrhuGwf0q/xIl/z6f6105qVyxIKQ1cZjdlV/HI79V6N1yjk/dxlAMtc7LuM9lXZVzqhIXdxtvxR1kCxZUynkbl0o2ihgyQspH3mapqn7flrSE427O3TuKbwGZI/AlhuY9vltO08Belyw6T99lTnIQN2VmGeJqppskGhpfoW0DbVmuahaarVVQudGPZo3tH/RCOnfJbSbzp34D1T/VjsTL3X6esWFMJngJwDsCgnykX0P+mzQ1yyq9jqqtnzkGI0a7wgPz9pfJm+/6ZxB77bzus+7L7pkwdkarr8OBdwJee7jjQVaqZysVtDsuwK3j3lmGYnb5hwerW3S+PRl440OX3dh5vL7z0iXzXqY/bYbaZycXs/5KDdV/iUKc1URo7xcoOqq0yfui1Gq5e3EoUava1qzS/aJQGs8xKIj2jx+gCoVyGcoUBKGs8yIEgIAiliZEDwJAehL3ovIYS+2F9UDckyRH/fFhmoxuwTvdaJaCGc7+gyi9+br1YZSzTJEAIaffHrZG/JCFwDpK16JEsI5yK9uMdvzVe7zAUxZQrhXKKBwxqZkSikQ8aiZbnIFgKS4oea0i5bBhQJgQ+kKJEBhUJAUkqxo+cduJqVrQH8B6xBgBhvJFNDAAAAAElFTkSuQmCC', type: 'image', options: {
src: 'data: image/png;base64iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAHVklEQVR4nO2dT2wUVRzHv2/2T5eSAlvFilwgQUH+eLACaUxEiJLAxdh44MDZi2ChUIrSFtoCgbbSP4GDdwgeEA8kRTAI0iIGBL1ITLxgLAlCsCKBYndnx7zd35pl2+7On/de387OJ9l00515/z7z/szMmzfs7869mD0yCjw2gZAB4VhAiln4/dUaRGdU18aOnzw9dn24ioGJj0soFsJr1z2yNm+qN2/fvRFL8XyMYqTmFfxZ+TwMc1xKDsL/f2Ms8xGeLwuIRpCKx99MHf/i4uPrw5GQ9jIAfsCMXfw2HkuOX03Wb1qLh4+uIGFJjzecPoS5iEhUTg1hDMaM2GuRk6cGMTQUCYmPQQq86CMAkkPDkQirGAzXf7Du34ejN9IHmETCRjQGPL6D+4NnYDEJDQmXbaY6on/dm2Vm/jHdZe0Almm6Ll+YNQbzasX7765BNHI1o0sOYRghwExg7MG9dDQSiqsdwHuZmlFKMjLwQ3QcFtjlSxHTenLO3Lp7vfU09AOS41Ka+HC6CjIDIaqmguvIPgBtIgOcDhjVlMTQtarKOScumR/teCdpxoeNZGJCapjFt7Rcywrb2MYtnQBatCpZTzCkYCF+5suKRXf+6EvOmv0GSzwrhB/QpmGkBYZSpqvIZAlp8ZeMLFwKUH3z2gqWyd/+3F/5b1yRQQMCN8gQspeaKt+SAItSCxCiPjIjhDEkjRAMxmCZSbgZkYke537qdxl57KM8C0OkkD0ADohMXIlwgPIuBFFC9uS3p2XGflFSRAgpdxlZeBl84jUQr0ImjDTKGWZZBwE0eCkCL0J20UgjgGCwEDHNPjB86PbiilshfGRxOBCRD0tLCSWTnzMLO9yE4EbIzjIdTdmGpc8/rB4qK0c4FcKbqe7pyWZJ0k1lZhsnQnZq3EzV00dHDjupKXaFNGtcM7YA+Io+WzRIz2R0UxkWxY6QJgCHlCbfPlzAsZytj2ks5RCVZUGKCdkOoEt+Wl3RkCcjyzGv5wIS6aIynZJCQni7d0TTjPFaMFDg9wGNa8qRQn3KVEI+1rjPmKpm5KNzTemmMp7AZEK2AehXmz7bbC1SM/IZoH10pJ/K+hnyhXBrvZpmoBHAURf7HaV9daQ3v6Zk7hhWVr4AYDOAzzRNeKPHAyW7r459Yj/deUynMcyqqpY9/fXW+RTwkiF/ms5pADcd7nMbwAkBcfMM3wOwwOF+rys46TxCt+T72d2NG0YSg2fnC58ANDkbAZyVH41QNgAYVBTXNiMxeLYG6qawvagmGqGoTHOfwcAe6T8TvWwYlTC7OsALgRDNCIRoRiBEMwIhmhEI0YxAiGYEQjRDtZCY9iUyEaVpVi3kvuL4RKA0zSqF8Ad5TimMTxSnKO1KUCWEZ6hDVaYk0KFKigohbSUuI0uHiieKZQtp89kM+U7ZUmQKafHp4wpSH/eWJaTT5zPkD8g62GQI8cXqDTZok/HEsWgh+3Of2y4D2kU/0idKyEOaJdgqKLxSotXlfLFJESXkicKZGTrys6g0iRIyD8AvAFYLCq+UWC1yACOyD+Hrf1wAUCcwTN2pozzXiEqn6E59JoBvANQKDldHaimvM0WmTcawlydw2Oc1pY7yKFQGJJ4YxqiTXyEp/OlkBeVNyn0SmZdO5gC47rOOfjXlaY6sCGRfXKwA8LVP+pRaykuFzEhUXH7nR9P3AFYqiEsWKykP0mpGFlU3qKI0IlmlKD6RrKK0R1VEpvIW7uwSHXnVUdqVoHqSwz+K4xOB0jQH87I0IxCiGYEQzQiEaEYgRDMCIZoRCNGMQIhmBEI0gwuJK0xScKZemHiY1mzqUxThYgBLHO7zQOAzGnMBPOdwn8WC4rbDNjaSWVajQaEUp9wBsB7ALY/hLAVwHsB89VmwRXrhuGwf0q/xIl/z6f6105qVyxIKQ1cZjdlV/HI79V6N1yjk/dxlAMtc7LuM9lXZVzqhIXdxtvxR1kCxZUynkbl0o2ihgyQspH3mapqn7flrSE427O3TuKbwGZI/AlhuY9vltO08Belyw6T99lTnIQN2VmGeJqppskGhpfoW0DbVmuahaarVVQudGPZo3tH/RCOnfJbSbzp34D1T/VjsTL3X6esWFMJngJwDsCgnykX0P+mzQ1yyq9jqqtnzkGI0a7wgPz9pfJm+/6ZxB77bzus+7L7pkwdkarr8OBdwJee7jjQVaqZysVtDsuwK3j3lmGYnb5hwerW3S+PRl440OX3dh5vL7z0iXzXqY/bYbaZycXs/5KDdV/iUKc1URo7xcoOqq0yfui1Gq5e3EoUava1qzS/aJQGs8xKIj2jx+gCoVyGcoUBKGs8yIEgIAiliZEDwJAehL3ovIYS+2F9UDckyRH/fFhmoxuwTvdaJaCGc7+gyi9+br1YZSzTJEAIaffHrZG/JCFwDpK16JEsI5yK9uMdvzVe7zAUxZQrhXKKBwxqZkSikQ8aiZbnIFgKS4oea0i5bBhQJgQ+kKJEBhUJAUkqxo+cduJqVrQH8B6xBgBhvJFNDAAAAAElFTkSuQmCC',
fit: 'none'
}},
]),
new hiprint.PrintElementTypeGroup("客户", [
{
tid: 'bProviderModule.khname', title: '客户名称', data: '高级客户', type: 'text',
options: {
field: 'name',
testData: '高级客户',
height: 16,
fontSize: 6.75,
fontWeight: "700",
textAlign: "left",
textContentVerticalAlign: "middle"
}
},
{
tid: 'bProviderModule.tel', title: '客户电话', data: '18888888888', type: 'text',
options: {
field: 'tel',
testData: '18888888888',
height: 16,
fontSize: 6.75,
fontWeight: "700",
textAlign: "left",
textContentVerticalAlign: "middle"
}
},
]),
new hiprint.PrintElementTypeGroup("表格/其他", [
{
tid: 'bProviderModule.table', title: '订单数据',
type: 'table',
options: {
field: 'table',
fields: [
{text: '名称', field: 'NAME'},
{text: '数量', field: 'SL'},
{text: '规格', field: 'GG'},
{text: '条码', field: 'TM'},
{text: '单价', field: 'DJ'},
{text: '金额', field: 'JE'},
{text: '备注', field: 'DETAIL'},
],
},
editable: true,
columnDisplayEditable: true,//列显示是否能编辑
columnDisplayIndexEditable: true,//列顺序显示是否能编辑
columnTitleEditable: true,//列标题是否能编辑
columnResizable: true, //列宽是否能调整
columnAlignEditable: true,//列对齐是否调整
columns: [
[
{title: '名称', align: 'center', field: 'NAME', width: 100},
{title: '数量', align: 'center', field: 'SL', width: 100},
{title: '条码', align: 'center', field: 'TM', width: 100},
{title: '规格', align: 'center', field: 'GG', width: 100},
{title: '单价', align: 'center', field: 'DJ', width: 100},
{title: '金额', align: 'center', field: 'JE', width: 100},
{title: '备注', align: 'center', field: 'DETAIL', width: 100},
]
],
footerFormatter: function (options, rows, data, currentPageGridRowsData) {
if (data && data['totalCap']) {
return `<td style="padding:0 10px" colspan="100">${'应收金额大写: ' + data['totalCap']}</td>`
}
return '<td style="padding:0 10px" colspan="100">应收金额大写: </td>'
},
},
{tid: 'bProviderModule.customText', title: '文本', customText: '自定义文本', custom: true, type: 'text'},
{
tid: 'bProviderModule.longText', title: '长文本', type: 'longText', options: {
field: 'test.longText',
width: 200,
testData: '长文本分页/不分页测试'
},
}
]),
new hiprint.PrintElementTypeGroup("辅助", [
{
tid: 'bProviderModule.hline',
title: '横线',
type: 'hline'
},
{
tid: 'bProviderModule.vline',
title: '竖线',
type: 'vline'
},
{
tid: 'bProviderModule.rect',
title: '矩形',
type: 'rect'
},
{
tid: 'bProviderModule.oval',
title: '椭圆',
type: 'oval'
}
])
]
);
};
return {
addElementTypes: addElementTypes
};
};
// type: 1供货商 2经销商 // type: 1供货商 2经销商
export default [{ export default [{
name: 'A设计', name: 'A设计',
value: 'aProviderModule', value: 'aProviderModule',
type: 1, type: 1,
f: aProvider() f: aProvider()
}, {
name: 'B设计',
value: 'bProviderModule',
type: 2,
f: bProvider()
}] }]

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 14:55:51 * @Date: 2023-08-01 14:55:51
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2023-11-07 19:28:18 * @LastEditTime: 2023-11-22 14:40:59
* @Description: * @Description:
--> -->
<template> <template>
@ -77,7 +77,7 @@ const tableProps = [
{ {
prop: 'printStatus', prop: 'printStatus',
label: '打印状态', label: '打印状态',
// subcomponent: unitDict, filter: (val) => val == 1 ? '未打印' : '已打印',
}, },
{ {
prop: 'createTime', prop: 'createTime',
@ -96,7 +96,11 @@ export default {
exportURL: exportPackingExcel, exportURL: exportPackingExcel,
}, },
tableProps, tableProps,
tableBtn: [ tableBtn: [
{
type: 'print',
btnName: '打印',
},
this.$auth.hasPermi(`base:packaging-print-log:update`) this.$auth.hasPermi(`base:packaging-print-log:update`)
? { ? {
type: 'edit', type: 'edit',
@ -109,10 +113,6 @@ export default {
btnName: '删除', btnName: '删除',
} }
: undefined, : undefined,
{
type: 'print',
btnName: '打印',
},
].filter((v) => v), ].filter((v) => v),
tableData: [], tableData: [],
formConfig: [ formConfig: [

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 14:55:51 * @Date: 2023-08-01 14:55:51
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2023-11-01 10:28:29 * @LastEditTime: 2023-11-22 14:40:07
* @Description: * @Description:
--> -->
<template> <template>
@ -33,6 +33,11 @@ import {
} from '@/api/base/printModel'; } from '@/api/base/printModel';
const tableProps = [ const tableProps = [
{
prop: 'createTime',
label: '创建时间',
filter: parseTime
},
{ {
prop: 'name', prop: 'name',
label: '模板名称' label: '模板名称'
@ -64,7 +69,11 @@ export default {
}, },
tableProps, tableProps,
modelShow:false, modelShow:false,
tableBtn: [ tableBtn: [
{
type: 'print',
btnName: '查看',
},
this.$auth.hasPermi(`base:packaging-print-model:update`) this.$auth.hasPermi(`base:packaging-print-model:update`)
? { ? {
type: 'edit', type: 'edit',
@ -77,10 +86,6 @@ export default {
btnName: '删除', btnName: '删除',
} }
: undefined, : undefined,
{
type: 'print',
btnName: '查看',
},
].filter((v) => v), ].filter((v) => v),
tableData: [], tableData: [],
formConfig: [ formConfig: [

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 14:55:51 * @Date: 2023-08-01 14:55:51
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2023-10-18 16:11:22 * @LastEditTime: 2023-11-22 14:36:33
* @Description: * @Description:
--> -->
<template> <template>
@ -107,12 +107,12 @@ export default {
// valueFormat: 'yyyy-MM-dd', // valueFormat: 'yyyy-MM-dd',
// param: 'createTime', // param: 'createTime',
// }, // },
{ // {
type: 'button', // type: 'button',
btnName: '搜索', // btnName: '',
name: 'search', // name: 'search',
color: 'primary', // color: 'primary',
}, // },
// { // {
// type: 'separate', // type: 'separate',
// }, // },
@ -125,7 +125,7 @@ export default {
type: 'separate', type: 'separate',
}, },
{ {
type: this.$auth.hasPermi('base:packaging-print-log:create') ? 'button' : '', type: this.$auth.hasPermi('base:packaging-print-type:create') ? 'button' : '',
btnName: '新增', btnName: '新增',
name: 'add', name: 'add',
color: 'success', color: 'success',

View File

@ -6,131 +6,150 @@
* @Description: * @Description:
--> -->
<template> <template>
<div> <div class="balace-chart">
<div style="margin: 20px"> <div style="margin: 20px">
<el-button v-for="(item, index) in buttonList" :key="index" :class="[item.actived ? 'activeButton': 'normalButton']" @click="changeChart(index)">{{ item.name }}</el-button> <el-button
</div> v-for="(item, index) in buttonList"
<div id="chart" ref="chartDiv" :class="className" :style="{height:height,width:width}" /> :key="index"
</div> :class="[item.actived ? 'activeButton' : '']"
@click="changeChart(index)">
{{ item.name }}
</el-button>
</div>
<div
id="chart"
ref="chartDiv"
:class="className"
:style="{ height: height, width: width }" />
</div>
</template> </template>
<script> <script>
import * as echarts from 'echarts' import * as echarts from 'echarts';
require('echarts/theme/macarons') // echarts theme require('echarts/theme/macarons'); // echarts theme
// import resize from './mixins/resize' // import resize from './mixins/resize'
export default { export default {
// mixins: [resize], // mixins: [resize],
props: { props: {
className: { className: {
type: String, type: String,
default: 'chart' default: 'chart',
}, },
width: { width: {
type: String, type: String,
default: '100%' default: '100%',
}, },
height: { height: {
type: String, type: String,
default: '350px' default: '350px',
}, },
// autoResize: { // autoResize: {
// type: Boolean, // type: Boolean,
// default: true // default: true
// } // }
}, },
data() { data() {
return { return {
chart: null, chart: null,
dataArray: [], dataArray: [],
xDatas: [], xDatas: [],
buttonList: [] buttonList: [],
} };
}, },
mounted() { mounted() {
// this.initChart() // this.initChart()
}, this.$nextTick(() => {
methods: { this.changeChart(0);
changeChart(index) { });
this.setOptions(this.xDatas, this.dataArray[index]) },
this.buttonList.forEach((item, s) => { methods: {
if (index === s) { changeChart(index) {
// item.actived = true this.setOptions(this.xDatas, this.dataArray[index]);
this.$nextTick(() =>{ this.buttonList.forEach((item, s) => {
// item.actived = true if (index === s) {
this.$set(item, 'actived', true) // item.actived = true
}) this.$nextTick(() => {
} else { // item.actived = true
// item.actived = false this.$set(item, 'actived', true);
this.$nextTick(() =>{ });
// item.actived = false } else {
this.$set(item, 'actived', false) // item.actived = false
}) this.$nextTick(() => {
// this.$set(item, 'actived', false) // item.actived = false
} this.$set(item, 'actived', false);
}) });
console.log('看一下数22222据', this.dataArray) // this.$set(item, 'actived', false)
}, }
initChart(xData, yData, lineName) { });
this.dataArray = yData console.log('看一下数22222据', this.dataArray);
this.buttonList = this.dataArray.map((item, index) => { },
return { initChart(xData, yData, lineName) {
'name': item.name, this.dataArray = yData;
'actived': index === 0 ? true : false this.buttonList = this.dataArray.map((item, index) => {
} return {
}) name: item.name,
console.log('看一下数据', this.dataArray) actived: index === 0 ? true : false,
this.xDatas = xData };
this.chart = echarts.init(this.$refs.chartDiv, 'macarons') });
// this.chart = echarts.init(document.getElementById('chart'), 'macarons') console.log('看一下数据', this.dataArray);
// this.setOptions(xData, yData[0], lineName) this.xDatas = xData;
}, this.chart = echarts.init(this.$refs.chartDiv, 'macarons');
setOptions(xData, dataList, lineName) { // this.chart = echarts.init(document.getElementById('chart'), 'macarons')
// let seriesData = [] // this.setOptions(xData, yData[0], lineName)
// lineName.forEach((item,index) => { },
// seriesData.push({ setOptions(xData, dataList, lineName) {
// name: item, // let seriesData = []
// data: yData[index], // lineName.forEach((item,index) => {
// type: 'line', // seriesData.push({
// }) // name: item,
// }) // data: yData[index],
this.chart.setOption({ // type: 'line',
xAxis: { // })
type: 'category', // })
data: xData this.chart.setOption({
}, xAxis: {
tooltip: { type: 'category',
trigger: 'axis' data: xData,
}, },
legend: { tooltip: {
data:lineName trigger: 'axis',
}, },
yAxis: { legend: {
type: 'value' data: lineName,
}, },
series: [ yAxis: {
{ type: 'value',
name: '设备CT', },
data: dataList.eqData, series: [
type: 'line', {
}, name: '设备CT',
{ data: dataList.eqData,
name: '产线CT', type: 'line',
data: dataList.plData, },
type: 'line', {
} name: '产线CT',
] data: dataList.plData,
}) type: 'line',
} },
} ],
} });
},
},
};
</script> </script>
<style scoped> <style scoped>
.activeButton { .balace-chart >>> .el-button {
background-color: rgb(93,159,255); background: #e3e3e3;
} color: #333;
.normalButton { transition: all 0.3s;
background-color: none; border: none;
&.activeButton,
&:hover {
background: #0b58ff;
color: #fff;
}
} }
</style> </style>

View File

@ -1,7 +1,7 @@
<template> <template>
<el-form ref="addOrUpdate" :rules="rules" label-width="130px" :model="form"> <el-form ref="addOrUpdate" :rules="rules" label-width="130px" :model="form" label-position='top'>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="订单名" prop="orderId"> <el-form-item label="订单名" prop="orderId">
<el-select v-model="form.orderId" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.orderId" placeholder="请选择" style="width: 100%;">
<el-option <el-option
@ -13,14 +13,12 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="发货单名称" prop="name"> <el-form-item label="发货单名称" prop="name">
<el-input v-model="form.name"></el-input> <el-input v-model="form.name"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span='6'>
<el-row>
<el-col :span='12'>
<el-form-item label="发货时间" prop="deliveryTime"> <el-form-item label="发货时间" prop="deliveryTime">
<el-date-picker <el-date-picker
v-model="form.deliveryTime" v-model="form.deliveryTime"
@ -32,14 +30,14 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="发货单号" prop="code"> <el-form-item label="发货单号" prop="code">
<el-input v-model="form.code"></el-input> <el-input v-model="form.code"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="发货负责人" prop="deliveryPersonId"> <el-form-item label="发货负责人" prop="deliveryPersonId">
<el-select v-model="form.deliveryPersonId" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.deliveryPersonId" placeholder="请选择" style="width: 100%;">
<el-option <el-option
@ -51,21 +49,19 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="运输负责人" prop="principal"> <el-form-item label="运输负责人" prop="principal">
<el-input v-model="form.principal"></el-input> <el-input v-model="form.principal"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span='6'>
<el-row>
<el-col :span='12'>
<el-form-item label="运输联系方式" prop="principalCall"> <el-form-item label="运输联系方式" prop="principalCall">
<el-input v-model="form.principalCall"></el-input> <el-input v-model="form.principalCall"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="运输费用" prop="principalCost"> <el-form-item label="运输费用" prop="principalCost">
<el-input-number v-model="form.principalCost" :min="0" :max='9999999999' :precision='2'></el-input-number> <el-input-number v-model="form.principalCost" :min="0" :max='9999999999' :precision='2' style='width: 100%;'></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>

View File

@ -2,10 +2,11 @@
<div> <div>
<el-drawer <el-drawer
title="发货清单详情" title="发货清单详情"
size="60%" size="65%"
:append-to-body="true" :append-to-body="true"
:visible.sync="centervisible" :visible.sync="centervisible"
@close='close'> @close='close'
:show-close='false'>
<div class="box1"> <div class="box1">
<el-row> <el-row>
<el-col :span='12'> <el-col :span='12'>
@ -90,7 +91,7 @@ const tableProps = [
{ {
prop: 'packagingSize', prop: 'packagingSize',
label: '装箱规格(片/箱)', label: '装箱规格(片/箱)',
width: 120 width: 150
}, },
{ {
prop: 'packagingNum', prop: 'packagingNum',

View File

@ -1,19 +1,17 @@
<template> <template>
<el-form ref="addOrUpdate" :rules="rules" label-width="130px" :model="form"> <el-form ref="addOrUpdate" :rules="rules" label-width="130px" :model="form" label-position='top'>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="发货单号"> <el-form-item label="发货单号">
<el-input v-model="code" disabled></el-input> <el-input v-model="code" disabled></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="装车单号" prop="deliveryCarCode"> <el-form-item label="装车单号" prop="deliveryCarCode">
<el-input v-model="form.deliveryCarCode"></el-input> <el-input v-model="form.deliveryCarCode"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span='6'>
<el-row>
<el-col :span='12'>
<el-form-item label="装车时间" prop="loadTime"> <el-form-item label="装车时间" prop="loadTime">
<el-date-picker <el-date-picker
v-model="form.loadTime" v-model="form.loadTime"
@ -25,19 +23,19 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="车辆联系人" prop="contactPerson"> <el-form-item label="车辆联系人" prop="contactPerson">
<el-input v-model="form.contactPerson"></el-input> <el-input v-model="form.contactPerson"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="联系方式" prop="contactPersonCall"> <el-form-item label="联系方式" prop="contactPersonCall">
<el-input v-model="form.contactPersonCall"></el-input> <el-input v-model="form.contactPersonCall"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="装车产品" prop="productId"> <el-form-item label="装车产品" prop="productId">
<el-select v-model="form.productId" disabled placeholder="请选择" style="width: 100%;"> <el-select v-model="form.productId" disabled placeholder="请选择" style="width: 100%;">
<el-option <el-option
@ -49,26 +47,24 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span='6'>
<el-row>
<el-col :span='12'>
<el-form-item label="装箱规格(片/箱)" prop="packagingSize"> <el-form-item label="装箱规格(片/箱)" prop="packagingSize">
<el-input-number v-model="form.packagingSize" :min="0" :max='9999999999' style="width:100%"></el-input-number> <el-input-number v-model="form.packagingSize" :min="0" :max='9999999999' style="width:100%"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="产品批次" prop="productDate"> <el-form-item label="产品批次" prop="productDate">
<el-input v-model="form.productDate" placeholder="多个批次用','隔开"></el-input> <el-input v-model="form.productDate" placeholder="多个批次用','隔开"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="箱/托数" prop="packagingNum"> <el-form-item label="箱/托数" prop="packagingNum">
<el-input-number v-model="form.packagingNum" :min="0" :max='9999999999' style="width:100%"></el-input-number> <el-input-number v-model="form.packagingNum" :min="0" :max='9999999999' style="width:100%"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="装车总量" prop="quantity"> <el-form-item label="装车总量" prop="quantity">
<el-input-number v-model="form.quantity" :min="0" :max='9999999999' style="width:100%"></el-input-number> <el-input-number v-model="form.quantity" :min="0" :max='9999999999' style="width:100%"></el-input-number>
</el-form-item> </el-form-item>

View File

@ -103,7 +103,8 @@ const tableProps = [
}, },
{ {
prop: 'principalCost', prop: 'principalCost',
label: '运输费用' label: '运输费用',
align: 'right'
}, },
{ {
prop: 'remark', prop: 'remark',
@ -225,7 +226,11 @@ export default {
}, },
getList() { getList() {
deliveryLogPage({...this.queryParams}).then(res => { deliveryLogPage({...this.queryParams}).then(res => {
this.list = res.data.list || [] let arr = res.data.list || []
arr && arr.map(item => {
item.principalCost = item.principalCost.toFixed(2)
})
this.list = arr
this.total = res.data.total || 0 this.total = res.data.total || 0
}) })
}, },

View File

@ -4,7 +4,8 @@
:visible.sync="centervisible" :visible.sync="centervisible"
size="80%" size="80%"
class="deliveryLogDetail" class="deliveryLogDetail"
@close='closeA'> @close='closeA'
:show-close='false'>
<div class="box1"> <div class="box1">
<div class="box_col"> <div class="box_col">
<div class="blodTip">订单名</div> <div class="blodTip">订单名</div>
@ -77,7 +78,8 @@
size="60%" size="60%"
:append-to-body="true" :append-to-body="true"
:visible.sync="innerDrawer" :visible.sync="innerDrawer"
@close='closeB'> @close='closeB'
:show-close='false'>
<div class="box3"> <div class="box3">
<el-row> <el-row>
<el-col :span='12'> <el-col :span='12'>

View File

@ -2,7 +2,7 @@
<div class="searchBarBox divHeight" ref="searchBarRef" :style="{ paddingRight: isFold ? '55px' : '0px' }"> <div class="searchBarBox divHeight" ref="searchBarRef" :style="{ paddingRight: isFold ? '55px' : '0px' }">
<el-form :inline="true" class="demo-form-inline"> <el-form :inline="true" class="demo-form-inline">
<span class="blue-block"></span> <span class="blue-block"></span>
<el-form-item label="能源类型"> <el-form-item label="能源类型" required>
<el-select v-model="queryParams.energyTypeId" placeholder="请选择" style="width: 100px;" size="small"> <el-select v-model="queryParams.energyTypeId" placeholder="请选择" style="width: 100px;" size="small">
<el-option <el-option
v-for="item in energyTypeList" v-for="item in energyTypeList"
@ -12,7 +12,7 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="时间维度"> <el-form-item label="时间维度" required>
<el-select v-model="queryParams.timeDim" placeholder="请选择" style="width: 80px;" size="small"> <el-select v-model="queryParams.timeDim" placeholder="请选择" style="width: 80px;" size="small">
<el-option <el-option
v-for="item in getDictDatas(this.DICT_TYPE.TIME_DIM)" v-for="item in getDictDatas(this.DICT_TYPE.TIME_DIM)"
@ -22,7 +22,7 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="时间范围"> <el-form-item label="时间范围" required>
<div v-show="queryParams.timeDim === '1'"> <div v-show="queryParams.timeDim === '1'">
<el-date-picker <el-date-picker
v-model="timeValue" v-model="timeValue"
@ -124,7 +124,7 @@
</el-date-picker> </el-date-picker>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="对象维度"> <el-form-item label="对象维度" required>
<el-select v-model="queryParams.objType" placeholder="请选择" style="width: 80px;" @change="selectObjs" size="small"> <el-select v-model="queryParams.objType" placeholder="请选择" style="width: 80px;" @change="selectObjs" size="small">
<el-option <el-option
v-for="item in getDictDatas(this.DICT_TYPE.OBJECT_TYPE)" v-for="item in getDictDatas(this.DICT_TYPE.OBJECT_TYPE)"
@ -134,7 +134,7 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="对象选择"> <el-form-item label="对象选择" required>
<el-select v-model="queryParams.objIds" placeholder="请选择" multiple :multiple-limit='5' collapse-tags style="width: 200px;" size="small"> <el-select v-model="queryParams.objIds" placeholder="请选择" multiple :multiple-limit='5' collapse-tags style="width: 200px;" size="small">
<el-option <el-option
v-for="item in objectList" v-for="item in objectList"
@ -148,6 +148,8 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" size="small" @click="search">查询</el-button> <el-button type="primary" size="small" @click="search">查询</el-button>
<span class="separateStyle"></span>
<el-button size="small" @click="resetBtn">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span v-if="isFold" class="foldClass" @click='switchMode'> <span v-if="isFold" class="foldClass" @click='switchMode'>
@ -400,6 +402,19 @@ export default {
console.log(this.queryParams) console.log(this.queryParams)
this.$emit('submit', this.queryParams) this.$emit('submit', this.queryParams)
}, },
resetBtn() {
this.queryParams.energyTypeId = null
this.queryParams.timeDim = this.getDictDatas(this.DICT_TYPE.TIME_DIM)[0].value //
this.queryParams.objIds = []
this.queryParams.objType = ''
this.timeValue = []
this.dateValue = []
this.weekValue1 = null
this.weekValue2 = null
this.monthValue = []
this.yearValue1 = null
this.yearValue2 = null
},
transformTime(timeStamp) {// transformTime(timeStamp) {//
let year = moment(timeStamp).format('YYYY') let year = moment(timeStamp).format('YYYY')
let month = moment(timeStamp).format('MM') let month = moment(timeStamp).format('MM')
@ -471,4 +486,12 @@ export default {
height: 45px; height: 45px;
overflow: hidden; overflow: hidden;
} }
.separateStyle {
display: inline-block;
width: 1px;
height: 24px;
background: #E8E8E8;
vertical-align: middle;
margin: 0 10px;
}
</style> </style>

View File

@ -34,10 +34,10 @@ export default {
mounted() { mounted() {
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
this.tableH = this.tableHeight(260) this.tableH = this.tableHeight(260)
this.isFold = this.searchBarWidth('contrastAnalysisBox', 1310) this.isFold = this.searchBarWidth('contrastAnalysisBox', 1437)
// console.log(document.getElementById("contrastAnalysisBox").offsetWidth) // console.log(document.getElementById("contrastAnalysisBox").offsetWidth)
}) })
this.isFold = this.searchBarWidth('contrastAnalysisBox', 1310) this.isFold = this.searchBarWidth('contrastAnalysisBox', 1437)
}, },
methods: { methods: {
getList(params) { getList(params) {

View File

@ -1,7 +1,7 @@
<template> <template>
<el-form :inline="true" class="demo-form-inline"> <el-form :inline="true" class="demo-form-inline">
<span class="blue-block"></span> <span class="blue-block"></span>
<el-form-item label="对象选择"> <el-form-item label="对象选择" required>
<el-cascader <el-cascader
v-model="objArr" v-model="objArr"
:options="objList" :options="objList"
@ -11,7 +11,7 @@
style="width: 250px;" style="width: 250px;"
clearable></el-cascader> clearable></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="时间维度"> <el-form-item label="时间维度" required>
<el-select v-model="queryParams.type" placeholder="请选择" style="width: 80px;" size="small"> <el-select v-model="queryParams.type" placeholder="请选择" style="width: 80px;" size="small">
<el-option <el-option
v-for="item in timeType" v-for="item in timeType"
@ -22,7 +22,7 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="时间"> <el-form-item label="时间" required>
<div v-show="queryParams.type === 1"> <div v-show="queryParams.type === 1">
<el-date-picker <el-date-picker
v-model="monthValue" v-model="monthValue"
@ -129,7 +129,7 @@ export default {
}, },
// //
search() { search() {
if (!this.objArr.length === 0) { if (this.objArr.length === 0) {
this.$modal.msgError('请选择对象') this.$modal.msgError('请选择对象')
return false return false
} else { } else {

View File

@ -2,7 +2,7 @@
<div class="searchBarBox divHeight" ref="searchBarRef" :style="{ paddingRight: isFold ? '55px' : '0px' }"> <div class="searchBarBox divHeight" ref="searchBarRef" :style="{ paddingRight: isFold ? '55px' : '0px' }">
<el-form :inline="true" class="demo-form-inline"> <el-form :inline="true" class="demo-form-inline">
<span class="blue-block"></span> <span class="blue-block"></span>
<el-form-item label="能源类型"> <el-form-item label="能源类型" required>
<el-select v-model="queryParams.energyTypeId" placeholder="请选择" style="width: 100px;" size="small"> <el-select v-model="queryParams.energyTypeId" placeholder="请选择" style="width: 100px;" size="small">
<el-option <el-option
v-for="item in energyTypeList" v-for="item in energyTypeList"
@ -12,7 +12,7 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="对象选择"> <el-form-item label="对象选择" required>
<el-cascader <el-cascader
v-model="objArr" v-model="objArr"
:options="objList" :options="objList"
@ -21,7 +21,7 @@
size="small" size="small"
clearable></el-cascader> clearable></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="时间维度"> <el-form-item label="时间维度" required>
<el-select v-model="queryParams.timeDim" placeholder="请选择" style="width: 80px;" size="small"> <el-select v-model="queryParams.timeDim" placeholder="请选择" style="width: 80px;" size="small">
<el-option <el-option
v-for="item in getDictDatas(this.DICT_TYPE.TIME_DIM)" v-for="item in getDictDatas(this.DICT_TYPE.TIME_DIM)"
@ -32,7 +32,7 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="时间范围"> <el-form-item label="时间范围" required>
<div v-show="queryParams.timeDim === '1'"> <div v-show="queryParams.timeDim === '1'">
<el-date-picker <el-date-picker
v-model="timeValue" v-model="timeValue"
@ -129,6 +129,8 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" size="small" @click="search">查询</el-button> <el-button type="primary" size="small" @click="search">查询</el-button>
<span class="separateStyle"></span>
<el-button size="small" @click="resetBtn">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span v-if="isFold" class="foldClass" @click='switchMode'> <span v-if="isFold" class="foldClass" @click='switchMode'>
@ -360,6 +362,14 @@ export default {
this.queryParams.endTime = this.queryParams.endTime + '' this.queryParams.endTime = this.queryParams.endTime + ''
this.$emit('submit', this.queryParams) this.$emit('submit', this.queryParams)
}, },
//
resetBtn() {
this.queryParams.energyTypeId = null
this.queryParams.objId = null
this.objArr = []
this.queryParams.timeDim = this.getDictDatas(this.DICT_TYPE.TIME_DIM)[0].value //
this.timeValue = [moment().startOf('day'), moment().endOf('day')-59*61*1000]
},
transformTime(timeStamp) {// transformTime(timeStamp) {//
let year = moment(timeStamp).format('YYYY') let year = moment(timeStamp).format('YYYY')
let month = moment(timeStamp).format('MM') let month = moment(timeStamp).format('MM')
@ -435,4 +445,12 @@ export default {
height: 45px; height: 45px;
overflow: hidden; overflow: hidden;
} }
.separateStyle {
display: inline-block;
width: 1px;
height: 24px;
background: #E8E8E8;
vertical-align: middle;
margin: 0 10px;
}
</style> </style>

View File

@ -34,9 +34,9 @@ export default {
mounted() { mounted() {
window.addEventListener('resize', () => { window.addEventListener('resize', () => {
this.tableH = this.tableHeight(260) this.tableH = this.tableHeight(260)
this.isFold = this.searchBarWidth('trendAnalysisBox', 1146) this.isFold = this.searchBarWidth('trendAnalysisBox', 1263)
}) })
this.isFold = this.searchBarWidth('trendAnalysisBox', 1146) this.isFold = this.searchBarWidth('trendAnalysisBox', 1263)
}, },
methods: { methods: {
getList(params) { getList(params) {

View File

@ -1,7 +1,7 @@
<template> <template>
<el-form :inline="true" class="demo-form-inline"> <el-form :inline="true" class="demo-form-inline">
<span class="blue-block"></span> <span class="blue-block"></span>
<el-form-item label="对象选择"> <el-form-item label="对象选择" required>
<el-cascader <el-cascader
v-model="objArr" v-model="objArr"
:options="objList" :options="objList"
@ -10,7 +10,7 @@
size="small" size="small"
clearable></el-cascader> clearable></el-cascader>
</el-form-item> </el-form-item>
<el-form-item label="时间维度"> <el-form-item label="时间维度" required>
<el-select v-model="queryParams.type" placeholder="请选择" style="width: 80px;" size="small"> <el-select v-model="queryParams.type" placeholder="请选择" style="width: 80px;" size="small">
<el-option <el-option
v-for="item in timeType" v-for="item in timeType"
@ -21,7 +21,7 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="时间"> <el-form-item label="时间" required>
<div v-show="queryParams.type === 1 || queryParams.type === 2"> <div v-show="queryParams.type === 1 || queryParams.type === 2">
<el-date-picker <el-date-picker
v-model="yearValue" v-model="yearValue"
@ -103,7 +103,7 @@ export default {
}, },
// //
search() { search() {
if (!this.objArr.length === 0) { if (this.objArr.length === 0) {
this.$modal.msgError('请选择对象') this.$modal.msgError('请选择对象')
return false return false
} else { } else {

View File

@ -25,18 +25,16 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="12">
<el-form-item label="描述" prop="description">
<el-input v-model="form.description"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="是否采集" prop="collection"> <el-form-item label="是否采集" prop="collection">
<el-switch v-model="form.collection"></el-switch> <el-switch v-model="form.collection"></el-switch>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="描述" prop="description">
<el-input v-model="form.description"></el-input>
</el-form-item>
</el-col>
</el-row> </el-row>
</el-form> </el-form>
</template> </template>

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<el-drawer :title="drawerTitle" :visible.sync="visible" size="70%" @close='closeD'> <el-drawer :title="drawerTitle" :visible.sync="visible" size="70%" @close='closeD' :show-close='false'>
<div class="box"> <div class="box">
<el-form :inline="true"> <el-form :inline="true">
<el-form-item label="关联表名"> <el-form-item label="关联表名">

View File

@ -27,7 +27,7 @@
</template> </template>
<script> <script>
import { getEnergyQuantityRealtimePage, exportEnergyQuantityRealtimeExcel } from "@/api/base/energyQuantityRealtime" import { getEnergyQuantityRealtimePage } from "@/api/base/energyQuantityRealtime"
import { getEnergyTypeListAll } from "@/api/base/energyType" import { getEnergyTypeListAll } from "@/api/base/energyType"
// import { publicFormatter } from '@/utils/dict' // import { publicFormatter } from '@/utils/dict'
import FileSaver from "file-saver" import FileSaver from "file-saver"
@ -140,18 +140,16 @@ export default {
break break
default: default:
this.exportTable() this.exportTable()
// this.$modal.confirm('').then(() => {
// return exportEnergyQuantityRealtimeExcel({...this.queryParams});
// }).then(response => {
// console.log(response)
// this.$download.excel(response, '.xls');
// }).catch(() => {})
} }
}, },
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
getEnergyQuantityRealtimePage(this.queryParams).then(response => { getEnergyQuantityRealtimePage(this.queryParams).then(response => {
this.list = response.data.list || [] let arr = response.data.list || []
arr && arr.map(item => {
item.amount = item.amount ? (!isNaN(parseFloat(item.amount)) && isFinite(item.amount) ? item.amount.toFixed(2) : '') : ''
})
this.list = arr
this.total = response.data.total; this.total = response.data.total;
this.exportList = [] this.exportList = []
}); });

View File

@ -5,7 +5,8 @@
v-for='item in tableProps' v-for='item in tableProps'
:key="item.prop" :key="item.prop"
:prop="item.prop" :prop="item.prop"
:label="item.label" :label="item.label"
:align="item.align ? item.align : 'left'"
width="120"> width="120">
</el-table-column> </el-table-column>
</el-table> </el-table>

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<el-drawer :title="drawerTitle" :visible.sync="visible" size="70%" @close='closeD'> <el-drawer :title="drawerTitle" :visible.sync="visible" size="70%" @close='closeD' :show-close='false'>
<div class="box"> <div class="box">
<el-form :inline="true"> <el-form :inline="true">
<el-form-item label="方案名称"> <el-form-item label="方案名称">

View File

@ -3,7 +3,8 @@
title="新增" title="新增"
:visible.sync="centervisible" :visible.sync="centervisible"
size="60%" size="60%"
@close='closeA'> @close='closeA'
:show-close='false'>
<div class="box"> <div class="box">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<search-bar <search-bar

View File

@ -28,59 +28,96 @@
<script> <script>
import basicPage from '../../../core/mixins/basic-page'; import basicPage from '../../../core/mixins/basic-page';
import { parseTime } from '../../../core/mixins/code-filter'; import moment from 'moment';
import { import {
getEqAnalysis, getEqAnalysis,
exportEqAnalysisExcel exportEqAnalysisExcel,
} from '@/api/equipment/analysis/statistics'; } from '@/api/equipment/analysis/statistics';
const tableProps = [ const tableProps = [
{ {
prop: 'recordTime', prop: 'recordTime',
label: '时间段', label: '时间段',
filter: parseTime filter: (val) => {
if (val && val.length > 0) {
return (
moment(val[0]).format('YYYY-MM-DD HH:mm:ss') +
' ~ ' +
moment(val[1]).format('YYYY-MM-DD HH:mm:ss')
);
}
return '-';
},
}, },
{ {
prop: 'lineName', prop: 'lineName',
label: '产线' label: '产线',
}, },
{ {
prop: 'sectionName', prop: 'sectionName',
label: '工段' label: '工段',
}, },
{ {
prop: 'equipmentName', prop: 'equipmentName',
label: '设备名称' label: '设备名称',
}, },
{ {
prop: 'equipmentType', prop: 'equipmentType',
label: '设备类型' label: '设备类型',
}, },
{ {
prop: 'workTime', prop: 'workTime',
label: '工作时间累积(h)' label: '工作时间累积(h)',
}, },
{ {
prop: 'repairCount', prop: 'repairCount',
label: '维修次数' label: '维修次数',
}, },
{ {
prop: 'maintainCount', prop: 'maintainCount',
label: '保养次数' label: '保养次数',
} },
]; ];
export default { export default {
mixins: [basicPage], mixins: [basicPage],
data() { data() {
const today = new Date();
const todayStart = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate(),
0,
0,
0
);
const todayEnd = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate(),
23,
59,
59
);
return { return {
urlOptions: { urlOptions: {
getDataListURL: getEqAnalysis, getDataListURL: getEqAnalysis,
exportURL: exportEqAnalysisExcel, exportURL: exportEqAnalysisExcel,
}, },
tableProps, tableProps,
tableBtn: [].filter((v)=>v), tableBtn: [].filter((v) => v),
tableData: [], tableData: [],
listQuery: {
pageSize: 10,
pageNo: 1,
total: 1,
recordTime: [
moment(todayStart).format('YYYY-MM-DD HH:mm:ss'),
moment(todayEnd).format('YYYY-MM-DD HH:mm:ss'),
],
},
formConfig: [ formConfig: [
{ {
type: 'input', type: 'input',
@ -101,7 +138,10 @@ export default {
endPlaceholder: '结束日期', endPlaceholder: '结束日期',
defaultTime: ['00:00:00', '23:59:59'], defaultTime: ['00:00:00', '23:59:59'],
param: 'recordTime', param: 'recordTime',
defaultSelect: [], defaultSelect: [
moment(todayStart).format('YYYY-MM-DD HH:mm:ss'),
moment(todayEnd).format('YYYY-MM-DD HH:mm:ss'),
],
}, },
{ {
type: 'button', type: 'button',
@ -113,33 +153,38 @@ export default {
type: 'separate', type: 'separate',
}, },
{ {
type: this.$auth.hasPermi('equipment:analysis-statistics:export') ? 'button' : '', type: this.$auth.hasPermi('equipment:analysis-statistics:export')
? 'button'
: '',
btnName: '导出', btnName: '导出',
name: 'export', name: 'export',
color: 'warning', color: 'warning',
plain: true plain: true,
}, },
], ],
}; };
}, },
created() {}, created() {},
mounted() {},
methods: { methods: {
// //
getDataList() { getDataList() {
this.dataListLoading = true; this.dataListLoading = true;
this.urlOptions.getDataListURL(this.listQuery).then(response => { this.urlOptions.getDataListURL(this.listQuery).then((response) => {
this.tableData = response.data.list; this.tableData = response.data.list;
this.listQuery.total = response.data.total; this.listQuery.total = response.data.total;
this.dataListLoading = false; this.dataListLoading = false;
}); });
}, },
buttonClick(val) { buttonClick(val) {
switch (val.btnName) { switch (val.btnName) {
case 'search': case 'search':
this.listQuery.pageNo = 1; this.listQuery.pageNo = 1;
this.listQuery.pageSize = 10; this.listQuery.pageSize = 10;
this.listQuery.equipmentName = val.name ? val.name : undefined; this.listQuery.equipmentName = val.name ? val.name : undefined;
this.listQuery.recordTime = val.recordTime ? val.recordTime : undefined; this.listQuery.recordTime = val.recordTime
? val.recordTime
: undefined;
this.getDataList(); this.getDataList();
break; break;
case 'reset': case 'reset':
@ -158,20 +203,24 @@ export default {
console.log(val); console.log(val);
} }
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
// //
let params = { ...this.listQuery }; let params = { ...this.listQuery };
params.pageNo = undefined; params.pageNo = undefined;
params.pageSize = undefined; params.pageSize = undefined;
this.$modal.confirm('是否确认导出所有数据项?').then(() => { this.$modal
this.exportLoading = true; .confirm('是否确认导出所有数据项?')
return this.urlOptions.exportURL(params); .then(() => {
}).then(response => { this.exportLoading = true;
this.$download.excel(response, '设备统计分析.xls'); return this.urlOptions.exportURL(params);
this.exportLoading = false; })
}).catch(() => { }); .then((response) => {
} this.$download.excel(response, '设备统计分析.xls');
this.exportLoading = false;
})
.catch(() => {});
},
}, },
}; };
</script> </script>

View File

@ -237,6 +237,7 @@ export default {
label: '工厂', label: '工厂',
placeholder: '请选择工厂', placeholder: '请选择工厂',
param: 'factoryId', param: 'factoryId',
filterable: true,
selectOptions: [], selectOptions: [],
}, },
{ {
@ -244,6 +245,7 @@ export default {
label: '产线', label: '产线',
placeholder: '请选择产线', placeholder: '请选择产线',
param: 'lineId', param: 'lineId',
filterable: true,
selectOptions: [], selectOptions: [],
}, },
// //

View File

@ -310,7 +310,7 @@ export default {
this.$modal this.$modal
.confirm('是否确认删除记录"' + row.name + '"?') .confirm('是否确认删除记录"' + row.name + '"?')
.then(function () { .then(function () {
return this.delete({ id }); return this.del({ id });
}) })
.then(() => { .then(() => {
this.getList(); this.getList();

View File

@ -198,26 +198,23 @@ export default {
prop: 'createTime', prop: 'createTime',
label: '添加时间', label: '添加时间',
fixed: true, fixed: true,
width: 180,
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'), filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'),
}, },
{ width: 240, prop: 'code', label: '报警编码' }, { prop: 'code', label: '报警编码' },
{ {
width: 100,
prop: 'type', prop: 'type',
label: '报警类型', label: '报警类型',
filter: (val) => filter: (val) =>
val != null ? ['-', '字符型', '布尔型', '-'][val] : '-', val != null ? ['-', '字符型', '布尔型', '-'][val] : '-',
}, },
{ {
width: 90,
prop: 'grade', prop: 'grade',
label: '报警级别', label: '报警级别',
filter: publicFormatter(this.DICT_TYPE.EQU_ALARM_LEVEL), filter: publicFormatter(this.DICT_TYPE.EQU_ALARM_LEVEL),
}, },
{ width: 180, prop: 'alarmCode', label: '设备报警编码' }, { prop: 'alarmCode', label: '设备报警编码' },
{ width: 128, prop: 'plcParamName', label: '参数列名' }, { prop: 'plcParamName', label: '参数列名' },
{ width: 128, prop: 'alarmContent', label: '报警内容' }, { prop: 'alarmContent', label: '报警内容' },
], ],
alarmForm: { alarmForm: {
id: undefined, id: undefined,

View File

@ -52,7 +52,7 @@
import moment from 'moment'; import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin'; import basicPageMixin from '@/mixins/lb/basicPageMixin';
import { publicFormatter } from '@/utils/dict'; import { publicFormatter } from '@/utils/dict';
import { deleteCheck } from "@/api/equipment/base/inspection/settings"; import { deleteCheck } from '@/api/equipment/base/inspection/settings';
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'); const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
@ -128,15 +128,21 @@ export default {
label: '巡检内容编号', label: '巡检内容编号',
prop: 'code', prop: 'code',
url: '/base/equipment-check/getCode', url: '/base/equipment-check/getCode',
rules: [{ required: true, message: '巡检内容编号不能为空', trigger: 'blur' }], rules: [
{
required: true,
message: '巡检内容编号不能为空',
trigger: 'blur',
},
],
}, },
],
[
{ {
input: true, input: true,
label: '巡检项目', label: '巡检项目',
prop: 'program', prop: 'program',
rules: [{ required: true, message: '巡检项目不能为空', trigger: 'blur' }], rules: [
{ required: true, message: '巡检项目不能为空', trigger: 'blur' },
],
}, },
], ],
[ [
@ -144,10 +150,10 @@ export default {
input: true, input: true,
label: '巡检内容', label: '巡检内容',
prop: 'content', prop: 'content',
rules: [{ required: true, message: '巡检内容不能为空', trigger: 'blur' }], rules: [
{ required: true, message: '巡检内容不能为空', trigger: 'blur' },
],
}, },
],
[
{ {
input: true, input: true,
label: '备注', label: '备注',
@ -168,7 +174,7 @@ export default {
code: '', code: '',
program: '', program: '',
id: undefined, id: undefined,
content: '' content: '',
}, },
basePath: '/base/equipment-check', basePath: '/base/equipment-check',
mode: null, mode: null,
@ -271,10 +277,10 @@ export default {
handleDelete(row) { handleDelete(row) {
const id = row.id; const id = row.id;
this.$modal this.$modal
.confirm('是否确认删除巡检项目名称为"' + row.program + '"的数据项?') .confirm('是否确认删除巡检项目?')
.then(function () { .then(function () {
// return this.delete({ id }); // return this.del({ id });
return deleteCheck(id) return deleteCheck(id);
}) })
.then(() => { .then(() => {
this.getList(); this.getList();

View File

@ -105,6 +105,7 @@ export default {
label: '设备', label: '设备',
placeholder: '请选择设备', placeholder: '请选择设备',
param: 'equipmentId', param: 'equipmentId',
filterable: true
}, },
// //
{ {

View File

@ -54,7 +54,6 @@
</template> </template>
<script> <script>
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin'; import basicPageMixin from '@/mixins/lb/basicPageMixin';
import addOrUpdata from './add-or-updata.vue'; import addOrUpdata from './add-or-updata.vue';
// import { publicFormatter } from '@/utils/dict'; // import { publicFormatter } from '@/utils/dict';
@ -101,9 +100,9 @@ export default {
{ prop: 'lineName', label: '产线' }, { prop: 'lineName', label: '产线' },
{ prop: 'sectionName', label: '工段' }, { prop: 'sectionName', label: '工段' },
{ prop: 'equipmentName', label: '设备' }, { prop: 'equipmentName', label: '设备' },
{ prop: 'equipmentCode', label: '设备编码' },
{ prop: 'responsible', label: '负责人' }, { prop: 'responsible', label: '负责人' },
{ prop: 'equipmentCode', label: '描述' }, { prop: 'checkNumber', label: '巡检条数' }, // TODO:
{ prop: 'checkNumber', label: '巡检条数' } // TODO:
], ],
searchBarFormConfig: [ searchBarFormConfig: [
{ {
@ -151,14 +150,18 @@ export default {
input: true, input: true,
label: '配置名称', label: '配置名称',
prop: 'name', prop: 'name',
rules: [{ required: true, message: '配置名称不能为空', trigger: 'blur' }], rules: [
{ required: true, message: '配置名称不能为空', trigger: 'blur' },
],
}, },
{ {
input: true, input: true,
label: '配置编码', label: '配置编码',
prop: 'code', prop: 'code',
url: '/base/equipment-check-config/getCode', url: '/base/equipment-check-config/getCode',
rules: [{ required: true, message: '配置编码不能为空', trigger: 'blur' }], rules: [
{ required: true, message: '配置编码不能为空', trigger: 'blur' },
],
}, },
], ],
[ [
@ -167,7 +170,9 @@ export default {
label: '设备名称', label: '设备名称',
prop: 'equipmentId', prop: 'equipmentId',
url: '/base/core-equipment/listAll', url: '/base/core-equipment/listAll',
rules: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }], rules: [
{ required: true, message: '设备名称不能为空', trigger: 'blur' },
],
}, },
{ {
input: true, input: true,
@ -288,9 +293,9 @@ export default {
handleDelete(row) { handleDelete(row) {
const id = row.id; const id = row.id;
this.$modal this.$modal
.confirm('是否确认删除记录"' + row.name + '"?') .confirm('是否确认删除该巡检记录?')
.then(function () { .then(() => {
return this.delete({ id }); return this.del({ id });
}) })
.then(() => { .then(() => {
this.getList(); this.getList();
@ -317,14 +322,14 @@ export default {
}, },
handleDetail({ id }) { handleDetail({ id }) {
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrEditTitle = "详情"; this.addOrEditTitle = '详情';
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(id, true); this.$refs.addOrUpdate.init(id, true);
}); });
}, },
handleAddDetail({ id }) { handleAddDetail({ id }) {
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrEditTitle = "添加巡检"; this.addOrEditTitle = '添加巡检';
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(id); this.$refs.addOrUpdate.init(id);
}); });

View File

@ -107,37 +107,37 @@ export default {
param: 'equipmentName', param: 'equipmentName',
}, },
// //
{ // {
type: 'datePicker', // type: 'datePicker',
label: '时间段', // label: '',
dateType: 'daterange', // datetimerange // dateType: 'daterange', // datetimerange
format: 'yyyy-MM-dd', // format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd HH:mm:ss', // valueFormat: 'yyyy-MM-dd HH:mm:ss',
// valueFormat: 'timestamp', // // valueFormat: 'timestamp',
rangeSeparator: '-', // rangeSeparator: '-',
startPlaceholder: '开始日期', // startPlaceholder: '',
endPlaceholder: '结束日期', // endPlaceholder: '',
defaultTime: ['00:00:00', '23:59:59'], // defaultTime: ['00:00:00', '23:59:59'],
param: 'createTime', // param: 'createTime',
// defaultSelect: [ // // defaultSelect: [
// new Date(y, m, d) // // new Date(y, m, d)
// .toLocaleString() // // .toLocaleString()
// .split('/') // // .split('/')
// .map((item, index) => { // // .map((item, index) => {
// if (index == 1 || index == 2) return item.padStart(2, '0'); // // if (index == 1 || index == 2) return item.padStart(2, '0');
// return item; // // return item;
// }) // // })
// .join('-'), // // .join('-'),
// new Date(y, m, d, 23, 59, 59) // // new Date(y, m, d, 23, 59, 59)
// .toLocaleString() // // .toLocaleString()
// .split('/') // // .split('/')
// .map((item, index) => { // // .map((item, index) => {
// if (index == 1 || index == 2) return item.padStart(2, '0'); // // if (index == 1 || index == 2) return item.padStart(2, '0');
// return item; // // return item;
// }) // // })
// .join('-'), // // .join('-'),
// ], // // ],
}, // },
{ {
type: 'button', type: 'button',
btnName: '查询', btnName: '查询',

View File

@ -121,14 +121,14 @@ export default {
}, },
{ {
type: 'select', type: 'select',
label: '保养计划', label: '计划名称',
placeholder: '请选择保养计划', placeholder: '请选择计划名称',
param: 'maintainPlanId', param: 'maintainPlanId',
}, },
// //
{ {
type: 'datePicker', type: 'datePicker',
label: '时间', label: '保养开始时间',
dateType: 'daterange', // datetimerange dateType: 'daterange', // datetimerange
format: 'yyyy-MM-dd', format: 'yyyy-MM-dd',
valueFormat: 'yyyy-MM-dd HH:mm:ss', valueFormat: 'yyyy-MM-dd HH:mm:ss',

View File

@ -129,6 +129,7 @@ export default {
label: '设备', label: '设备',
placeholder: '请选择设备', placeholder: '请选择设备',
param: 'equipmentId', param: 'equipmentId',
filterable: true,
}, },
{ {
type: 'select', type: 'select',

View File

@ -52,7 +52,7 @@
import moment from 'moment'; import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin'; import basicPageMixin from '@/mixins/lb/basicPageMixin';
import { publicFormatter } from '@/utils/dict'; import { publicFormatter } from '@/utils/dict';
import { deleteSparePart } from '@/api/equipment/base/spare-parts/list' import { deleteSparePart } from '@/api/equipment/base/spare-parts/list';
const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'); const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
@ -95,7 +95,7 @@ export default {
searchBarFormConfig: [ searchBarFormConfig: [
{ {
type: 'input', type: 'input',
label: '关键字', label: '备件名称',
placeholder: '请输入备件名称', placeholder: '请输入备件名称',
param: 'name', param: 'name',
}, },
@ -132,20 +132,33 @@ export default {
input: true, input: true,
label: '备件名称', label: '备件名称',
prop: 'name', prop: 'name',
rules: [{ required: true, message: '备件名称不能为空', trigger: 'blur' }], rules: [
{ required: true, message: '备件名称不能为空', trigger: 'blur' },
],
}, },
{ {
input: true, input: true,
label: '备件型号', label: '备件编码',
prop: 'model', prop: 'code',
url: '/base/equipment-spare-part/getCode',
rules: [
{ required: true, message: '备件编码不能为空', trigger: 'blur' },
],
}, },
], ],
[ [
{
input: true,
label: '备件型号',
prop: 'model',
},
{ {
input: true, input: true,
label: '规格', label: '规格',
prop: 'specifications', prop: 'specifications',
}, },
],
[
{ {
select: true, select: true,
label: '供应商', label: '供应商',
@ -155,10 +168,10 @@ export default {
filterable: true, filterable: true,
clearable: true, clearable: true,
}, },
rules: [{ required: true, message: '供应商不能为空', trigger: 'blur' }], rules: [
{ required: true, message: '供应商不能为空', trigger: 'blur' },
],
}, },
],
[
{ {
select: true, select: true,
label: '物料类型', label: '物料类型',
@ -169,8 +182,12 @@ export default {
filterable: true, filterable: true,
clearable: true, clearable: true,
}, },
rules: [{ required: true, message: '物料类型不能为空', trigger: 'blur' }], rules: [
{ required: true, message: '物料类型不能为空', trigger: 'blur' },
],
}, },
],
[
{ {
input: true, input: true,
label: '使用寿命', label: '使用寿命',
@ -184,14 +201,14 @@ export default {
}, },
], ],
}, },
],
[
{ {
select: true, select: true,
label: '单位', label: '单位',
prop: 'unit', // prop: 'unit', //
options: this.getDictDatas(this.DICT_TYPE.UNIT_DICT), options: this.getDictDatas(this.DICT_TYPE.UNIT_DICT),
}, },
],
[
{ {
input: true, input: true,
label: '备注', label: '备注',

View File

@ -72,10 +72,10 @@ const remainBox = {
}, },
computed: { computed: {
value() { value() {
const temp = this.injectData[this.injectData.prop] || null const temp = this.injectData[this.injectData.prop] || null;
if (temp) { if (temp) {
console.log('12', temp) console.log('12', temp);
return temp === 'Green' ? 'green' : 'red' return temp === 'Green' ? 'green' : 'red';
} }
return this.injectData[this.injectData.prop] || null; return this.injectData[this.injectData.prop] || null;
}, },
@ -83,7 +83,7 @@ const remainBox = {
if (this.value) { if (this.value) {
// const v = +this.value; // const v = +this.value;
// return v < 0 ? 'red' : v >= 0 && v < 2 ? 'yellow' : 'green'; // return v < 0 ? 'red' : v >= 0 && v < 2 ? 'yellow' : 'green';
return this.value return this.value;
} }
return 'unset'; return 'unset';
}, },
@ -95,8 +95,7 @@ const remainBox = {
this.color this.color
// this.color == 'Green' ? 'green' : this.color == 'Red' ? 'red' : 'yellow' // this.color == 'Green' ? 'green' : this.color == 'Red' ? 'red' : 'yellow'
}; position:absolute; inset: 0; padding: 0 10px; display: flex; align-items: center; color: ${ }; position:absolute; inset: 0; padding: 0 10px; display: flex; align-items: center; color: ${
'unset' this.color == 'red' || this.color == 'green' ? '#fff' : 'unset'
// this.color == 'red' ? '#fff' : 'unset'
}`}> }`}>
{this.injectData[this.injectData.prop] || ''} {this.injectData[this.injectData.prop] || ''}
</div> </div>
@ -112,7 +111,10 @@ const btn = {
}, },
methods: { methods: {
handleClick() { handleClick() {
this.$emit('emitData', { action: this.injectData.name, value: this.injectData }); this.$emit('emitData', {
action: this.injectData.name,
value: this.injectData,
});
}, },
}, },
render: function (h) { render: function (h) {
@ -124,8 +126,6 @@ const btn = {
}, },
}; };
export default { export default {
name: 'EquipmentSparePartsMonitor', name: 'EquipmentSparePartsMonitor',
components: { addSparts }, components: { addSparts },
@ -162,7 +162,12 @@ export default {
{ prop: 'responsible', label: '负责人' }, { prop: 'responsible', label: '负责人' },
{ prop: 'color', label: '是否超期', subcomponent: remainBox }, { prop: 'color', label: '是否超期', subcomponent: remainBox },
{ prop: 'opt1', label: '备件更换', name: '操作', subcomponent: btn }, { prop: 'opt1', label: '备件更换', name: '操作', subcomponent: btn },
{ prop: 'opt2', label: '更换记录', name: '更新记录', subcomponent: btn }, // TODO: {
prop: 'opt2',
label: '更换记录',
name: '更新记录',
subcomponent: btn,
}, // TODO:
// { prop: 'remark', label: '' }, // { prop: 'remark', label: '' },
], ],
searchBarFormConfig: [ searchBarFormConfig: [
@ -171,12 +176,14 @@ export default {
label: '产线', label: '产线',
placeholder: '请选择产线', placeholder: '请选择产线',
param: 'lineId', param: 'lineId',
filterable: true,
}, },
{ {
type: 'select', type: 'select',
label: '设备', label: '设备',
placeholder: '请选择设备', placeholder: '请选择设备',
param: 'equipmentId', param: 'equipmentId',
filterable: true,
}, },
{ {
type: 'button', type: 'button',
@ -211,7 +218,9 @@ export default {
input: true, input: true,
label: '配置名称', label: '配置名称',
prop: 'name', prop: 'name',
rules: [{ required: true, message: '配置名称不能为空', trigger: 'blur' }], rules: [
{ required: true, message: '配置名称不能为空', trigger: 'blur' },
],
}, },
], ],
[ [
@ -224,7 +233,9 @@ export default {
filterable: true, filterable: true,
clearable: true, clearable: true,
}, },
rules: [{ required: true, message: '设备名称不能为空', trigger: 'blur' }], rules: [
{ required: true, message: '设备名称不能为空', trigger: 'blur' },
],
}, },
], ],
[ [
@ -281,29 +292,29 @@ export default {
} }
}, },
eqOperation({ id }) { eqOperation({ id }) {
this.addOrUpdateVisible = true this.addOrUpdateVisible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(id); this.$refs.addOrUpdate.init(id);
}); });
}, },
updateLog({ id }) { updateLog({ id }) {
this.addOrUpdateVisible = true this.addOrUpdateVisible = true;
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.addOrUpdate.init(id, true); this.$refs.addOrUpdate.init(id, true);
}); });
}, },
initSearchBar() { initSearchBar() {
// 线 // 线
getCorePLList().then(res => { getCorePLList().then((res) => {
this.$set( this.$set(
this.searchBarFormConfig[0], this.searchBarFormConfig[0],
'selectOptions', 'selectOptions',
res.data.map((item) => ({ res.data.map((item) => ({
name: item.name, name: item.name,
id: item.id id: item.id,
})) }))
); );
}) });
this.http('/base/core-equipment/listAll', 'get').then(({ data }) => { this.http('/base/core-equipment/listAll', 'get').then(({ data }) => {
this.$set( this.$set(
this.searchBarFormConfig[1], this.searchBarFormConfig[1],
@ -319,7 +330,11 @@ export default {
getList() { getList() {
this.loading = true; this.loading = true;
// //
this.http('/base/equipment-spare-part-config/monitor', 'get', this.queryParams).then((response) => { this.http(
'/base/equipment-spare-part-config/monitor',
'get',
this.queryParams
).then((response) => {
this.list = response.data.list; this.list = response.data.list;
this.total = response.data.total; this.total = response.data.total;
this.loading = false; this.loading = false;
@ -338,7 +353,7 @@ export default {
name: null, name: null,
equipmentId: null, equipmentId: null,
description: null, description: null,
responsible: null responsible: null,
}; };
this.resetForm('form'); this.resetForm('form');
}, },
@ -397,7 +412,7 @@ export default {
this.$modal this.$modal
.confirm('是否确认删除记录"' + row.name + '"?') .confirm('是否确认删除记录"' + row.name + '"?')
.then(function () { .then(function () {
return this.delete({ id }); return this.del({ id });
}) })
.then(() => { .then(() => {
this.getList(); this.getList();

View File

@ -0,0 +1,138 @@
<!--
filename: SearchBar.vue
author: liubin
date: 2023-11-23 14:01:17
description:
-->
<template>
<div class="search-bar">
<div class="vertical-blue-line"></div>
<el-form
:inline="true"
ref="search-bar__form"
:model="form"
class="search-bar__form">
<el-form-item :label="'产线'" prop="productionLineId">
<el-select
size="small"
placeholder="请选择产线"
@change="getEquipmentByLineId"
v-model="form.productionLineId">
<el-option
v-for="item in listLine"
:key="item.id"
:label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="'设备'" prop="equipmentId">
<el-select
size="small"
placeholder="请选择设备"
v-model="form.equipmentId">
<el-option
v-for="item in listEq"
:key="item.id"
:label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
</el-form>
<el-button type="primary" @click="handleSearch" size="small">
查询
</el-button>
</div>
</template>
<script>
export default {
name: 'SearchBar',
model: {
prop: 'value',
event: 'change',
},
props: {
value: {
type: Object,
default: () => {},
},
},
data() {
return {
listLine: [],
listEq: [],
};
},
computed: {
form: {
set(val) {
this.emit(val);
},
get() {
return this.value;
},
},
},
mounted() {
this.getLine();
},
methods: {
emit(newValue) {
debugger;
this.$emit('update', { ...this.form, ...newValue });
},
async getLine() {
const { data, code } = await this.$axios({
url: '/base/core-production-line/listAll',
});
if (code == 0) {
this.listLine = data;
return;
}
this.listLine.splice(0);
},
async getEquipmentByLineId(id) {
const { data, code } = await this.$axios({
url: '/base/core-equipment/listByLine',
params: {
id,
},
});
if (code == 0) {
this.listEq = data;
return;
}
this.listEq.splice(0);
},
handleSearch() {},
},
};
</script>
<style scoped lang="scss">
.search-bar {
padding: 12px 0;
font-size: 16px;
position: relative;
display: flex;
align-items: center;
gap: 12px;
:deep(.el-form-item) {
margin-bottom: 0 !important;
margin-right: 0;
&:not(:last-child) {
margin-right: 18px;
}
}
}
.vertical-blue-line {
width: 4px;
height: 18px;
background: #0b58ff;
border-radius: 2px;
}
</style>

View File

@ -1,10 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<SearchBar <SearchBarNew v-model="searchBarForm" />
:formConfigs="searchBarFormConfig"
ref="search-bar"
@headBtnClick="handleSearchBarBtnClick" />
<!-- 列表 --> <!-- 列表 -->
<base-table <base-table
@ -13,13 +10,13 @@
:limit="queryParams.pageSize" :limit="queryParams.pageSize"
:table-data="list" :table-data="list"
@emitFun="handleEmitFun"> @emitFun="handleEmitFun">
<method-btn <!-- <method-btn
v-if="tableBtn.length" v-if="tableBtn.length"
slot="handleBtn" slot="handleBtn"
label="操作" label="操作"
:width="120" :width="120"
:method-list="tableBtn" :method-list="tableBtn"
@clickBtn="handleTableBtnClick" /> @clickBtn="handleTableBtnClick" /> -->
</base-table> </base-table>
<!-- 分页组件 --> <!-- 分页组件 -->
@ -50,22 +47,23 @@
</template> </template>
<script> <script>
import moment from 'moment';
import basicPageMixin from '@/mixins/lb/basicPageMixin'; import basicPageMixin from '@/mixins/lb/basicPageMixin';
import { publicFormatter } from '@/utils/dict'; import { parseTime } from '@/utils/ruoyi';
import { parseTime } from '@/utils/ruoyi' import SearchBarNew from '../SearchBar.vue';
// const timeFilter = (val) => moment(val).format('yyyy-MM-DD HH:mm:ss');
const btn = { const btn = {
name: 'tableBtn', name: 'tableBtn',
props: ['injectData'], props: ['injectData'],
components: {},
data() { data() {
return {}; return {};
}, },
methods: { methods: {
handleClick() { handleClick() {
this.$emit('emitData', { action: this.injectData.label, value: this.injectData }); this.$emit('emitData', {
action: this.injectData.label,
value: this.injectData,
});
}, },
}, },
render: function (h) { render: function (h) {
@ -77,134 +75,62 @@ const btn = {
}, },
}; };
// monitoring/equipment-monitor/realtime-page
export default { export default {
name: 'StatusAndParams', name: 'StatusAndParams',
mixins: [basicPageMixin], mixins: [basicPageMixin],
components: { SearchBarNew },
data() { data() {
return { return {
searchBarKeys: ['equipmentName', 'recordTime'],
tableBtn: [
// this.$auth.hasPermi('equipment:spare-parts-config:update')
// ? {
// type: 'detail',
// btnName: '',
// }
// : undefined,
// this.$auth.hasPermi('equipment:spare-parts-config:update')
// ? {
// type: 'edit',
// btnName: '',
// }
// : undefined,
// this.$auth.hasPermi('equipment:spare-parts-config:delete')
// ? {
// type: 'delete',
// btnName: '',
// }
// : undefined,
].filter((v) => v),
tableProps: [ tableProps: [
{ prop: 'productionLine', label: '设备名称' }, { prop: 'equipmentName', label: '设备名称' },
{ prop: 'workshopSection', label: '设备编码' }, { prop: 'equipmentCode', label: '设备编码' },
{ prop: 'equipment', label: '投入数' }, { prop: 'inQuantity', label: '投入数' },
{ prop: 'productionLine', label: '产出数' }, { prop: 'outQuantity', label: '产出数' },
{ prop: 'workshopSection', label: '是否运行' }, {
{ prop: 'equipment22', label: '状态' }, prop: 'run',
// { prop: 'alarmGrade', label: '', filter: publicFormatter(this.DICT_TYPE.EQU_ALARM_LEVEL) }, label: '是否运行',
{ prop: 'productionLine', label: '是否故障' }, filter: (val) => (val != null ? (val ? '是' : '否') : ''),
{ prop: 'workshopSection', label: '生产量记录时间', filter: parseTime }, },
{ prop: 'equipment1', label: '状态记录时间', filter: parseTime }, {
prop: 'status',
label: '状态',
filter: (val) =>
val != null ? ['正常', '计划停机', '故障'][val] : '',
},
{
prop: 'error',
label: '是否故障',
filter: (val) => (val != null ? (val ? '是' : '否') : ''),
},
{
prop: 'quantityRecordTime',
label: '生产量记录时间',
filter: parseTime,
},
{ prop: 'statusRecordTime', label: '状态记录时间', filter: parseTime },
{ prop: 'opt1', label: '状态可视化', name: '查看', subcomponent: btn }, { prop: 'opt1', label: '状态可视化', name: '查看', subcomponent: btn },
{ prop: 'opt2', label: '参数监控', name: '查看', subcomponent: btn } // TODO: { prop: 'opt2', label: '参数监控', name: '查看', subcomponent: btn },
// { prop: 'remark', label: '' },
],
searchBarFormConfig: [
{
type: 'input',
label: '设备名',
placeholder: '请输入设备名称',
param: 'equipmentName',
},
//
{
type: 'datePicker',
label: '时间段',
dateType: 'daterange', // datetimerange
// format: 'yyyy-MM-dd HH:mm:ss',
format: 'yyyy-MM-dd',
// valueFormat: 'timestamp',
valueFormat: 'yyyy-MM-dd HH:mm:ss',
rangeSeparator: '-',
startPlaceholder: '开始日期',
endPlaceholder: '结束日期',
defaultTime: ['00:00:00', '23:59:59'],
param: 'recordTime',
// defaultSelect: [
// new Date(y, m, d)
// .toLocaleString()
// .split('/')
// .map((item, index) => {
// if (index == 1 || index == 2) return item.padStart(2, '0');
// return item;
// })
// .join('-'),
// new Date(y, m, d, 23, 59, 59)
// .toLocaleString()
// .split('/')
// .map((item, index) => {
// if (index == 1 || index == 2) return item.padStart(2, '0');
// return item;
// })
// .join('-'),
// ],
},
{
type: 'button',
btnName: '查询',
name: 'search',
color: 'primary',
},
// {
// type: 'separate',
// },
// {
// type: this.$auth.hasPermi('equipment:spare-parts-config:create')
// ? 'button'
// : '',
// btnName: '',
// name: 'add',
// plain: true,
// color: 'success',
// },
// {
// type: this.$auth.hasPermi('equipment:spare-parts-config:export')
// ? 'button'
// : '',
// btnName: '',
// name: 'export',
// color: 'warning',
// },
], ],
searchBarForm: {
productionLineId: null,
equipmentId: null,
},
// //
open: false, open: false,
// //
queryParams: { queryParams: {
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
lineId: null,
equipmentId: null, equipmentId: null,
productionLineId: null,
}, },
basePath: '/base/equipment-alarm-log', list: [],
list: []
}; };
}, },
created() {
// this.getList();
},
methods: { methods: {
handleEmitFun(val) { handleEmitFun(val) {
console.log('你好', val) console.log('你好', val);
if (val.action === '状态可视化') { if (val.action === '状态可视化') {
// //
} else { } else {
@ -215,16 +141,20 @@ export default {
getList() { getList() {
this.loading = true; this.loading = true;
// //
this.recv(this.queryParams).then((response) => { this.http(
'/monitoring/equipment-monitor/realtime-page',
'get',
this.queryParams
).then((response) => {
this.list = response.data.list; this.list = response.data.list;
this.total = response.data.total; this.total = response.data.total;
this.loading = false; this.loading = false;
}); });
}, },
successSubmit() { successSubmit() {
this.cancel() this.cancel();
this.getList() this.getList();
}, },
/** 取消按钮 */ /** 取消按钮 */
cancel() { cancel() {
this.open = false; this.open = false;
@ -270,7 +200,7 @@ export default {
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm() { submitForm() {
this.$refs.addOrUpdate.dataFormSubmit() this.$refs.addOrUpdate.dataFormSubmit();
// this.$refs['form'].validate((valid) => { // this.$refs['form'].validate((valid) => {
// if (!valid) { // if (!valid) {
// return; // return;
@ -297,8 +227,8 @@ export default {
const id = row.id; const id = row.id;
this.$modal this.$modal
.confirm('是否确认删除记录"' + row.name + '"?') .confirm('是否确认删除记录"' + row.name + '"?')
.then(function () { .then(() => {
return this.delete({ id }); return this.del({ id });
}) })
.then(() => { .then(() => {
this.getList(); this.getList();

View File

@ -61,6 +61,8 @@
v-if="open" v-if="open"
style="width: 100%" style="width: 100%"
v-model="queryParams.equipmentId" v-model="queryParams.equipmentId"
filterable
clearable
placeholder="请选择一个设备"> placeholder="请选择一个设备">
<el-option <el-option
v-for="eq in eqList" v-for="eq in eqList"

View File

@ -94,12 +94,19 @@
<script> <script>
import Gantt from './chart'; import Gantt from './chart';
import moment from 'moment';
export default { export default {
name: 'SGStatus', name: 'SGStatus',
components: {}, components: {},
props: {}, props: {},
data() { data() {
const today = new Date();
const todayStart = new Date(
today.getFullYear(),
today.getMonth(),
today.getDate()
);
return { return {
chart: null, chart: null,
searchBarFormConfig: [ searchBarFormConfig: [
@ -129,6 +136,7 @@ export default {
placeholder: '选择日期', placeholder: '选择日期',
param: 'recordTime', param: 'recordTime',
required: true, required: true,
defaultSelect: moment(todayStart).format('YYYY-MM-DD HH:mm:ss'),
}, },
{ {
type: 'button', type: 'button',
@ -369,7 +377,10 @@ export default {
const { code, data } = await this.$axios({ const { code, data } = await this.$axios({
url: '/monitoring/equipment-monitor/status-series', url: '/monitoring/equipment-monitor/status-series',
method: 'get', method: 'get',
params: this.queryParams, params: {
recordTime: this.queryParams.recordTime,
equipmentId: this.queryParams.equipmentId,
},
}); });
if (code == 0) { if (code == 0) {
const newEqlist = this.objectToArray(data); const newEqlist = this.objectToArray(data);

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2023-11-10 16:26:08 * @LastEditTime: 2023-11-22 16:50:55
* @Description: * @Description:
--> -->
<template> <template>
@ -100,7 +100,8 @@ import {
updateProcessEquMaterialBom, updateProcessEquMaterialBom,
getEquipmentList, getEquipmentList,
processEquMaterialBomDetPage, processEquMaterialBomDetPage,
deleteProcessEquMaterialBomDet deleteProcessEquMaterialBomDet,
getMaterialCode
} from '@/api/extend/processEquMaterialBom'; } from '@/api/extend/processEquMaterialBom';
import SmallTitle from './SmallTitle'; import SmallTitle from './SmallTitle';
import { parseTime } from '../../core/mixins/code-filter'; import { parseTime } from '../../core/mixins/code-filter';
@ -197,7 +198,6 @@ export default {
}; };
}, },
mounted() { mounted() {
this.getDict()
}, },
methods: { methods: {
getCode(val) { getCode(val) {
@ -223,6 +223,9 @@ export default {
// console.log(response); // console.log(response);
this.equipmentList = res.data this.equipmentList = res.data
}) })
getMaterialCode().then(res => {
this.dataForm.code = res.data
})
}, },
handleClick(raw) { handleClick(raw) {
if (raw.type === 'delete') { if (raw.type === 'delete') {
@ -267,7 +270,8 @@ export default {
}); });
}, },
init(id, isdetail) { init(id, isdetail) {
this.initData(); this.initData()
this.getDict()
this.isdetail = isdetail || false; this.isdetail = isdetail || false;
this.dataForm.id = id || undefined; this.dataForm.id = id || undefined;
this.visible = true; this.visible = true;

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-11-08 15:30:27 * @Date: 2023-11-08 15:30:27
* @LastEditTime: 2023-11-09 14:11:02 * @LastEditTime: 2023-11-23 14:27:59
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@ -18,13 +18,16 @@
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="100px" <el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="100px"
@keyup.enter.native="dataFormSubmit()"> @keyup.enter.native="dataFormSubmit()">
<el-form-item label="物料名称" prop="materialId"> <el-form-item label="物料名称" prop="materialId">
<el-select v-model="dataForm.materialId" filterable placeholder="请选择物料名称"> <el-select v-model="dataForm.materialId" filterable placeholder="请选择物料名称" multiple>
<el-option v-for="dict in materialList" :key=" dict.id" :label="dict.name" :value="dict.id" /> <el-option v-for="dict in materialList" :key=" dict.id" :label="dict.name" :value="dict.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数量" prop="num"> <el-form-item label="数量" prop="num">
<el-input v-model="dataForm.num" placeholder="请输入数量" clearable /> <el-input v-model="dataForm.num" placeholder="请输入数量" clearable />
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="dataForm.remark" placeholder="请输入备注" clearable />
</el-form-item>
</el-form> </el-form>
<el-row style="text-align: right"> <el-row style="text-align: right">
@ -37,7 +40,7 @@
<script> <script>
import { import {
getProcessEquMaterialBomDet, getProcessEquMaterialBomDet,
createProcessEquMaterialBomDet, createProcessEquMaterialBomDetList,
updateProcessEquMaterialBomDet, updateProcessEquMaterialBomDet,
getMaterialList getMaterialList
} from '@/api/extend/processEquMaterialBom'; } from '@/api/extend/processEquMaterialBom';
@ -56,11 +59,13 @@ export default {
dataForm: { dataForm: {
id: undefined, id: undefined,
bomId: undefined, bomId: undefined,
materialId:null, materialId:[],
num: undefined, num: undefined,
remark:undefined
}, },
dataRule: { dataRule: {
attrName: [{ required: true, message: '名称不能为空', trigger: 'blur' }], materialId: [{ required: true, message: '名称不能为空', trigger: 'change' }],
num: [{ required: true, message: '数量不能为空', trigger: 'blur' }],
}, },
}; };
}, },
@ -79,8 +84,11 @@ export default {
getProcessEquMaterialBomDet({ getProcessEquMaterialBomDet({
id: this.dataForm.id id: this.dataForm.id
}).then((res) => { }).then((res) => {
this.dataForm = res.data; this.dataForm = res.data
// this.dataForm.materialId = materialId; const arr = []
arr.push(res.data.materialId)
this.dataForm.materialId =arr
console.log(this.dataForm.materialId);
// this.dataForm.value = value; // this.dataForm.value = value;
}); });
} }
@ -97,10 +105,16 @@ export default {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
// //
if (this.dataForm.id) { if (this.dataForm.id) {
const dataObj = {
materialId: this.dataForm.materialId.toString(),
bomId: this.dataForm.bomId,
num: this.dataForm.num,
id: this.dataForm.id,
remark: this.dataForm.remark
}
updateProcessEquMaterialBomDet({ updateProcessEquMaterialBomDet({
...this.dataForm, ...dataObj
productId: this.productId,
}).then((response) => { }).then((response) => {
this.$modal.msgSuccess('修改成功'); this.$modal.msgSuccess('修改成功');
this.visible = false; this.visible = false;
@ -108,11 +122,16 @@ export default {
}); });
return; return;
} }
// //
createProcessEquMaterialBomDet({ const dataArr = this.dataForm.materialId.map(ele => {
...this.dataForm, return {
productId: this.productId, materialId: ele,
}).then((response) => { bomId: this.dataForm.bomId,
num: this.dataForm.num,
remark: this.dataForm.remark
}
});
createProcessEquMaterialBomDetList(dataArr).then((response) => {
this.$modal.msgSuccess('新增成功'); this.$modal.msgSuccess('新增成功');
this.visible = false; this.visible = false;
this.$emit('refreshDataList'); this.$emit('refreshDataList');

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2023-11-09 14:49:16 * @LastEditTime: 2023-11-23 09:20:12
* @Description: * @Description:
--> -->
<template> <template>
@ -53,7 +53,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<div class="drawer-body__footer"> <div v-if="isdetail" class="drawer-body__footer">
<el-button style="" @click="goback()">取消</el-button> <el-button style="" @click="goback()">取消</el-button>
<el-button v-if="isdetail" type="primary" @click="goEdit()"> <el-button v-if="isdetail" type="primary" @click="goEdit()">
编辑 编辑
@ -63,7 +63,7 @@
<div class="attr-list" v-if="idAttrShow"> <div class="attr-list" v-if="idAttrShow">
<small-title style="margin: 16px 0; padding-left: 8px" :no-padding="true"> <small-title style="margin: 16px 0; padding-left: 8px" :no-padding="true">
设备物料明细 设备参数
</small-title> </small-title>
<div v-if="!isdetail" class="action_btn"> <div v-if="!isdetail" class="action_btn">
@ -100,7 +100,8 @@ import {
updateProcessEquValueBom, updateProcessEquValueBom,
getEquipmentList, getEquipmentList,
processEquValueBomDetPage, processEquValueBomDetPage,
deleteProcessEquValueBomDet deleteProcessEquValueBomDet,
getValueCode
} from '@/api/extend/processEquValueBom'; } from '@/api/extend/processEquValueBom';
import SmallTitle from './SmallTitle'; import SmallTitle from './SmallTitle';
import { parseTime } from '../../core/mixins/code-filter'; import { parseTime } from '../../core/mixins/code-filter';
@ -208,7 +209,6 @@ export default {
}; };
}, },
mounted() { mounted() {
this.getDict()
}, },
methods: { methods: {
getCode(val) { getCode(val) {
@ -234,6 +234,9 @@ export default {
// console.log(response); // console.log(response);
this.equipmentList = res.data this.equipmentList = res.data
}) })
getValueCode().then(res => {
this.dataForm.code = res.data
})
}, },
handleClick(raw) { handleClick(raw) {
if (raw.type === 'delete') { if (raw.type === 'delete') {
@ -277,8 +280,9 @@ export default {
this.listQuery.total = response.data.total; this.listQuery.total = response.data.total;
}); });
}, },
init(id, isdetail) { init(id, isdetail) {
this.initData(); this.getDict()
this.initData()
console.log(isdetail); console.log(isdetail);
this.isdetail = isdetail || false; this.isdetail = isdetail || false;
this.dataForm.id = id || undefined; this.dataForm.id = id || undefined;

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-11-08 15:30:27 * @Date: 2023-11-08 15:30:27
* @LastEditTime: 2023-11-09 14:44:49 * @LastEditTime: 2023-11-23 14:26:54
* @LastEditors: zhp * @LastEditors: zhp
* @Description: * @Description:
--> -->
@ -18,19 +18,19 @@
<el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="100px" <el-form ref="dataForm" :model="dataForm" :rules="dataRule" label-width="100px"
@keyup.enter.native="dataFormSubmit()"> @keyup.enter.native="dataFormSubmit()">
<el-form-item label="参数名称" prop="paramId"> <el-form-item label="参数名称" prop="paramId">
<el-select v-model="dataForm.paramId" filterable placeholder="参数名称" @change="getData"> <el-select v-model="dataForm.paramId" filterable placeholder="参数名称" @change="getData" multiple >
<el-option v-for="dict in materialList" :key=" dict.id" :label="dict.name" :value="dict.id" /> <el-option v-for="dict in materialList" :key=" dict.id" :label="dict.name" :value="dict.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="参数编码" prop="code"> <!-- <el-form-item label="参数编码" prop="code">
<el-input v-model="dataForm.code" placeholder="请输入参数编码" clearable /> <el-input v-model="dataForm.code" placeholder="请输入参数编码" clearable />
</el-form-item> --> </el-form-item> -->
<el-form-item label="标准最小值" prop="standardMinValue"> <!-- <el-form-item label="标准最小值" prop="standardMinValue">
<el-input v-model="dataForm.standardMinValue" placeholder="请输入标准最小值" clearable /> <el-input v-model="dataForm.standardMinValue" placeholder="请输入标准最小值" clearable />
</el-form-item> </el-form-item>
<el-form-item label="标准最大值" prop="standardMaxValue"> <el-form-item label="标准最大值" prop="standardMaxValue">
<el-input v-model="dataForm.standardMaxValue" placeholder="请输入标准最大值" clearable /> <el-input v-model="dataForm.standardMaxValue" placeholder="请输入标准最大值" clearable />
</el-form-item> </el-form-item> -->
<el-form-item label="工艺最小值" prop="minValue"> <el-form-item label="工艺最小值" prop="minValue">
<el-input v-model="dataForm.minValue" placeholder="请输入工艺最小值" clearable /> <el-input v-model="dataForm.minValue" placeholder="请输入工艺最小值" clearable />
</el-form-item> </el-form-item>
@ -55,7 +55,7 @@
<script> <script>
import { import {
getProcessEquValueBomDet, getProcessEquValueBomDet,
createProcessEquValueBomDet, createProcessEquValueBomDetList,
updateProcessEquValueBomDet, updateProcessEquValueBomDet,
getValueList getValueList
} from '@/api/extend/processEquValueBom'; } from '@/api/extend/processEquValueBom';
@ -74,7 +74,7 @@ export default {
dataForm: { dataForm: {
id: undefined, id: undefined,
bomId: undefined, bomId: undefined,
paramId:undefined, paramId:[],
minValue:undefined, minValue:undefined,
maxValue: undefined, maxValue: undefined,
defaultValue: undefined, defaultValue: undefined,
@ -117,6 +117,10 @@ export default {
id: this.dataForm.id id: this.dataForm.id
}).then((res) => { }).then((res) => {
this.dataForm = res.data; this.dataForm = res.data;
const arr = []
arr.push(res.data.paramId)
this.dataForm.paramId = arr
console.log(this.dataForm.paramId);
// this.dataForm.materialId = materialId; // this.dataForm.materialId = materialId;
// this.dataForm.value = value; // this.dataForm.value = value;
}); });
@ -137,22 +141,41 @@ export default {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
// //
if (this.dataForm.id) { if (this.dataForm.id) {
const dataObj = {
paramId: this.dataForm.paramId.toString(),
bomId: this.dataForm.bomId,
minValue: this.dataForm.minValue,
maxValue: this.dataForm.maxValue,
defaultValue: this.dataForm.defaultValue,
standardMinValue: this.dataForm.standardMinValue,
standardMaxValue: this.dataForm.standardMaxValue,
remark: this.dataForm.remark,
id: this.dataForm.id
}
updateProcessEquValueBomDet({ updateProcessEquValueBomDet({
...this.dataForm, ...dataObj,
productId: this.productId,
}).then((response) => { }).then((response) => {
this.$modal.msgSuccess('修改成功'); this.$modal.msgSuccess('修改成功');
this.visible = false; this.visible = false;
this.$emit('refreshDataList'); this.$emit('refreshDataList');
}); });
return; return;
} }
const dataArr = this.dataForm.paramId.map(ele => {
return {
paramId: ele,
bomId: this.dataForm.bomId,
minValue: this.dataForm.minValue,
maxValue: this.dataForm.maxValue,
defaultValue: this.dataForm.defaultValue,
standardMinValue: this.dataForm.standardMinValue,
standardMaxValue: this.dataForm.standardMaxValue,
remark: this.dataForm.remark
}
});
// //
createProcessEquValueBomDet({ createProcessEquValueBomDetList(dataArr).then((response) => {
...this.dataForm,
productId: this.productId,
}).then((response) => {
this.$modal.msgSuccess('新增成功'); this.$modal.msgSuccess('新增成功');
this.visible = false; this.visible = false;
this.$emit('refreshDataList'); this.$emit('refreshDataList');

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 14:55:51 * @Date: 2023-08-01 14:55:51
* @LastEditors: zhp * @LastEditors: zhp
* @LastEditTime: 2023-11-10 10:23:33 * @LastEditTime: 2023-11-22 14:23:40
* @Description: * @Description:
--> -->
<template> <template>
@ -70,7 +70,7 @@ const tableProps = [
}, },
{ {
prop: 'yield', prop: 'yield',
label: '成品率' label: '合格率'
} }
]; ];
@ -115,19 +115,19 @@ export default {
valueField: 'id', valueField: 'id',
param: 'orderName' param: 'orderName'
}, },
// { {
// type: 'datePicker', type: 'datePicker',
// label: '', label: '工单开始时间',
// dateType: 'daterange', dateType: 'daterange',
// format: 'yyyy-MM-dd', format: 'yyyy-MM-dd',
// valueFormat: "yyyy-MM-dd", valueFormat: "yyyy-MM-dd",
// rangeSeparator: '-', rangeSeparator: '-',
// startPlaceholder: '', startPlaceholder: '开始时间',
// endPlaceholder: '', endPlaceholder: '结束时间',
// param: 'timeVal', param: 'timeVal',
// defaultSelect: [], defaultSelect: [],
// width: 250 width: 250
// }, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '搜索',
@ -238,13 +238,13 @@ export default {
if (val.btnName === 'search') { if (val.btnName === 'search') {
this.listQuery.orderName = val.orderName ? val.orderName :undefined this.listQuery.orderName = val.orderName ? val.orderName :undefined
// this.queryParams.status = val.status // this.queryParams.status = val.status
// if (val.timeVal && val.timeVal.length != 0 ) { if (val.timeVal && val.timeVal.length != 0 ) {
// this.listQuery.startTime = val.timeVal[0] + ' 00:00:00' this.listQuery.startTime = val.timeVal[0] + ' 00:00:00'
// this.listQuery.endTime = val.timeVal[1] + ' 23:59:59' this.listQuery.endTime = val.timeVal[1] + ' 23:59:59'
// } else { } else {
// this.listQuery.startTime = undefined this.listQuery.startTime = undefined
// this.listQuery.endTime = undefined this.listQuery.endTime = undefined
// } }
this.getList() this.getList()
} else { } else {
// this.handleExport() // this.handleExport()

View File

@ -156,7 +156,7 @@ export default {
} }
}) })
} else { } else {
createGroupClasses({ ...obj }).then((res) => { createGroupClasses({ ...this.form }).then((res) => {
if (res.code === 0) { if (res.code === 0) {
this.$modal.msgSuccess("操作成功"); this.$modal.msgSuccess("操作成功");
this.$emit('successSubmit') this.$emit('successSubmit')

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<el-drawer :title="title" :visible.sync="visible" size="70%" @close='closeD'> <el-drawer :title="title" :visible.sync="visible" size="70%" @close='closeD' :show-close='false'>
<div class="box"> <div class="box">
<el-row class="topBox"> <el-row class="topBox">
<el-col :span="6"> <el-col :span="6">
@ -59,6 +59,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width='40%'
> >
<worker-team-add ref="workerTeamAdd" @successSubmit="successSubmit" /> <worker-team-add ref="workerTeamAdd" @successSubmit="successSubmit" />
</base-dialog> </base-dialog>

View File

@ -38,6 +38,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width='40%'
> >
<group-team-add ref="groupList" @successSubmit="successSubmit" /> <group-team-add ref="groupList" @successSubmit="successSubmit" />
</base-dialog> </base-dialog>
@ -50,9 +51,9 @@
import { getGroupTeamPage, deleteGroupTeam, updateGroupTeam } from "@/api/base/groupTeam"; import { getGroupTeamPage, deleteGroupTeam, updateGroupTeam } from "@/api/base/groupTeam";
import { parseTime } from '@/utils/ruoyi' import { parseTime } from '@/utils/ruoyi'
import GroupTeamAdd from './components/groupTeamAdd' import GroupTeamAdd from './components/groupTeamAdd'
import StatusBtn from './components/statusBtn.vue' import StatusBtn from './components/statusBtn'
import WorkerOperate from './components/workerOperate.vue' import WorkerOperate from './components/workerOperate'
import WorkerEdit from './components/workerEdit.vue'; import WorkerEdit from './components/workerEdit'
const tableProps = [ const tableProps = [
{ {
prop: 'createTime', prop: 'createTime',

View File

@ -1,7 +1,7 @@
<template> <template>
<el-form ref="addWorkOrder" :rules="rules" label-width="130px" :model="form"> <el-form ref="addWorkOrder" :rules="rules" label-width="130px" :model="form" label-position='top'>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="工单名称" prop="name" v-if='!isBind'> <el-form-item label="工单名称" prop="name" v-if='!isBind'>
<el-input v-model="form.name"></el-input> <el-input v-model="form.name"></el-input>
</el-form-item> </el-form-item>
@ -16,14 +16,12 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="工单编码" prop="code"> <el-form-item label="工单编码" prop="code">
<el-input v-model="form.code" disabled></el-input> <el-input v-model="form.code" disabled></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span='6'>
<el-row>
<el-col :span='12'>
<el-form-item label="产品名称" prop="planProductId"> <el-form-item label="产品名称" prop="planProductId">
<el-select v-model="form.planProductId" placeholder="请选择" disabled style="width: 100%;"> <el-select v-model="form.planProductId" placeholder="请选择" disabled style="width: 100%;">
<el-option <el-option
@ -37,7 +35,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="计划开始时间"> <el-form-item label="计划开始时间">
<el-date-picker <el-date-picker
v-model="planStartTime" v-model="planStartTime"
@ -50,8 +48,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="计划完成时间"> <el-form-item label="计划完成时间">
<el-date-picker <el-date-picker
v-model="planFinishTime" v-model="planFinishTime"
@ -63,19 +61,17 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="计划投入数量" prop="planAssignQuantity"> <el-form-item label="计划投入数量" prop="planAssignQuantity">
<el-input-number v-model="form.planAssignQuantity" :min="0" :max="9999999999999" :disabled="isBind" style="width: 100%;"></el-input-number> <el-input-number v-model="form.planAssignQuantity" :min="0" :max="9999999999999" :disabled="isBind" style="width: 100%;"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span='6'>
<el-row>
<el-col :span='12'>
<el-form-item label="计划生产数量" prop="planQuantity"> <el-form-item label="计划生产数量" prop="planQuantity">
<el-input-number v-model="form.planQuantity" :min="0" :max="9999999999999" :disabled="isBind" style="width: 100%;"></el-input-number> <el-input-number v-model="form.planQuantity" :min="0" :max="9999999999999" :disabled="isBind" style="width: 100%;"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="关联工艺" prop="processFlowId"> <el-form-item label="关联工艺" prop="processFlowId">
<el-select v-model="form.processFlowId" placeholder="请选择" disabled style="width: 100%;"> <el-select v-model="form.processFlowId" placeholder="请选择" disabled style="width: 100%;">
<el-option <el-option
@ -88,16 +84,16 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="物料计算方式" prop="materialMethod"> <el-form-item label="物料计算方式" prop="materialMethod">
<el-radio-group v-model="form.materialMethod" disabled> <el-select v-model="form.materialMethod" placeholder="请选择" style="width: 100%;" disabled>
<el-radio :label="1">产品基础BOM</el-radio> <el-option label="产品基础BOM" :value="1"></el-option>
<el-radio :label="2">工艺扩展BOM</el-radio> <el-option label="工艺扩展BOM" :value="2"></el-option>
</el-radio-group> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="优先级" prop="priority"> <el-form-item label="优先级" prop="priority">
<el-select v-model="form.priority" placeholder="请选择" style="width: 100%;" :disabled="isBind"> <el-select v-model="form.priority" placeholder="请选择" style="width: 100%;" :disabled="isBind">
<el-option <el-option
@ -109,9 +105,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span='6'>
<el-row>
<el-col :span='12'>
<el-form-item label="工单类型" prop="type"> <el-form-item label="工单类型" prop="type">
<el-select v-model="form.type" placeholder="请选择" style="width: 100%;" :disabled="isBind"> <el-select v-model="form.type" placeholder="请选择" style="width: 100%;" :disabled="isBind">
<el-option <el-option
@ -123,7 +117,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="关联产线" prop="productLineId"> <el-form-item label="关联产线" prop="productLineId">
<el-select v-model="form.productLineId" placeholder="请选择" multiple style="width: 100%;" :disabled="isBind"> <el-select v-model="form.productLineId" placeholder="请选择" multiple style="width: 100%;" :disabled="isBind">
<el-option <el-option
@ -136,15 +130,13 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="负责人" prop="workers"> <el-form-item label="负责人" prop="workers">
<el-input v-model="form.workers" :disabled="isBind"></el-input> <el-input v-model="form.workers" :disabled="isBind"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span='6'>
<el-row>
<el-col :span='12'>
<el-form-item label="计划分配订单量" prop="planAssignmentQuantity"> <el-form-item label="计划分配订单量" prop="planAssignmentQuantity">
<el-input-number v-model="form.planAssignmentQuantity" :min="0" :max="9999999999999" style="width: 100%;"></el-input-number> <el-input-number v-model="form.planAssignmentQuantity" :min="0" :max="9999999999999" style="width: 100%;"></el-input-number>
</el-form-item> </el-form-item>

View File

@ -1,24 +1,22 @@
<template> <template>
<el-form ref="orderAddForm" :rules="rules" label-width="130px" :model="form"> <el-form ref="orderAddForm" :rules="rules" label-width="130px" :model="form" label-position='top'>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="订单名称" prop="name"> <el-form-item label="订单名称" prop="name">
<el-input v-model="form.name"></el-input> <el-input v-model="form.name"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="订单号" prop="code"> <el-form-item label="订单号" prop="code">
<el-input v-model="form.code"></el-input> <el-input v-model="form.code"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span='6'>
<el-row>
<el-col :span='12'>
<el-form-item label="计划加工数量" prop="planQuantity"> <el-form-item label="计划加工数量" prop="planQuantity">
<el-input-number v-model="form.planQuantity" :min="0" :max="9999999999999" style="width: 100%;"></el-input-number> <el-input-number v-model="form.planQuantity" :min="0" :max="9999999999999" style="width: 100%;"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="产品名称" prop="planProductId"> <el-form-item label="产品名称" prop="planProductId">
<el-select v-model="form.planProductId" placeholder="请选择" style="width: 100%;"> <el-select v-model="form.planProductId" placeholder="请选择" style="width: 100%;">
<el-option <el-option
@ -33,13 +31,13 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="单价" prop="price"> <el-form-item label="单价" prop="price">
<el-input-number v-model="form.price" :min="0" :max="9999999999999" :precision='2' style="width: 100%;"></el-input-number> <el-input-number v-model="form.price" :min="0" :max="9999999999999" :precision='2' style="width: 100%;"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="客户" prop="customerId"> <el-form-item label="客户" prop="customerId">
<el-select v-model="form.customerId" placeholder="请选择" style="width: 100%;" clearable> <el-select v-model="form.customerId" placeholder="请选择" style="width: 100%;" clearable>
<el-option <el-option
@ -51,9 +49,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span='6'>
<el-row>
<el-col :span='12'>
<el-form-item label="优先级" prop="priority"> <el-form-item label="优先级" prop="priority">
<el-select v-model="form.priority" placeholder="请选择" style="width: 100%;" clearable> <el-select v-model="form.priority" placeholder="请选择" style="width: 100%;" clearable>
<el-option <el-option
@ -65,7 +61,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="包装规格" prop="packSpec"> <el-form-item label="包装规格" prop="packSpec">
<el-select v-model="form.packSpec" placeholder="请选择" style="width: 100%;" clearable> <el-select v-model="form.packSpec" placeholder="请选择" style="width: 100%;" clearable>
<el-option <el-option
@ -78,13 +74,13 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="负责人" prop="workers"> <el-form-item label="负责人" prop="workers">
<el-input v-model="form.workers"></el-input> <el-input v-model="form.workers"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="关联工艺" prop="processFlowId"> <el-form-item label="关联工艺" prop="processFlowId">
<el-select v-model="form.processFlowId" placeholder="请选择" style="width: 100%;" clearable @change="processFlowIdChange"> <el-select v-model="form.processFlowId" placeholder="请选择" style="width: 100%;" clearable @change="processFlowIdChange">
<el-option <el-option
@ -96,17 +92,15 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span='6'>
<el-row>
<el-col :span='12'>
<el-form-item label="物料计算方式" prop="materialMethod"> <el-form-item label="物料计算方式" prop="materialMethod">
<el-radio-group v-model="form.materialMethod" @change='materialMethodChange'> <el-select v-model="form.materialMethod" placeholder="请选择" style="width: 100%;" @change='materialMethodChange'>
<el-radio :label="1">产品基础BOM</el-radio> <el-option label="产品基础BOM" :value="1"></el-option>
<el-radio :label="2">工艺扩展BOM</el-radio> <el-option label="工艺扩展BOM" :value="2"></el-option>
</el-radio-group> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="订单计划开始时间" prop="planStartTime"> <el-form-item label="订单计划开始时间" prop="planStartTime">
<el-date-picker <el-date-picker
v-model="form.planStartTime" v-model="form.planStartTime"
@ -119,8 +113,8 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row :gutter="20">
<el-col :span='12'> <el-col :span='6'>
<el-form-item label="订单计划完成时间" prop="planFinishTime"> <el-form-item label="订单计划完成时间" prop="planFinishTime">
<el-date-picker <el-date-picker
v-model="form.planFinishTime" v-model="form.planFinishTime"
@ -138,20 +132,19 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <!-- <el-row>
<el-col :span='24'> <el-col :span='24'>
<el-form-item label="描述信息" prop="description"> <el-form-item label="描述信息" prop="description">
<el-input v-model="form.description"></el-input> <el-input v-model="form.description"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row> -->
</el-form> </el-form>
</template> </template>
<script> <script>
import { getOrderCode, getOrderById, getProcessFlowList, orderUpdate, orderCreate } from '@/api/base/orderManage' import { getOrderCode, getOrderById, getProcessFlowList, orderUpdate, orderCreate } from '@/api/base/orderManage'
import { getProductAll } from '@/api/base/product' import { getProductAll } from '@/api/base/product'
import { getCustomerList } from '@/api/base/customer' import { getCustomerList } from '@/api/base/customer'
import moment from 'moment'
export default { export default {
name: 'OrderAdd', name: 'OrderAdd',
data() { data() {
@ -170,12 +163,13 @@ export default {
processFlowId: '', processFlowId: '',
materialMethod: 1, materialMethod: 1,
remark: '', remark: '',
description: '', // description: '',
planStartTime: '', planStartTime: '',
planFinishTime: '' planFinishTime: ''
}, },
rules: { rules: {
name: [{ required: true, message: "订单名称不能为空", trigger: "blur" }], name: [{ required: true, message: "订单名称不能为空", trigger: "blur" }],
code: [{ required: true, message: "订单号不能为空", trigger: "blur" }],
planQuantity: [{ required: true, message: "计划加工数量不能为空", trigger: "blur" }], planQuantity: [{ required: true, message: "计划加工数量不能为空", trigger: "blur" }],
planProductId: [{ required: true, message: "产品名称不能为空", trigger: "change" }] planProductId: [{ required: true, message: "产品名称不能为空", trigger: "change" }]
}, },
@ -207,7 +201,7 @@ export default {
this.form.materialMethod = res.data.materialMethod this.form.materialMethod = res.data.materialMethod
this.form.planFinishTime = res.data.planFinishTime ? res.data.planFinishTime : null this.form.planFinishTime = res.data.planFinishTime ? res.data.planFinishTime : null
this.form.remark = res.data.remark this.form.remark = res.data.remark
this.form.description = res.data.description // this.form.description = res.data.description
} }
}) })
} else { } else {

View File

@ -36,7 +36,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width='70%' width='60%'
> >
<order-add ref="orderAdd" @successSubmit="successSubmit" /> <order-add ref="orderAdd" @successSubmit="successSubmit" />
</base-dialog> </base-dialog>
@ -120,7 +120,8 @@ const tableProps = [
}, },
{ {
prop: 'price', prop: 'price',
label: '单价(元)' label: '单价(元)',
align: 'right'
}, },
{ {
prop: 'workOrderNum', prop: 'workOrderNum',

View File

@ -5,7 +5,7 @@
<span class="blueTitle"></span> <span class="blueTitle"></span>
<span>订单编码: {{orderMsg.code}}</span> <span>订单编码: {{orderMsg.code}}</span>
</div> </div>
<el-button type="primary" plain size="small" style="float: right;" @click="returnOrderManage">返回</el-button> <el-button type="primary" plain size="small" style="float: right;" @click="returnOrderManage"><svg-icon icon-class="return"/> 返回</el-button>
<div style="padding-left: 14px;"> <div style="padding-left: 14px;">
<el-row> <el-row>
<el-col :span='3'> <el-col :span='3'>
@ -259,7 +259,8 @@ export default {
let arr = res2.data let arr = res2.data
arr.map(item => { arr.map(item => {
if (item) { if (item) {
item.num = item.num * this.orderMsg.remainingQuantity let a = item.num * this.orderMsg.remainingQuantity
item.num = !isNaN(parseFloat(a)) && isFinite(a) ? a : ''
} }
}) })
this.list2 = arr this.list2 = arr

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 13:52:10 * @Date: 2023-08-01 13:52:10
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-20 15:54:28 * @LastEditTime: 2023-11-23 15:27:55
* @Description: * @Description:
--> -->
<template> <template>
@ -12,7 +12,8 @@
ref="dataForm" ref="dataForm"
v-if="visible" v-if="visible"
@keyup.enter.native="dataFormSubmit()" @keyup.enter.native="dataFormSubmit()"
label-width="100px"> label-width="100px"
label-position="top">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="物品名称" prop="name"> <el-form-item label="物品名称" prop="name">
@ -60,6 +61,7 @@
:min="0" :min="0"
v-model="dataForm.dailyUse" v-model="dataForm.dailyUse"
clearable clearable
style="width: 100%;"
placeholder="请输入单日消耗量" /> placeholder="请输入单日消耗量" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -69,6 +71,7 @@
:min="0" :min="0"
v-model="dataForm.allowTime" v-model="dataForm.allowTime"
clearable clearable
style="width: 90%;"
placeholder="请输入允许留存时间" /> () placeholder="请输入允许留存时间" /> ()
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -75,6 +75,7 @@ const tableProps = [
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
width: 150
}, },
{ {
prop: 'dailyUse', prop: 'dailyUse',
@ -127,7 +128,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },

View File

@ -14,13 +14,6 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:table-data="tableData"> :table-data="tableData">
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="100"
label="库位详情"
:method-list="tableBtn"
@clickBtn="handleClick" />
</base-table> </base-table>
<pagination <pagination
:limit.sync="listQuery.pageSize" :limit.sync="listQuery.pageSize"
@ -76,7 +69,7 @@ const tableProps = [
prop: 'operateTime', prop: 'operateTime',
label: '操作时间', label: '操作时间',
filter: parseTime, filter: parseTime,
minWidth: 150, minWidth: 100,
}, },
{ {
prop: 'operator', prop: 'operator',
@ -96,14 +89,6 @@ export default {
}, },
tableData: [], tableData: [],
tableProps, tableProps,
tableBtn: [
this.$auth.hasPermi(`end-material:warehouse-realtime-location-his:query`)
? {
type: 'info',
btnName: '详情',
}
: undefined,
].filter((v) => v),
drawerVisible: false, drawerVisible: false,
formConfig: [ formConfig: [
{ {
@ -143,7 +128,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-03 16:20:19 * @LastEditTime: 2023-11-23 16:09:20
* @Description: * @Description:
--> -->
<template> <template>
@ -11,7 +11,10 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:height="300" :height="300"
:table-data="tableData" /> :table-data="tableData"
v-if="tableData.length" />
<!-- 没有数据 -->
<div class="no-data-bg" v-else></div>
</template> </template>
<script> <script>
@ -22,37 +25,31 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '物品名称', label: '物品名称',
align: 'center',
}, },
{ {
prop: 'code', prop: 'code',
label: '物品编码', label: '物品编码',
align: 'center',
}, },
{ {
prop: 'spec', prop: 'spec',
label: '物品规格', label: '物品规格',
align: 'center',
}, },
{ {
prop: 'batchCode', prop: 'batchCode',
label: '物品批次', label: '物品批次',
align: 'center',
}, },
{ {
prop: 'num', prop: 'num',
label: '数量', label: '数量',
align: 'center',
}, },
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
align: 'center', width: 150
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
align: 'center',
}, },
]; ];
export default { export default {

View File

@ -92,7 +92,7 @@ const tableProps = [
prop: 'createTime', prop: 'createTime',
label: '操作时间', label: '操作时间',
filter: parseTime, filter: parseTime,
minWidth: 150, minWidth: 100,
}, },
{ {
prop: 'creator', prop: 'creator',
@ -115,7 +115,7 @@ export default {
tableBtn: [ tableBtn: [
this.$auth.hasPermi(`end-material:warehouse-location-his:query`) this.$auth.hasPermi(`end-material:warehouse-location-his:query`)
? { ? {
type: 'info', type: 'detail',
btnName: '详情', btnName: '详情',
} }
: undefined, : undefined,
@ -159,7 +159,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
@ -205,7 +205,7 @@ export default {
} }
}, },
otherMethods(val) { otherMethods(val) {
if (val.type === 'info') { if (val.type === 'detail') {
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrEditTitle = val.data.name + ' -产品信息'; this.addOrEditTitle = val.data.name + ' -产品信息';
this.$nextTick(() => { this.$nextTick(() => {

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 13:52:10 * @Date: 2023-08-01 13:52:10
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-20 15:14:18 * @LastEditTime: 2023-11-23 15:54:25
* @Description: * @Description:
--> -->
<template> <template>
@ -68,6 +68,7 @@
v-model="dataForm.goodsBatch" v-model="dataForm.goodsBatch"
filterable filterable
clearable clearable
style="width:100%"
placeholder="请选择物品名称"> placeholder="请选择物品名称">
<el-option <el-option
v-for="(item, index) in Batch" v-for="(item, index) in Batch"
@ -83,6 +84,7 @@
v-model="dataForm.numDet" v-model="dataForm.numDet"
clearable clearable
:min="0" :min="0"
style="width:100%"
placeholder="请输入数量" /> placeholder="请输入数量" />
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-11-03 16:37:06 * @Date: 2023-11-03 16:37:06
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-04 16:33:02 * @LastEditTime: 2023-11-23 15:54:31
* @Description: * @Description:
--> -->
<template> <template>
@ -67,7 +67,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width="50%"> width="40%">
<add-or-update <add-or-update
ref="addOrUpdate" ref="addOrUpdate"
@refreshDataList="successSubmit"></add-or-update> @refreshDataList="successSubmit"></add-or-update>
@ -131,15 +131,18 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
{
type: 'separate',
},
{ {
type: this.$auth.hasPermi('end-material:warehouse-realtime:create') ? 'button' : '', type: this.$auth.hasPermi('end-material:warehouse-realtime:create') ? 'button' : '',
btnName: '入库', btnName: '入库',
name: 'add', name: 'add',
color: 'success', color: 'primary',
plain: true, plain: true,
}, },
], ],

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-03 14:51:33 * @LastEditTime: 2023-11-23 16:08:09
* @Description: * @Description:
--> -->
<template> <template>
@ -11,7 +11,10 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:height="300" :height="300"
:table-data="tableData" /> :table-data="tableData"
v-if="tableData.length" />
<!-- 没有数据 -->
<div class="no-data-bg" v-else></div>
</template> </template>
<script> <script>
@ -22,48 +25,41 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '物品名称', label: '物品名称',
align: 'center',
}, },
{ {
prop: 'code', prop: 'code',
label: '物品编码', label: '物品编码',
align: 'center',
}, },
{ {
prop: 'spec', prop: 'spec',
label: '物品规格', label: '物品规格',
align: 'center',
}, },
{ {
prop: 'goodsBatch', prop: 'goodsBatch',
label: '物品批次', label: '物品批次',
align: 'center',
}, },
{ {
prop: 'num', prop: 'num',
label: '数量', label: '数量',
align: 'center',
}, },
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
align: 'center', width: 150
}, },
{ {
prop: 'inTime', prop: 'inTime',
label: '入库时间', label: '入库时间',
align: 'center',
filter: parseTime, filter: parseTime,
}, },
{ {
prop: 'leftTime', prop: 'leftTime',
label: '剩余留存时长(天)', label: '剩余留存时长(天)',
align: 'center', width: 150
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
align: 'center',
}, },
]; ];
export default { export default {

View File

@ -1,7 +1,7 @@
<template> <template>
<el-dialog <el-dialog
:visible.sync="visible" :visible.sync="visible"
:width="'35%'" :width="'30%'"
:append-to-body="true" :append-to-body="true"
:close-on-click-modal="false" :close-on-click-modal="false"
class="dialog"> class="dialog">
@ -22,7 +22,7 @@
<el-form-item label="产品" prop="productInfo"> <el-form-item label="产品" prop="productInfo">
<el-select <el-select
v-model="dataForm.productInfo" v-model="dataForm.productInfo"
style="width: 100%" style="width: 60%"
filterable filterable
value-key="id" value-key="id"
placeholder="请选择产品"> placeholder="请选择产品">
@ -79,7 +79,7 @@ export default {
// //
dataFormSubmit() { dataFormSubmit() {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (this.dataForm.productInfo) {
this.dataForm.productInfo.goodsId = this.dataForm.productInfo.id this.dataForm.productInfo.goodsId = this.dataForm.productInfo.id
this.dataForm.productInfo.remark = '' this.dataForm.productInfo.remark = ''
// //
@ -91,6 +91,8 @@ export default {
// //
this.visible = false; this.visible = false;
this.$emit('refreshDataList', this.dataForm); this.$emit('refreshDataList', this.dataForm);
} else {
this.$modal.msgWarning('请选择产品');
} }
}); });
}, },

View File

@ -20,9 +20,7 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="库位名称" prop="name"> <el-form-item label="库位名称" prop="name">
<el-input <el-input v-model="dataForm.name" disabled />
v-model="dataForm.name"
disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -47,15 +45,20 @@
</small-title> </small-title>
<div class="attr-list"> <div class="attr-list">
<div style="position: absolute; top: -40px; right: 15px">
<el-button @click="addNew" type="text">
<i class="el-icon-plus"></i>
新增
</el-button>
</div>
<base-table <base-table
:table-props="tableProps" :table-props="tableProps"
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:add-button-show="addButtonShow"
@emitButtonClick="addNew"
@emitFun="inputChange" @emitFun="inputChange"
:height="400" :height="400"
:table-data="productAttributeList"> :table-data="productAttributeList"
v-if="productAttributeList.length">
<method-btn <method-btn
slot="handleBtn" slot="handleBtn"
:width="70" :width="70"
@ -63,6 +66,8 @@
:method-list="tableBtn" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<!-- 没有数据 -->
<div class="no-data-bg" v-else></div>
</div> </div>
</div> </div>
</div> </div>
@ -85,8 +90,10 @@
import productAttrAdd from './attr-add'; import productAttrAdd from './attr-add';
import inputArea from '../../mixins/inputArea'; import inputArea from '../../mixins/inputArea';
import SmallTitle from './SmallTitle'; import SmallTitle from './SmallTitle';
import { inWarehouseRealtimeLocation, import {
getWarehouseRealtimeLocation } from '@/api/warehouse/warehouseRealtimeLocation'; inWarehouseRealtimeLocation,
getWarehouseRealtimeLocation,
} from '@/api/warehouse/warehouseRealtimeLocation';
const tableBtn = [ const tableBtn = [
{ {
@ -99,36 +106,30 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '物品名称', label: '物品名称',
align: 'center',
}, },
{ {
prop: 'code', prop: 'code',
label: '物品编码', label: '物品编码',
align: 'center',
}, },
{ {
prop: 'spec', prop: 'spec',
label: '物品规格', label: '物品规格',
align: 'center',
}, },
{ {
prop: 'goodsBatch', prop: 'goodsBatch',
label: '物品批次', label: '物品批次',
align: 'center',
subcomponent: inputArea, subcomponent: inputArea,
width: 100, width: 100,
}, },
{ {
prop: 'num', prop: 'num',
label: '数量', label: '数量',
align: 'center',
subcomponent: inputArea, subcomponent: inputArea,
width: 100, width: 100,
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
align: 'center',
subcomponent: inputArea, subcomponent: inputArea,
width: 100, width: 100,
}, },
@ -143,8 +144,7 @@ export default {
tableBtn, tableBtn,
tableProps, tableProps,
productAttributeList: [], productAttributeList: [],
addButtonShow: '新增', operator: '',
operator: '',
dataForm: { dataForm: {
id: null, id: null,
name: '', name: '',
@ -170,8 +170,8 @@ export default {
initData() { initData() {
this.productAttributeList.splice(0); this.productAttributeList.splice(0);
}, },
init(val,nickname) { init(val, nickname) {
this.operator = nickname this.operator = nickname;
this.dataForm.id = val.id; this.dataForm.id = val.id;
this.dataForm.name = val.name; this.dataForm.name = val.name;
this.dataForm.palletCode = val.palletCode; this.dataForm.palletCode = val.palletCode;
@ -213,12 +213,8 @@ export default {
handleClick(raw) { handleClick(raw) {
if (raw.type === 'delete') { if (raw.type === 'delete') {
this.$confirm( this.$confirm(
`确定对${ `是否确认删除名称为"${raw.data.name}"的数据项?`,
raw.data.name '系统提示',
? '[名称=' + raw.data.name + ']'
: '[序号=' + raw.data._pageIndex + ']'
}进行删除操作?`,
'提示',
{ {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
@ -238,12 +234,12 @@ export default {
this.productAttributeList.forEach((item) => { this.productAttributeList.forEach((item) => {
item.id = ''; item.id = '';
}); });
const data = { const data = {
realtimeLocationId : this.dataForm.id, realtimeLocationId: this.dataForm.id,
palletCode : this.dataForm.palletCode, palletCode: this.dataForm.palletCode,
operator : this.operator, operator: this.operator,
goodsInfos: this.productAttributeList goodsInfos: this.productAttributeList,
} };
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
// //
@ -313,5 +309,6 @@ export default {
.drawer >>> .el-form, .drawer >>> .el-form,
.drawer >>> .attr-list { .drawer >>> .attr-list {
padding: 0 16px; padding: 0 16px;
position: relative;
} }
</style> </style>

View File

@ -100,7 +100,7 @@ const tableProps = [
prop: 'inTime', prop: 'inTime',
label: '入库时间', label: '入库时间',
filter: parseTime, filter: parseTime,
minWidth: 150, minWidth: 100,
}, },
{ {
prop: 'remark', prop: 'remark',
@ -125,12 +125,6 @@ export default {
tableData: [], tableData: [],
tableProps, tableProps,
tableBtn: [ tableBtn: [
this.$auth.hasPermi(`end-material:warehouse-realtime-location:query`)
? {
type: 'info',
btnName: '详情',
}
: undefined,
this.$auth.hasPermi(`end-material:warehouse-realtime-location:query`) this.$auth.hasPermi(`end-material:warehouse-realtime-location:query`)
? { ? {
type: 'out', type: 'out',
@ -143,6 +137,12 @@ export default {
btnName: '入库', btnName: '入库',
} }
: undefined, : undefined,
this.$auth.hasPermi(`end-material:warehouse-realtime-location:query`)
? {
type: 'detail',
btnName: '详情',
}
: undefined,
].filter((v) => v), ].filter((v) => v),
drawerVisible: false, drawerVisible: false,
formConfig: [ formConfig: [
@ -183,7 +183,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
@ -262,7 +262,7 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.drawerRef.init(val.data, this.nickname); this.$refs.drawerRef.init(val.data, this.nickname);
}); });
} else if (val.type === 'info') { } else if (val.type === 'detail') {
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrEditTitle = val.data.name + ' -产品信息'; this.addOrEditTitle = val.data.name + ' -产品信息';
this.$nextTick(() => { this.$nextTick(() => {

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2022-08-24 11:19:43 * @Date: 2022-08-24 11:19:43
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-14 15:59:53 * @LastEditTime: 2023-11-21 10:37:05
* @Description: * @Description:
*/ */
export default { export default {
@ -104,7 +104,7 @@ export default {
}, },
// 删除 // 删除
deleteHandle(id, name, index) { deleteHandle(id, name, index) {
this.$confirm(`确定对${name ? '[名称=' + name + ']' : '[序号=' + index + ']'}进行删除操作?`, "提示", { this.$confirm(`是否确认删除${name ? '名称为"' + name + '"' : '序号为"' + index + '"'}的数据项?`, "系统提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning", type: "warning",

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 13:52:10 * @Date: 2023-08-01 13:52:10
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-20 15:54:39 * @LastEditTime: 2023-11-23 15:27:47
* @Description: * @Description:
--> -->
<template> <template>
@ -12,7 +12,8 @@
ref="dataForm" ref="dataForm"
v-if="visible" v-if="visible"
@keyup.enter.native="dataFormSubmit()" @keyup.enter.native="dataFormSubmit()"
label-width="100px"> label-width="100px"
label-position="top">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="物品名称" prop="name"> <el-form-item label="物品名称" prop="name">
@ -60,6 +61,7 @@
:min="0" :min="0"
v-model="dataForm.dailyUse" v-model="dataForm.dailyUse"
clearable clearable
style="width: 100%;"
placeholder="请输入单日消耗量" /> placeholder="请输入单日消耗量" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -69,6 +71,7 @@
:min="0" :min="0"
v-model="dataForm.allowTime" v-model="dataForm.allowTime"
clearable clearable
style="width: 90%;"
placeholder="请输入允许留存时间" /> () placeholder="请输入允许留存时间" /> ()
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -75,6 +75,7 @@ const tableProps = [
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
width: 150
}, },
{ {
prop: 'dailyUse', prop: 'dailyUse',
@ -127,7 +128,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },

View File

@ -14,13 +14,6 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:table-data="tableData"> :table-data="tableData">
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="100"
label="库位详情"
:method-list="tableBtn"
@clickBtn="handleClick" />
</base-table> </base-table>
<pagination <pagination
:limit.sync="listQuery.pageSize" :limit.sync="listQuery.pageSize"
@ -76,7 +69,7 @@ const tableProps = [
prop: 'operateTime', prop: 'operateTime',
label: '操作时间', label: '操作时间',
filter: parseTime, filter: parseTime,
minWidth: 150, minWidth: 100,
}, },
{ {
prop: 'operator', prop: 'operator',
@ -96,14 +89,6 @@ export default {
}, },
tableData: [], tableData: [],
tableProps, tableProps,
tableBtn: [
this.$auth.hasPermi(`out-material:warehouse-realtime-location-his:query`)
? {
type: 'info',
btnName: '详情',
}
: undefined,
].filter((v) => v),
drawerVisible: false, drawerVisible: false,
formConfig: [ formConfig: [
{ {
@ -143,7 +128,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-03 16:20:19 * @LastEditTime: 2023-11-23 16:09:04
* @Description: * @Description:
--> -->
<template> <template>
@ -11,7 +11,10 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:height="300" :height="300"
:table-data="tableData" /> :table-data="tableData"
v-if="tableData.length" />
<!-- 没有数据 -->
<div class="no-data-bg" v-else></div>
</template> </template>
<script> <script>
@ -22,37 +25,31 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '物品名称', label: '物品名称',
align: 'center',
}, },
{ {
prop: 'code', prop: 'code',
label: '物品编码', label: '物品编码',
align: 'center',
}, },
{ {
prop: 'spec', prop: 'spec',
label: '物品规格', label: '物品规格',
align: 'center',
}, },
{ {
prop: 'batchCode', prop: 'batchCode',
label: '物品批次', label: '物品批次',
align: 'center',
}, },
{ {
prop: 'num', prop: 'num',
label: '数量', label: '数量',
align: 'center',
}, },
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
align: 'center', width: 150
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
align: 'center',
}, },
]; ];
export default { export default {

View File

@ -92,7 +92,7 @@ const tableProps = [
prop: 'createTime', prop: 'createTime',
label: '操作时间', label: '操作时间',
filter: parseTime, filter: parseTime,
minWidth: 150, minWidth: 100,
}, },
{ {
prop: 'creator', prop: 'creator',
@ -115,7 +115,7 @@ export default {
tableBtn: [ tableBtn: [
this.$auth.hasPermi(`out-material:warehouse-location-his:query`) this.$auth.hasPermi(`out-material:warehouse-location-his:query`)
? { ? {
type: 'info', type: 'detail',
btnName: '详情', btnName: '详情',
} }
: undefined, : undefined,
@ -159,7 +159,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
@ -205,7 +205,7 @@ export default {
} }
}, },
otherMethods(val) { otherMethods(val) {
if (val.type === 'info') { if (val.type === 'detail') {
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrEditTitle = val.data.name + ' -产品信息'; this.addOrEditTitle = val.data.name + ' -产品信息';
this.$nextTick(() => { this.$nextTick(() => {

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 13:52:10 * @Date: 2023-08-01 13:52:10
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-20 15:14:00 * @LastEditTime: 2023-11-23 15:54:07
* @Description: * @Description:
--> -->
<template> <template>
@ -68,6 +68,7 @@
v-model="dataForm.goodsBatch" v-model="dataForm.goodsBatch"
filterable filterable
clearable clearable
style="width:100%"
placeholder="请选择物品名称"> placeholder="请选择物品名称">
<el-option <el-option
v-for="(item, index) in Batch" v-for="(item, index) in Batch"
@ -83,6 +84,7 @@
v-model="dataForm.numDet" v-model="dataForm.numDet"
clearable clearable
:min="0" :min="0"
style="width:100%"
placeholder="请输入数量" /> placeholder="请输入数量" />
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-11-03 16:37:06 * @Date: 2023-11-03 16:37:06
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-04 16:14:09 * @LastEditTime: 2023-11-23 15:54:14
* @Description: * @Description:
--> -->
<template> <template>
@ -67,7 +67,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width="50%"> width="40%">
<add-or-update <add-or-update
ref="addOrUpdate" ref="addOrUpdate"
@refreshDataList="successSubmit"></add-or-update> @refreshDataList="successSubmit"></add-or-update>
@ -131,15 +131,18 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
{
type: 'separate',
},
{ {
type: this.$auth.hasPermi('out-material:warehouse-realtime:create') ? 'button' : '', type: this.$auth.hasPermi('out-material:warehouse-realtime:create') ? 'button' : '',
btnName: '入库', btnName: '入库',
name: 'add', name: 'add',
color: 'success', color: 'primary',
plain: true, plain: true,
}, },
], ],

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-03 14:51:33 * @LastEditTime: 2023-11-23 16:07:43
* @Description: * @Description:
--> -->
<template> <template>
@ -11,7 +11,10 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:height="300" :height="300"
:table-data="tableData" /> :table-data="tableData"
v-if="tableData.length" />
<!-- 没有数据 -->
<div class="no-data-bg" v-else></div>
</template> </template>
<script> <script>
@ -22,48 +25,41 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '物品名称', label: '物品名称',
align: 'center',
}, },
{ {
prop: 'code', prop: 'code',
label: '物品编码', label: '物品编码',
align: 'center',
}, },
{ {
prop: 'spec', prop: 'spec',
label: '物品规格', label: '物品规格',
align: 'center',
}, },
{ {
prop: 'goodsBatch', prop: 'goodsBatch',
label: '物品批次', label: '物品批次',
align: 'center',
}, },
{ {
prop: 'num', prop: 'num',
label: '数量', label: '数量',
align: 'center',
}, },
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
align: 'center', width: 150,
}, },
{ {
prop: 'inTime', prop: 'inTime',
label: '入库时间', label: '入库时间',
align: 'center',
filter: parseTime, filter: parseTime,
}, },
{ {
prop: 'leftTime', prop: 'leftTime',
label: '剩余留存时长(天)', label: '剩余留存时长(天)',
align: 'center', width: 150,
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
align: 'center',
}, },
]; ];
export default { export default {

View File

@ -1,15 +1,13 @@
<template> <template>
<el-dialog <el-dialog
:visible.sync="visible" :visible.sync="visible"
:width="'35%'" :width="'30%'"
:append-to-body="true" :append-to-body="true"
:close-on-click-modal="false" :close-on-click-modal="false"
class="dialog"> class="dialog">
<template #title> <template #title>
<slot name="title"> <slot name="title">
<div class="titleStyle"> <div class="titleStyle">新增产品</div>
新增产品
</div>
</slot> </slot>
</template> </template>
@ -22,14 +20,14 @@
<el-form-item label="产品" prop="productInfo"> <el-form-item label="产品" prop="productInfo">
<el-select <el-select
v-model="dataForm.productInfo" v-model="dataForm.productInfo"
style="width: 100%" style="width: 60%"
filterable filterable
value-key="id" value-key="id"
placeholder="请选择产品"> placeholder="请选择产品">
<el-option <el-option
v-for="item in productArr" v-for="item in productArr"
:key="item.id" :key="item.id"
:disabled="!item.enabled" :disabled="!item.enabled"
:label="item.name" :label="item.name"
:value="item" /> :value="item" />
</el-select> </el-select>
@ -44,10 +42,7 @@
</template> </template>
<script> <script>
import { getListByType } from '@/api/warehouse/warehouseGoods';
import {
getListByType
} from "@/api/warehouse/warehouseGoods";
export default { export default {
data() { data() {
@ -59,7 +54,9 @@ export default {
}, },
productArr: [], productArr: [],
dataRule: { dataRule: {
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }], productId: [
{ required: true, message: '产品不能为空', trigger: 'blur' },
],
}, },
}; };
}, },
@ -79,9 +76,9 @@ export default {
// //
dataFormSubmit() { dataFormSubmit() {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (this.dataForm.productInfo) {
this.dataForm.productInfo.goodsId = this.dataForm.productInfo.id this.dataForm.productInfo.goodsId = this.dataForm.productInfo.id;
this.dataForm.productInfo.remark = '' this.dataForm.productInfo.remark = '';
// //
if (this.dataForm.index >= 0) { if (this.dataForm.index >= 0) {
this.visible = false; this.visible = false;
@ -91,6 +88,8 @@ export default {
// //
this.visible = false; this.visible = false;
this.$emit('refreshDataList', this.dataForm); this.$emit('refreshDataList', this.dataForm);
} else {
this.$modal.msgWarning('请选择产品');
} }
}); });
}, },

View File

@ -20,9 +20,7 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="库位名称" prop="name"> <el-form-item label="库位名称" prop="name">
<el-input <el-input v-model="dataForm.name" disabled />
v-model="dataForm.name"
disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -47,15 +45,20 @@
</small-title> </small-title>
<div class="attr-list"> <div class="attr-list">
<div style="position: absolute; top: -40px; right: 15px">
<el-button @click="addNew" type="text">
<i class="el-icon-plus"></i>
新增
</el-button>
</div>
<base-table <base-table
:table-props="tableProps" :table-props="tableProps"
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:add-button-show="addButtonShow"
@emitButtonClick="addNew"
@emitFun="inputChange" @emitFun="inputChange"
:height="400" :height="400"
:table-data="productAttributeList"> :table-data="productAttributeList"
v-if="productAttributeList.length">
<method-btn <method-btn
slot="handleBtn" slot="handleBtn"
:width="70" :width="70"
@ -63,6 +66,8 @@
:method-list="tableBtn" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<!-- 没有数据 -->
<div class="no-data-bg" v-else></div>
</div> </div>
</div> </div>
</div> </div>
@ -85,8 +90,10 @@
import productAttrAdd from './attr-add'; import productAttrAdd from './attr-add';
import inputArea from '../../mixins/inputArea'; import inputArea from '../../mixins/inputArea';
import SmallTitle from './SmallTitle'; import SmallTitle from './SmallTitle';
import { inWarehouseRealtimeLocation, import {
getWarehouseRealtimeLocation } from '@/api/warehouse/warehouseRealtimeLocation'; inWarehouseRealtimeLocation,
getWarehouseRealtimeLocation,
} from '@/api/warehouse/warehouseRealtimeLocation';
const tableBtn = [ const tableBtn = [
{ {
@ -99,36 +106,30 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '物品名称', label: '物品名称',
align: 'center',
}, },
{ {
prop: 'code', prop: 'code',
label: '物品编码', label: '物品编码',
align: 'center',
}, },
{ {
prop: 'spec', prop: 'spec',
label: '物品规格', label: '物品规格',
align: 'center',
}, },
{ {
prop: 'goodsBatch', prop: 'goodsBatch',
label: '物品批次', label: '物品批次',
align: 'center',
subcomponent: inputArea, subcomponent: inputArea,
width: 100, width: 100,
}, },
{ {
prop: 'num', prop: 'num',
label: '数量', label: '数量',
align: 'center',
subcomponent: inputArea, subcomponent: inputArea,
width: 100, width: 100,
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
align: 'center',
subcomponent: inputArea, subcomponent: inputArea,
width: 100, width: 100,
}, },
@ -143,8 +144,7 @@ export default {
tableBtn, tableBtn,
tableProps, tableProps,
productAttributeList: [], productAttributeList: [],
addButtonShow: '新增', operator: '',
operator: '',
dataForm: { dataForm: {
id: null, id: null,
name: '', name: '',
@ -170,8 +170,8 @@ export default {
initData() { initData() {
this.productAttributeList.splice(0); this.productAttributeList.splice(0);
}, },
init(val,nickname) { init(val, nickname) {
this.operator = nickname this.operator = nickname;
this.dataForm.id = val.id; this.dataForm.id = val.id;
this.dataForm.name = val.name; this.dataForm.name = val.name;
this.dataForm.palletCode = val.palletCode; this.dataForm.palletCode = val.palletCode;
@ -213,12 +213,8 @@ export default {
handleClick(raw) { handleClick(raw) {
if (raw.type === 'delete') { if (raw.type === 'delete') {
this.$confirm( this.$confirm(
`确定对${ `是否确认删除名称为"${raw.data.name}"的数据项?`,
raw.data.name '系统提示',
? '[名称=' + raw.data.name + ']'
: '[序号=' + raw.data._pageIndex + ']'
}进行删除操作?`,
'提示',
{ {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
@ -238,12 +234,12 @@ export default {
this.productAttributeList.forEach((item) => { this.productAttributeList.forEach((item) => {
item.id = ''; item.id = '';
}); });
const data = { const data = {
realtimeLocationId : this.dataForm.id, realtimeLocationId: this.dataForm.id,
palletCode : this.dataForm.palletCode, palletCode: this.dataForm.palletCode,
operator : this.operator, operator: this.operator,
goodsInfos: this.productAttributeList goodsInfos: this.productAttributeList,
} };
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
// //
@ -313,5 +309,6 @@ export default {
.drawer >>> .el-form, .drawer >>> .el-form,
.drawer >>> .attr-list { .drawer >>> .attr-list {
padding: 0 16px; padding: 0 16px;
position: relative;
} }
</style> </style>

View File

@ -100,7 +100,7 @@ const tableProps = [
prop: 'inTime', prop: 'inTime',
label: '入库时间', label: '入库时间',
filter: parseTime, filter: parseTime,
minWidth: 150, minWidth: 100,
}, },
{ {
prop: 'remark', prop: 'remark',
@ -125,12 +125,6 @@ export default {
tableData: [], tableData: [],
tableProps, tableProps,
tableBtn: [ tableBtn: [
this.$auth.hasPermi(`out-material:warehouse-realtime-location:query`)
? {
type: 'info',
btnName: '详情',
}
: undefined,
this.$auth.hasPermi(`out-material:warehouse-realtime-location:query`) this.$auth.hasPermi(`out-material:warehouse-realtime-location:query`)
? { ? {
type: 'out', type: 'out',
@ -143,6 +137,12 @@ export default {
btnName: '入库', btnName: '入库',
} }
: undefined, : undefined,
this.$auth.hasPermi(`out-material:warehouse-realtime-location:query`)
? {
type: 'detail',
btnName: '详情',
}
: undefined,
].filter((v) => v), ].filter((v) => v),
drawerVisible: false, drawerVisible: false,
formConfig: [ formConfig: [
@ -183,7 +183,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
@ -262,7 +262,7 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.drawerRef.init(val.data, this.nickname); this.$refs.drawerRef.init(val.data, this.nickname);
}); });
} else if (val.type === 'info') { } else if (val.type === 'detail') {
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrEditTitle = val.data.name + ' -产品信息'; this.addOrEditTitle = val.data.name + ' -产品信息';
this.$nextTick(() => { this.$nextTick(() => {

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 13:52:10 * @Date: 2023-08-01 13:52:10
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-20 15:54:49 * @LastEditTime: 2023-11-23 15:27:37
* @Description: * @Description:
--> -->
<template> <template>
@ -12,7 +12,8 @@
ref="dataForm" ref="dataForm"
v-if="visible" v-if="visible"
@keyup.enter.native="dataFormSubmit()" @keyup.enter.native="dataFormSubmit()"
label-width="100px"> label-width="100px"
label-position="top">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="物品名称" prop="name"> <el-form-item label="物品名称" prop="name">
@ -60,6 +61,7 @@
:min="0" :min="0"
v-model="dataForm.dailyUse" v-model="dataForm.dailyUse"
clearable clearable
style="width: 100%;"
placeholder="请输入单日消耗量" /> placeholder="请输入单日消耗量" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -69,6 +71,7 @@
:min="0" :min="0"
v-model="dataForm.allowTime" v-model="dataForm.allowTime"
clearable clearable
style="width: 90%;"
placeholder="请输入允许留存时间" /> () placeholder="请输入允许留存时间" /> ()
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -75,6 +75,7 @@ const tableProps = [
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
width: 150
}, },
{ {
prop: 'dailyUse', prop: 'dailyUse',
@ -127,7 +128,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },

View File

@ -14,13 +14,6 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:table-data="tableData"> :table-data="tableData">
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="100"
label="库位详情"
:method-list="tableBtn"
@clickBtn="handleClick" />
</base-table> </base-table>
<pagination <pagination
:limit.sync="listQuery.pageSize" :limit.sync="listQuery.pageSize"
@ -76,7 +69,7 @@ const tableProps = [
prop: 'operateTime', prop: 'operateTime',
label: '操作时间', label: '操作时间',
filter: parseTime, filter: parseTime,
minWidth: 150, minWidth: 100,
}, },
{ {
prop: 'operator', prop: 'operator',
@ -96,14 +89,6 @@ export default {
}, },
tableData: [], tableData: [],
tableProps, tableProps,
tableBtn: [
this.$auth.hasPermi(`pack-material:warehouse-realtime-location-his:query`)
? {
type: 'info',
btnName: '详情',
}
: undefined,
].filter((v) => v),
drawerVisible: false, drawerVisible: false,
formConfig: [ formConfig: [
{ {
@ -143,7 +128,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-03 16:20:19 * @LastEditTime: 2023-11-23 16:09:30
* @Description: * @Description:
--> -->
<template> <template>
@ -11,7 +11,10 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:height="300" :height="300"
:table-data="tableData" /> :table-data="tableData"
v-if="tableData.length" />
<!-- 没有数据 -->
<div class="no-data-bg" v-else></div>
</template> </template>
<script> <script>
@ -22,37 +25,31 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '物品名称', label: '物品名称',
align: 'center',
}, },
{ {
prop: 'code', prop: 'code',
label: '物品编码', label: '物品编码',
align: 'center',
}, },
{ {
prop: 'spec', prop: 'spec',
label: '物品规格', label: '物品规格',
align: 'center',
}, },
{ {
prop: 'batchCode', prop: 'batchCode',
label: '物品批次', label: '物品批次',
align: 'center',
}, },
{ {
prop: 'num', prop: 'num',
label: '数量', label: '数量',
align: 'center',
}, },
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
align: 'center', width: 150
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
align: 'center',
}, },
]; ];
export default { export default {

View File

@ -92,7 +92,7 @@ const tableProps = [
prop: 'createTime', prop: 'createTime',
label: '操作时间', label: '操作时间',
filter: parseTime, filter: parseTime,
minWidth: 150, minWidth: 100,
}, },
{ {
prop: 'creator', prop: 'creator',
@ -115,7 +115,7 @@ export default {
tableBtn: [ tableBtn: [
this.$auth.hasPermi(`pack-material:warehouse-location-his:query`) this.$auth.hasPermi(`pack-material:warehouse-location-his:query`)
? { ? {
type: 'info', type: 'detail',
btnName: '详情', btnName: '详情',
} }
: undefined, : undefined,
@ -159,7 +159,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
@ -205,7 +205,7 @@ export default {
} }
}, },
otherMethods(val) { otherMethods(val) {
if (val.type === 'info') { if (val.type === 'detail') {
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrEditTitle = val.data.name + ' -产品信息'; this.addOrEditTitle = val.data.name + ' -产品信息';
this.$nextTick(() => { this.$nextTick(() => {

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 13:52:10 * @Date: 2023-08-01 13:52:10
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-20 15:13:37 * @LastEditTime: 2023-11-23 15:53:47
* @Description: * @Description:
--> -->
<template> <template>
@ -68,6 +68,7 @@
v-model="dataForm.goodsBatch" v-model="dataForm.goodsBatch"
filterable filterable
clearable clearable
style="width:100%"
placeholder="请选择物品名称"> placeholder="请选择物品名称">
<el-option <el-option
v-for="(item, index) in Batch" v-for="(item, index) in Batch"
@ -83,6 +84,7 @@
v-model="dataForm.numDet" v-model="dataForm.numDet"
clearable clearable
:min="0" :min="0"
style="width:100%"
placeholder="请输入数量" /> placeholder="请输入数量" />
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-11-03 16:37:06 * @Date: 2023-11-03 16:37:06
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-04 16:01:58 * @LastEditTime: 2023-11-23 15:53:54
* @Description: * @Description:
--> -->
<template> <template>
@ -67,7 +67,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width="50%"> width="40%">
<add-or-update <add-or-update
ref="addOrUpdate" ref="addOrUpdate"
@refreshDataList="successSubmit"></add-or-update> @refreshDataList="successSubmit"></add-or-update>
@ -131,15 +131,18 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
{
type: 'separate',
},
{ {
type: this.$auth.hasPermi('pack-material:warehouse-realtime:create') ? 'button' : '', type: this.$auth.hasPermi('pack-material:warehouse-realtime:create') ? 'button' : '',
btnName: '入库', btnName: '入库',
name: 'add', name: 'add',
color: 'success', color: 'primary',
plain: true, plain: true,
}, },
], ],

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-03 14:51:33 * @LastEditTime: 2023-11-23 16:08:22
* @Description: * @Description:
--> -->
<template> <template>
@ -11,7 +11,10 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:height="300" :height="300"
:table-data="tableData" /> :table-data="tableData"
v-if="tableData.length" />
<!-- 没有数据 -->
<div class="no-data-bg" v-else></div>
</template> </template>
<script> <script>
@ -22,48 +25,41 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '物品名称', label: '物品名称',
align: 'center',
}, },
{ {
prop: 'code', prop: 'code',
label: '物品编码', label: '物品编码',
align: 'center',
}, },
{ {
prop: 'spec', prop: 'spec',
label: '物品规格', label: '物品规格',
align: 'center',
}, },
{ {
prop: 'goodsBatch', prop: 'goodsBatch',
label: '物品批次', label: '物品批次',
align: 'center',
}, },
{ {
prop: 'num', prop: 'num',
label: '数量', label: '数量',
align: 'center',
}, },
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
align: 'center', width: 150
}, },
{ {
prop: 'inTime', prop: 'inTime',
label: '入库时间', label: '入库时间',
align: 'center',
filter: parseTime, filter: parseTime,
}, },
{ {
prop: 'leftTime', prop: 'leftTime',
label: '剩余留存时长(天)', label: '剩余留存时长(天)',
align: 'center', width: 150
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
align: 'center',
}, },
]; ];
export default { export default {

View File

@ -1,7 +1,7 @@
<template> <template>
<el-dialog <el-dialog
:visible.sync="visible" :visible.sync="visible"
:width="'35%'" :width="'30%'"
:append-to-body="true" :append-to-body="true"
:close-on-click-modal="false" :close-on-click-modal="false"
class="dialog"> class="dialog">
@ -22,7 +22,7 @@
<el-form-item label="产品" prop="productInfo"> <el-form-item label="产品" prop="productInfo">
<el-select <el-select
v-model="dataForm.productInfo" v-model="dataForm.productInfo"
style="width: 100%" style="width: 60%"
filterable filterable
value-key="id" value-key="id"
placeholder="请选择产品"> placeholder="请选择产品">
@ -59,7 +59,7 @@ export default {
}, },
productArr: [], productArr: [],
dataRule: { dataRule: {
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }], productId: [{ required: true, message: '产品不能为空', trigger: 'change' }],
}, },
}; };
}, },
@ -79,7 +79,7 @@ export default {
// //
dataFormSubmit() { dataFormSubmit() {
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (this.dataForm.productInfo) {
this.dataForm.productInfo.goodsId = this.dataForm.productInfo.id this.dataForm.productInfo.goodsId = this.dataForm.productInfo.id
this.dataForm.productInfo.remark = '' this.dataForm.productInfo.remark = ''
// //
@ -91,6 +91,8 @@ export default {
// //
this.visible = false; this.visible = false;
this.$emit('refreshDataList', this.dataForm); this.$emit('refreshDataList', this.dataForm);
} else {
this.$modal.msgWarning('请选择产品');
} }
}); });
}, },

View File

@ -20,9 +20,7 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="库位名称" prop="name"> <el-form-item label="库位名称" prop="name">
<el-input <el-input v-model="dataForm.name" disabled />
v-model="dataForm.name"
disabled />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
@ -47,15 +45,20 @@
</small-title> </small-title>
<div class="attr-list"> <div class="attr-list">
<div style="position: absolute; top: -40px; right: 15px">
<el-button @click="addNew" type="text">
<i class="el-icon-plus"></i>
新增
</el-button>
</div>
<base-table <base-table
:table-props="tableProps" :table-props="tableProps"
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:add-button-show="addButtonShow"
@emitButtonClick="addNew"
@emitFun="inputChange" @emitFun="inputChange"
:height="400" :height="400"
:table-data="productAttributeList"> :table-data="productAttributeList"
v-if="productAttributeList.length">
<method-btn <method-btn
slot="handleBtn" slot="handleBtn"
:width="70" :width="70"
@ -63,6 +66,8 @@
:method-list="tableBtn" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<!-- 没有数据 -->
<div class="no-data-bg" v-else></div>
</div> </div>
</div> </div>
</div> </div>
@ -85,8 +90,10 @@
import productAttrAdd from './attr-add'; import productAttrAdd from './attr-add';
import inputArea from '../../mixins/inputArea'; import inputArea from '../../mixins/inputArea';
import SmallTitle from './SmallTitle'; import SmallTitle from './SmallTitle';
import { inWarehouseRealtimeLocation, import {
getWarehouseRealtimeLocation } from '@/api/warehouse/warehouseRealtimeLocation'; inWarehouseRealtimeLocation,
getWarehouseRealtimeLocation,
} from '@/api/warehouse/warehouseRealtimeLocation';
const tableBtn = [ const tableBtn = [
{ {
@ -99,36 +106,30 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '物品名称', label: '物品名称',
align: 'center',
}, },
{ {
prop: 'code', prop: 'code',
label: '物品编码', label: '物品编码',
align: 'center',
}, },
{ {
prop: 'spec', prop: 'spec',
label: '物品规格', label: '物品规格',
align: 'center',
}, },
{ {
prop: 'goodsBatch', prop: 'goodsBatch',
label: '物品批次', label: '物品批次',
align: 'center',
subcomponent: inputArea, subcomponent: inputArea,
width: 100, width: 100,
}, },
{ {
prop: 'num', prop: 'num',
label: '数量', label: '数量',
align: 'center',
subcomponent: inputArea, subcomponent: inputArea,
width: 100, width: 100,
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
align: 'center',
subcomponent: inputArea, subcomponent: inputArea,
width: 100, width: 100,
}, },
@ -143,8 +144,7 @@ export default {
tableBtn, tableBtn,
tableProps, tableProps,
productAttributeList: [], productAttributeList: [],
addButtonShow: '新增', operator: '',
operator: '',
dataForm: { dataForm: {
id: null, id: null,
name: '', name: '',
@ -170,8 +170,8 @@ export default {
initData() { initData() {
this.productAttributeList.splice(0); this.productAttributeList.splice(0);
}, },
init(val,nickname) { init(val, nickname) {
this.operator = nickname this.operator = nickname;
this.dataForm.id = val.id; this.dataForm.id = val.id;
this.dataForm.name = val.name; this.dataForm.name = val.name;
this.dataForm.palletCode = val.palletCode; this.dataForm.palletCode = val.palletCode;
@ -213,12 +213,8 @@ export default {
handleClick(raw) { handleClick(raw) {
if (raw.type === 'delete') { if (raw.type === 'delete') {
this.$confirm( this.$confirm(
`确定对${ `是否确认删除名称为"${raw.data.name}"的数据项?`,
raw.data.name '系统提示',
? '[名称=' + raw.data.name + ']'
: '[序号=' + raw.data._pageIndex + ']'
}进行删除操作?`,
'提示',
{ {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
@ -238,12 +234,12 @@ export default {
this.productAttributeList.forEach((item) => { this.productAttributeList.forEach((item) => {
item.id = ''; item.id = '';
}); });
const data = { const data = {
realtimeLocationId : this.dataForm.id, realtimeLocationId: this.dataForm.id,
palletCode : this.dataForm.palletCode, palletCode: this.dataForm.palletCode,
operator : this.operator, operator: this.operator,
goodsInfos: this.productAttributeList goodsInfos: this.productAttributeList,
} };
this.$refs['dataForm'].validate((valid) => { this.$refs['dataForm'].validate((valid) => {
if (valid) { if (valid) {
// //
@ -313,5 +309,6 @@ export default {
.drawer >>> .el-form, .drawer >>> .el-form,
.drawer >>> .attr-list { .drawer >>> .attr-list {
padding: 0 16px; padding: 0 16px;
position: relative;
} }
</style> </style>

View File

@ -100,7 +100,7 @@ const tableProps = [
prop: 'inTime', prop: 'inTime',
label: '入库时间', label: '入库时间',
filter: parseTime, filter: parseTime,
minWidth: 150, minWidth: 100,
}, },
{ {
prop: 'remark', prop: 'remark',
@ -125,12 +125,6 @@ export default {
tableData: [], tableData: [],
tableProps, tableProps,
tableBtn: [ tableBtn: [
this.$auth.hasPermi(`pack-material:warehouse-realtime-location:query`)
? {
type: 'info',
btnName: '详情',
}
: undefined,
this.$auth.hasPermi(`pack-material:warehouse-realtime-location:query`) this.$auth.hasPermi(`pack-material:warehouse-realtime-location:query`)
? { ? {
type: 'out', type: 'out',
@ -143,6 +137,12 @@ export default {
btnName: '入库', btnName: '入库',
} }
: undefined, : undefined,
this.$auth.hasPermi(`pack-material:warehouse-realtime-location:query`)
? {
type: 'detail',
btnName: '详情',
}
: undefined,
].filter((v) => v), ].filter((v) => v),
drawerVisible: false, drawerVisible: false,
formConfig: [ formConfig: [
@ -183,7 +183,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
@ -262,7 +262,7 @@ export default {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.drawerRef.init(val.data, this.nickname); this.$refs.drawerRef.init(val.data, this.nickname);
}); });
} else if (val.type === 'info') { } else if (val.type === 'detail') {
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrEditTitle = val.data.name + ' -产品信息'; this.addOrEditTitle = val.data.name + ' -产品信息';
this.$nextTick(() => { this.$nextTick(() => {

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 13:52:10 * @Date: 2023-08-01 13:52:10
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-20 15:54:59 * @LastEditTime: 2023-11-23 15:27:28
* @Description: * @Description:
--> -->
<template> <template>
@ -12,7 +12,8 @@
ref="dataForm" ref="dataForm"
v-if="visible" v-if="visible"
@keyup.enter.native="dataFormSubmit()" @keyup.enter.native="dataFormSubmit()"
label-width="100px"> label-width="100px"
label-position="top">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="物品名称" prop="name"> <el-form-item label="物品名称" prop="name">
@ -60,6 +61,7 @@
:min="0" :min="0"
v-model="dataForm.dailyUse" v-model="dataForm.dailyUse"
clearable clearable
style="width: 100%;"
placeholder="请输入单日消耗量" /> placeholder="请输入单日消耗量" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -69,6 +71,7 @@
:min="0" :min="0"
v-model="dataForm.allowTime" v-model="dataForm.allowTime"
clearable clearable
style="width: 90%;"
placeholder="请输入允许留存时间" /> () placeholder="请输入允许留存时间" /> ()
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -75,6 +75,7 @@ const tableProps = [
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
width: 150
}, },
{ {
prop: 'dailyUse', prop: 'dailyUse',
@ -127,7 +128,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },

View File

@ -14,13 +14,6 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:table-data="tableData"> :table-data="tableData">
<method-btn
v-if="tableBtn.length"
slot="handleBtn"
:width="100"
label="库位详情"
:method-list="tableBtn"
@clickBtn="handleClick" />
</base-table> </base-table>
<pagination <pagination
:limit.sync="listQuery.pageSize" :limit.sync="listQuery.pageSize"
@ -76,7 +69,7 @@ const tableProps = [
prop: 'operateTime', prop: 'operateTime',
label: '操作时间', label: '操作时间',
filter: parseTime, filter: parseTime,
minWidth: 150, minWidth: 100,
}, },
{ {
prop: 'operator', prop: 'operator',
@ -96,14 +89,6 @@ export default {
}, },
tableData: [], tableData: [],
tableProps, tableProps,
tableBtn: [
this.$auth.hasPermi(`part-material:warehouse-realtime-location-his:query`)
? {
type: 'info',
btnName: '详情',
}
: undefined,
].filter((v) => v),
drawerVisible: false, drawerVisible: false,
formConfig: [ formConfig: [
{ {
@ -143,7 +128,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-03 16:20:19 * @LastEditTime: 2023-11-23 16:09:38
* @Description: * @Description:
--> -->
<template> <template>
@ -11,7 +11,10 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:height="300" :height="300"
:table-data="tableData" /> :table-data="tableData"
v-if="tableData.length" />
<!-- 没有数据 -->
<div class="no-data-bg" v-else></div>
</template> </template>
<script> <script>
@ -22,37 +25,31 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '物品名称', label: '物品名称',
align: 'center',
}, },
{ {
prop: 'code', prop: 'code',
label: '物品编码', label: '物品编码',
align: 'center',
}, },
{ {
prop: 'spec', prop: 'spec',
label: '物品规格', label: '物品规格',
align: 'center',
}, },
{ {
prop: 'batchCode', prop: 'batchCode',
label: '物品批次', label: '物品批次',
align: 'center',
}, },
{ {
prop: 'num', prop: 'num',
label: '数量', label: '数量',
align: 'center',
}, },
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
align: 'center', width: 150
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
align: 'center',
}, },
]; ];
export default { export default {

View File

@ -92,7 +92,7 @@ const tableProps = [
prop: 'createTime', prop: 'createTime',
label: '操作时间', label: '操作时间',
filter: parseTime, filter: parseTime,
minWidth: 150, minWidth: 100,
}, },
{ {
prop: 'creator', prop: 'creator',
@ -115,7 +115,7 @@ export default {
tableBtn: [ tableBtn: [
this.$auth.hasPermi(`part-material:warehouse-location-his:query`) this.$auth.hasPermi(`part-material:warehouse-location-his:query`)
? { ? {
type: 'info', type: 'detail',
btnName: '详情', btnName: '详情',
} }
: undefined, : undefined,
@ -159,7 +159,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
@ -205,7 +205,7 @@ export default {
} }
}, },
otherMethods(val) { otherMethods(val) {
if (val.type === 'info') { if (val.type === 'detail') {
this.addOrUpdateVisible = true; this.addOrUpdateVisible = true;
this.addOrEditTitle = val.data.name + ' -产品信息'; this.addOrEditTitle = val.data.name + ' -产品信息';
this.$nextTick(() => { this.$nextTick(() => {

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-08-01 13:52:10 * @Date: 2023-08-01 13:52:10
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-20 15:12:43 * @LastEditTime: 2023-11-23 15:53:35
* @Description: * @Description:
--> -->
<template> <template>
@ -68,6 +68,7 @@
v-model="dataForm.goodsBatch" v-model="dataForm.goodsBatch"
filterable filterable
clearable clearable
style="width:100%"
placeholder="请选择物品名称"> placeholder="请选择物品名称">
<el-option <el-option
v-for="(item, index) in Batch" v-for="(item, index) in Batch"
@ -83,6 +84,7 @@
v-model="dataForm.numDet" v-model="dataForm.numDet"
clearable clearable
:min="0" :min="0"
style="width:100%"
placeholder="请输入数量" /> placeholder="请输入数量" />
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2023-11-03 16:37:06 * @Date: 2023-11-03 16:37:06
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-04 16:24:57 * @LastEditTime: 2023-11-23 15:53:28
* @Description: * @Description:
--> -->
<template> <template>
@ -67,7 +67,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width="50%"> width="40%">
<add-or-update <add-or-update
ref="addOrUpdate" ref="addOrUpdate"
@refreshDataList="successSubmit"></add-or-update> @refreshDataList="successSubmit"></add-or-update>
@ -131,15 +131,18 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '搜索', btnName: '查询',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
{
type: 'separate',
},
{ {
type: this.$auth.hasPermi('part-material:warehouse-realtime:create') ? 'button' : '', type: this.$auth.hasPermi('part-material:warehouse-realtime:create') ? 'button' : '',
btnName: '入库', btnName: '入库',
name: 'add', name: 'add',
color: 'success', color: 'primary',
plain: true, plain: true,
}, },
], ],

View File

@ -2,7 +2,7 @@
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: zwq * @LastEditors: zwq
* @LastEditTime: 2023-11-03 14:51:33 * @LastEditTime: 2023-11-23 16:08:31
* @Description: * @Description:
--> -->
<template> <template>
@ -11,7 +11,10 @@
:page="listQuery.pageNo" :page="listQuery.pageNo"
:limit="listQuery.pageSize" :limit="listQuery.pageSize"
:height="300" :height="300"
:table-data="tableData" /> :table-data="tableData"
v-if="tableData.length" />
<!-- 没有数据 -->
<div class="no-data-bg" v-else></div>
</template> </template>
<script> <script>
@ -22,48 +25,41 @@ const tableProps = [
{ {
prop: 'name', prop: 'name',
label: '物品名称', label: '物品名称',
align: 'center',
}, },
{ {
prop: 'code', prop: 'code',
label: '物品编码', label: '物品编码',
align: 'center',
}, },
{ {
prop: 'spec', prop: 'spec',
label: '物品规格', label: '物品规格',
align: 'center',
}, },
{ {
prop: 'goodsBatch', prop: 'goodsBatch',
label: '物品批次', label: '物品批次',
align: 'center',
}, },
{ {
prop: 'num', prop: 'num',
label: '数量', label: '数量',
align: 'center',
}, },
{ {
prop: 'allowTime', prop: 'allowTime',
label: '允许留存时长(天)', label: '允许留存时长(天)',
align: 'center', width: 150
}, },
{ {
prop: 'inTime', prop: 'inTime',
label: '入库时间', label: '入库时间',
align: 'center',
filter: parseTime, filter: parseTime,
}, },
{ {
prop: 'leftTime', prop: 'leftTime',
label: '剩余留存时长(天)', label: '剩余留存时长(天)',
align: 'center', width: 150
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注', label: '备注',
align: 'center',
}, },
]; ];
export default { export default {

Some files were not shown because too many files have changed in this diff Show More