This commit is contained in:
zds
2022-11-20 21:40:59 +08:00
parent 1918282cf5
commit 1cc0f75c6f
19 changed files with 594 additions and 80 deletions

View File

@@ -27,7 +27,7 @@
</el-form-item>
<el-form-item label="模板名称" prop="captemplate_name">
<label slot="label">模板名称:</label>
<el-input v-model="form.captemplate_name" clearable style="width: 210px" />
<el-input v-model="form.captemplate_name" clearable style="width: 210px" />
</el-form-item>
<el-form-item label="明细数" prop="detail_count">
<label slot="label">明&nbsp;&nbsp;细&nbsp;数:</label>
@@ -51,9 +51,9 @@
@current-change="handleDtlCurrentChange"
>
<el-table-column label="模板系列">
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="product_series" label="产品系列" min-width="150px" align="center"/>
<el-table-column prop="totalproducecapacity_qty" :formatter="crud.formatNum3" label="产能" min-width="150px" align="center"/>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="product_series" label="产品系列" min-width="150px" align="center" />
<el-table-column prop="totalproducecapacity_qty" :formatter="crud.formatNum3" label="产能" min-width="150px" align="center" />
</el-table-column>
</el-table>
</el-col>
@@ -68,17 +68,17 @@
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
>
<el-table-column label="模板系列工序详情">
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="product_series" label="系列" min-width="150px" align="center"/>
<el-table-column prop="workprocedure_name" label="工序" min-width="150px" align="center" />
<el-table-column prop="resource_qty" label="资源数" min-width="150px" align="center" >
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="product_series" label="系列" min-width="150px" align="center" />
<el-table-column prop="workprocedure_name" label="工序" min-width="150px" align="center" />
<el-table-column prop="resource_qty" label="资源数" min-width="150px" align="center">
<template scope="scope">
<el-input v-model="scope.row.resource_qty" disabled class="input-with-select">
<el-button slot="append" icon="el-icon-plus" @click="queryDevice(scope.$index, scope.row)" />
</el-input>
</template>
</el-table-column>
<el-table-column prop="producecapacity_qty" :formatter="crud.formatNum3" label="产能" min-width="150px" align="center"/>
<el-table-column prop="producecapacity_qty" :formatter="crud.formatNum3" label="产能" min-width="150px" align="center" />
</el-table-column>
</el-table>
</el-col>
@@ -160,33 +160,40 @@ export default {
handleDtlCurrentChange(current) {
if (current !== null) {
this.nowrow2 = current
if(this.nowrow2.tableData1 != null && this.nowrow2.tableData1.length>0){
if (this.nowrow2.tableData1 != null && this.nowrow2.tableData1.length > 0) {
this.tableData1 = this.nowrow2.tableData1
}else{
if(this.nowrow2.totalproducecapacity_qty > 0 ){
capacitytemplate.getWorklist({ 'captemplate_id': this.form.captemplate_id ,'product_series_id':current.product_series_id }).then(res => {
} else {
if (this.nowrow2.totalproducecapacity_qty > 0) {
capacitytemplate.getWorklist({ 'captemplate_id': this.form.captemplate_id, 'product_series_id': current.product_series_id }).then(res => {
this.tableData1 = res
}).catch(() => {
this.tableData1 = []
this.tableData1 = []
})
}else{
capacitytemplate.getWorklist({ 'product_series_id':current.product_series_id }).then(res => {
} else {
capacitytemplate.getWorklist({ 'product_series_id': current.product_series_id }).then(res => {
this.tableData1 = res
}).catch(() => {
this.tableData1 = []
this.tableData1 = []
})
}
}
}
},
tableChanged(rows) {
if(rows.length>0){
let sum = 0.0;
let devices = ',';
let flag1 = true
if (rows.length > 0) {
let sum = 0.0
let devices = ','
for (let i = 0; i < rows.length; i++) {
sum = sum + parseFloat(rows[i].device_capacity_qty)
devices = devices + rows[i].device_id + ','
if (rows[i].device_code.includes('PWT')) {
if (flag1) {
sum = sum + parseFloat(rows[i].device_capacity_qty)
flag1 = false
}
} else {
sum = sum + parseFloat(rows[i].device_capacity_qty)
}
}
this.nowrow.resource_qty = rows.length
this.nowrow.producecapacity_qty = sum
@@ -194,16 +201,16 @@ export default {
this.nowrow.tableDevices = rows
this.tableData1.splice(this.nowindex, 1, this.nowrow) // 通过splice 替换数据 触发视图更新
let totalproducecapacity_qty = parseFloat(this.tableData1[0].producecapacity_qty);
for(let i = 0; i < this.tableData1.length; i++){
if(parseFloat(this.tableData1[i].producecapacity_qty) < totalproducecapacity_qty){
let totalproducecapacity_qty = parseFloat(this.tableData1[0].producecapacity_qty)
for (let i = 0; i < this.tableData1.length; i++) {
if (parseFloat(this.tableData1[i].producecapacity_qty) < totalproducecapacity_qty) {
totalproducecapacity_qty = this.tableData1[i].producecapacity_qty
}
}
this.nowrow2.totalproducecapacity_qty = totalproducecapacity_qty
this.nowrow2.tableData1 = this.tableData1
for(let i = 0; i < this.form.tableData.length; i++){
if(this.form.tableData[i].product_series_id === this.nowrow2.product_series_id){
for (let i = 0; i < this.form.tableData.length; i++) {
if (this.form.tableData[i].product_series_id === this.nowrow2.product_series_id) {
this.form.tableData.splice(i, 1, this.nowrow2) // 通过splice 替换数据 触发视图更新
}
}
@@ -211,9 +218,9 @@ export default {
},
[CRUD.HOOK.beforeSubmit]() {
for (let i = 0; i < this.form.tableData.length; i++) {
if(this.form.tableData[i].tableData1 != null && this.form.tableData[i].tableData1.length>0){
if (this.form.tableData[i].tableData1 != null && this.form.tableData[i].tableData1.length > 0) {
if (parseFloat(this.form.tableData[i].totalproducecapacity_qty) <= 0) {
this.crud.notify('系列【'+this.form.tableData[i].product_series+'】工序未设置完成,请检查!', CRUD.NOTIFICATION_TYPE.INFO)
this.crud.notify('系列【' + this.form.tableData[i].product_series + '】工序未设置完成,请检查!', CRUD.NOTIFICATION_TYPE.INFO)
return false
}
}

View File

@@ -18,6 +18,22 @@
placeholder="选择时间"
/>
</el-form-item>
<el-form-item label="关键设备" prop="device_id">
<el-select
v-model="infoscope.device_id"
size="mini"
placeholder="关键设备"
class="filter-item"
disabled
style="width: 210px"
>
<el-option
v-for="item in Devices"
:key="item.id"
:label="item.name"
:value="item.id"
/></el-select>
</el-form-item>
<el-form-item label="类型:" prop="holidayType">
<el-select v-model="infoscope.holidayType" size="small" placeholder="请选择类型" clearable>
<el-option label="休息日" value="01" />
@@ -34,12 +50,14 @@
<script>
import crudCalendar, { updateDtlStatus } from '@/api/wms/pdm/factoryCalendar'
import producetask from '@/api/wms/pdm/producetask'
export default {
data() {
return {
drawer: false,
title: '1',
Devices: [],
infoscope: {
holidayDate: [],
holidayType: '',
@@ -55,11 +73,15 @@ export default {
}
}
},
created() {
producetask.getDevices().then(res => {
this.Devices = res
})
},
methods: {
sure() {
this.$refs.infoscope.validate(val => {
if (val) {
debugger
crudCalendar.updateDtlStatus(this.infoscope).then(res => {
this.$message.success('修改成功')
this.drawer = false

View File

@@ -20,6 +20,25 @@
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="关键设备">
<label slot="label">关键设备:</label>
<el-select
v-model="query.device_id"
clearable
size="mini"
placeholder="关键设备"
class="filter-item"
style="width: 200px"
@change="hand"
>
<el-option
v-for="item in Devices"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<rrOperation />
</el-form>
</div>
@@ -141,6 +160,26 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" style="margin-bottom: 5px;">
<el-col :span="12">
<el-form-item label="关键设备" prop="device_id">
<el-select
v-model="form.device_id"
size="mini"
placeholder="关键设备"
class="filter-item"
:disabled="crud.status.edit > 0"
style="width: 210px"
>
<el-option
v-for="item in Devices"
:key="item.id"
:label="item.name"
:value="item.id"
/></el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" style="margin-bottom: 5px;">
<el-form-item label="工作日" required>
<el-col :span="4" />
@@ -245,8 +284,9 @@
>
<el-table-column type="selection" width="55" />
<el-table-column prop="factorycalendar_code" label="工厂日历编码" />
<el-table-column prop="factorycalendar_name" label="工厂日历名称" />
<el-table-column prop="factorycalendar_name" min-width="120" label="工厂日历名称" />
<el-table-column prop="name" label="所属组织" />
<el-table-column prop="device_name" min-width="80" label="关键设备" />
<el-table-column prop="startfactory_year" label="开始年份" />
<el-table-column prop="endfactory_year" label="终止年份" />
<el-table-column prop="factorycale_startdate" label="工厂初始日期" />
@@ -281,6 +321,7 @@ import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import { getDepts, getDeptSuperior } from '@/api/system/dept'
import ladrawer from '@/views/wms/pdm/base/factoryCalendar/AddDialog'
import factoryCalendar from '@/api/wms/pdm/factoryCalendar'
import producetask from '@/api/wms/pdm/producetask'
const defaultForm = {
factorycalendar_id: null,
@@ -291,6 +332,7 @@ const defaultForm = {
endfactory_year: null,
factorycale_startdate: null,
remark: null,
device_id: null,
is_mon: '0',
is_tue: '0',
is_wed: '0',
@@ -320,6 +362,7 @@ export default {
queryDate: [], // 查询的日期
calendarData: [], // 所有假期对应的日期
value: '',
Devices: [],
year: new Date().getFullYear(),
permission: {},
update_calendar: false,
@@ -330,6 +373,9 @@ export default {
factorycalendar_name: [
{ required: true, message: '工厂日历名称不能为空', trigger: 'blur' }
],
device_id: [
{ required: true, message: '关键设备不能为空', trigger: 'blur' }
],
factorycale_startdate: [
{ required: true, message: '工厂初始日期不能为空', trigger: 'blur' }
],
@@ -374,6 +420,11 @@ export default {
})
})
},
created() {
producetask.getDevices().then(res => {
this.Devices = res
})
},
methods: {
// 新增与编辑前做的操作
[CRUD.HOOK.afterToCU](crud, form) {
@@ -528,6 +579,9 @@ export default {
}
})
},
hand(value) {
this.crud.toQuery()
},
loadDepts({ action, parentNode, callback }) {
if (action === LOAD_CHILDREN_OPTIONS) {
getDepts({ enabled: true, pid: parentNode.id }).then(res => {

View File

@@ -0,0 +1,212 @@
<template>
<el-dialog
width="800px"
:visible.sync="dialogVisible"
:show-close="false"
@close="close"
>
<span slot="title" class="dialog-footer">
<div class="crud-opts2">
<span class="el-dialog__title2">月计划修改</span>
<span class="crud-opts-right2">
<!--左侧插槽-->
<slot name="left" />
<el-button slot="left" type="info" @click="dialogVisible = false">关闭</el-button>
<el-button slot="left" type="primary" @click="submit">保存</el-button>
</span>
</div>
</span>
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true" :model="form" size="mini" label-width="120px" label-suffix=":">
<el-form-item label="计划月份" prop="plan_code">
<label slot="label">计划月份:</label>
<el-input v-model="form.plan_month" disabled clearable style="width: 210px" />
</el-form-item>
<el-form-item label="任务号" prop="task_code">
<label slot="label">任务号:</label>
<el-input v-model="form.task_code" style="width: 210px" disabled/>
</el-form-item>
<el-form-item label="申报单位" prop="plan_org_name">
<label slot="label">申报单位:</label>
<el-input v-model="form.plan_org_name" style="width: 210px" disabled/>
</el-form-item>
<el-form-item label="关键设备" prop="device_id">
<label slot="label">关键设备:</label>
<el-select
v-model="form.device_id"
size="mini"
placeholder="关键设备"
class="filter-item"
style="width: 210px"
>
<el-option
v-for="item in Devices"
:key="item.id"
:label="item.name"
:value="item.id"
/></el-select>
</el-form-item>
<el-form-item label="交货日期" prop="plan_finish_date">
<label slot="label">交货日期:</label>
<el-input v-model="form.plan_finish_date" style="width: 210px" disabled/>
</el-form-item>
<el-form-item label="牌号" prop="old_mark">
<label slot="label">牌号:</label>
<el-input v-model="form.old_mark" style="width: 210px" disabled/>
</el-form-item>
<el-form-item label="物料编码" prop="material_code">
<label slot="label">物料编码:</label>
<el-input v-model="form.material_code" style="width: 210px" disabled/>
</el-form-item>
<el-form-item label="系列" prop="product_series">
<el-select
v-model="form.product_series"
placeholder=""
style="width: 210px"
class="filter-item"
disabled
>
<el-option
v-for="item in XLList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="生产重量Kg" prop="fact_weight">
<label slot="label">生产重量Kg:</label>
<el-input-number
v-model="form.fact_weight"
:controls="false"
:precision="0"
disabled
style="width: 210px"
/>
</el-form-item>
<el-form-item label="每批重量Kg" prop="standard_weight">
<label slot="label">每批重量Kg:</label>
<el-input-number
v-model="form.standard_weight"
:controls="false"
:precision="0"
disabled
style="width: 210px"
/>
</el-form-item>
<el-form-item label="状态" prop="is_proc">
<el-select
v-model="form.is_proc"
placeholder=""
style="width: 210px"
class="filter-item"
disabled
>
<el-option
v-for="item in dict.is_proc2"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="提交人" prop="update_optname">
<label slot="label">提交人:</label>
<el-input v-model="form.update_optname" style="width: 210px" disabled />
</el-form-item>
<el-form-item label="提交时间" prop="update_time">
<label slot="label">提交时间:</label>
<el-input v-model="form.update_time" style="width: 210px" disabled />
</el-form-item>
<el-form-item label="备注" prop="remark">
<label slot="label">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:</label>
<el-input v-model="form.remark" style="width: 480px;" rows="3" type="textarea" disabled />
</el-form-item>
</el-form>
</el-dialog>
</template>
<script>
import crudseriesProcessRoute from '@/api/wms/pdm/seriesProcessRoute'
import workorder from '@/api/wms/pdm/workorder'
import producetask from '@/api/wms/pdm/producetask'
export default {
name: 'AddDialog',
components: { },
props: {
dialogShow: {
type: Boolean,
default: false
},
rowmst: {
type: Object
}
},
dicts: ['product_series', 'is_proc2'],
data() {
return {
dialogVisible: false,
fullscreenLoading: false,
Depts: [],
Devices: [],
XLList: [],
form: {}
}
},
watch: {
dialogShow: {
handler(newValue) {
this.dialogVisible = newValue
}
},
rowmst: {
handler(newValue) {
this.form = newValue
}
}
},
created() {
crudseriesProcessRoute.getXLlist2().then(res => {
this.XLList = res
})
workorder.getDepts().then(res => {
this.Depts = res
})
producetask.getDevices().then(res => {
this.Devices = res
})
},
methods: {
close() {
this.$emit('update:dialogShow', false)
this.form = {}
this.$emit('AddChanged')
},
submit() {
producetask.submit3(this.form).then(res => {
debugger
this.$emit('update:dialogShow', false)
this.form = {}
this.$emit('AddChanged')
})
}
}
}
</script>
<style>
.crud-opts2 {
padding: 0 0;
display: -webkit-flex;
display: flex;
align-items: center;
}
.crud-opts2 .crud-opts-right2 {
margin-left: auto;
padding: 4px 4px;
}
.input-with-select {
background-color: #fff;
}
</style>

View File

@@ -154,6 +154,16 @@
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="mini" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column
min-width="125"
label="操作"
align="center"
fixed="right"
>
<template scope="scope">
<el-button :disabled="scope.row.is_proc==='2'" type="primary" class="filter-item" size="mini" icon="el-icon-edit" @click="handleEdit(scope.$index, scope.row)"></el-button>
</template>
</el-table-column>
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column :selectable="checkboxT" type="selection" width="55" />
<el-table-column prop="plan_month" label="计划月份" />
@@ -164,7 +174,6 @@
<el-table-column prop="old_mark" min-width="100" label="牌号" />
<el-table-column prop="material_code" label="物料编码" min-width="150"/>
<el-table-column :formatter="seriesFormat" min-width="80" prop="product_series" label="系列" />
<el-table-column prop="product_type_name" label="生产方式" />
<el-table-column prop="fact_weight" label="生产重量Kg" :formatter="crud.formatNum0" min-width="95" />
<el-table-column prop="standard_weight" label="每批重量Kg" width="95" :formatter="crud.formatNum0"/>
<el-table-column prop="pcsn_num" label="批数" :formatter="pcsn_num_format"/>
@@ -176,6 +185,7 @@
<!--分页组件-->
<pagination />
</div>
<AddDialog :dialog-show.sync="changeShow" :rowmst="mstrow" @AddChanged="querytable" />
</div>
</template>
@@ -184,6 +194,7 @@ import producetask from '@/api/wms/pdm/producetask'
import CRUD, { presenter, header, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import AddDialog from '@/views/wms/pdm/produce/mouthtask/AddDialog'
import pagination from '@crud/Pagination'
import { getToken } from '@/utils/auth'
import { mapGetters } from 'vuex'
@@ -194,12 +205,17 @@ import Date from '@/utils/datetime'
export default {
name: 'mouthtask',
dicts: ['product_mode', 'is_proc2'],
components: { pagination, crudOperation, rrOperation },
components: { pagination, crudOperation, rrOperation, AddDialog },
mixins: [presenter(), header(), crud()],
cruds() {
return CRUD({
title: '月计划管理',
url: 'api/producetask/mouthtask',
permission: {
add: ['admin', 'producetask:add'],
edit: ['admin', 'producetask:edit'],
del: ['admin', 'producetask:del']
},
idField: 'plan_id',
sort: '',
query:{ nowstart_date: new Date(), captemplate_id: '',is_proc: '1'},
@@ -217,6 +233,8 @@ export default {
dialogVisible: false,
save_flag: true,
sub_flag: true,
changeShow: false,
mstrow: {},
Depts: [],
Devices: [],
Capacitytes: [],
@@ -256,6 +274,9 @@ export default {
}
return true
},
canUd(row) {
return row.is_proc !== '2'
},
checkboxT(row) {
return row.is_proc === '1'
},
@@ -286,6 +307,10 @@ export default {
}
}
},
handleEdit(index, row) {
this.changeShow = true
this.mstrow = row
},
save() {
if(this.crud.query.captemplate_id === '' || this.crud.query.captemplate_id === undefined ){
this.crud.notify('请先选择排产模板!')

View File

@@ -66,7 +66,25 @@
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="关键设备">
<label slot="label">关键设备:</label>
<el-select
v-model="query.device_id"
clearable
size="mini"
placeholder="关键设备"
class="filter-item"
style="width: 200px"
@change="hand"
>
<el-option
v-for="item in Devices"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="状态">
<el-select
v-model="query.is_proc"
@@ -171,11 +189,11 @@
<el-table-column :selectable="checkboxT" type="selection" width="55" />
<el-table-column prop="task_code" label="任务号" width="120" />
<el-table-column prop="plan_org_name" label="申报单位" width="100" />
<el-table-column prop="device_name" label="关键设备" />
<el-table-column prop="plan_month" label="计划月份" />
<el-table-column prop="plan_finish_date" label="交货日期" width="90" />
<el-table-column prop="material_code" label="物料编码" min-width="150"/>
<el-table-column prop="old_mark" min-width="100" label="牌号" />
<el-table-column prop="product_type_name" label="生产方式" />
<el-table-column prop="product_weight" label="需求重量" :formatter="crud.formatNum0"/>
<el-table-column prop="fact_weight" label="生产重量" :formatter="crud.formatNum0" width="150" align="center">
<template scope="scope">
@@ -208,6 +226,7 @@ import udOperation from '@crud/UD.operation'
import { getToken } from '@/utils/auth'
import { mapGetters } from 'vuex'
import workorder from '@/api/wms/pdm/workorder'
import producetask from '@/api/wms/pdm/producetask'
export default {
name: 'producetask',
@@ -238,6 +257,7 @@ export default {
nowAction: this.baseApi + '/api/producetask/importExcel/1',
Depts: [],
fileList: [],
Devices: [],
fullscreenLoading: false,
checkrows: [],
permission: {
@@ -259,6 +279,9 @@ export default {
workorder.getDepts().then(res => {
this.Depts = res
})
producetask.getDevices().then(res => {
this.Devices = res
})
},
methods: {
[CRUD.HOOK.beforeRefresh]() {

View File

@@ -187,6 +187,9 @@ export default {
workorder_type: [
{ required: true, message: '工令类型不能为空', trigger: 'blur' }
],
device_id: [
{ required: true, message: '关键设备不能为空', trigger: 'blur' }
],
org_id: [
{ required: true, message: '所属组织不能为空', trigger: 'blur' }
],