fix orgWorker

main
chenshuichuan 2 years ago
parent 64b539c8f2
commit 5c9fa846bb

@ -8,6 +8,7 @@ export interface OrgWorkerVO {
groupType: number // 班别
workerId: number // 工人id
reportId: number // 报工单id
planDates:[]
}
// 工位安排 API
@ -40,5 +41,9 @@ export const OrgWorkerApi = {
// 导出工位安排 Excel
exportOrgWorker: async (params) => {
return await request.download({ url: `/mes/org-worker/export-excel`, params })
}
},
// 多个日期新增工位安排
getCreateWorker: async (params: any) => {
return await request.get({ url: `/mes/org-worker/createWorker`, params })
},
}

@ -68,7 +68,11 @@ export const WorkTeamApi = {
return await request.get({ url: `/mes/work-team/work-team-detail/get?id=` + id })
},
// 获得班组成员
getUserList: async (processType: string) => {
return await request.get({ url: `/mes/work-team/work-team-detail/getUserList?processType=` + processType })
getUserList: async (processType: string, groupType:string) => {
return await request.get({ url: `/mes/work-team/work-team-detail/getUserList?processType=` + processType+`&&groupType=`+groupType })
},
// 获得班组成员
getUserList2: async (orgId: number, groupType:string) => {
return await request.get({ url: `/mes/work-team/work-team-detail/getUserList2?orgId=` + orgId+`&&groupType=`+groupType })
},
}

@ -189,14 +189,14 @@ let totalSate = reactive<WorkplaceTotal>({
})
const weatherList = ref<WeatherVO[]>([])
let weatherEnable = false
const weatherEnable = ref(false)
let todayWeather = null
let weatherCity = ""
/** 初始化 **/
onMounted(async () => {
//
const data = await HomeApi.getWeatherInfo()
weatherEnable = data.isEnable
weatherEnable.value = data.isEnable
if(data.isEnable && weatherList){
weatherList.value = data.casts
todayWeather = weatherList.value[0]

@ -126,7 +126,6 @@ const formRules = reactive({
})
const formRef = ref() // Ref
const organizationTree = ref() //
const userList = ref<UserApi.UserVO[]>([]) //
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
@ -144,8 +143,7 @@ const open = async (type: string, id?: number) => {
}
await getOrganizationTree()
await getMachineComponentTree()
//
userList.value = await UserApi.getSimpleUserList()
}
defineExpose({ open }) // open
@ -201,11 +199,7 @@ const getOrganizationTree = async () => {
root.children = handleTree(data, 'id', 'parentId')
organizationTree.value.push(root)
}
/** 工序类型变化,可选负责人跟着变化 */
const handleOrgTypeChange = async () => {
//
userList.value = await WorkTeamApi.getUserList(formData.value.orgType)
}
const machineComponentTree = ref() //
/** 获得机台树 */
const getMachineComponentTree = async () => {

@ -58,16 +58,6 @@
placeholder="选择工作日期"
class="!w-200px"
/>
<!-- <el-date-picker-->
<!-- v-model="queryParams.workDate"-->
<!-- @change="handleQuery"-->
<!-- value-format="YYYY-MM-DD HH:mm:ss"-->
<!-- type="daterange"-->
<!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期"-->
<!-- :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"-->
<!-- class="!w-200px"-->
<!-- />-->
</el-form-item>
</el-col>
</el-row>
@ -147,7 +137,7 @@
v-hasPermi="['mes:organization:update']"
link
type="warning"
@click="openForm('update', scope.row.id)"
@click="openForm(scope.row.orgType, scope.row.id)"
>
派工
</el-button>
@ -164,7 +154,7 @@
</el-row>
<!-- 表单弹窗添加/修改 -->
<OrganizationForm ref="formRef" @success="getList" />
<OrgWorkerForm ref="formRef" @success="getList" />
</template>
<script lang="ts" setup>
@ -172,8 +162,9 @@ import {getIntDictOptions, getBoolDictOptions, DICT_TYPE, getStrDictOptions} fro
import {defaultProps, handleTree} from '@/utils/tree'
import download from '@/utils/download'
import { OrganizationApi, OrganizationVO } from '@/api/mes/organization'
import OrganizationForm from './OrganizationForm.vue'
import {OrgWorkerApi, OrgWorkerVO} from "@/api/mes/orgworker";
import WorkerRight from "./components/WorkerRight.vue";
import OrgWorkerForm from "./components/OrgWorkerForm.vue";
/** 产线工位 列表 */
defineOptions({ name: 'WorkerIndex' })
@ -226,12 +217,6 @@ const resetQuery = () => {
handleQuery()
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 导出按钮操作 */
const handleExport = async () => {
@ -289,11 +274,17 @@ const handleTabClick = (tab: TabsPaneContext) => {
const currentRow = ref({}) //
const handleCurrentChange = (row) => {
currentRow.value = row
orgId.value = row.id
if(row)
orgId.value = row.id
}
const notEmpty = (str:string) => {
return str != "" && str != null;
}
/** 派工操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
</script>

@ -0,0 +1,167 @@
<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="工位" prop="orgId">
<el-tree-select
disabled
v-model="formData.orgId"
:data="organizationTree"
:props="defaultProps"
check-strictly
default-expand-all
@change="handleSelectChange"
placeholder="请选择工位"
/>
</el-form-item>
<el-form-item label="班别" prop="groupType">
<el-radio-group v-model="formData.groupType">
<el-radio
v-for="dict in getIntDictOptions(DICT_TYPE.MES_GROUP_TYPE)"
:key="dict.value"
:label="dict.value"
@change="handleSelectChange"
>
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="工作日期" prop="planDates">
<el-date-picker
v-model="formData.planDates"
value-format="YYYY-MM-DD HH:mm:ss"
type="dates"
placeholder="请选择工作日期"
class="!w-300px"
/>
</el-form-item>
<el-form-item v-if="formData.groupType && formData.orgId " label="工人" prop="workerId">
<el-select
v-model="formData.workerId"
clearable
filterable
placeholder="请选择工人"
class="!w-240px"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { OrgWorkerApi, OrgWorkerVO } from '@/api/mes/orgworker'
import {defaultProps, handleTree} from "@/utils/tree";
import {OrganizationApi} from "@/api/mes/organization";
import {WorkTeamApi} from "@/api/mes/workteam";
import * as UserApi from "@/api/system/user";
/** 工位安排 表单 */
defineOptions({ name: 'OrgWorkerForm' })
const { t } = useI18n() //
const message = useMessage() //
const organizationTree = ref() //
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
const userList = ref<UserApi.UserVO[]>([]) //
const formData = ref({
id: undefined,
orgId: undefined,
workDate: undefined,
groupType: undefined,
workerId: undefined,
reportId: undefined,
planDates:[]
})
const formRules = reactive({
orgId: [{ required: true, message: '工位不能为空', trigger: 'blur' }],
groupType: [{ required: true, message: '班别不能为空', trigger: 'blur' }],
workerId: [{ required: true, message: '工人不能为空', trigger: 'blur' }]
})
const formRef = ref() // Ref
/** 打开弹窗 */
const open = async (type: string, orgId?: number) => {
dialogVisible.value = true
dialogTitle.value = '新增派工'
formType.value = type
resetForm()
//
if (orgId) {
formData.value.orgId = orgId
}
await getOrganizationTree()
}
defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
const submitForm = async () => {
//
await formRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as OrgWorkerVO
//await OrgWorkerApi.createOrgWorker(data)
await OrgWorkerApi.getCreateWorker(data)
message.success(t('common.createSuccess'))
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
orgId: undefined,
workDate: undefined,
groupType: undefined,
workerId: undefined,
reportId: undefined
}
formRef.value?.resetFields()
}
/** 获得产线工位树 */
const getOrganizationTree = async () => {
organizationTree.value = []
const data = await OrganizationApi.getOrganizationList()
const root: Tree = { id: 0, name: 'ALL', children: [] }
root.children = handleTree(data, 'id', 'parentId')
organizationTree.value.push(root)
}
/** 工序类型变化,可选负责人跟着变化 */
const handleSelectChange = async () => {
if(formData.value.orgId && formData.value.groupType){
//
userList.value = await WorkTeamApi.getUserList2(formData.value.orgId, formData.value.groupType)
}
}
</script>

@ -1,14 +1,7 @@
<template>
<!-- 列表 -->
<ContentWrap>
<!-- <el-button-->
<!-- type="success"-->
<!-- plain-->
<!-- @click="handleExport"-->
<!-- :loading="exportLoading"-->
<!-- >-->
<!-- <Icon icon="ep:download" class="mr-5px" /> 导出-->
<!-- </el-button>-->
<el-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="所有" name="" />
<el-tab-pane label="白班" name="1" />

@ -14,9 +14,10 @@
:props="defaultProps"
check-strictly
default-expand-all
@change="checkValid"
@change="handleSelectChange"
placeholder="请选择工位"
/>
</el-form-item>
<el-form-item label="班别" prop="groupType">
<el-radio-group v-model="formData.groupType">
@ -24,6 +25,7 @@
v-for="dict in getIntDictOptions(DICT_TYPE.MES_GROUP_TYPE)"
:key="dict.value"
:label="dict.value"
@change="handleSelectChange"
>
{{ dict.label }}
</el-radio>
@ -38,8 +40,21 @@
class="!w-300px"
/>
</el-form-item>
<el-form-item label="工人" prop="workerId">
<el-input disabled="disabled" v-model="formData.workerId" placeholder="请输入工人" />
<el-form-item v-if="formData.groupType && formData.orgId " label="工人" prop="workerId">
<el-select
v-model="formData.workerId"
clearable
filterable
placeholder="请选择工人"
class="!w-240px"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-form>
<template #footer>
@ -53,6 +68,8 @@ import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { OrgWorkerApi, OrgWorkerVO } from '@/api/mes/orgworker'
import {defaultProps, handleTree} from "@/utils/tree";
import {OrganizationApi} from "@/api/mes/organization";
import {WorkTeamApi} from "@/api/mes/workteam";
import * as UserApi from "@/api/system/user";
/** 工位安排 表单 */
defineOptions({ name: 'OrgWorkerForm' })
@ -65,8 +82,7 @@ const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 12
const formType = ref('') // create - update -
disabled
const userList = ref<UserApi.UserVO[]>([]) //
const formData = ref({
id: undefined,
orgId: undefined,
@ -147,4 +163,13 @@ const getOrganizationTree = async () => {
root.children = handleTree(data, 'id', 'parentId')
organizationTree.value.push(root)
}
/** 工序类型变化,可选负责人跟着变化 */
const handleSelectChange = async () => {
if(formData.value.orgId && formData.value.groupType){
//
userList.value = await WorkTeamApi.getUserList2(formData.value.orgId, formData.value.groupType)
}
}
</script>

@ -8,50 +8,71 @@
:inline="true"
label-width="68px"
>
<el-form-item label="工位id" prop="orgId">
<el-input
v-model="queryParams.orgId"
placeholder="请输入工位id"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="工作日期" prop="workDate">
<el-date-picker
v-model="queryParams.workDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="班别" prop="groupType">
<el-select
v-model="queryParams.groupType"
placeholder="请选择班别"
clearable
class="!w-240px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.MES_GROUP_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
<el-form-item label="工人id" prop="workerId">
<el-input
v-model="queryParams.workerId"
placeholder="请输入工人id"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-row>
<el-col :span="6">
<el-form-item label="工位" prop="orgId">
<el-tree-select
v-model="queryParams.orgId"
:data="organizationTree"
:props="defaultProps"
check-strictly
default-expand-all
@change="handleQuery"
placeholder="请选择工位"
class="!w-240px"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="班别" prop="groupType">
<el-select
v-model="queryParams.groupType"
placeholder="请选择班别"
clearable
@change="handleQuery"
class="!w-180px"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.MES_GROUP_TYPE)"
:key="dict.value"
:label="dict.label"
:value="dict.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="工人" prop="workerId">
<el-select
v-model="queryParams.workerId"
clearable
filterable
placeholder="请选择工人"
@change="handleQuery"
class="!w-180px"
>
<el-option
v-for="item in userList"
:key="item.id"
:label="item.nickname"
:value="item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="工作日期" prop="workDate">
<el-date-picker
v-model="queryParams.workDate"
@change="handleQuery"
type="date"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="选择工作日期"
class="!w-180px"
/>
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
@ -80,21 +101,20 @@
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="id" align="center" prop="id" />
<el-table-column
label="工作日期"
align="center"
prop="workDate"
:formatter="dateFormatter"
:formatter="dateFormatter2"
width="180px"
/>
<el-table-column label="工位" align="center" prop="orgId" />
<el-table-column label="工位" align="center" prop="orgName" />
<el-table-column label="班别" align="center" prop="groupType">
<template #default="scope">
<dict-tag :type="DICT_TYPE.MES_GROUP_TYPE" :value="scope.row.groupType" />
</template>
</el-table-column>
<el-table-column label="工人" align="center" prop="workerId" />
<el-table-column label="工人" align="center" prop="workerName" />
<el-table-column label="报工单" align="center" prop="reportId" />
<el-table-column
label="创建时间"
@ -103,6 +123,7 @@
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="创建人" align="center" prop="creator" width="180px"/>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
@ -139,14 +160,19 @@
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter } from '@/utils/formatTime'
import {dateFormatter, dateFormatter2} from '@/utils/formatTime'
import download from '@/utils/download'
import { OrgWorkerApi, OrgWorkerVO } from '@/api/mes/orgworker'
import OrgWorkerForm from './OrgWorkerForm.vue'
import {defaultProps, handleTree} from "@/utils/tree";
import * as UserApi from "@/api/system/user";
import {WorkTeamApi} from "@/api/mes/workteam";
import {OrganizationApi} from "@/api/mes/organization";
/** 工位安排 列表 */
defineOptions({ name: 'OrgWorker' })
const userList = ref<UserApi.UserVO[]>([]) //
const organizationTree = ref() //
const message = useMessage() //
const { t } = useI18n() //
@ -223,9 +249,19 @@ const handleExport = async () => {
exportLoading.value = false
}
}
/** 获得产线工位树 */
const getOrganizationTree = async () => {
organizationTree.value = []
const data = await OrganizationApi.getOrganizationList()
const root: Tree = { id: 0, name: 'ALL', children: [] }
root.children = handleTree(data, 'id', 'parentId')
organizationTree.value.push(root)
}
/** 初始化 **/
onMounted(() => {
getList()
onMounted(async () => {
await getList()
await getOrganizationTree()
//
userList.value = await UserApi.getSimpleUserList()
})
</script>

Loading…
Cancel
Save