Compare commits

..

No commits in common. "9a411cc663b505eb8d201e78e46ef6e026be946c" and "2688896660c350705c4489e85c509cc7f8a566c4" have entirely different histories.

14 changed files with 123 additions and 161 deletions

View File

@ -1,7 +1,7 @@
### ###
# @Author: Do not edit # @Author: Do not edit
# @Date: 2023-08-29 09:40:39 # @Date: 2023-08-29 09:40:39
# @LastEditTime: 2023-10-16 09:22:52 # @LastEditTime: 2023-09-18 10:44:07
# @LastEditors: DY # @LastEditors: DY
# @Description: # @Description:
### ###
@ -12,9 +12,9 @@ ENV = 'development'
VUE_APP_TITLE = 产线监控系统 VUE_APP_TITLE = 产线监控系统
# 芋道管理系统/开发环境 # 芋道管理系统/开发环境
# VUE_APP_BASE_API = 'http://192.168.1.49:48080' VUE_APP_BASE_API = 'http://192.168.1.49:48080'
# VUE_APP_BASE_API = 'http://192.168.1.8:48080' # VUE_APP_BASE_API = 'http://192.168.1.8:48080'
VUE_APP_BASE_API = 'http://192.168.0.33:48080' # VUE_APP_BASE_API = 'http://192.168.0.33:48080'
# VUE_APP_BASE_API = 'http://192.168.1.188:48080' # VUE_APP_BASE_API = 'http://192.168.1.188:48080'
# 路由懒加载 # 路由懒加载

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: zhp * @Author: zhp
* @Date: 2023-09-13 09:02:25 * @Date: 2023-09-13 09:02:25
* @LastEditTime: 2023-10-16 14:56:58 * @LastEditTime: 2023-10-08 15:39:38
* @LastEditors: DY * @LastEditors: DY
* @Description: * @Description:
--> -->

View File

@ -1,12 +1,8 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" /> <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
<div v-if="tableData.length"> <base-table v-loading="dataListLoading" :span-method="mergeColumnHandler" :table-props="tableProps" :table-data="tableData" />
<base-table v-loading="dataListLoading" :span-method="mergeColumnHandler" :table-props="tableProps" :table-data="tableData" /> <balance-chart ref="lineChart" />
<SearchBar :formConfigs="[{ label: '产线平衡分析图', type: 'title' }]" />
<balance-chart ref="lineChart" />
</div>
<div v-else class="no-data-bg"></div>
<!-- <pagination <!-- <pagination
:limit.sync="listQuery.pageSize" :limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo" :page.sync="listQuery.pageNo"
@ -93,7 +89,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '查询', btnName: '搜索',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
} }

View File

@ -1,12 +1,8 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" /> <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
<div v-if="tableData.length"> <base-table v-loading="dataListLoading" :table-props="tableProps" :table-data="tableData" />
<base-table v-loading="dataListLoading" :table-props="tableProps" :table-data="tableData" /> <line-chart ref="lineChart" />
<SearchBar :formConfigs="[{ label: '产品产量对比图', type: 'title' }]" />
<line-chart ref="lineChart" />
</div>
<div v-else class="no-data-bg"></div>
<!-- <pagination <!-- <pagination
:limit.sync="listQuery.pageSize" :limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo" :page.sync="listQuery.pageNo"
@ -86,7 +82,7 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '查询', btnName: '搜索',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
} }
@ -105,8 +101,6 @@ export default {
this.optionArrUrl.forEach((item, index) => { this.optionArrUrl.forEach((item, index) => {
item(params).then((response) => { item(params).then((response) => {
this.formConfig[index].selectOptions = response.data.list this.formConfig[index].selectOptions = response.data.list
// this.formConfig[0].defaultSelect = response.data.list[0].id
this.$set(this.formConfig[0], 'defaultSelect', response.data.list[0].id)
}); });
}); });
}, },
@ -118,13 +112,11 @@ export default {
let arr = [ let arr = [
{ {
prop: 'lineName', prop: 'lineName',
label: '产线', label: '产线'
fixed: 'left'
}, },
{ {
prop: 'sum', prop: 'sum',
label: '合计', label: '合计'
fixed: 'left'
}, },
{ {
prop: res.data ? res.data.nameData[0].name : undefined, prop: res.data ? res.data.nameData[0].name : undefined,

View File

@ -1,8 +1,8 @@
<!-- <!--
* @Author: zwq * @Author: zwq
* @Date: 2021-11-18 14:16:25 * @Date: 2021-11-18 14:16:25
* @LastEditors: DY * @LastEditors: zwq
* @LastEditTime: 2023-10-16 11:16:48 * @LastEditTime: 2023-08-01 16:59:06
* @Description: * @Description:
--> -->
<template> <template>
@ -12,30 +12,21 @@
ref="dataForm" ref="dataForm"
@keyup.enter.native="dataFormSubmit()" @keyup.enter.native="dataFormSubmit()"
label-width="80px"> label-width="80px">
<el-row :gutter="20"> <el-form-item label="工厂编码" prop="code">
<el-col :span="12"> <el-input
<el-form-item label="工厂编码" prop="code"> v-model="dataForm.code"
<el-input clearable
v-model="dataForm.code" placeholder="请输入工厂编码" />
clearable </el-form-item>
placeholder="请输入工厂编码" /> <el-form-item label="工厂名称" prop="name">
</el-form-item> <el-input
</el-col> v-model="dataForm.name"
<el-col :span="12"> clearable
<el-form-item label="工厂名称" prop="name"> placeholder="请输入工厂名称" />
<el-input </el-form-item>
v-model="dataForm.name" <el-form-item label="地址" prop="address">
clearable <el-input v-model="dataForm.address" clearable placeholder="请输入地址" />
placeholder="请输入工厂名称" /> </el-form-item>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="地址" prop="address">
<el-input v-model="dataForm.address" clearable placeholder="请输入地址" />
</el-form-item>
</el-col>
<!-- <el-form-item label="启用状态" prop="enabled"> <!-- <el-form-item label="启用状态" prop="enabled">
<el-select <el-select
v-model="dataForm.enabled" v-model="dataForm.enabled"
@ -47,12 +38,9 @@
:value="dict.value" /> :value="dict.value" />
</el-select> </el-select>
</el-form-item> --> </el-form-item> -->
<el-col :span="12"> <el-form-item label="备注" prop="remark">
<el-form-item label="备注" prop="remark"> <el-input v-model="dataForm.remark" clearable placeholder="请输入备注" />
<el-input v-model="dataForm.remark" clearable placeholder="请输入备注" /> </el-form-item>
</el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
</template> </template>

View File

@ -29,7 +29,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width="50%"> width="70%">
<add-or-update <add-or-update
ref="addOrUpdate" ref="addOrUpdate"
@refreshDataList="successSubmit"></add-or-update> @refreshDataList="successSubmit"></add-or-update>

View File

@ -28,20 +28,24 @@ import { getProductPage } from '@/api/core/base/product';
const tableProps = [ const tableProps = [
{ {
prop: 'productionLineName', prop: 'productionLineName',
label: '产线' label: '产线',
align: 'center',
}, },
{ {
prop: 'productName', prop: 'productName',
label: '在制产品' label: '在制产品',
align: 'center',
}, },
{ {
prop: 'startTime', prop: 'startTime',
label: '开始时间', label: '开始时间',
align: 'center',
filter: parseTime, filter: parseTime,
}, },
{ {
prop: 'endTime', prop: 'endTime',
label: '结束时间', label: '结束时间',
align: 'center',
filter: parseTime, filter: parseTime,
}, },
]; ];

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: DY * @LastEditors: DY
* @LastEditTime: 2023-10-16 13:40:00 * @LastEditTime: 2023-09-21 10:48:54
* @Description: * @Description:
--> -->
<template> <template>
@ -12,45 +12,33 @@
ref="dataForm" ref="dataForm"
@keyup.enter.native="dataFormSubmit()" @keyup.enter.native="dataFormSubmit()"
label-width="90px"> label-width="90px">
<el-row :gutter="20"> <el-form-item label="工段编码" prop="code">
<el-col :span="12"> <el-input
<el-form-item label="工段编码" prop="code"> v-model="dataForm.code"
<el-input clearable
v-model="dataForm.code" placeholder="请输入工段编码" />
clearable </el-form-item>
placeholder="请输入工段编码" /> <el-form-item label="工段名称" prop="name">
</el-form-item> <el-input
</el-col> v-model="dataForm.name"
<el-col :span="12"> clearable
<el-form-item label="工段名称" prop="name"> placeholder="请输入工段名称" />
<el-input </el-form-item>
v-model="dataForm.name" <el-form-item prop="productionLineId" label="产线">
clearable <el-select
placeholder="请输入工段名称" /> v-model="dataForm.productionLineId" filterable clearable placeholder="请选择产线">
</el-form-item> <el-option
</el-col> v-for="item in urlOptions.optionArr.arr0"
</el-row> :key="item.id"
<el-row :gutter="20"> :label="item.name"
<el-col :span="12"> :value="item.id"
<el-form-item prop="productionLineId" label="产线"> >
<el-select </el-option>
v-model="dataForm.productionLineId" filterable clearable placeholder="请选择产线"> </el-select>
<el-option </el-form-item>
v-for="item in urlOptions.optionArr.arr0" <el-form-item label="排序" prop="sort">
:key="item.id" <el-input-number v-model="dataForm.sort" :min="1" :max="100" clearable placeholder="请输入排序" />
:label="item.name" </el-form-item>
:value="item.id"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="排序" prop="sort">
<el-input-number v-model="dataForm.sort" :min="1" :max="100" clearable placeholder="请输入排序" />
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="dataForm.remark" clearable placeholder="请输入备注" /> <el-input v-model="dataForm.remark" clearable placeholder="请输入备注" />
</el-form-item> </el-form-item>

View File

@ -29,7 +29,7 @@
@cancel="handleCancel" @cancel="handleCancel"
@confirm="handleConfirm" @confirm="handleConfirm"
:before-close="handleCancel" :before-close="handleCancel"
width="50%"> width="70%">
<add-or-update <add-or-update
ref="addOrUpdate" ref="addOrUpdate"
@refreshDataList="successSubmit"></add-or-update> @refreshDataList="successSubmit"></add-or-update>
@ -50,28 +50,34 @@ import {
const tableProps = [ const tableProps = [
{ {
prop: 'code', prop: 'code',
label: '工段编码' label: '工段编码',
align: 'center',
}, },
{ {
prop: 'name', prop: 'name',
label: '工段名称' label: '工段名称',
align: 'center',
}, },
{ {
prop: 'productionLineName', prop: 'productionLineName',
label: '产线' label: '产线',
align: 'center',
}, },
{ {
prop: 'sort', prop: 'sort',
label: '排序' label: '排序',
align: 'center',
}, },
{ {
prop: 'remark', prop: 'remark',
label: '备注' label: '备注',
align: 'center',
}, },
{ {
prop: 'createTime', prop: 'createTime',
label: '创建时间', label: '创建时间',
filter: parseTime align: 'center',
filter: parseTime,
}, },
]; ];
@ -113,14 +119,14 @@ export default {
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
// { {
// type: 'separate', type: 'separate',
// }, },
// { {
// type: 'button', type: 'button',
// btnName: '', btnName: '重置',
// name: 'reset', name: 'reset',
// }, },
{ {
type: 'separate', type: 'separate',
}, },

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: Do not edit * @Author: Do not edit
* @Date: 2023-08-29 14:59:29 * @Date: 2023-08-29 14:59:29
* @LastEditTime: 2023-10-16 15:10:42 * @LastEditTime: 2023-10-13 11:03:11
* @LastEditors: DY * @LastEditors: DY
* @Description: * @Description:
--> -->
@ -12,7 +12,6 @@
ref="searchBarForm" ref="searchBarForm"
@headBtnClick="buttonClick" /> @headBtnClick="buttonClick" />
<base-table <base-table
v-if="showData.length"
class="right-aside" class="right-aside"
v-loading="dataListLoading" v-loading="dataListLoading"
:table-props="tableProps" :table-props="tableProps"
@ -23,7 +22,6 @@
@selection-change="selectChange" @selection-change="selectChange"
> >
</base-table> </base-table>
<div v-else class="no-data-bg"></div>
<pagination <pagination
:limit.sync="listQuery.pageSize" :limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo" :page.sync="listQuery.pageNo"
@ -197,8 +195,7 @@ export default {
type: 'button', type: 'button',
btnName: '导出', btnName: '导出',
name: 'export', name: 'export',
color: 'primary', color: 'warning',
plain: true
} }
], ],
}; };

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: Do not edit * @Author: Do not edit
* @Date: 2023-08-29 14:59:29 * @Date: 2023-08-29 14:59:29
* @LastEditTime: 2023-10-16 15:18:23 * @LastEditTime: 2023-10-13 11:00:59
* @LastEditors: DY * @LastEditors: DY
* @Description: * @Description:
--> -->
@ -12,7 +12,6 @@
ref="searchBarForm" ref="searchBarForm"
@headBtnClick="buttonClick" /> @headBtnClick="buttonClick" />
<base-table <base-table
v-if="showData.length"
class="right-aside" class="right-aside"
v-loading="dataListLoading" v-loading="dataListLoading"
:table-props="tableProps" :table-props="tableProps"
@ -30,7 +29,6 @@
:method-list="tableBtn" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<div v-else class="no-data-bg"></div>
<pagination <pagination
:limit.sync="listQuery.pageSize" :limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo" :page.sync="listQuery.pageNo"
@ -147,8 +145,7 @@ export default {
type: 'button', type: 'button',
btnName: '导出', btnName: '导出',
name: 'export', name: 'export',
color: 'primary', color: 'warning',
plain: true
} }
], ],
}; };

View File

@ -11,14 +11,13 @@
ref="search-bar" /> ref="search-bar" />
<el-skeleton v-if="initing" :rows="6" animated /> <el-skeleton v-if="initing" :rows="6" animated />
<!-- :span-method="mergeColumnHandler" --> <!-- :span-method="mergeColumnHandler" -->
<div v-else :class="{ 'no-data-bg': !tableData || tableData.length == 0 }">
<base-table <base-table
v-if="tableData && tableData.length > 0" v-else
:table-props="tableProps" :table-props="tableProps"
:table-data="tableData" :table-data="tableData"
@emitFun="handleEmitFun" @emitFun="handleEmitFun"></base-table>
/> <!-- :page="queryParams.pageNo"
</div> :limit="queryParams.pageSize" -->
</div> </div>
</template> </template>
@ -66,10 +65,10 @@ export default {
label: times.slice(0, 10) + ' ' + times.slice(11), label: times.slice(0, 10) + ' ' + times.slice(11),
align: 'center', align: 'center',
children: [ children: [
{ prop: times + '_in', label: '投入数量' }, { prop: times + '_in', label: '投入数量', align: 'center' },
{ prop: times + '_out', label: '产出数量' }, { prop: times + '_out', label: '产出数量', align: 'center' },
{ prop: times + '_junk', label: '报废数量' }, { prop: times + '_junk', label: '报废数量', align: 'center' },
{ prop: times + '_area', label: '产出面积' } { prop: times + '_area', label: '产出面积', align: 'center' }
] ]
} }
this.arr.push(subprop) this.arr.push(subprop)
@ -150,14 +149,14 @@ export default {
{ {
prop: 'proLineName', prop: 'proLineName',
label: '生产线', label: '生产线',
fixed: 'left', align: 'center',
showOverflowTooltip: true fixed: 'left'
}, },
{ {
prop: 'spec', prop: 'spec',
label: '产品规格', label: '产品规格',
fixed: 'left', align: 'center',
showOverflowTooltip: true fixed: 'left'
} }
] ]
this.buildProps(res.data.nameData); this.buildProps(res.data.nameData);

View File

@ -1,7 +1,7 @@
<!-- <!--
* @Author: Do not edit * @Author: Do not edit
* @Date: 2023-08-29 14:59:29 * @Date: 2023-08-29 14:59:29
* @LastEditTime: 2023-10-16 15:19:04 * @LastEditTime: 2023-10-13 11:03:43
* @LastEditors: DY * @LastEditors: DY
* @Description: * @Description:
--> -->
@ -13,7 +13,6 @@
ref="searchBarForm" ref="searchBarForm"
@headBtnClick="buttonClick" /> @headBtnClick="buttonClick" />
<base-table <base-table
v-if="showData.length"
class="right-aside" class="right-aside"
v-loading="dataListLoading" v-loading="dataListLoading"
:table-props="tableProps" :table-props="tableProps"
@ -31,7 +30,6 @@
:method-list="tableBtn" :method-list="tableBtn"
@clickBtn="handleClick" /> @clickBtn="handleClick" />
</base-table> </base-table>
<div v-else class="no-data-bg"></div>
<pagination <pagination
:limit.sync="listQuery.pageSize" :limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo" :page.sync="listQuery.pageNo"
@ -190,8 +188,7 @@ export default {
type: 'button', type: 'button',
btnName: '导出', btnName: '导出',
name: 'export', name: 'export',
color: 'primary', color: 'warning',
plain: true
} }
], ],
}; };

View File

@ -6,17 +6,13 @@
@select-changed="handleSearchBarChanged" @select-changed="handleSearchBarChanged"
@headBtnClick="buttonClick" /> @headBtnClick="buttonClick" />
<base-table <base-table
v-if="showData.length"
class="right-aside" class="right-aside"
v-loading="dataListLoading" v-loading="dataListLoading"
:table-props="tableProps" :table-props="tableProps"
:page="listQuery.pageNo"
:limit="listQuery.pageSize"
:selectWidth="55"
:table-data="showData" :table-data="showData"
:selectWidth="55"
@selection-change="selectChange" @selection-change="selectChange"
/> />
<div v-else class="no-data-bg"></div>
<pagination <pagination
:limit.sync="listQuery.pageSize" :limit.sync="listQuery.pageSize"
:page.sync="listQuery.pageNo" :page.sync="listQuery.pageNo"
@ -50,31 +46,38 @@ import html2canvas from 'html2canvas'
const tableProps = [ const tableProps = [
{ {
prop: 'proLineName', prop: 'proLineName',
label: '产线名称' label: '产线名称',
align: 'center',
}, },
{ {
prop: 'sectionName', prop: 'sectionName',
label: '工段名称' label: '工段名称',
align: 'center',
}, },
{ {
prop: 'inputNum', prop: 'inputNum',
label: '进片数量/片' label: '进片数量/片',
align: 'center',
}, },
{ {
prop: 'outputNum', prop: 'outputNum',
label: '出片数量/片' label: '出片数量/片',
align: 'center',
}, },
{ {
prop: 'lossNum', prop: 'lossNum',
label: '损耗数量/片' label: '损耗数量/片',
align: 'center',
}, },
{ {
prop: 'lossArea', prop: 'lossArea',
label: '损耗面积/m²' label: '损耗面积/m²',
align: 'center',
}, },
{ {
prop: 'lossRate', prop: 'lossRate',
label: '损耗比例/%' label: '损耗比例/%',
align: 'center',
} }
]; ];
@ -131,20 +134,15 @@ export default {
}, },
{ {
type: 'button', type: 'button',
btnName: '查询', btnName: '搜索',
name: 'search', name: 'search',
color: 'primary', color: 'primary',
}, },
{
type: 'separate',
},
{ {
type: 'button', type: 'button',
btnName: '导出', btnName: '导出',
name: 'export', name: 'export',
color: 'primary', },
plain: true
}
], ],
}; };
}, },