生产管理部分

dev
qiuhongwu 4 months ago
parent 25c7c3cb1d
commit a7cdac0410

@ -44,6 +44,11 @@ export const createPlan = async (data: PlanVO) => {
export const updatePlan = async (data: PlanVO) => { export const updatePlan = async (data: PlanVO) => {
return await request.put({ url: `/biz/plan/update`, data }) return await request.put({ url: `/biz/plan/update`, data })
} }
// 修改生产计划状态
export const updatePlanStauts = async (data: PlanVO) => {
return await request.put({ url: `/biz/plan/update-status`, data })
}
// 删除生产计划 // 删除生产计划
export const deletePlan = async (id: number) => { export const deletePlan = async (id: number) => {

@ -30,9 +30,9 @@
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="产品编码/名称" prop="projectSubName"> <el-form-item label="产品编码/名称" prop="materialNameOrCode">
<el-input <el-input
v-model="queryParams.projectSubName" v-model="queryParams.materialNameOrCode"
placeholder="请输入产品编码/名称" placeholder="请输入产品编码/名称"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
@ -56,18 +56,18 @@
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="派工工序" prop="spec"> <el-form-item label="派工工序" prop="procedureName">
<el-input <el-input
v-model="queryParams.spec" v-model="queryParams.procedureName"
placeholder="请输入派工工序" placeholder="请输入派工工序"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
class="!w-240px" class="!w-240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="负责人" prop="spec"> <el-form-item label="负责人" prop="ownerName">
<el-input <el-input
v-model="queryParams.spec" v-model="queryParams.ownerName"
placeholder="请输入负责人" placeholder="请输入负责人"
clearable clearable
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
@ -101,14 +101,32 @@
<span v-else>{{ scope.row.dispatchCode }}</span> <span v-else>{{ scope.row.dispatchCode }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column fixed label="生产订单号" align="center" prop="projectCode" min-width="180" /> <el-table-column
<el-table-column fixed label="产品编码" align="center" prop="projectSubCode" min-width="180" /> fixed
<el-table-column fixed label="产品名称" align="center" prop="projectSubName" min-width="180" /> label="生产订单号"
align="center"
prop="projectCode"
min-width="180"
/>
<el-table-column
fixed
label="产品编码"
align="center"
prop="materialCode"
min-width="180"
/>
<el-table-column
fixed
label="产品名称"
align="center"
prop="materialName"
min-width="220"
/>
<el-table-column label="规格型号" align="center" prop="spec" min-width="160" /> <el-table-column label="规格型号" align="center" prop="spec" min-width="160" />
<el-table-column label="生产车间" align="center" prop="spec" min-width="160" /> <el-table-column label="生产车间" align="center" prop="spec" min-width="160" />
<el-table-column label="派工工序" align="center" prop="procedureName" min-width="160" /> <el-table-column label="派工工序" align="center" prop="procedureName" min-width="160" />
<el-table-column label="负责人" align="center" prop="ownerName" min-width="120"/> <el-table-column label="负责人" align="center" prop="ownerName" min-width="120" />
<el-table-column label="生产设备" align="center" prop="ownerName" min-width="120"/> <el-table-column label="生产设备" align="center" prop="deviceModel" min-width="120" />
<el-table-column <el-table-column
label="预计生产日期" label="预计生产日期"
align="center" align="center"
@ -127,7 +145,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="修改人" align="center" prop="updaterName" /> <el-table-column label="修改人" align="center" prop="updater" />
<el-table-column <el-table-column
label="修改时间" label="修改时间"
align="center" align="center"
@ -137,7 +155,9 @@
/> />
<el-table-column label="完成状态" align="center" prop="status" min-width="120"> <el-table-column label="完成状态" align="center" prop="status" min-width="120">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status" /> <!-- {{scope.row.procedureStatus}} -->
<span v-if="scope.row.procedureStatus==1"></span>
<!-- <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.procedureStatus" /> -->
</template> </template>
</el-table-column> </el-table-column>
<el-table-column fixed="right" label="操作" align="center" width="140"> <el-table-column fixed="right" label="操作" align="center" width="140">
@ -145,7 +165,7 @@
<el-button <el-button
link link
type="primary" type="primary"
@click="openForm(scope.row.id)" @click="openForm(scope.row.id,scope.row)"
v-hasPermi="['biz:task-report:update']" v-hasPermi="['biz:task-report:update']"
> >
报工 报工
@ -174,7 +194,6 @@ import * as TaskReportApi from '@/api/biz/taskreport'
import AssignForm from './assignForm.vue' import AssignForm from './assignForm.vue'
import WorkshopSelect from '@/views/biz/hlvuestyle/workshopSelect.vue' import WorkshopSelect from '@/views/biz/hlvuestyle/workshopSelect.vue'
defineOptions({ name: 'TaskReport' }) defineOptions({ name: 'TaskReport' })
const message = useMessage() // const message = useMessage() //
@ -186,16 +205,13 @@ const total = ref(0) // 列表的总页数
const queryParams = reactive({ const queryParams = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
dispatchCode: undefined,
projectCode: undefined,
materialNameOrCode: undefined,
spec: undefined,
workshopId: undefined, workshopId: undefined,
dispatchDetailId: undefined, procedureName: undefined,
owner: undefined, ownerName: undefined
amount: undefined,
startTime: [],
endTime: [],
reportTime: [],
hasReport: undefined,
status: undefined,
createTime: []
}) })
const queryFormRef = ref() // const queryFormRef = ref() //
const exportLoading = ref(false) // const exportLoading = ref(false) //
@ -204,7 +220,7 @@ const exportLoading = ref(false) // 导出的加载中
const getList = async () => { const getList = async () => {
loading.value = true loading.value = true
try { try {
const data = await TaskReportApi.getTaskReportPage(queryParams) const data = await TaskReportApi.getTaskDispatchProcedureDetailPages(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
} finally { } finally {
@ -226,8 +242,8 @@ const resetQuery = () => {
/** 添加/修改操作 */ /** 添加/修改操作 */
const formRef = ref() const formRef = ref()
const openForm = ( id?: number) => { const openForm = (id?: number,val?:any) => {
formRef.value.open( id) formRef.value.open(id,val)
} }
/** 删除按钮操作 */ /** 删除按钮操作 */

@ -964,7 +964,9 @@ const saveFormData = async (active, status, type) => {
}) })
const dataMats = formData.value.matItemDOList as unknown as StorageMatApi.StorageMatVO[] const dataMats = formData.value.matItemDOList as unknown as StorageMatApi.StorageMatVO[]
await StorageMatApi.createStorageMatBatch(dataMats, formData.value.id) const error =await StorageMatApi.createStorageMatBatch(dataMats, formData.value.id)
console.log(error);
if (formData.value.attachments != undefined && formData.value.attachments.length > 0) { if (formData.value.attachments != undefined && formData.value.attachments.length > 0) {
// //
matUploadData.value.businessId = formData.value.id matUploadData.value.businessId = formData.value.id

@ -6,7 +6,7 @@
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">派工明细</span> <div class="hl-card-info-icona"></div><span class="hl-card-info-text">派工明细</span>
</template> --> </template> -->
<el-row> <el-row>
<el-col v-if="active != 'detail' && !detailDisabled"> <el-col>
<!-- <el-button type="primary" size="large" @click="onAddItem">线</el-button> --> <!-- <el-button type="primary" size="large" @click="onAddItem">线</el-button> -->
<el-button type="primary" size="large" @click="onAddItem"></el-button> <el-button type="primary" size="large" @click="onAddItem"></el-button>
</el-col> </el-col>

@ -269,10 +269,11 @@
placeholder="负责人" placeholder="负责人"
v-model="row.ownerNames" v-model="row.ownerNames"
readonly readonly
:disabled="detailDisabled || row.procedureStatus != 0"
@click.prevent="handleClick($index)" @click.prevent="handleClick($index)"
> >
<template #append <template #append
><el-button :icon="Search" @click="openuserDialog($index)" ><el-button :icon="Search" :disabled="detailDisabled || row.procedureStatus != 0" @click="openuserDialog($index)"
/></template> /></template>
</el-input> </el-input>
</el-form-item> </el-form-item>

@ -0,0 +1,215 @@
<template>
<Dialog :title="dialogTitle" width="80%" v-model="dialogVisible" center>
<!-- <ContentWrap class="borderxx">
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="108px"
>
<el-form-item label="项目编号" prop="code">
<el-input
v-model="queryParams.code"
placeholder="请输入项目编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="合同号" prop="contractNo">
<el-input
v-model="queryParams.contractNo"
placeholder="请输入项目编号"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="客户名称" prop="customerName">
<el-input
v-model="queryParams.customerName"
placeholder="请输入客户名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery" type="primary">
<Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
</el-form-item>
</el-form>
</ContentWrap> -->
<el-card class="hl-card">
<!-- 列表 -->
<ContentWrap>
<el-table
v-loading="loading"
:data="list"
:stripe="true"
class="hl-table"
@selection-change="handleSelectionChange"
@row-click="clickRow"
ref="multipleTable"
selection
>
<el-table-column fixed type="selection" width="40" />
<el-table-column fixed label="序号" type="index" width="60" />
<el-table-column
fixed
label="工序编码"
align="center"
prop="procedureCode"
min-width="120"
/>
<el-table-column
fixed
label="工序名称"
align="center"
prop="procedureName"
min-width="120"
/>
<el-table-column label="所属车间" align="center" prop="workShopName" min-width="120" />
<el-table-column label="顺序号" align="center" prop="procedureSort" min-width="120" />
<el-table-column label="是否需要报工" align="center" prop="isReport" min-width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_COMMON_IS_OR_NOT" :value="scope.row.isReport" />
</template>
</el-table-column>
<el-table-column label="默认工资类型" align="center" prop="salaryType" min-width="120">
<template #default="scope">
{{ getDictLabel(DICT_TYPE.BIZ_SALARY_TYPE, scope.row.salaryType) }}
</template>
</el-table-column>
<el-table-column label="生产设备" min-width="180" align="center">
<template #default="{ row, $index }">
<!-- :rules="subFormRules.procedureEquipId" -->
<el-form-item :prop="`${$index}.procedureEquipId`" class="mb-0px!">
<EquipmentSelect
v-model="row.procedureEquipId"
@update:newValue="handleSelectedequip($index, $event)"
disabled
/>
</el-form-item>
</template>
</el-table-column>
</el-table>
<!-- 分页
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/> -->
</ContentWrap>
</el-card>
<template #footer>
<el-button @click="dialogVisible = false" size="large"> </el-button>
<el-button @click="submitForm" type="primary" size="large"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getDictLabel } from '@/utils/dict'
import { dateFormatter, dateFormatter2, formatDate } from '@/utils/formatTime'
import { ref } from 'vue'
import { ElTable } from 'element-plus'
import { log } from 'console'
import * as ProcessApi from '@/api/biz/process'
import EquipmentSelect from '@/views/biz/hlvuestyle/equipmentSelect.vue'
const message = useMessage() //
const { t } = useI18n() //
const router = useRouter()
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const loading = ref(true) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
processId: undefined
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {
loading.value = true
list.value = []
try {
const sub = await ProcessApi.getProcessDetailPage(queryParams)
sub?.list.forEach((row) => {
row.deleteFlag = 0
if (row.type == 1) {
// row.processId = id
list.value.push(row)
}
})
// console.log(list.value)
} finally {
loading.value = false
}
}
// /** */
// const handleQuery = () => {
// queryParams.pageNo = 1
// getList()
// }
// /** */
// const resetQuery = () => {
// queryFormRef.value.resetFields()
// handleQuery()
// }
const multipleTable = ref<InstanceType<typeof ElTable>>()
const multipleSelection = ref([])
const handleSelectionChange = (val: []) => {
multipleSelection.value = val
}
const clickRow = (row: any) => {
if (row) {
multipleTable.value!.toggleRowSelection(row, undefined)
} else {
multipleTable.value!.clearSelection()
}
}
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = () => {
if (multipleSelection.value.length === 0) {
message.warning('请至少选择一条数据')
return
}
dialogVisible.value = false
// console.log(multipleSelection.value);
//
emit('success', multipleSelection.value)
}
/** 打开弹窗 */
const open = async (id) => {
multipleSelection.value=[]
queryParams.processId = id
getList()
dialogTitle.value = t('common.selectText')
dialogVisible.value = true
// handleQuery()
}
defineExpose({ open }) // open
const handleSelectedequip = (index, newValue: any) => {
list.value[index].procedureEquipId = newValue?.id
}
</script>
Loading…
Cancel
Save