生产任务派工单模块

dev
qiuhongwu 5 months ago
parent da4570b958
commit 8d39449b4e

@ -143,11 +143,14 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column label="负责人" align="center" prop="owner" width="180">
<el-table-column label="负责人" align="center" prop="owner" min-width="240">
<template #header> <span class="hl-table_header">*</span>负责人</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.owner`" :rules="subFormRules.owner" class="mb-0px!">
<UserSelect v-model="row.owner" :disabled="detailDisabled || row.procedureStatus != 0" @update:newValue="handleSelectedUser($index,$event)" />
<el-form-item :prop="`${$index}.owner`" :rules="subFormRules.owners" class="mb-0px!">
<!-- <UserSelect v-model="row.owner" :disabled="detailDisabled || row.procedureStatus != 0" @update:newValue="handleSelectedUser($index,$event)" /> -->
<el-input class="!w-265px" placeholder="负责人" v-model="row.ownerNames" readonly @click.prevent="handleClick($index)">
<template #append><el-button :icon="Search" @click="openuserDialog($index)" /></template>
</el-input>
</el-form-item>
</template>
</el-table-column>
@ -244,6 +247,7 @@
<el-button v-if="active != 'detail' && formData.dispatchStatus == 2" @click="submitForm('CANCEL_SUBMIT')" type="danger" :disabled="formLoading" size="large"></el-button>
</div>
</el-card>
<UserDialog ref="userDialogref" @success="handleuserClick" />
</template>
<script setup lang="ts">
import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getDictLabel } from '@/utils/dict'
@ -260,6 +264,10 @@ import EquipSelect from '@/views/biz/hlvuestyle/equipSelect.vue'
import EquipmentSelect from '@/views/biz/hlvuestyle/equipmentSelect.vue'
import ProductProcessPrint from './ProductProcessPrint.vue'
import * as MaterialApi from '@/api/biz/material'
import { Search } from '@element-plus/icons-vue'
import UserDialog from './userselect.vue'
defineOptions({ name: 'TaskDispatchDetail' })
const reload = inject('reload')
@ -450,6 +458,31 @@ const onDeleteItem = async (index) => {
message.success(t('common.delSuccess'))
}
//
const handleClick = (index) => {
openuserDialog(index)
}
const userDialogref=ref()
const openuserDialog = (index) => {
userDialogref.value.open(index)
}
const ownerIds =ref([])
const ownerNames =ref([])
const handleuserClick=(val,index)=>{
val?.filter(item=>{
ownerIds.value.push(item.id)
ownerNames.value.push(item.nickname)
})
formData.value.taskDispatchDetails[index].owners=ownerIds?.value
formData.value.taskDispatchDetails[index].ownerNames=ownerNames?.value
// console.log(formData.value.taskDispatchDetails[index].owners);
// console.log(formData.value.taskDispatchDetails[index].ownerNames);
}
const handleSelectedProcedure = async (row: any, newValue: any) => {
if (newValue) {
row.procedureId = newValue.id

@ -61,14 +61,8 @@
/>
</el-form-item>
<!-- 新增生产车间 -->
<el-form-item label="生产车间" prop="workshopId">
<el-input
v-model="queryParams.workshopId"
placeholder="请输入生产车间"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
<el-form-item label="生产车间" prop="workshopId">
<WorkshopSelect v-model="queryParams.workshopId" class="!w-240px" @update:newValue="handleSelectedWorkshop" @keyup.enter="handleQuery"/>
</el-form-item>
<el-form-item label="任务负责人" prop="ownerName">
@ -226,6 +220,7 @@ import { useCommonStore } from '@/store/modules/common'
import { useUserStore } from '@/store/modules/user'
import ProductProcessPrint from './ProductProcessPrint.vue'
import { ElTable } from 'element-plus'
import WorkshopSelect from '@/views/biz/hlvuestyle/workshopSelect.vue'
defineOptions({ name: 'TaskDispatch' })
@ -254,7 +249,8 @@ const queryParams = reactive({
remark: undefined,
status: undefined,
createTime: [],
ownerName: username
ownerName: username,
workshopId:undefined
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
@ -351,7 +347,10 @@ const openDetail = (type: string, id?: number) => {
}
})
}
//
const handleSelectedWorkshop = (newValue: any) => {
queryParams.workshopId = newValue?.id
}
/** 初始化 **/
onMounted(() => {
selectedRow.value = null;

@ -0,0 +1,182 @@
<template>
<Dialog title="职工信息" 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="姓名/工号" label-width="130px" prop="nickname">
<el-input v-model="queryParams.userNickName" placeholder="请输入姓名/工号" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item>
<el-form-item label="所属部门" prop="deptId">
<el-tree-select v-model="queryParams.deptId" :data="deptList" :props="defaultProps" check-strictly node-key="id" clearable placeholder="请选择所属部门" />
</el-form-item>
<!-- <el-form-item label="岗位" prop="postId">
<el-select v-model="queryParams.postId" clearable placeholder="请选择岗位">
<el-option v-for="dict in postList" :key="dict.id" :label="dict.name" :value="dict.id" />
</el-select>
</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 ref="multipleTable" v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table" @selection-change="handleSelectionChange" :row-key="getRowKeys" @row-click="clickRow" selection :style="{height: list && list.length > 9 ? '475px' : ''}">
<el-table-column type="selection" width="55" :reserve-selection="true" />
<el-table-column type="index" min-width="70" label="序号" align="center" />
<el-table-column label="工号" align="center" prop="username" :show-overflow-tooltip="true" min-width="120" />
<el-table-column label="姓名" align="center" prop="nickname" :show-overflow-tooltip="true" min-width="120" />
<el-table-column label="部门" align="center" key="deptName" prop="deptName" :show-overflow-tooltip="true" min-width="120" />
<!-- <el-table-column label="岗位" align="center" prop="postId" min-width="120" /> -->
<el-table-column label="手机号码" align="center" prop="mobile" min-width="120" />
<el-table-column label="性别" align="center" prop="sex" min-width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="scope.row.sex" />
</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="success" size="large"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { CommonStatusEnum } from '@/utils/constants'
import { defaultProps, handleTree } from '@/utils/tree'
import * as PostApi from '@/api/system/post'
import * as DeptApi from '@/api/system/dept'
import * as UserApi from '@/api/system/user'
import { FormRules } from 'element-plus'
import { ElTable } from 'element-plus'
import { any, string } from 'vue-types'
import { toRefs } from '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 deptList = ref<Tree[]>([]) //
const postList = ref([] as PostApi.PostVO[]) //
//
const props = defineProps({
dialogType: {
type: Object,
required: true
}
})
const dialogTypeValue = toRefs(props).dialogType // props dialogType
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
userNickName: undefined,
nickname: undefined,
deptId: undefined,
postId: undefined,
status: 0
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await UserApi.getUserPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
const multipleTable: any = ref<InstanceType<typeof ElTable>>()
const multipleSelection: any = ref([])
const handleSelectionChange = (val: []) => {
multipleSelection.value = val
}
//key,
const getRowKeys = (row) => {
return row.matId
}
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 || multipleSelection.value.length <= 0) {
// message.warning(t('common.selectText'))
// return
// }
dialogVisible.value = false
//
// console.log(dialogTypeValue.value)
// console.log(multipleSelection.value);
emit('success', multipleSelection.value, faindex.value)
//
}
const userInit = ref()
const faindex =ref()
/** 打开弹窗 */
const open = async (index) => {
faindex.value=index
dialogVisible.value = true
queryParams.userNickName = undefined
queryParams.deptId = undefined
queryParams.postId = undefined
//
deptList.value = handleTree(await DeptApi.getSimpleDeptList())
//
postList.value = await PostApi.getSimplePostList()
//
userInit.value = await UserApi.getSimpleUserList()
handleQuery()
}
defineExpose({ open }) // open
</script>
Loading…
Cancel
Save