|
@@ -15,51 +15,42 @@
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
|
|
|
- <el-row :gutter="10" class="mb8">
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- plain
|
|
|
- icon="Plus"
|
|
|
- @click="handleAdd"
|
|
|
- >新增
|
|
|
- </el-button>
|
|
|
- </el-col>
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button
|
|
|
- type="success"
|
|
|
- plain
|
|
|
- icon="Edit"
|
|
|
- :disabled="single"
|
|
|
- @click="handleUpdate"
|
|
|
- >修改
|
|
|
- </el-button>
|
|
|
- </el-col>
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button
|
|
|
- type="danger"
|
|
|
- plain
|
|
|
- icon="Delete"
|
|
|
- :disabled="multiple"
|
|
|
- @click="handleDelete"
|
|
|
- >删除
|
|
|
- </el-button>
|
|
|
- </el-col>
|
|
|
-<!-- <el-col :span="1.5">-->
|
|
|
-<!-- <el-button-->
|
|
|
-<!-- type="warning"-->
|
|
|
-<!-- plain-->
|
|
|
-<!-- icon="Download"-->
|
|
|
-<!-- @click="handleExport"-->
|
|
|
-<!-- >导出-->
|
|
|
-<!-- </el-button>-->
|
|
|
-<!-- </el-col>-->
|
|
|
- <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
|
|
- </el-row>
|
|
|
+ <!-- <el-row :gutter="10" class="mb8">-->
|
|
|
+ <!-- <el-col :span="1.5">-->
|
|
|
+ <!-- <el-button-->
|
|
|
+ <!-- type="primary"-->
|
|
|
+ <!-- plain-->
|
|
|
+ <!-- icon="Plus"-->
|
|
|
+ <!-- @click="handleAdd"-->
|
|
|
+ <!-- >新增-->
|
|
|
+ <!-- </el-button>-->
|
|
|
+ <!-- </el-col>-->
|
|
|
+ <!-- <el-col :span="1.5">-->
|
|
|
+ <!-- <el-button-->
|
|
|
+ <!-- type="success"-->
|
|
|
+ <!-- plain-->
|
|
|
+ <!-- icon="Edit"-->
|
|
|
+ <!-- :disabled="single"-->
|
|
|
+ <!-- @click="handleUpdate"-->
|
|
|
+ <!-- >修改-->
|
|
|
+ <!-- </el-button>-->
|
|
|
+ <!-- </el-col>-->
|
|
|
+ <!-- <el-col :span="1.5">-->
|
|
|
+ <!-- <el-button-->
|
|
|
+ <!-- type="danger"-->
|
|
|
+ <!-- plain-->
|
|
|
+ <!-- icon="Delete"-->
|
|
|
+ <!-- :disabled="multiple"-->
|
|
|
+ <!-- @click="handleDelete"-->
|
|
|
+ <!-- >删除-->
|
|
|
+ <!-- </el-button>-->
|
|
|
+ <!-- </el-col>-->
|
|
|
+ <!-- <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>-->
|
|
|
+ <!-- </el-row>-->
|
|
|
|
|
|
<el-table v-loading="loading" :data="empList" @selection-change="handleSelectionChange">
|
|
|
<el-table-column type="selection" width="55" align="center"/>
|
|
|
-<!-- <el-table-column label="排班ID" align="center" prop="empId"/>-->
|
|
|
+ <!-- <el-table-column label="排班ID" align="center" prop="empId"/>-->
|
|
|
<el-table-column label="时间" align="center" prop="empDate" width="180">
|
|
|
<template #default="scope">
|
|
|
<span>{{ parseTime(scope.row.empDate, '{y}-{m}-{d}') }}</span>
|
|
@@ -73,8 +64,8 @@
|
|
|
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)">
|
|
|
修改
|
|
|
</el-button>
|
|
|
- <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)">
|
|
|
- 删除
|
|
|
+ <el-button link type="primary" icon="HelpFilled" @click="handleSync(scope.row)">
|
|
|
+ 同步MES记录
|
|
|
</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -89,73 +80,111 @@
|
|
|
/>
|
|
|
|
|
|
<!-- 添加或修改员工排班对话框 -->
|
|
|
- <el-dialog :title="title" v-model="open" width="1050px" append-to-body>
|
|
|
+ <el-dialog :title="title" v-model="open" append-to-body :close-on-click-modal="false" :style="{width:'1400px'}">
|
|
|
<el-form ref="empRef" :model="form" :rules="rules" label-width="80px">
|
|
|
- <el-form-item label="时间" prop="empDate">
|
|
|
- <el-date-picker clearable
|
|
|
- v-model="form.empDate"
|
|
|
- type="date"
|
|
|
- :readonly="isReadOnly"
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
- placeholder="请选择时间">
|
|
|
- </el-date-picker>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="5">
|
|
|
+ <el-form-item label="时间" prop="empDate">
|
|
|
+ <el-date-picker clearable
|
|
|
+ v-model="form.empDate"
|
|
|
+ type="date"
|
|
|
+ :readonly="isReadOnly"
|
|
|
+ value-format="YYYY-MM-DD"
|
|
|
+ placeholder="请选择时间">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
<el-col :span="1"></el-col>
|
|
|
- <el-button type="success" icon="DocumentCopy" @click="copy" v-if="isReadOnly">复制排班</el-button>
|
|
|
- </el-form-item>
|
|
|
- <em>排班明细:多个机台号请使用英文逗号”,“分隔,连续机台号使用”-“,例:1 4 7机台号填写为”1,4,7“,1至12号填写为”1-12",1至12号加36号填写为“1-12,36”</em>
|
|
|
+ <el-col :span="17">
|
|
|
+ <!-- <el-button type="success" icon="DocumentCopy" @click="copy" v-if="isReadOnly">复制排班</el-button>-->
|
|
|
+ <span style="font-size:18px;">多个机台号请使用<span
|
|
|
+ style="color: red;font-weight: bold;font-size: 22px;">英文逗号“,”</span>分隔,连续机台号使用<span
|
|
|
+ style="color: red;font-weight: bold;font-size: 22px;">英文减号“-”</span>连接。不能有空行。</span>
|
|
|
+
|
|
|
+ <br/><em style="font-size:16px;">例:1 4 7机台号填写为“1,4,7”,1至12号填写为"1-12”,1至12号加36号填写为“1-12,36”</em>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
<el-row>
|
|
|
- <el-col :span="11">
|
|
|
- <el-divider content-position="center">A班明细信息</el-divider>
|
|
|
- <el-row :gutter="10" class="mb8">
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button type="primary" icon="Plus" plain @click="handleAddTwinEmpDetailA">添加</el-button>
|
|
|
- </el-col>
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button type="danger" icon="Delete" plain @click="handleDeleteTwinEmpDetailA">删除</el-button>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-table :data="twinEmpDetailListA" :row-class-name="rowTwinEmpDetailIndex"
|
|
|
- @selection-change="handleTwinEmpDetailSelectionChange" ref="twinEmpDetailA">
|
|
|
- <el-table-column type="selection" width="50" align="center"/>
|
|
|
- <el-table-column label="序号" align="center" prop="index" width="50"/>
|
|
|
- <el-table-column label="姓名" prop="empName" width="150">
|
|
|
- <template #default="scope">
|
|
|
- <el-input v-model="scope.row.empName" placeholder="请输入姓名"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="机台号" prop="devices" width="200">
|
|
|
- <template #default="scope">
|
|
|
- <el-input v-model="scope.row.devices" placeholder="请输入机台号"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-card>
|
|
|
+ <el-divider content-position="center">A班明细信息</el-divider>
|
|
|
+ <el-row :gutter="10" class="mb8">
|
|
|
+ <el-col :span="1.5">
|
|
|
+ <el-button type="primary" icon="Plus" plain @click="handleAddTwinEmpDetailA">添加</el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="1.5">
|
|
|
+ <el-button type="danger" icon="Delete" plain @click="handleDeleteTwinEmpDetailA">删除</el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-table :data="twinEmpDetailListA" :row-class-name="rowTwinEmpDetailIndex"
|
|
|
+ @selection-change="handleTwinEmpDetailSelectionChange" ref="twinEmpDetailA" height="450">
|
|
|
+ <el-table-column type="selection" width="30" align="center"/>
|
|
|
+ <el-table-column label="序号" align="center" prop="index" width="50"/>
|
|
|
+ <el-table-column label="姓名" prop="empName" width="120">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-input v-model="scope.row.empName" placeholder="请输入姓名"/>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="上下班时间" align="center" prop="inTime" width="170">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-select v-model="scope.row.remark" placeholder="选择上下班时间">
|
|
|
+ <el-option
|
|
|
+ v-for="dict in in_out_time"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="机台号" prop="devices" width="260">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-input v-model="scope.row.devices" placeholder="请输入机台号"/>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-card>
|
|
|
</el-col>
|
|
|
- <el-col :span="2"></el-col>
|
|
|
- <el-col :span="11">
|
|
|
- <el-divider content-position="center">B班明细信息</el-divider>
|
|
|
- <el-row :gutter="10" class="mb8">
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button type="primary" icon="Plus" plain @click="handleAddTwinEmpDetailB">添加</el-button>
|
|
|
- </el-col>
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button type="danger" icon="Delete" plain @click="handleDeleteTwinEmpDetailB">删除</el-button>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- <el-table :data="twinEmpDetailListB" :row-class-name="rowTwinEmpDetailIndex"
|
|
|
- @selection-change="handleTwinEmpDetailSelectionChange" ref="twinEmpDetailB">
|
|
|
- <el-table-column type="selection" width="50" align="center"/>
|
|
|
- <el-table-column label="序号" align="center" prop="index" width="50"/>
|
|
|
- <el-table-column label="姓名" prop="empName" width="150">
|
|
|
- <template #default="scope">
|
|
|
- <el-input v-model="scope.row.empName" placeholder="请输入姓名"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="机台号" prop="devices" width="200">
|
|
|
- <template #default="scope">
|
|
|
- <el-input v-model="scope.row.devices" placeholder="请输入机台号"/>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
+ <!-- <el-col :span=""></el-col>-->
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-card>
|
|
|
+ <el-divider content-position="center">B班明细信息</el-divider>
|
|
|
+ <el-row :gutter="10" class="mb8">
|
|
|
+ <el-col :span="1.5">
|
|
|
+ <el-button type="primary" icon="Plus" plain @click="handleAddTwinEmpDetailB">添加</el-button>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="1.5">
|
|
|
+ <el-button type="danger" icon="Delete" plain @click="handleDeleteTwinEmpDetailB">删除</el-button>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-table :data="twinEmpDetailListB" :row-class-name="rowTwinEmpDetailIndex"
|
|
|
+ @selection-change="handleTwinEmpDetailSelectionChange" ref="twinEmpDetailB" height="450">
|
|
|
+ <el-table-column type="selection" width="30" align="center"/>
|
|
|
+ <el-table-column label="序号" align="center" prop="index" width="50"/>
|
|
|
+ <el-table-column label="姓名" prop="empName" width="120">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-input v-model="scope.row.empName" placeholder="请输入姓名"/>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="上下班时间" align="center" prop="inTime" width="170">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-select v-model="scope.row.remark" placeholder="选择上下班时间">
|
|
|
+ <el-option
|
|
|
+ v-for="dict in in_out_time"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="机台号" prop="devices" width="260">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-input v-model="scope.row.devices" placeholder="请输入机台号"/>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-card>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
@@ -170,11 +199,12 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup name="Emp">
|
|
|
-import {addEmp, delEmp, getEmp, listEmp, updateEmp} from "@/api/emp/emp";
|
|
|
+import {addEmp, delEmp, getEmp, listEmp, sync, updateEmp} from "@/api/emp/emp";
|
|
|
import {calc} from "@/api/emp/empCalc";
|
|
|
|
|
|
const {proxy} = getCurrentInstance();
|
|
|
|
|
|
+const {in_out_time} = proxy.useDict('in_out_time');
|
|
|
const isReadOnly = ref(false);
|
|
|
const empList = ref([]);
|
|
|
const twinEmpDetailListA = ref([]);
|
|
@@ -371,6 +401,12 @@ function handleCalc(row) {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+function handleSync(row) {
|
|
|
+ sync(row.empDate).then(response => {
|
|
|
+ proxy.$modal.msgSuccess("统计成功");
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
/** 复选框选中数据 */
|
|
|
function handleTwinEmpDetailSelectionChange(selection) {
|
|
|
checkedTwinEmpDetail.value = selection.map(item => item.index)
|