Browse Source

Merge branch 'master_hella' of http://dev.ccwin-in.com:3000/sfms3.0/sfms3.0-ui into master_hella

master_hella_20240701
zhaoxuebing 7 months ago
parent
commit
1d302a7dee
  1. 6
      src/api/mes/workScheduling/index.ts
  2. 4
      src/api/mes/workSchedulingDetail/index.ts
  3. 15
      src/components/SearchTable/src/SearchTable.vue
  4. 64
      src/views/mes/workScheduling/components/Detail.vue
  5. 161
      src/views/mes/workScheduling/components/report.vue
  6. 185
      src/views/mes/workScheduling/components/reportAll.vue
  7. 25
      src/views/mes/workScheduling/index.vue
  8. 10
      src/views/wms/inventoryjobManage/containermanage/containerMainRequest/index.vue
  9. 2
      src/views/wms/inventoryjobManage/containermanage/containerRecordMain/containerRecordMain.data.ts
  10. 12
      src/views/wms/inventoryjobManage/containermanage/containerRecordMain/index.vue
  11. 6
      src/views/wms/inventoryjobManage/containermanage/initialContainerMainRequest/index.vue
  12. 4
      src/views/wms/inventoryjobManage/containermanage/scrapContainerMainRequest/index.vue

6
src/api/mes/workScheduling/index.ts

@ -52,10 +52,14 @@ export const importTemplate = () => {
export const completeHandle = async (data) => { export const completeHandle = async (data) => {
return await request.post({ url: `/mes/workScheduling/completeHandle`, data }) return await request.post({ url: `/mes/workScheduling/completeHandle`, data })
} }
//报工 //工序报工
export const reportWorkByProcess = async (data) => { export const reportWorkByProcess = async (data) => {
return await request.post({ url: `/mes/work-scheduling-detail/reportWorkByProcess`, data }) return await request.post({ url: `/mes/work-scheduling-detail/reportWorkByProcess`, data })
} }
//批量报工
export const reportWorkByTask = async (data) => {
return await request.post({ url: `/mes/workScheduling/reportForAll`, data })
}
//检查当前节点是否可以完工 //检查当前节点是否可以完工
export const getNodePosition = async (params) => { export const getNodePosition = async (params) => {
return await request.get({ url: `/mes/workScheduling/getNodePosition`, params }) return await request.get({ url: `/mes/workScheduling/getNodePosition`, params })

4
src/api/mes/workSchedulingDetail/index.ts

@ -63,3 +63,7 @@ export const exportWorkSchedulingDetail = async (params) => {
export const importTemplate = () => { export const importTemplate = () => {
return request.download({ url: '/mes/work-scheduling-detail/get-import-template' }) return request.download({ url: '/mes/work-scheduling-detail/get-import-template' })
} }
//工序报工
export const reportWorkByProcess = async (data) => {
return await request.post({ url: `/mes/work-scheduling-detail/reportWorkByProcess`, data })
}

15
src/components/SearchTable/src/SearchTable.vue

@ -1,7 +1,9 @@
<template> <template>
<Dialog :title="dialogTitle" v-model="searchDialogVisible" :width="dialogWidth" > <Dialog :title="dialogTitle" v-model="searchDialogVisible" :width="dialogWidth" >
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<!-- <Search :schema="searchSchema" @search="setSearchParamsRef" @reset="setSearchParamsRef" /> --> <!-- <ContentWrap>
<Search :schema="searchSchema" @search="setSearchParamsRef" @reset="setSearchParamsRef" />
</ContentWrap> -->
<!-- 列表头部 --> <!-- 列表头部 -->
<TableHead <TableHead
@ -61,7 +63,7 @@ const getListRef = ref()
const setSearchParamsRef = ref() const setSearchParamsRef = ref()
const tableObjectRef = ref() const tableObjectRef = ref()
const getPage:any = ref() const getPage:any = ref()
// const searchSchema = ref() const searchSchema = ref()
const tableColumns = ref() const tableColumns = ref()
const formFieldRef = ref() const formFieldRef = ref()
const searchFieldRef = ref() const searchFieldRef = ref()
@ -81,7 +83,7 @@ const openData = (titleName: any, tableObject:any ,allSchemas: any,multiple: any
searchDialogVisible.value = true searchDialogVisible.value = true
multipleBol.value = multiple multipleBol.value = multiple
allSchemasRef.value = allSchemas allSchemasRef.value = allSchemas
// searchSchema.value = allSchemas.searchSchema searchSchema.value = allSchemas.searchSchema
tableColumns.value = allSchemas.tableColumns tableColumns.value = allSchemas.tableColumns
} }
const open = (titleName: any, allSchemas: any,getApiPage: any, formField: any, searchField: any,multiple: any, type: any, row: any, searchCondition:any , isCountRequestRe:any,isConcatDetailSchemas=false,detailSchemas: any) => { const open = (titleName: any, allSchemas: any,getApiPage: any, formField: any, searchField: any,multiple: any, type: any, row: any, searchCondition:any , isCountRequestRe:any,isConcatDetailSchemas=false,detailSchemas: any) => {
@ -94,7 +96,7 @@ const open = (titleName: any, allSchemas: any,getApiPage: any, formField: any, s
formFieldRef.value = formField formFieldRef.value = formField
searchFieldRef.value = searchField searchFieldRef.value = searchField
allSchemasRef.value = allSchemas allSchemasRef.value = allSchemas
// searchSchema.value = allSchemas.searchSchema searchSchema.value = allSchemas.searchSchema
if(isConcatDetailSchemas){ if(isConcatDetailSchemas){
// //
console.log('detailSchemas',detailSchemas) console.log('detailSchemas',detailSchemas)
@ -117,9 +119,8 @@ const open = (titleName: any, allSchemas: any,getApiPage: any, formField: any, s
if (searchCondition) tableObjectRef.value.params = searchCondition; if (searchCondition) tableObjectRef.value.params = searchCondition;
// //
const { getList } = tableMethods const { getList , setSearchParams } = tableMethods
// setSearchParamsRef.value = setSearchParams setSearchParamsRef.value = setSearchParams
setSearchParamsRef.value = tableObject.params
getListRef.value = getList getListRef.value = getList
getList() getList()
} }

64
src/views/mes/workScheduling/components/Detail.vue

@ -72,7 +72,7 @@
</template> --> </template> -->
</Table> </Table>
<Table <Table
v-if="!isBasic && fromeWhere != 'countPlan'" v-if="!isBasic"
:columns="detailAllSchemasRef.tableColumns" :columns="detailAllSchemasRef.tableColumns"
:data="tableObjectRef.tableList" :data="tableObjectRef.tableList"
:loading="tableObjectRef.loading" :loading="tableObjectRef.loading"
@ -80,23 +80,14 @@
v-model:pageSize="tableObjectRef.pageSize" v-model:pageSize="tableObjectRef.pageSize"
v-model:currentPage="tableObjectRef.currentPage" v-model:currentPage="tableObjectRef.currentPage"
> >
<template #photos="{ row }">
<div
v-for="(item, index) in row.photos.split(',')"
:key="index"
style="color: #409eff; cursor: pointer"
@click="openImage(item)"
>{{ item }}</div
>
</template>
<template #action="{ row }"> <template #action="{ row }">
<ButtonBase v-if="row.status == '0'" <el-button type="text" v-if="row.status == '0'" @click="buttonClick('pfinished',row)"> 完工</el-button>
:Butttondata="buttondata" <el-button type="text" v-if="row.status == '2'" @click="buttonClick('reprotProcess',row)"> 报工</el-button>
@button-base-click="buttonTableClick($event, row)" <el-button type="text" v-if="row.status == '4'" @click="buttonClick('checkProcess',row)"> 质检</el-button>
/>
</template> </template>
</Table> </Table>
<DetailTable <!-- <DetailTable
v-if="!isBasic && isShowDrawer" v-if="!isBasic && isShowDrawer"
:columns="detailAllSchemasRef.tableColumns" :columns="detailAllSchemasRef.tableColumns"
:data="tableObjectRef.tableList" :data="tableObjectRef.tableList"
@ -105,13 +96,14 @@
:key="updateKey" :key="updateKey"
> >
<template #action="{ row }"> <template #action="{ row }">
<ButtonBase v-if="row.status == '0'" <ButtonBase
:Butttondata="buttondata" :Butttondata="buttonDetail"
@button-base-click="buttonTableClick($event, row)" @button-base-click="buttonTableClick($event, row)"
/> />
dddddddddd
</template> </template>
</DetailTable> </DetailTable> -->
</ContentWrap> </ContentWrap>
<!-- other附件组件:如质检明细 --> <!-- other附件组件:如质检明细 -->
<div <div
@ -189,6 +181,7 @@
</el-drawer> </el-drawer>
<!-- 表格弹窗 --> <!-- 表格弹窗 -->
<SearchTable ref="searchTableRef" @search-table-success="searchTableSuccess1" /> <SearchTable ref="searchTableRef" @search-table-success="searchTableSuccess1" />
<reportProcess ref="refreport" ></reportProcess>
<!-- 表单弹窗添加/修改 --> <!-- 表单弹窗添加/修改 -->
<BasicForm <BasicForm
ref="formRef" ref="formRef"
@ -226,6 +219,7 @@ import TableHead from '@/components/TableHead/src/TableHead.vue'
import DetailTable from '@/components/DetailTable/src/DetailTable.vue' import DetailTable from '@/components/DetailTable/src/DetailTable.vue'
import { SearchTable } from '@/components/SearchTable' import { SearchTable } from '@/components/SearchTable'
import * as WorkSchedulingDetailApi from '@/api/mes/workSchedulingDetail' import * as WorkSchedulingDetailApi from '@/api/mes/workSchedulingDetail'
import reportProcess from '@/views/mes/workScheduling/components/report.vue'
defineOptions({ name: 'Detail' }) defineOptions({ name: 'Detail' })
const message = useMessage() // const message = useMessage() //
@ -400,7 +394,7 @@ const props = defineProps({
const isShowDrawer = ref(false) const isShowDrawer = ref(false)
const detailLoading = ref(false) const detailLoading = ref(false)
const tabsList = ref(JSON.parse(JSON.stringify(props.tabs ? props.tabs : ''))) const tabsList = ref(JSON.parse(JSON.stringify(props.tabs ? props.tabs : '')))
const refreport=ref()
if (props.isBasic == true) { if (props.isBasic == true) {
if (tabsList.value && tabsList.value.length > 0) { if (tabsList.value && tabsList.value.length > 0) {
tabsList.value.unshift({ tabsList.value.unshift({
@ -554,7 +548,9 @@ const masterParmas = ref({
// //
const HeadButttondata = ref() const HeadButttondata = ref()
// - // -
const buttondata = ref() const buttondata = ref(
)
/** 表格弹窗 */ /** 表格弹窗 */
const initModel = (schema: FormSchema[], formModel: Recordable) => { const initModel = (schema: FormSchema[], formModel: Recordable) => {
const model: Recordable = { ...formModel } const model: Recordable = { ...formModel }
@ -585,10 +581,13 @@ const searchTableFormType = ref('') // 表单的类型:create - 新增;updat
const formRef = ref() const formRef = ref()
const titleNameRef = ref() const titleNameRef = ref()
const titleValueRef = ref() const titleValueRef = ref()
const planDayCode=ref()
const count = ref(0) const count = ref(0)
const openDetail = async (row: any, titleName: any, titleValue: any, tableName: any) => { const openDetail = async (row: any, titleName: any, titleValue: any, tableName: any) => {
titleNameRef.value = titleName titleNameRef.value = titleName
titleValueRef.value = titleValue titleValueRef.value = titleValue
planDayCode.value=row.planMasterCode
remarksData.data = { remarksData.data = {
tableId: row.id, tableId: row.id,
tableName: tableName tableName: tableName
@ -658,12 +657,7 @@ const openDetail = async (row: any, titleName: any, titleValue: any, tableName:
}) })
] ]
} }
//console.log("props.buttondataTable-663",props.buttondataTable);
if(row.status == '1'){
props.buttondataTable[0].hide = false
}else{
props.buttondataTable[0].hide = true
}
buttondata.value = [...detailButtonEdit, ...detailButtonDelete, ...props.buttondataTable] buttondata.value = [...detailButtonEdit, ...detailButtonDelete, ...props.buttondataTable]
} finally { } finally {
detailLoading.value = false detailLoading.value = false
@ -671,7 +665,6 @@ const openDetail = async (row: any, titleName: any, titleValue: any, tableName:
} }
} }
defineExpose({ openDetail, formRef }) // open defineExpose({ openDetail, formRef }) // open
// //
const getRemarkList = async () => { const getRemarkList = async () => {
detailLoading.value = true detailLoading.value = true
@ -833,14 +826,23 @@ const buttonTableClick = async (val, row) => {
} else if (val == 'delete') { } else if (val == 'delete') {
// //
handleDelete(row.id) handleDelete(row.id)
} else if (val == 'pfinished') {
WorkSchedulingDetailApi.processFinished(row.id)
getList()
} else { } else {
emit('tableFormButton', val, row) emit('tableFormButton', val, row)
} }
} }
const buttonClick=(type,row)=>{
if (type == 'pfinished') {
WorkSchedulingDetailApi.processFinished(row.id)
getList()
}else if (type == 'reprotProcess') {
refreport.value.openDetail(row,"工序报工", planDayCode.value)
//
}else if (type == 'checkProcess') {
//WorkSchedulingDetailApi.processFinished(row.id)
}
getList()
}
/** 添加/修改操作 */ /** 添加/修改操作 */
const openForm = async (type: string, row?: number) => { const openForm = async (type: string, row?: number) => {
formRef.value.open(type, row, masterParmas.value) formRef.value.open(type, row, masterParmas.value)

161
src/views/mes/workScheduling/components/report.vue

@ -4,71 +4,20 @@
v-model="dialogVisible" v-model="dialogVisible"
:close-on-click-modal="true" :close-on-click-modal="true"
:vLoading="formLoading" :vLoading="formLoading"
width="fit-content" width="600px"
> >
<template #title>{{ dialogTitle }} </template> <template #title>{{ dialogTitle }} </template>
<el-button type="primary" @click="addRow" style="float:right;;">添加</el-button> <el-form ref="formRef">
<el-table :data="tableData" style="border: 1px;stripe; width:1300px ;" > <el-form-item label="工序" v-model="processCode">
<el-table-column prop="processName" label="工序名称" width="200px"> <el-input v-model="processCode" disabled />
<template #default="scope">
<el-select v-model="scope.row.processCodeSelected" @change="processChange" value-key="processCode">
<el-option v-for="item in processOption" :key="item.processCode" :label="item.processName" :value="item.processCode" />
</el-select>
</template>
</el-table-column>
<el-table-column prop="reportName" label="报工人" width="200px">
<template #default="scope">
<el-select v-model="scope.row.personSelected" multiple :value-key="workerCode">
<el-option v-for="item in personOption" :key="item.workerCode" :label="item.workerName" :value="item.workerCode" />
</el-select>
</template>
</el-table-column>
<el-table-column prop="reportCount" label="报工数量" width="200px" >
<template #default="scope">
<el-input-number v-model="scope.row.reportCount" @change="handleCount(scope.row)" :key="count"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="workTerm" label="工时" width="200px" >
<template #default="scope">
<el-input-number v-model="scope.row.workTerm"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="checkFlag" label="已质检" width="80px" >
<template #default="scope">
<el-switch inactive-value="false" v-model="scope.row.checkFlag" ></el-switch>
</template>
</el-table-column>
<el-table-column prop="qualified" label="合格数" width="200px" >
<template #default="scope" >
<el-input-number v-model="scope.row.qualified" @change="handleCount(scope.row)" :key="qcount" :disabled="scope.row.checkFlag=='false'" ></el-input-number>
</template>
</el-table-column>
<el-table-column prop="unqualified" label="不合格数" width="100px">
<template #default="scope">
<el-input v-model="scope.row.unqualified" disabled="true">{{scope.row.unqualified= scope.row.reportCount -scope.row.qualified}}</el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="100px">
<template #default="scope">
<el-button type="text" @click="deleteRow(scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!-- <el-form>
<el-form-item label="选择工序">
<el-select v-model="processCodeSelected" @change="processChange" value-key="processCode">
<el-option v-for="item in processOption" :key="item.processCode" :label="item.processName" :value="item.processCode" />
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="选择人员"> <el-form-item label="选择人员">
<el-select v-model="personSelected"> <el-select v-model="personSelected" multiple>
<el-option v-for="item in personOption" :key="item.workerCode" :label="item.workerName" :value="item.workerCode" /> <el-option v-for="item in personOption" :key="item.workerCode" :label="item.workerName" :value="item.workerCode" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="报工数量"> <el-form-item label="报工数量">
<el-input-number v-model="reportCount" @change="handleCount"></el-input-number> <el-input-number v-model="reportCount" @change="handleCount" :key="count"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="工时"> <el-form-item label="工时">
<el-input-number v-model="workTerm"></el-input-number> <el-input-number v-model="workTerm"></el-input-number>
@ -76,7 +25,7 @@
<el-form-item label="是否已质检"> <el-form-item label="是否已质检">
<el-switch v-model="checkFlag" active-value="true"> </el-switch> <el-switch v-model="checkFlag" active-value="true"> </el-switch>
</el-form-item> </el-form-item>
<el-form-item label="合格数量"> <el-form-item label="合格数量" @change="handleCount" :key="qcount">
<el-input-number <el-input-number
v-model="qualified" v-model="qualified"
:disabled="!checkFlag" :disabled="!checkFlag"
@ -86,7 +35,7 @@
<el-form-item label="不合格数量"> <el-form-item label="不合格数量">
<el-input-number disabled v-model="unqualified"></el-input-number> <el-input-number disabled v-model="unqualified"></el-input-number>
</el-form-item> </el-form-item>
</el-form> --> </el-form>
<template #footer> <template #footer>
<el-button @click="dialogVisible = false">关闭</el-button> <el-button @click="dialogVisible = false">关闭</el-button>
@ -101,19 +50,11 @@ import dayjs from 'dayjs'
const message = useMessage() // const message = useMessage() //
const { t } = useI18n() // const { t } = useI18n() //
const rowData = ref() const rowData = ref()
const openDetail = async (row: any, titleName: any) => {
rowData.value = row
dialogVisible.value = true
dialogTitle.value = titleName
getProcessList(row)
}
const dialogVisible = ref(false) const dialogVisible = ref(false)
const dialogTitle = ref() const dialogTitle = ref()
const formLoading = ref(false) const formLoading = ref(false)
const processOption = ref([])
const personOption=ref([]) const personOption=ref([])
const processCodeSelected = ref() const processCode = ref()
const personSelected = ref() const personSelected = ref()
const checkFlag = ref(false) const checkFlag = ref(false)
const unqualified = ref() const unqualified = ref()
@ -121,37 +62,24 @@ const reportCount = ref()
const qualified = ref() const qualified = ref()
const workTerm = ref() const workTerm = ref()
const saveFlag=ref(false) const saveFlag=ref(false)
const tableData=ref([{}]) const planDayCode=ref()
const addRow=()=>{ const formRef=ref()
tableData.value.push({ const openDetail = async (row: any, titleName: any,code:string) => {
processCode:processCodeSelected.value, rowData.value = row
processName:processOption.value?.find(item=>item.processCode==processCodeSelected.value)?.processName, //console.log('row-68',row)
reportName:personOption.value?.find(item=>item.workerCode==personSelected.value)?.workerName, dialogVisible.value = true
reportCount:reportCount.value, dialogTitle.value = titleName
workTerm:workTerm.value, processCode.value=row.nodeCode
checkFlag:checkFlag.value}) planDayCode.value=code
getCurrentWorkerList(processCode.value)
} }
const deleteRow = (index: number) => {
tableData.value.splice(index, 1)
}
//
const getProcessList=async(row)=>{
let params={
planDayCode:row.planMasterCode,
schedulingCode:row.schedulingCode
}
processOption.value=await workschedulingApi.getProcessList(params)
}
const processChange=(val:any)=>{
//console.log("processChange-81",val)
getCurrentWorkerList(val)
}
// //
const getCurrentWorkerList = async (val) => { const getCurrentWorkerList = async (val) => {
//console.log("personOption-91",val)
let params = { let params = {
planDayCode: rowData.value.planMasterCode, planDayCode: planDayCode.value,
processCode: val processCode: val
} }
personOption.value = await workschedulingApi.getCurrentWorkerList(params) personOption.value = await workschedulingApi.getCurrentWorkerList(params)
@ -160,45 +88,50 @@ const getCurrentWorkerList = async (val) => {
const count = ref(0) const count = ref(0)
const qcount = ref(1) const qcount = ref(1)
// //
const handleCount = (row) => { const handleCount = (val) => {
if (row.reportCount > rowData.value.planCount) {
if (reportCount.value> rowData.value.planCount) {
message.alert('报工数量不能超出计划数量!计划数【'+rowData.value.planCount+'】') message.alert('报工数量不能超出计划数量!计划数【'+rowData.value.planCount+'】')
row.reportCount =rowData.value.planCount reportCount.value =rowData.value.planCount
//tableData.value[index].reportCount =rowData.value.planCount //tableData.value[index].reportCount =rowData.value.planCount
count.value++ count.value++
return return
} }
//message.alert(row.checkFlag==true?'1':'2') //message.alert(row.checkFlag==true?'1':'2')
if (row.checkFlag) { if (checkFlag.value) {
if (row.reportCount < row.qualified) { if (reportCount.value < qualified.value) {
message.alert('合格数不能超出报工数!') message.alert('合格数不能超出报工数!')
row.qualified=row.reportCount qualified.value=reportCount.value
qcount.value++ qcount.value++
return return
} }
if (row.qualified == undefined || row.qualified == 0) { if (qualified.value == undefined || qualified.value == 0) {
row.qualified = row.reportCount qualified.val = reportCount.value
qcount.value++ qcount.value++
} }
row.unqualified= row.reportCount- row.qualified unqualified.value= reportCount.value- qualified.value
} }
} }
// //
const saveReport = async() => { const saveReport = async() => {
let listSub=[{}]
personSelected.value.forEach((item) => {
let data={
reportCount: formRef.value.reportCount,
workTerm: formRef.value.workTerm,
reportPerson: formRef.value.item,
qualified: formRef.value.qualified,
unqualified: formRef.value.unqualified
}
listSub.push(data)
})
let data = { let data = {
reportDate: dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'), reportDate: dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss'),
schedulingCode: rowData.value.schedulingCode, schedulingCode: rowData.value.schedulingCode,
processCode: processCodeSelected.value, processCode: processCode.value,
list: [ list: listSub
{
reportCount: reportCount.value,
workTerm: workTerm.value,
reportPerson: personSelected.value,
qualified: qualified.value,
unqualified: unqualified.value
}
]
} }
saveFlag.value = true saveFlag.value = true
try { try {
@ -214,6 +147,6 @@ const saveReport = async() => {
} }
// //
const emit = defineEmits(['success', 'close']) const emit = defineEmits(['success', 'close'])
defineOptions({ name: 'reportProcess' })
defineExpose({ openDetail }) // open defineExpose({ openDetail }) // open
</script> </script>

185
src/views/mes/workScheduling/components/reportAll.vue

@ -0,0 +1,185 @@
<template>
<Dialog
:title="dialogTitle"
v-model="dialogVisible"
:close-on-click-modal="true"
:vLoading="formLoading"
width="fit-content"
>
<template #title>{{ dialogTitle }} </template>
<el-button type="primary" @click="addRow" style="float:right;;">添加</el-button>
<el-table :data="tableData" style="border: 1px;stripe; width:1300px ;" >
<el-table-column prop="processName" label="工序名称" width="200px">
<template #default="scope">
<el-select v-model="scope.row.processCodeSelected" @change="processChange" value-key="processCode">
<el-option v-for="item in processOption" :key="item.processCode" :label="item.processName" :value="item.processCode" />
</el-select>
</template>
</el-table-column>
<el-table-column prop="reportName" label="报工人" width="200px">
<template #default="scope">
<el-select v-model="scope.row.personSelected" multiple :value-key="workerCode">
<el-option v-for="item in personOption" :key="item.workerCode" :label="item.workerName" :value="item.workerCode" />
</el-select>
</template>
</el-table-column>
<el-table-column prop="reportCount" label="报工数量" width="200px" >
<template #default="scope">
<el-input-number v-model="scope.row.reportCount" @change="handleCount(scope.row)" :key="count"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="workTerm" label="工时" width="200px" >
<template #default="scope">
<el-input-number v-model="scope.row.workTerm"></el-input-number>
</template>
</el-table-column>
<el-table-column prop="checkFlag" label="已质检" width="80px" >
<template #default="scope">
<el-switch inactive-value="false" v-model="scope.row.checkFlag" ></el-switch>
</template>
</el-table-column>
<el-table-column prop="qualified" label="合格数" width="200px" >
<template #default="scope" >
<el-input-number v-model="scope.row.qualified" @change="handleCount(scope.row)" :key="qcount" :disabled="scope.row.checkFlag=='false'" ></el-input-number>
</template>
</el-table-column>
<el-table-column prop="unqualified" label="不合格数" width="100px">
<template #default="scope">
<el-input v-model="scope.row.unqualified" disabled="true">{{scope.row.unqualified= scope.row.reportCount -scope.row.qualified}}</el-input>
</template>
</el-table-column>
<el-table-column label="操作" width="100px">
<template #default="scope">
<el-button type="text" @click="deleteRow(scope.$index)">删除</el-button>
</template>
</el-table-column>
</el-table>
<template #footer>
<el-button @click="dialogVisible = false">关闭</el-button>
<el-button type="primary" :disabled="saveFlag" @click="saveReport">保存</el-button>
</template> </Dialog
>
</template>
<script lang="ts" setup>
import { Dialog } from '@/components/Dialog'
import * as workschedulingApi from '@/api/mes/workScheduling'
import dayjs from 'dayjs'
const message = useMessage() //
const { t } = useI18n() //
const rowData = ref()
const openDetail = async (row: any, titleName: any) => {
rowData.value = row
dialogVisible.value = true
dialogTitle.value = titleName
getProcessList(row)
}
const dialogVisible = ref(false)
const dialogTitle = ref()
const formLoading = ref(false)
const processOption = ref([])
const personOption=ref([])
const processCodeSelected = ref()
const personSelected = ref()
const checkFlag = ref(false)
const reportCount = ref()
const workTerm = ref()
const saveFlag=ref(false)
const tableData=ref([{}])
const addRow=()=>{
if(tableData.value.length<processOption.value.length){
tableData.value.push({
processCode:processCodeSelected.value,
processName:processOption.value?.find(item=>item.processCode==processCodeSelected.value)?.processName,
reportName:personOption.value?.find(item=>item.workerCode==personSelected.value)?.workerName,
reportCount:reportCount.value,
workTerm:workTerm.value,
checkFlag:checkFlag.value})
}else{
message.alert('超出可报工的工序数量,不能再添加!')
}
}
const deleteRow = (index: number) => {
tableData.value.splice(index, 1)
}
//
const getProcessList=async(row)=>{
let params={
planDayCode:row.planMasterCode,
schedulingCode:row.schedulingCode
}
processOption.value=await workschedulingApi.getProcessList(params)
}
const processChange=(val:any)=>{
//console.log("processChange-81",val)
getCurrentWorkerList(val)
}
//
const getCurrentWorkerList = async (val) => {
//console.log("personOption-91",val)
let params = {
planDayCode: rowData.value.planMasterCode,
processCode: val
}
personOption.value = await workschedulingApi.getCurrentWorkerList(params)
}
const count = ref(0)
const qcount = ref(1)
//
const handleCount = (row) => {
if (row.reportCount > rowData.value.planCount) {
message.alert('报工数量不能超出计划数量!计划数【'+rowData.value.planCount+'】')
row.reportCount =rowData.value.planCount
//tableData.value[index].reportCount =rowData.value.planCount
count.value++
return
}
//message.alert(row.checkFlag==true?'1':'2')
if (row.checkFlag) {
if (row.reportCount < row.qualified) {
message.alert('合格数不能超出报工数!')
row.qualified=row.reportCount
qcount.value++
return
}
if (row.qualified == undefined || row.qualified == 0) {
row.qualified = row.reportCount
qcount.value++
}
row.unqualified= row.reportCount- row.qualified
}
}
//
const saveReport = async() => {
saveFlag.value = true
try {
let data = {
planMasterCode: rowData.value.planMasterCode,
schedulingCode: rowData.value.schedulingCode,
schedulingDetailList: tableData.value
}
//console.log("report-saveReport-170",data)
workschedulingApi.reportWorkByTask(data)
}finally{
saveFlag.value = false
dialogVisible.value = false
emit('close')
}
//console.log("report-saveReport-82",data)
//await workschedulingApi.reportWorkByProcess(data)
}
//
const emit = defineEmits(['success', 'close'])
defineExpose({ openDetail }) // open
</script>

25
src/views/mes/workScheduling/index.vue

@ -68,7 +68,7 @@
@searchTableSuccessDetail="searchTableSuccessDetail" @searchTableSuccessDetail="searchTableSuccessDetail"
:key="count" :key="count"
/> />
<Report ref="reportRef" @close="handleClose"></Report> <ReportAll ref="reportRef" @close="handleClose"></ReportAll>
<Finish ref="reportFinishRef" @close="handleClose"></Finish> <Finish ref="reportFinishRef" @close="handleClose"></Finish>
<!-- 导入 --> <!-- 导入 -->
<ImportForm ref="importFormRef" url="/mes/work-scheduling/import" :importTemplateData="importTemplateData" @success="importSuccess" /> <ImportForm ref="importFormRef" url="/mes/work-scheduling/import" :importTemplateData="importTemplateData" @success="importSuccess" />
@ -83,7 +83,7 @@ import * as defaultButtons from '@/utils/disposition/defaultButtons'
import TableHead from '@/components/TableHead/src/TableHead.vue' import TableHead from '@/components/TableHead/src/TableHead.vue'
import ImportForm from '@/components/ImportForm/src/ImportForm.vue' import ImportForm from '@/components/ImportForm/src/ImportForm.vue'
import Detail from './components/Detail.vue' import Detail from './components/Detail.vue'
import Report from './components/report.vue' import ReportAll from './components/reportAll.vue'
import Finish from './components/finish.vue' import Finish from './components/finish.vue'
@ -96,17 +96,7 @@ const route = useRoute() // 路由信息
const routeName = ref() const routeName = ref()
routeName.value = route.name routeName.value = route.name
const tableColumns = ref(WorkScheduling.allSchemas.tableColumns) const tableColumns = ref(WorkScheduling.allSchemas.tableColumns)
// table
const buttondataTable = ref([{
label: '完工',
name: 'pfinished',
hide: false,
type: 'primary',
icon: '',
color: '',
hasPermi: '',
link: true, //
}])
// Bom // Bom
const tableFormButton = async (val , row) => { const tableFormButton = async (val , row) => {
getList() getList()
@ -191,8 +181,8 @@ const butttondata=(row) =>{ return [
defaultButtons.mainListHandleBtn({label:"暂停",name:'pause',hide: isShowMainButton(row,['1']),hasPermi:'mes:workScheduling:update'}), defaultButtons.mainListHandleBtn({label:"暂停",name:'pause',hide: isShowMainButton(row,['1']),hasPermi:'mes:workScheduling:update'}),
defaultButtons.mainListHandleBtn({label:"恢复",name:'resume',hide: isShowMainButton(row,['3']),hasPermi:'mes:workScheduling:update'}), defaultButtons.mainListHandleBtn({label:"恢复",name:'resume',hide: isShowMainButton(row,['3']),hasPermi:'mes:workScheduling:update'}),
defaultButtons.mainListHandleBtn({label:"开工",name:'start',hide: isShowMainButton(row,['-1','0']),hasPermi:'mes:workScheduling:update'}), defaultButtons.mainListHandleBtn({label:"开工",name:'start',hide: isShowMainButton(row,['-1','0']),hasPermi:'mes:workScheduling:update'}),
defaultButtons.mainListHandleBtn({label:"报工",name:'report',hide: isShowMainButton(row,['4'] ),hasPermi:'mes:workScheduling:update'}), // defaultButtons.mainListHandleBtn({label:"",name:'report',hide: isShowMainButton(row,['3','1'] ),hasPermi:'mes:workScheduling:update'}),
defaultButtons.mainListHandleBtn({label:"质检",name:'check',hide: isShowMainButton(row,['5'] ),hasPermi:'mes:workScheduling:update'}), // defaultButtons.mainListHandleBtn({label:"",name:'check',hide: isShowMainButton(row,['5'] ),hasPermi:'mes:workScheduling:update'}),
defaultButtons.mainListHandleBtn({label:"完工",name:'finish',hide: isShowMainButton(row,['1']),hasPermi:'mes:workScheduling:update'}), defaultButtons.mainListHandleBtn({label:"完工",name:'finish',hide: isShowMainButton(row,['1']),hasPermi:'mes:workScheduling:update'}),
//defaultButtons.mainListHandleBtn({label:"",name:'callMaterial',hide: isShowMainButton(row,['1']),hasPermi:'mes:workScheduling:update'}), //defaultButtons.mainListHandleBtn({label:"",name:'callMaterial',hide: isShowMainButton(row,['1']),hasPermi:'mes:workScheduling:update'}),
@ -228,7 +218,7 @@ const basicFormRef = ref()
const openForm = (type: string, row?: any) => { const openForm = (type: string, row?: any) => {
basicFormRef.value.open(type, row) basicFormRef.value.open(type, row)
} }
// //
const finishReport=async(row)=>{ const finishReport=async(row)=>{
let params={ let params={
id:row.id, id:row.id,
@ -238,7 +228,8 @@ const finishReport=async(row)=>{
//console.log("workscheduling-finishReport-213",row) //console.log("workscheduling-finishReport-213",row)
let res=await WorkSchedulingApi.getNodePosition(params) let res=await WorkSchedulingApi.getNodePosition(params)
if(res==='end'){ if(res==='end'){
reportFinishRef.value.openDetail(row,"完工") //reportFinishRef.value.openDetail(row,"")
WorkSchedulingApi.completeHandle(params)
}else{ }else{
message.alert("当前工序不是完工工序,不能进行完工操作!") message.alert("当前工序不是完工工序,不能进行完工操作!")
} }

10
src/views/wms/inventoryjobManage/containermanage/containerMainRequest/index.vue

@ -90,7 +90,7 @@ import TableHead from '@/components/TableHead/src/TableHead.vue'
import ImportForm from '@/components/ImportForm/src/ImportForm.vue' import ImportForm from '@/components/ImportForm/src/ImportForm.vue'
import Detail from '@/components/Detail/src/Detail.vue' import Detail from '@/components/Detail/src/Detail.vue'
defineOptions({ name: 'ContainerManage' }) defineOptions({ name: 'ContainerManageRequest' })
const message = useMessage() // const message = useMessage() //
const { t } = useI18n() // const { t } = useI18n() //
@ -110,7 +110,7 @@ const { tableObject, tableMethods } = useTable({
/** /**
* *
*/ */
if ( routeName.value == 'ReturnContainerManage') { if ( routeName.value == 'ReturnContainerManageRequest') {
tableObject.params = { tableObject.params = {
type:'RETURN' type:'RETURN'
} }
@ -120,7 +120,7 @@ const { tableObject, tableMethods } = useTable({
}}); }});
businessType.value = 'ReturnContainerManage' businessType.value = 'ReturnContainerManage'
importFileName.value = '器具返回申请' importFileName.value = '器具返回申请'
} else if ( routeName.value == 'MoveContainerManage') { } else if ( routeName.value == 'MoveContainerManageRequest') {
tableObject.params = { tableObject.params = {
type:'MOVE' type:'MOVE'
} }
@ -130,7 +130,7 @@ const { tableObject, tableMethods } = useTable({
}}); }});
businessType.value = 'MoveContainerManage' businessType.value = 'MoveContainerManage'
importFileName.value = '器具转移申请' importFileName.value = '器具转移申请'
} else if ( routeName.value == 'DeliverContainerManage') { } else if ( routeName.value == 'DeliverContainerManageRequest') {
tableObject.params = { tableObject.params = {
type: 'DELIVER', type: 'DELIVER',
} }
@ -141,7 +141,7 @@ const { tableObject, tableMethods } = useTable({
}}); }});
businessType.value = 'DeliverContainerManage' businessType.value = 'DeliverContainerManage'
importFileName.value = '器具发运申请' importFileName.value = '器具发运申请'
} else if( routeName.value == 'ContainerManage'){ } else if( routeName.value == 'ContainerManageRequest'){
businessType.value = 'ContainerManage' businessType.value = 'ContainerManage'
importFileName.value = '器具管理申请' importFileName.value = '器具管理申请'
} }

2
src/views/wms/inventoryjobManage/containermanage/containerRecordMain/containerRecordMain.data.ts

@ -63,7 +63,6 @@ export const ContainerRecordMain = useCrudSchemas(reactive<CrudSchema[]>([
label: '备注', label: '备注',
field: 'remark', field: 'remark',
sort: 'custom', sort: 'custom',
isSearch: true,
}, },
{ {
label: '部门', label: '部门',
@ -166,7 +165,6 @@ export const ContainerRecordDetail = useCrudSchemas(reactive<CrudSchema[]>([
label: '主表ID', label: '主表ID',
field: 'masterId', field: 'masterId',
sort: 'custom', sort: 'custom',
isSearch: true,
form: { form: {
component: 'InputNumber', component: 'InputNumber',
value: 0 value: 0

12
src/views/wms/inventoryjobManage/containermanage/containerRecordMain/index.vue

@ -90,38 +90,38 @@ const { tableObject, tableMethods } = useTable({
/** /**
* *
*/ */
if ( routeName.value == 'ReturnContainerManage') { if ( routeName.value == 'ReturnContainerManageRecord') {
tableObject.params = { tableObject.params = {
type:'RETURN' type:'RETURN'
} }
businessType.value = 'ReturnContainerManage' businessType.value = 'ReturnContainerManage'
importFileName.value = '器具返回记录' importFileName.value = '器具返回记录'
} else if ( routeName.value == 'MoveContainerManage') { } else if ( routeName.value == 'MoveContainerManageRecord') {
tableObject.params = { tableObject.params = {
type:'MOVE' type:'MOVE'
} }
businessType.value = 'MoveContainerManage' businessType.value = 'MoveContainerManage'
importFileName.value = '器具转移记录' importFileName.value = '器具转移记录'
} else if ( routeName.value == 'InitialContainerManage') { } else if ( routeName.value == 'InitialContainerManageRecord') {
tableObject.params = { tableObject.params = {
type:'INITIAL', type:'INITIAL',
} }
businessType.value = 'InitialContainerManage' businessType.value = 'InitialContainerManage'
importFileName.value = '器具初始化记录' importFileName.value = '器具初始化记录'
} }
else if ( routeName.value == 'ScrapContainerManage') { else if ( routeName.value == 'ScrapContainerManageRecord') {
tableObject.params = { tableObject.params = {
type:'SCRAP' type:'SCRAP'
} }
businessType.value = 'ScrapContainerManage' businessType.value = 'ScrapContainerManage'
importFileName.value = '器具报废记录' importFileName.value = '器具报废记录'
} else if ( routeName.value == 'DeliverContainerManage') { } else if ( routeName.value == 'DeliverContainerManageRecord') {
tableObject.params = { tableObject.params = {
type: 'DELIVER', type: 'DELIVER',
} }
businessType.value = 'DeliverContainerManage' businessType.value = 'DeliverContainerManage'
importFileName.value = '器具发运记录' importFileName.value = '器具发运记录'
} else if( routeName.value == 'ContainerManage'){ } else if( routeName.value == 'ContainerManageRecord'){
businessType.value = 'ContainerManage' businessType.value = 'ContainerManage'
importFileName.value = '器具管理记录' importFileName.value = '器具管理记录'
} }

6
src/views/wms/inventoryjobManage/containermanage/initialContainerMainRequest/index.vue

@ -67,7 +67,7 @@
:detailAllSchemas="ContainerDetailRequest.allSchemas" :detailAllSchemas="ContainerDetailRequest.allSchemas"
:detailAllSchemasRules="ContainerDetailRequestRules" :detailAllSchemasRules="ContainerDetailRequestRules"
:apiCreate="ContainerDetailRequestApi.createContainerDetailRequest" :apiCreate="ContainerDetailRequestApi.createContainerDetailRequest"
:apiUpdate="ContainerDetailRequestApi.updateContainerDetailRequest" :apiUpdate="ContainerDetailRequestApi.createContainerDetailRequest"
:apiPage="ContainerDetailRequestApi.getContainerDetailRequestPage" :apiPage="ContainerDetailRequestApi.getContainerDetailRequestPage"
:apiDelete="ContainerDetailRequestApi.deleteContainerDetailRequest" :apiDelete="ContainerDetailRequestApi.deleteContainerDetailRequest"
fromeWhere="ContainerDetailRequest" fromeWhere="ContainerDetailRequest"
@ -90,7 +90,7 @@ import TableHead from '@/components/TableHead/src/TableHead.vue'
import ImportForm from '@/components/ImportForm/src/ImportForm.vue' import ImportForm from '@/components/ImportForm/src/ImportForm.vue'
import Detail from '@/components/Detail/src/Detail.vue' import Detail from '@/components/Detail/src/Detail.vue'
defineOptions({ name: 'InitialContainerManage' }) defineOptions({ name: 'InitialContainerManageRequest' })
const message = useMessage() // const message = useMessage() //
const { t } = useI18n() // const { t } = useI18n() //
@ -109,7 +109,7 @@ const { tableObject, tableMethods } = useTable({
/** /**
* *
*/ */
if ( routeName.value == 'InitialContainerManage') { if ( routeName.value == 'InitialContainerManageRequest') {
tableObject.params = { tableObject.params = {
type:'INITIAL', type:'INITIAL',
} }

4
src/views/wms/inventoryjobManage/containermanage/scrapContainerMainRequest/index.vue

@ -90,7 +90,7 @@ import TableHead from '@/components/TableHead/src/TableHead.vue'
import ImportForm from '@/components/ImportForm/src/ImportForm.vue' import ImportForm from '@/components/ImportForm/src/ImportForm.vue'
import Detail from '@/components/Detail/src/Detail.vue' import Detail from '@/components/Detail/src/Detail.vue'
defineOptions({ name: 'ScrapContainerManage' }) defineOptions({ name: 'ScrapContainerManageRequest' })
const message = useMessage() // const message = useMessage() //
const { t } = useI18n() // const { t } = useI18n() //
@ -110,7 +110,7 @@ const { tableObject, tableMethods } = useTable({
/** /**
* *
*/ */
if ( routeName.value == 'ScrapContainerManage') { if ( routeName.value == 'ScrapContainerManageRequest') {
tableObject.params = { tableObject.params = {
type:'SCRAP' type:'SCRAP'
} }

Loading…
Cancel
Save