fix orgWorker

liutao_branch
chenshuichuan 2 years ago
parent 64b539c8f2
commit 5c9fa846bb

@ -8,6 +8,7 @@ export interface OrgWorkerVO {
groupType: number // 班别 groupType: number // 班别
workerId: number // 工人id workerId: number // 工人id
reportId: number // 报工单id reportId: number // 报工单id
planDates:[]
} }
// 工位安排 API // 工位安排 API
@ -40,5 +41,9 @@ export const OrgWorkerApi = {
// 导出工位安排 Excel // 导出工位安排 Excel
exportOrgWorker: async (params) => { exportOrgWorker: async (params) => {
return await request.download({ url: `/mes/org-worker/export-excel`, 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 }) return await request.get({ url: `/mes/work-team/work-team-detail/get?id=` + id })
}, },
// 获得班组成员 // 获得班组成员
getUserList: async (processType: string) => { getUserList: async (processType: string, groupType:string) => {
return await request.get({ url: `/mes/work-team/work-team-detail/getUserList?processType=` + processType }) 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[]>([]) const weatherList = ref<WeatherVO[]>([])
let weatherEnable = false const weatherEnable = ref(false)
let todayWeather = null let todayWeather = null
let weatherCity = "" let weatherCity = ""
/** 初始化 **/ /** 初始化 **/
onMounted(async () => { onMounted(async () => {
// //
const data = await HomeApi.getWeatherInfo() const data = await HomeApi.getWeatherInfo()
weatherEnable = data.isEnable weatherEnable.value = data.isEnable
if(data.isEnable && weatherList){ if(data.isEnable && weatherList){
weatherList.value = data.casts weatherList.value = data.casts
todayWeather = weatherList.value[0] todayWeather = weatherList.value[0]

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

@ -58,16 +58,6 @@
placeholder="选择工作日期" placeholder="选择工作日期"
class="!w-200px" 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-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -147,7 +137,7 @@
v-hasPermi="['mes:organization:update']" v-hasPermi="['mes:organization:update']"
link link
type="warning" type="warning"
@click="openForm('update', scope.row.id)" @click="openForm(scope.row.orgType, scope.row.id)"
> >
派工 派工
</el-button> </el-button>
@ -164,7 +154,7 @@
</el-row> </el-row>
<!-- 表单弹窗添加/修改 --> <!-- 表单弹窗添加/修改 -->
<OrganizationForm ref="formRef" @success="getList" /> <OrgWorkerForm ref="formRef" @success="getList" />
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
@ -172,8 +162,9 @@ import {getIntDictOptions, getBoolDictOptions, DICT_TYPE, getStrDictOptions} fro
import {defaultProps, handleTree} from '@/utils/tree' import {defaultProps, handleTree} from '@/utils/tree'
import download from '@/utils/download' import download from '@/utils/download'
import { OrganizationApi, OrganizationVO } from '@/api/mes/organization' 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' }) defineOptions({ name: 'WorkerIndex' })
@ -226,12 +217,6 @@ const resetQuery = () => {
handleQuery() handleQuery()
} }
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 导出按钮操作 */ /** 导出按钮操作 */
const handleExport = async () => { const handleExport = async () => {
@ -289,11 +274,17 @@ const handleTabClick = (tab: TabsPaneContext) => {
const currentRow = ref({}) // const currentRow = ref({}) //
const handleCurrentChange = (row) => { const handleCurrentChange = (row) => {
currentRow.value = row currentRow.value = row
orgId.value = row.id if(row)
orgId.value = row.id
} }
const notEmpty = (str:string) => { const notEmpty = (str:string) => {
return str != "" && str != null; return str != "" && str != null;
} }
/** 派工操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
</script> </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> <template>
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <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-tabs v-model="activeName" @tab-click="handleTabClick">
<el-tab-pane label="所有" name="" /> <el-tab-pane label="所有" name="" />
<el-tab-pane label="白班" name="1" /> <el-tab-pane label="白班" name="1" />

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

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

Loading…
Cancel
Save