执行看板优化

This commit is contained in:
2024-12-24 18:58:01 +08:00
parent 59a6def0ba
commit f28bf74783
12 changed files with 467 additions and 53 deletions

View File

@@ -3,13 +3,18 @@
<!-- <el-input ref="inputRef" v-model="input" type="password" placeholder="请扫码" @blur="doInputBlur"
@change="doInputChange">
</el-input> -->
<v-text-field prepend-inner-icon="mdi-line-scan" type="password" ref="inputRef" autofocus label="请扫码"
v-model="input" variant="solo-inverted" @keydown="handleKeyPress">
<v-text-field prepend-inner-icon="mdi-line-scan" ref="inputRef" :type="passwordShow ? 'text' : 'password'"
autofocus label="请扫码" v-model="input" variant="solo-inverted" @keydown="handleKeyPress">
<template v-slot:append>
<v-btn class="bg-blue-darken-1" size="x-large" prepend-icon="mdi-line-scan"
@click="doInputChange(input)">
扫码
</v-btn>
<div>
<v-icon :icon="passwordShow ? 'mdi-eye' : 'mdi-eye-off'"
@click="passwordShow = !passwordShow"></v-icon>
<v-btn class="bg-blue-darken-1 ml-2" size="x-large" prepend-icon="mdi-line-scan"
@click="doInputChange(input)">
扫码
</v-btn>
</div>
</template>
</v-text-field>
@@ -21,6 +26,7 @@
import { getCurrentInstance, onMounted, onUnmounted, ref } from 'vue'
const { proxy } = getCurrentInstance()
const inputRef = ref(null)
const passwordShow = ref(true)
const input = ref('')
// 自动重新聚焦
function autoInputFocus() {

View File

@@ -0,0 +1,64 @@
<template>
<div>
<v-btn class="bg-blue-darken-1 mb-2" size="x-large" @click="getList()">
刷新
</v-btn>
<vxe-table v-loading="loading" :data="list">
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="jobDateTime" title="提交时间"></vxe-column>
<vxe-column field="processName" title="工序"></vxe-column>
<vxe-column field="finishNum" title="完成数"></vxe-column>
<vxe-column field="badNum" title="不良数"></vxe-column>
<vxe-column field="worker" title="作业员"></vxe-column>
</vxe-table>
<pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
@pagination="getList" />
</div>
</template>
<script setup>
const { proxy } = getCurrentInstance()
const props = defineProps({
workorder: {
type: String,
default: ''
},
processId: {
type: [String, Number],
default: ''
},
})
watch([() => props.workorder, () => props.processId], () => {
getList();
})
const loading = ref(false)
const list = ref([])
const total = ref(0)
const queryParams = reactive({
name: '',
pageNum: 1,
pageSize: 10,
processId: null,
})
import { GetReportByProcessId } from '@/api/reportFlow/index'
function getList() {
loading.value = true
list.value = []
let params = queryParams
params.workorder = props.workorder
params.processId = props.processId
GetReportByProcessId(params).then(res => {
const { code, data } = res
if (code == 200) {
list.value = data.result
total.value = data.totalNum
loading.value = false
}
})
}
onMounted(() => {
getList()
})
</script>
<style scoped></style>

View File

@@ -0,0 +1,78 @@
<template>
<div>
<v-text-field label="作业员" v-model="queryParams.name">
<template v-slot:append>
<v-btn class="bg-blue-darken-1" size="x-large" @click="getList()">
搜索
</v-btn>
</template>
</v-text-field>
<vxe-table v-loading="loading" :data="list">
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="worker" title="作业员"></vxe-column>
<vxe-column field="processName" title="工序"></vxe-column>
<vxe-column field="jobDateTime" title="提交时间"></vxe-column>
<vxe-column field="finishNum" title="完成数"></vxe-column>
<vxe-column field="badNum" title="不良数"></vxe-column>
</vxe-table>
<pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
@pagination="getList" />
</div>
</template>
<script setup>
const { proxy } = getCurrentInstance()
const props = defineProps({
workorder: {
type: String,
default: ''
},
processId: {
type: [String, Number],
default: ''
},
})
// watch([() => props.workorder, () => props.processId], () => {
// getList();
// })
const loading = ref(false)
const list = ref([])
const total = ref(0)
const queryParams = reactive({
name: '',
pageNum: 1,
pageSize: 10,
processId: null,
})
import { GetReportInfoByName } from '@/api/reportFlow/index'
function getList() {
if (queryParams.name === '') {
let msgJson = {
dialog: true,
class: 'bg-amber',
title: '异常提示',
text: '请扫姓名拼音'
}
proxy.$emit('openMessage', msgJson)
return
}
loading.value = true
list.value = []
let params = queryParams
params.workorder = props.workorder
params.processId = props.processId
GetReportInfoByName(params).then(res => {
const { code, data } = res
if (code == 200) {
list.value = data.result
total.value = data.totalNum
loading.value = false
}
})
}
onMounted(() => {
})
</script>
<style scoped></style>

View File

@@ -0,0 +1,86 @@
<template>
<div>
<div class="mb-2">
<el-form inline="">
<el-form-item label="开始时间">
<el-date-picker :clearable="false" v-model="queryParams.startDate" type="date" size="large" />
</el-form-item>
<el-form-item label="结束时间">
<el-date-picker :clearable="false" v-model="queryParams.endDate" type="date" size="large" />
</el-form-item>
<el-form-item>
<el-button type="primary" size="large" @click="getList()">
查询
</el-button>
</el-form-item>
</el-form>
</div>
<vxe-table height="600" v-loading="loading" :data="list">
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="workorder" title="工单号"></vxe-column>
<vxe-column field="productionName" title="主体品名"></vxe-column>
<vxe-column field="productionCode" title="主体型号"></vxe-column>
<vxe-column field="stoveCode" title="炉号"></vxe-column>
<vxe-column field="planNum" title="计划数量"></vxe-column>
<vxe-column title="操作" width="160">
<template #default="{ row }">
<el-button type="success" @click="handleChouse(row)">选择</el-button>
</template>
</vxe-column>
</vxe-table>
<!-- <pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
@pagination="getList" /> -->
</div>
</template>
<script setup>
const { proxy } = getCurrentInstance()
const props = defineProps({
workorder: {
type: String,
default: ''
},
processId: {
type: [String, Number],
default: ''
},
})
// watch([() => props.workorder, () => props.processId], () => {
// getList();
// })
const loading = ref(false)
const list = ref([])
const total = ref(0)
const queryParams = reactive({
name: '',
startDate: proxy.dayjs().startOf('day').toDate(),
endDate: proxy.dayjs().endOf('day').toDate(),
pageNum: 1,
pageSize: 10,
processId: null,
})
import { GetWorkOrdersByDate } from '@/api/reportFlow/index'
function getList() {
loading.value = true
list.value = []
let params = queryParams
params.workorder = props.workorder
params.processId = props.processId
GetWorkOrdersByDate(params).then(res => {
const { code, data } = res
if (code == 200) {
list.value = data
loading.value = false
}
})
}
function handleChouse(row) {
proxy.$emit('chouseWorkorder', row.workorder)
}
onMounted(() => {
getList()
})
</script>
<style scoped></style>

View File

@@ -0,0 +1,53 @@
<template>
<div>
<v-btn class="bg-blue-darken-1 mb-2" size="x-large" @click="getList()">
刷新
</v-btn>
<vxe-table v-loading="loading" :data="list">
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="processName" title="工序"></vxe-column>
<vxe-column field="finishNum" title="完成数"></vxe-column>
<vxe-column field="badNum" title="不良数"></vxe-column>
<vxe-column field="worker" title="作业员"></vxe-column>
<vxe-column field="jobDateTime" title="提交时间"></vxe-column>
</vxe-table>
</div>
</template>
<script setup>
const { proxy } = getCurrentInstance()
const props = defineProps({
workorder: {
type: String,
default: ''
},
processId: {
type: [String, Number],
default: ''
},
})
watch([() => props.workorder, () => props.processId], () => {
getList();
})
const loading = ref(false)
const list = ref([])
import { GetWorkOrderReportWorkList } from '@/api/reportFlow/index'
function getList() {
loading.value = true
list.value = []
const params = { workorder: props.workorder, processId: props.processId }
GetWorkOrderReportWorkList(params).then(res => {
if (res.code == 200) {
list.value = res.data
} else {
list.value = []
}
loading.value = false
})
}
onMounted(() => {
getList()
})
</script>
<style scoped></style>

View File

@@ -8,6 +8,7 @@
<v-tab value="此工单工序记录">此工单工序记录</v-tab>
<v-tab value="此工序今日记录">此工序今日记录</v-tab>
<v-tab value="员工报工记录">员工报工记录</v-tab>
<v-tab value="工单查看">工单查看</v-tab>
</v-tabs>
<v-card-text>
<v-fade-transition>
@@ -33,57 +34,29 @@
</v-tabs-window-item>
<v-tabs-window-item value="此工单工序记录">
<el-card v-if="formData.workorder" class="mt-4">
<vxe-table align="center" :data="reportWorkerOrderList">
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="processName" title="工序"></vxe-column>
<vxe-column field="finishNum" title="完成数"></vxe-column>
<vxe-column field="badNum" title="不良数"></vxe-column>
<vxe-column field="worker" title="作业员"></vxe-column>
<vxe-column field="jobDateTime" title="提交时间"></vxe-column>
</vxe-table>
<TheWorkOrderProcessRecord :workorder="formData.workorder"
:processId="processId">
</TheWorkOrderProcessRecord>
</el-card>
</v-tabs-window-item>
<v-tabs-window-item value="此工序今日记录">
<el-card class="mt-4">
<v-btn style="margin-bottom: 20px" class="bg-blue-darken-1 margin-bottom-4"
size="x-large" @click="nowdayReportOrderList()">
搜索
</v-btn>
<vxe-table align="center" :data="nowdayReportDataList">
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="processName" title="工序"></vxe-column>
<vxe-column field="finishNum" title="完成数"></vxe-column>
<vxe-column field="badNum" title="不良数"></vxe-column>
<vxe-column field="worker" title="作业员"></vxe-column>
<vxe-column field="jobDateTime" title="提交时间"></vxe-column>
</vxe-table>
<pagination :total="total1" v-model:page="queryParams1.pageNum"
v-model:limit="queryParams1.pageSize" @pagination="nowdayReportOrderList" />
<TheDayAllProcessRecord :workorder="formData.workorder" :processId="processId">
</TheDayAllProcessRecord>
</el-card>
</v-tabs-window-item>
<v-tabs-window-item value="员工报工记录">
<el-card class="mt-4">
<div>
<v-text-field label="作业员" v-model="queryParams2.name">
<template v-slot:append>
<v-btn class="bg-blue-darken-1" size="x-large"
@click="queryUserReport()">
搜索
</v-btn>
</template>
</v-text-field>
</div>
<vxe-table v-loading="loading" align="center" :data="userReportDataList">
<vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="workorder" title="工单号"></vxe-column>
<vxe-column field="processName" title="工序"></vxe-column>
<vxe-column field="finishNum" title="完成数"></vxe-column>
<vxe-column field="badNum" title="不良数"></vxe-column>
<vxe-column field="worker" title="作业员"></vxe-column>
<vxe-column field="jobDateTime" title="提交时间"></vxe-column>
</vxe-table>
<pagination :total="total2" v-model:page="queryParams2.pageNum"
v-model:limit="queryParams2.pageSize" @pagination="queryUserReport" />
<ThePersonReportRecord :workorder="formData.workorder" :processId="processId"
@openMessage="showDialog">
</ThePersonReportRecord>
</el-card>
</v-tabs-window-item>
<v-tabs-window-item value="工单查看">
<el-card class="mt-4">
<TheWorkOrderList :workorder="formData.workorder" :processId="processId"
@chouseWorkorder="getFormData">
</TheWorkOrderList>
</el-card>
</v-tabs-window-item>
</v-tabs-window>
@@ -154,9 +127,15 @@
</template>
<script setup>
const { proxy } = getCurrentInstance()
import * as ReportApi from '@/api/reportFlow/index'
import scanInput from '../components/scanInput.vue'
import ThePersonReportRecord from './components/ThePersonReportRecord.vue'
import TheWorkOrderProcessRecord from './components/TheWorkOrderProcessRecord.vue'
import TheDayAllProcessRecord from './components/TheDayAllProcessRecord.vue'
import TheWorkOrderList from './components/TheWorkOrderList.vue'
const processOptions = [
{
value: 10,
@@ -256,12 +235,12 @@ function getFormData(workorder) {
formData.value = res.data
ReportApi.GetProcessReportWorkDetail(params).then(res2 => {
if (!res2.data) {
formData.value.finishNum = 0;
formData.value.finishNum = formData.value.planNum;
formData.value.badNum = 0;
formData.value.worker = '';
}
else {
formData.value.finishNum = res2.data.finishNum ?? 0;
formData.value.finishNum = res2.data.finishNum;
formData.value.badNum = res2.data.badNum ?? 0;
formData.value.worker = res2.data.worker;
if (formData.value.finishNum > 0) {
@@ -339,6 +318,12 @@ function submit() {
})
}
function showDialog(dialogJson = {}) {
dialog.show = true
dialog.class = dialogJson.class
dialog.title = dialogJson.title
dialog.text = dialogJson.text
}
const queryParams1 = reactive({
name: '',