|
|
|
|
@ -18,8 +18,10 @@
|
|
|
|
|
<el-table-column prop="machineCount" label="绑定机床数" align="center"/>
|
|
|
|
|
<el-table-column prop="machineNames" label="绑定机床" show-overflow-tooltip/>
|
|
|
|
|
<el-table-column label="操作" width="120" align="center"><template #default="{row}">
|
|
|
|
|
<div style="white-space:nowrap">
|
|
|
|
|
<el-button link type="primary" @click="handleEdit(row)">编辑</el-button>
|
|
|
|
|
<el-button link type="danger" @click="handleDelete(row)" :disabled="row.machineCount>0">删除</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</template></el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
<!-- 分页控件 -->
|
|
|
|
|
@ -34,7 +36,7 @@
|
|
|
|
|
@size-change="handleSizeChange"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
<el-dialog v-model="dialogVisible" :title="editingId?'编辑工人':'新增工人'" width="500px" destroy-on-close>
|
|
|
|
|
<el-dialog v-model="dialogVisible" :title="editingId?'编辑工人':'新增工人'" width="700px" destroy-on-close>
|
|
|
|
|
<el-form :model="form" :rules="rules" ref="workerForm" label-width="100px">
|
|
|
|
|
<el-form-item label="工号" prop="code">
|
|
|
|
|
<el-input v-model="form.code" maxlength="50" @blur="()=>workerForm?.validateField('code')"/>
|
|
|
|
|
@ -42,10 +44,15 @@
|
|
|
|
|
<el-form-item label="姓名" prop="name">
|
|
|
|
|
<el-input v-model="form.name" maxlength="50"/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="绑定机床" prop="machineIds">
|
|
|
|
|
<el-select v-model="form.machineIds" multiple filterable>
|
|
|
|
|
<el-option v-for="m in availableMachines" :key="m.id" :label="m.name" :value="m.id"/>
|
|
|
|
|
</el-select>
|
|
|
|
|
<el-form-item label="绑定机床">
|
|
|
|
|
<el-transfer
|
|
|
|
|
v-model="form.machineIds"
|
|
|
|
|
:data="availableMachines"
|
|
|
|
|
:titles="['可选机床', '已绑定']"
|
|
|
|
|
:props="{ key: 'id', label: 'label' }"
|
|
|
|
|
filterable
|
|
|
|
|
filter-placeholder="搜索机床"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
<template #footer><el-button @click="dialogVisible=false">取消</el-button><el-button type="primary" :loading="submitting" @click="handleSubmit">保存</el-button></template>
|
|
|
|
|
@ -65,7 +72,7 @@ const loading=ref(false);const tableData=ref<Worker[]>([]);const selectedRows=re
|
|
|
|
|
// 分页信息
|
|
|
|
|
const pagination=ref<{ currentPage: number; pageSize: number; total: number }>({ currentPage: 1, pageSize: 20, total: 0 })
|
|
|
|
|
const dialogVisible=ref(false);const submitting=ref(false);const editingId=ref<number|null>(null)
|
|
|
|
|
const availableMachines=ref<{ id: number; name: string }[]>([])
|
|
|
|
|
const availableMachines=ref<{ id: number; label: string; name: string }[]>([])
|
|
|
|
|
const query=reactive({isEnabled:undefined as number | undefined,keyword:''})
|
|
|
|
|
const form=reactive({code:'',name:'',machineIds:[] as number[]})
|
|
|
|
|
const workerForm=ref<FormInstance | null>(null)
|
|
|
|
|
@ -93,7 +100,7 @@ function handleEdit(row: Worker){editingId.value=row.id;Object.assign(form,{code
|
|
|
|
|
async function handleSubmit(){submitting.value=true;try{const ok = await (workerForm.value?.validate ? new Promise<boolean>((resolve)=>workerForm.value!.validate((valid:boolean)=>resolve(valid))) : Promise.resolve(true)); if(!ok){return} await request[editingId.value?'put':'post'](editingId.value?`/admin/worker/${editingId.value}`:'/admin/worker',{...form});ElMessage.success('保存成功');dialogVisible.value=false;loadData()}finally{submitting.value=false}}
|
|
|
|
|
async function handleDelete(row:any){await ElMessageBox.confirm('确定删除【'+row.name+'】?此操作不可恢复。','提示',{type:'warning'});await request.delete(`/admin/worker/${row.id}`);ElMessage.success('已删除');loadData()}
|
|
|
|
|
async function batchStatus(isEnabled:number){await ElMessageBox.confirm('确定对选中的'+selectedRows.value.length+'项操作?','提示',{type:'warning'});for(const id of selectedRows.value.map((r:any)=>r.id)){await request.put(`/admin/worker/${id}/toggle`,{isEnabled})};ElMessage.success('操作成功');loadData()}
|
|
|
|
|
async function loadDrops(){const r: ApiResponse<{ items: Array<{ id: number; name: string }> }> = await request.get('/admin/worker/available-machines'); availableMachines.value = r.data?.items ?? []}
|
|
|
|
|
async function loadDrops(){const r: ApiResponse<{ items: Array<{ id: number; name: string; deviceCode?: string; workshopName?: string }> }> = await request.get('/admin/worker/available-machines'); availableMachines.value = (r.data?.items ?? []).map(m => ({ id: m.id, name: m.name, label: `${m.deviceCode || m.name} (${m.name})${m.workshopName ? ' - ' + m.workshopName : ''}` }))}
|
|
|
|
|
function handlePageChange(page:number){pagination.value.currentPage=page;loadData()}
|
|
|
|
|
function handleSizeChange(size:number){pagination.value.pageSize=size;pagination.value.currentPage=1;loadData()}
|
|
|
|
|
onMounted(()=>{loadData();loadDrops()})
|
|
|
|
|
|