@@ -35,11 +35,11 @@ export function getLineBindProductLog(id) { | |||
} | |||
// 获得产线目前生产产品表 主要为更新分页 | |||
export function getLineBindProductLogPage(query) { | |||
export function getLineBindProductLogPage(data) { | |||
return request({ | |||
url: '/base/line-bind-product-log/page', | |||
method: 'get', | |||
params: query | |||
method: 'post', | |||
data | |||
}) | |||
} | |||
@@ -44,8 +44,8 @@ | |||
<base-table | |||
v-loading="attrListLoading" | |||
:table-props="section.props" | |||
:page="section.pageNo || 1" | |||
:limit="section.pageSize || 10" | |||
:page="attrQuery?.params.pageNo || 1" | |||
:limit="attrQuery?.params.pageSize || 10" | |||
:table-data="list" | |||
:add-button-show="mode.includes('detail') ? null : '添加属性'" | |||
@emitButtonClick="handleAddAttr" | |||
@@ -57,6 +57,14 @@ | |||
:method-list="tableBtn" | |||
@clickBtn="handleTableBtnClick" /> | |||
</base-table> | |||
<!-- 分页组件 --> | |||
<pagination | |||
v-show="total > 0" | |||
:total="total" | |||
:page.sync="attrQuery.params.pageNo" | |||
:limit.sync="attrQuery.params.pageSize" | |||
@pagination="getAttrList" /> | |||
</div> | |||
</section> | |||
</div> | |||
@@ -160,7 +168,12 @@ export default { | |||
}, | |||
], | |||
], | |||
attrQuery: null, // 属性列表的请求 | |||
attrQuery: { | |||
params: { | |||
pageNo: 1, | |||
pageSize: 10, | |||
}, | |||
}, // 属性列表的请求 | |||
infoQuery: null, // 基本信息的请求 | |||
attrFormSubmitting: false, | |||
attrListLoading: false, | |||
@@ -38,6 +38,21 @@ | |||
@cancel="cancel" | |||
@confirm="submitForm"> | |||
<DialogForm v-if="open" ref="form" :dataForm="form" :rows="rows" /> | |||
<div style="padding: 12px; background: #ccc"> | |||
<h3>文件列表</h3> | |||
<hr /> | |||
<ul> | |||
<li v-for="item in form.fileUrls" :key="item"> | |||
{{ JSON.stringify(item) }} | |||
</li> | |||
</ul> | |||
<hr /> | |||
<ul> | |||
<li v-for="item in form.fileNames" :key="item"> | |||
{{ JSON.stringify(item) }} | |||
</li> | |||
</ul> | |||
</div> | |||
</base-dialog> | |||
</div> | |||
</template> | |||
@@ -86,9 +101,9 @@ export default { | |||
width: 180, | |||
filter: (val) => moment(val).format('yyyy-MM-DD HH:mm:ss'), | |||
}, | |||
{ prop: 'name', label: '设备类型名称', }, | |||
{ prop: 'code', label: '检测类型编码', }, | |||
{ prop: 'remark', label: '备注', }, | |||
{ prop: 'name', label: '设备类型名称' }, | |||
{ prop: 'code', label: '检测类型编码' }, | |||
{ prop: 'remark', label: '备注' }, | |||
], | |||
searchBarFormConfig: [ | |||
{ | |||
@@ -236,6 +251,7 @@ export default { | |||
const id = row.id; | |||
getEquipmentType(id).then((response) => { | |||
this.form = response.data; | |||
debugger; | |||
this.open = true; | |||
this.title = '修改设备类型'; | |||
}); | |||
@@ -86,7 +86,8 @@ export default { | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始时间', | |||
endPlaceholder: '结束时间', | |||
param: 'createTime', | |||
param: 'startTime', | |||
valueFormat: 'timestamp' | |||
}, | |||
{ | |||
type: 'button', | |||
@@ -126,7 +127,7 @@ export default { | |||
this.listQuery.pageSize = 10; | |||
this.listQuery.productionLineId = val.productionLineId; | |||
this.listQuery.productId = val.productId; | |||
this.listQuery.createTime = val.createTime; | |||
this.listQuery.startTime = val.startTime; | |||
this.getDataList(); | |||
break; | |||
case 'reset': | |||
@@ -43,7 +43,7 @@ | |||
<el-form-item label="产品类型" prop="typeDictValue"> | |||
<el-select | |||
v-model="dataForm.typeDictValue" | |||
style="width: 100%" | |||
style="width: 100%" | |||
:disabled="isdetail" | |||
placeholder="请选择产品类型"> | |||
<el-option | |||
@@ -58,7 +58,7 @@ | |||
<el-form-item label="单位" prop="unitDictValue"> | |||
<el-select | |||
v-model="dataForm.unitDictValue" | |||
style="width: 100%" | |||
style="width: 100%" | |||
:disabled="isdetail" | |||
placeholder="请选择单位"> | |||
<el-option | |||
@@ -83,8 +83,8 @@ | |||
<el-form-item label="单位平方数" prop="area"> | |||
<el-input | |||
:disabled="isdetail" | |||
v-model="dataForm.area" | |||
placeholder="请输入单位平方数" /> | |||
v-model="dataForm.area" | |||
placeholder="请输入单位平方数" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
@@ -111,6 +111,8 @@ | |||
:table-props="tableProps" | |||
:page="listQuery.pageNo" | |||
:limit="listQuery.pageSize" | |||
:add-button-show="isdetail ? null : '添加属性'" | |||
@emitButtonClick="addNew()" | |||
:table-data="productAttributeList"> | |||
<method-btn | |||
v-if="!isdetail" | |||
@@ -123,15 +125,15 @@ | |||
<pagination | |||
v-show="listQuery.total > 0" | |||
:total="listQuery.total" | |||
:page.sync="listQuery.current" | |||
:limit.sync="listQuery.size" | |||
:page.sync="listQuery.pageNo" | |||
:limit.sync="listQuery.pageSize" | |||
:page-sizes="[5, 10, 15]" | |||
@pagination="getList" /> | |||
</div> | |||
</div> | |||
</div> | |||
<div style="position: absolute; bottom: 24px; right: 24px"> | |||
<!-- <div style="position: absolute; bottom: 24px; right: 24px"> | |||
<el-button style="margin-right: 10px" @click="goback()">返回</el-button> | |||
<el-button v-if="isdetail" type="primary" @click="goEdit()"> | |||
编辑 | |||
@@ -145,6 +147,14 @@ | |||
添加属性 | |||
</el-button> | |||
</span> | |||
</div> --> | |||
<div class="drawer-body__footer"> | |||
<el-button style="" @click="goback()">取消</el-button> | |||
<el-button v-if="isdetail" type="primary" @click="goEdit()"> | |||
编辑 | |||
</el-button> | |||
<el-button v-else type="primary" @click="dataFormSubmit()">确定</el-button> | |||
</div> | |||
<product-attr-add | |||
@@ -250,12 +260,12 @@ export default { | |||
}, | |||
], | |||
area: [ | |||
// { | |||
// type: 'float', | |||
// message: '单位平方数为浮点类型', | |||
// trigger: 'blur', | |||
// transfom: 'val => Float(val)', | |||
// }, | |||
{ | |||
type: 'number', | |||
message: '请输入正确的数值', | |||
trigger: 'change', | |||
transform: (val) => Number(val), | |||
}, | |||
], | |||
processTime: [ | |||
{ | |||
@@ -263,12 +273,12 @@ export default { | |||
message: '完成单位产品用时不能为空', | |||
trigger: 'blur', | |||
}, | |||
// { | |||
// type: 'number', | |||
// message: '完成单位产品用时为浮点类型', | |||
// trigger: 'blur', | |||
// transfom: 'val => Number(val)', | |||
// }, | |||
{ | |||
type: 'number', | |||
message: '请输入正确的数值', | |||
trigger: 'blur', | |||
transform: (val) => Number(val), | |||
}, | |||
], | |||
}, | |||
isdetail: false, | |||
@@ -277,6 +287,7 @@ export default { | |||
methods: { | |||
initData() { | |||
this.productAttributeList.splice(0); | |||
this.listQuery.total = 0; | |||
}, | |||
init(id, isdetail) { | |||
this.initData(); | |||
@@ -304,12 +315,10 @@ export default { | |||
getList() { | |||
// 获取产品的属性列表 | |||
const params = { | |||
pageSize: 10, | |||
pageNo: 1, | |||
getProductAttrPage({ | |||
...this.listQuery, | |||
productId: this.dataForm.id, | |||
}; | |||
getProductAttrPage(params).then((response) => { | |||
}).then((response) => { | |||
this.productAttributeList = response.data.list; | |||
this.listQuery.total = response.data.total; | |||
}); | |||
@@ -390,6 +399,8 @@ export default { | |||
<style scoped> | |||
.drawer >>> .el-drawer { | |||
border-radius: 8px 0 0 8px; | |||
display: flex; | |||
flex-direction: column; | |||
} | |||
.drawer >>> .el-form-item__label { | |||
@@ -400,14 +411,20 @@ export default { | |||
margin: 0; | |||
padding: 32px 32px 24px; | |||
border-bottom: 1px solid #dcdfe6; | |||
margin-bottom: 30px; | |||
} | |||
.drawer >>> .el-drawer__body { | |||
flex: 1; | |||
height: 1px; | |||
display: flex; | |||
flex-direction: column; | |||
} | |||
.drawer >>> .content { | |||
padding: 0 24px 30px; | |||
padding: 30px 24px; | |||
flex: 1; | |||
display: flex; | |||
flex-direction: column; | |||
height: 100%; | |||
/* height: 100%; */ | |||
} | |||
.drawer >>> .visual-part { | |||
@@ -422,4 +439,10 @@ export default { | |||
.drawer >>> .attr-list { | |||
padding: 0 16px; | |||
} | |||
.drawer-body__footer { | |||
display: flex; | |||
justify-content: flex-end; | |||
padding: 18px; | |||
} | |||
</style> |
@@ -7,53 +7,84 @@ | |||
--> | |||
<template> | |||
<el-form | |||
class="dialog-inner__form" | |||
:model="dataForm" | |||
:rules="dataRule" | |||
ref="dataForm" | |||
@keyup.enter.native="dataFormSubmit()" | |||
label-width="90px"> | |||
<el-form-item label="产线编码" prop="code"> | |||
<el-input | |||
v-model="dataForm.code" | |||
clearable | |||
placeholder="请输入产线编码" /> | |||
</el-form-item> | |||
<el-form-item label="产线名称" prop="name"> | |||
<el-input | |||
v-model="dataForm.name" | |||
clearable | |||
placeholder="请输入产线名称" /> | |||
</el-form-item> | |||
<el-form-item prop="factoryId" label="工厂名称"> | |||
<el-select | |||
v-model="dataForm.factoryId" filterable clearable placeholder="请选择工厂"> | |||
<el-option | |||
v-for="item in urlOptions.optionArr.arr0" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id" | |||
> | |||
</el-option> | |||
</el-select> | |||
</el-form-item> | |||
<el-form-item label="产线TT值(h)" prop="tvalue"> | |||
<el-input v-model="dataForm.tvalue" clearable placeholder="请输入每小时下片数量" /> | |||
</el-form-item> | |||
<el-form-item label="额外编码" prop="externalCode"> | |||
<el-input | |||
v-model="dataForm.externalCode" | |||
clearable | |||
placeholder="请输入额外编码" /> | |||
</el-form-item> | |||
<el-form-item label="描述" prop="description"> | |||
<el-input | |||
v-model="dataForm.description" | |||
type="textarea" | |||
placeholder="请输入内容" /> | |||
</el-form-item> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input v-model="dataForm.remark" clearable placeholder="请输入备注" /> | |||
</el-form-item> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="产线编码" prop="code"> | |||
<el-input | |||
v-model="dataForm.code" | |||
clearable | |||
placeholder="请输入产线编码" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="产线名称" prop="name"> | |||
<el-input | |||
v-model="dataForm.name" | |||
clearable | |||
placeholder="请输入产线名称" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item prop="factoryId" label="工厂名称"> | |||
<el-select | |||
v-model="dataForm.factoryId" | |||
filterable | |||
clearable | |||
placeholder="请选择工厂"> | |||
<el-option | |||
v-for="item in urlOptions.optionArr.arr0" | |||
:key="item.id" | |||
:label="item.name" | |||
:value="item.id"></el-option> | |||
</el-select> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="产线TT值(h)" prop="tvalue"> | |||
<el-input | |||
v-model="dataForm.tvalue" | |||
clearable | |||
placeholder="请输入每小时下片数量" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row :gutter="20"> | |||
<el-col :span="12"> | |||
<el-form-item label="额外编码" prop="externalCode"> | |||
<el-input | |||
v-model="dataForm.externalCode" | |||
clearable | |||
placeholder="请输入额外编码" /> | |||
</el-form-item> | |||
</el-col> | |||
<el-col :span="12"> | |||
<el-form-item label="备注" prop="remark"> | |||
<el-input | |||
v-model="dataForm.remark" | |||
clearable | |||
placeholder="请输入备注" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
<el-row> | |||
<el-col> | |||
<el-form-item label="描述" prop="description"> | |||
<el-input | |||
v-model="dataForm.description" | |||
type="textarea" | |||
placeholder="请输入内容" /> | |||
</el-form-item> | |||
</el-col> | |||
</el-row> | |||
</el-form> | |||
</template> | |||
@@ -65,22 +96,20 @@ import { | |||
getProductionLine, | |||
getCode, | |||
} from '@/api/core/base/productionLine'; | |||
import { | |||
getFactoryPage, | |||
} from '@/api/core/base/factory'; | |||
import { getFactoryPage } from '@/api/core/base/factory'; | |||
export default { | |||
mixins: [basicAdd], | |||
data() { | |||
return { | |||
urlOptions: { | |||
getOption: true, | |||
isGetCode: true, | |||
codeURL: getCode, | |||
getOption: true, | |||
isGetCode: true, | |||
codeURL: getCode, | |||
createURL: createProductionLine, | |||
updateURL: updateProductionLine, | |||
infoURL: getProductionLine, | |||
optionArrUrl: [getFactoryPage], | |||
optionArrUrl: [getFactoryPage], | |||
}, | |||
dataForm: { | |||
id: undefined, | |||
@@ -99,13 +128,26 @@ export default { | |||
name: [ | |||
{ required: true, message: '产线名称不能为空', trigger: 'blur' }, | |||
], | |||
factoryId: [ | |||
factoryId: [ | |||
{ required: true, message: '工厂不能为空', trigger: 'change' }, | |||
], | |||
tvalue: [ | |||
{ | |||
type: 'number', | |||
message: '请输入正确的数字', | |||
trigger: 'change', | |||
transform: (val) => Number(val), | |||
}, | |||
], | |||
}, | |||
}; | |||
}, | |||
methods: { | |||
}, | |||
methods: {}, | |||
}; | |||
</script> | |||
<style scoped> | |||
.dialog-inner__form >>> .el-select { | |||
width: 100%; | |||
} | |||
</style> |
@@ -29,7 +29,7 @@ | |||
@cancel="handleCancel" | |||
@confirm="handleConfirm" | |||
:before-close="handleCancel" | |||
width="70%"> | |||
width="50%"> | |||
<add-or-update | |||
ref="addOrUpdate" | |||
@refreshDataList="successSubmit"></add-or-update> | |||
@@ -29,7 +29,10 @@ | |||
@emitFun="handleEmitFun"></base-table> | |||
</el-tab-pane> | |||
<el-tab-pane :label="'\u3000柱状图\u3000'" name="graph"> | |||
<div v-if="activeName == 'graph'" class="graph" style="height: 40vh; display: flex; flex-direction: column;"> | |||
<div | |||
v-if="activeName == 'graph'" | |||
class="graph" | |||
style="height: 40vh; display: flex; flex-direction: column"> | |||
<div class="blue-title">各设备加工数量</div> | |||
<LineChart v-if="list && list.length" :list="list" /> | |||
<div v-else class="no-data-bg"></div> | |||
@@ -87,6 +90,7 @@ export default { | |||
rangeSeparator: '-', | |||
startPlaceholder: '开始日期', | |||
endPlaceholder: '结束日期', | |||
defaultTime: ['00:00:00', '23:59:59'], | |||
param: 'recordTime', | |||
defaultSelect: [ | |||
new Date(y, m, d) | |||
@@ -246,7 +250,9 @@ export default { | |||
created() { | |||
this.fillLineOptions(); | |||
this.fillProductOptions(); | |||
this.getList(); | |||
}, | |||
mounted() { | |||
this.$refs['search-bar'].headBtnClick('search'); | |||
}, | |||
methods: { | |||
handleTabClick(tab, event) { | |||
@@ -307,12 +313,16 @@ export default { | |||
}, | |||
handleSearchBarBtnClick(btn) { | |||
console.log('handleSearchBarBtnClick', btn); | |||
// debugger; | |||
switch (btn.btnName) { | |||
case 'search': | |||
this.queryParams.lineId = btn.lineId; | |||
this.queryParams.productId = btn.productId; | |||
this.queryParams.recordTime = btn.recordTime ? btn.recordTime.map(time => moment(new Date(time)).format('YYYY-MM-DD HH:mm:ss')) : null; | |||
this.queryParams.recordTime = btn.recordTime | |||
? btn.recordTime.map((time) => | |||
moment(new Date(time)).format('YYYY-MM-DD HH:mm:ss') | |||
) | |||
: null; | |||
this.$nextTick(() => { | |||
this.getList(); | |||
}); | |||
@@ -388,7 +398,7 @@ export default { | |||
font-size: 14px; | |||
&::before { | |||
content: ""; | |||
content: ''; | |||
position: absolute; | |||
left: 0; | |||
top: 6px; | |||
@@ -398,5 +408,4 @@ export default { | |||
background: #0b58ff; | |||
} | |||
} | |||
</style> |