fix user exprience

main
chenshuichuan 2 years ago
parent c8b3f089f3
commit ccdbf74a77

@ -22,7 +22,10 @@ export const ProduceReportApi = {
getProduceReportPage: async (params: any) => { getProduceReportPage: async (params: any) => {
return await request.get({ url: `/mes/produce-report/page`, params }) return await request.get({ url: `/mes/produce-report/page`, params })
}, },
// 查询生产报工单分页
getDailyReportPage: async (params: any) => {
return await request.get({ url: `/mes/produce-report/pageDailyReport`, params })
},
// 查询生产报工单详情 // 查询生产报工单详情
getProduceReport: async (id: number) => { getProduceReport: async (id: number) => {
return await request.get({ url: `/mes/produce-report/get?id=` + id }) return await request.get({ url: `/mes/produce-report/get?id=` + id })

@ -13,7 +13,16 @@
<el-form-item label="编码" prop="code"> <el-form-item label="编码" prop="code">
<el-input disabled v-model="formData.code" placeholder="请输入编码" /> <el-input disabled v-model="formData.code" placeholder="请输入编码" />
</el-form-item> </el-form-item>
<el-col :span="12">
<el-form-item label="上次抄表时间" prop="lastCheckTime">
<el-date-picker
v-model="formData.lastCheckTime"
type="date"
value-format="x"
placeholder="选择上次抄表时间"
/>
</el-form-item>
</el-col>
<el-form-item label="最后抄表值" prop="lastCheckValue"> <el-form-item label="最后抄表值" prop="lastCheckValue">
<el-input v-model="formData.lastCheckValue" placeholder="请输入最后抄表值" /> <el-input v-model="formData.lastCheckValue" placeholder="请输入最后抄表值" />
</el-form-item> </el-form-item>

@ -94,21 +94,12 @@ const formRef = ref() // 表单 Ref
/** 打开弹窗 */ /** 打开弹窗 */
const open = async (type: string, id?: number, deviceId: number) => { const open = async (type: string, id?: number, deviceId: number, deviceType: string) => {
dialogVisible.value = true dialogVisible.value = true
dialogTitle.value = t('action.' + type) dialogTitle.value = t('action.' + type) +':'+ deviceType+'抄表'
formType.value = type formType.value = type
resetForm() resetForm()
formData.value.deviceId = deviceId formData.value.deviceId = deviceId
//
// if (id) {
// formLoading.value = true
// try {
// formData.value = await EnergyDeviceApi.getEnergyDeviceCheckRecord(id)
// } finally {
// formLoading.value = false
// }
// }
const data = await EnergyDeviceApi.getEnergyDevice(deviceId) const data = await EnergyDeviceApi.getEnergyDevice(deviceId)
formData.value.lastCheckValue = data.lastCheckValue formData.value.lastCheckValue = data.lastCheckValue
formData.value.lastCheckTime = data.lastCheckTime formData.value.lastCheckTime = data.lastCheckTime

@ -1,33 +1,34 @@
<template> <template>
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-button <!-- <el-button-->
type="primary" <!-- type="primary"-->
plain <!-- plain-->
@click="openForm('create')" <!-- @click="openForm('create')"-->
v-hasPermi="['mes:energy-device:create']" <!-- v-hasPermi="['mes:energy-device:create']"-->
> <!-- >-->
<Icon icon="ep:plus" class="mr-5px" /> 新增抄表 <!-- <Icon icon="ep:plus" class="mr-5px" /> 新增抄表-->
</el-button> <!-- </el-button>-->
<!-- <el-text style="color:#339c1e;">{{props.deviceName}}</el-text>-->
<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 <el-table-column
label="上次抄表时间" label="抄表时间"
align="center" align="center"
prop="lastCheckTime" prop="checkTime"
:formatter="dateFormatter" :formatter="dateFormatter"
width="150px" width="170px"
sortable sortable
/> />
<el-table-column label="上次抄表值" align="center" prop="lastCheckValue" /> <el-table-column
<el-table-column label="上次抄表时间"
label="抄表时间"
align="center" align="center"
prop="checkTime" prop="lastCheckTime"
:formatter="dateFormatter" :formatter="dateFormatter"
width="150px" width="170px"
sortable sortable
/> />
<el-table-column label="抄表值" align="center" prop="checkValue" /> <el-table-column label="抄表值" align="center" prop="checkValue" />
<el-table-column label="上次抄表值" align="center" prop="lastCheckValue" />
<el-table-column label="差值" align="center" prop="diffValue" /> <el-table-column label="差值" align="center" prop="diffValue" />
<el-table-column label="单价" align="center" prop="unitPrice" /> <el-table-column label="单价" align="center" prop="unitPrice" />
<el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="备注" align="center" prop="remark" />
@ -80,6 +81,7 @@ const message = useMessage() // 消息弹窗
const props = defineProps<{ const props = defineProps<{
deviceId?: number // Id deviceId?: number // Id
deviceName?: string
}>() }>()
const loading = ref(false) // const loading = ref(false) //
const list = ref([]) // const list = ref([]) //
@ -128,7 +130,7 @@ const openForm = (type: string, id?: number) => {
message.error('请选择一个能源设备') message.error('请选择一个能源设备')
return return
} }
formRef.value.open(type, id, props.deviceId) formRef.value.open(type, id, props.deviceId,props.deviceName)
} }
/** 删除按钮操作 */ /** 删除按钮操作 */

@ -68,8 +68,8 @@
highlight-current-row highlight-current-row
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
> >
<el-table-column label="名称" align="center" prop="name" />
<el-table-column label="编码" align="center" prop="code" /> <el-table-column label="编码" align="center" prop="code" />
<el-table-column label="名称" align="center" prop="name" />
<el-table-column label="设备类型" align="center" prop="deviceType"> <el-table-column label="设备类型" align="center" prop="deviceType">
<template #default="scope"> <template #default="scope">
<dict-tag :type="DICT_TYPE.MES_ENERGY_DEVICE_TYPE" :value="scope.row.deviceType" /> <dict-tag :type="DICT_TYPE.MES_ENERGY_DEVICE_TYPE" :value="scope.row.deviceType" />
@ -91,22 +91,15 @@
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.isEnable" /> <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.isEnable" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column label="操作" fixed="right" align="center" width="200px">
label="创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="操作" fixed="right" align="center" width="150px">
<template #default="scope"> <template #default="scope">
<el-button <el-button
link link
type="primary" type="warning"
@click="openForm('update', scope.row.id)" @click="newRecordForm(scope.row.id,scope.row.name )"
v-hasPermi="['mes:energy-device:update']" v-hasPermi="['mes:energy-device:update']"
> >
编辑 抄表
</el-button> </el-button>
<el-button <el-button
link link
@ -116,6 +109,14 @@
> >
重置 重置
</el-button> </el-button>
<el-button
link
type="primary"
@click="openForm('update', scope.row.id)"
v-hasPermi="['mes:energy-device:update']"
>
编辑
</el-button>
<el-button <el-button
link link
type="danger" type="danger"
@ -136,15 +137,18 @@
/> />
</ContentWrap> </ContentWrap>
<!-- 表单弹窗添加/修改 --> <!-- 新增设备表单弹窗添加/修改 -->
<EnergyDeviceForm ref="formRef" @success="getList" /> <EnergyDeviceForm ref="formRef" @success="getList" />
<!-- 表单弹窗添加/修改 --> <!-- 重置弹窗添加/修改 -->
<ResetForm ref="resetFormRef" @success="getList" /> <ResetForm ref="resetFormRef" @success="getList" />
<!-- 抄表弹窗添加/修改 -->
<EnergyDeviceCheckRecordForm ref="newRecordFormRef" @success="getList" />
<!-- 子表的列表 --> <!-- 子表的列表 -->
<ContentWrap> <ContentWrap>
<el-tabs model-value="energyDeviceCheckRecord"> <el-tabs model-value="energyDeviceCheckRecord">
<el-tab-pane label="抄表记录" name="energyDeviceCheckRecord"> <el-tab-pane :label="'抄表记录: '+currentRow.name" name="energyDeviceCheckRecord">
<EnergyDeviceCheckRecordList :device-id="currentRow.id" /> <EnergyDeviceCheckRecordList :device-id="currentRow.id" :device-name="currentRow.name" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</ContentWrap> </ContentWrap>
@ -158,6 +162,8 @@ import { EnergyDeviceApi, EnergyDeviceVO } from '@/api/mes/energydevice'
import EnergyDeviceForm from './EnergyDeviceForm.vue' import EnergyDeviceForm from './EnergyDeviceForm.vue'
import ResetForm from './ResetForm.vue' import ResetForm from './ResetForm.vue'
import EnergyDeviceCheckRecordList from './components/EnergyDeviceCheckRecordList.vue' import EnergyDeviceCheckRecordList from './components/EnergyDeviceCheckRecordList.vue'
import EnergyDeviceCheckRecordForm
from "@/views/mes/energydevice/components/EnergyDeviceCheckRecordForm.vue";
/** 能源设备 列表 */ /** 能源设备 列表 */
defineOptions({ name: 'EnergyDevice' }) defineOptions({ name: 'EnergyDevice' })
@ -192,6 +198,9 @@ const getList = async () => {
const data = await EnergyDeviceApi.getEnergyDevicePage(queryParams) const data = await EnergyDeviceApi.getEnergyDevicePage(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
if(list.value.length>0){
currentRow.value = list.value[0]
}
} finally { } finally {
loading.value = false loading.value = false
} }
@ -257,4 +266,11 @@ const handleCurrentChange = (row) => {
onMounted(() => { onMounted(() => {
getList() getList()
}) })
/** 添加/修改操作 */
const newRecordFormRef = ref()
const newRecordForm = (id: number, deviceType: string) => {
//type: string, id?: number, deviceId: number, deviceType: string
newRecordFormRef.value.open("create", null, id, deviceType)
}
</script> </script>

@ -206,7 +206,7 @@
type="primary" type="primary"
@click="handleStatus(scope.row.code, scope.row.id, 'start',2,'开工')" @click="handleStatus(scope.row.code, scope.row.id, 'start',2,'开工')"
v-hasPermi="['mes:plan:update']" v-hasPermi="['mes:plan:update']"
v-if="scope.row.status === 1 || scope.row.status ===4" v-if="scope.row.status === 1 || scope.row.status ===3"
> >
开工 开工
</el-button> </el-button>

@ -19,6 +19,7 @@
end-placeholder="结束日期" end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px" class="!w-240px"
@change="handleQuery"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -30,6 +31,7 @@
:key="item.id" :key="item.id"
:label="item.nickname" :label="item.nickname"
:value="item.id" :value="item.id"
@change="handleQuery"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -56,6 +58,7 @@
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
@change="handleQuery"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -69,7 +72,7 @@
v-for="dict in getStrDictOptions(DICT_TYPE.MES_ORG_TYPE)" v-for="dict in getStrDictOptions(DICT_TYPE.MES_ORG_TYPE)"
:key="dict.value" :key="dict.value"
:label="dict.value" :label="dict.value"
@change="changeDate" @change="handleQuery"
> >
{{ dict.label }} {{ dict.label }}
</el-radio> </el-radio>
@ -96,6 +99,21 @@
<el-tab-pane label="计时报表" name="jishi" /> <el-tab-pane label="计时报表" name="jishi" />
</el-tabs> </el-tabs>
<ContentWrap v-if="typeName==='jijian'"> <ContentWrap v-if="typeName==='jijian'">
<el-row>
<el-col :span="4">
<el-text>本页产品总数{{totalNumber}} </el-text>
</el-col>
<el-col :span="4">
<el-text>成品总数{{totalQuality}} </el-text>
</el-col>
<el-col :span="4">
<el-text>废品总数{{totalWaste}} </el-text>
</el-col>
<el-col :span="4">
<el-text>成品率{{erpNumberFormatter(Number(totalQuality)/Number(totalNumber)*100,3)+'%'}} </el-text>
</el-col>
</el-row>
<el-divider />
<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 <el-table-column
label="报工日期" label="报工日期"
@ -142,6 +160,8 @@
</ContentWrap> </ContentWrap>
<!-- 列表 --> <!-- 列表 -->
<ContentWrap v-if="typeName==='jishi'"> <ContentWrap v-if="typeName==='jishi'">
<el-text>本页总计时数{{totalTime}} </el-text>
<el-divider />
<el-table v-loading="loading" :data="listJiShi" :stripe="true" :show-overflow-tooltip="true"> <el-table v-loading="loading" :data="listJiShi" :stripe="true" :show-overflow-tooltip="true">
<el-table-column <el-table-column
label="报工日期" label="报工日期"
@ -205,7 +225,7 @@ import {defaultProps, handleTree} from "@/utils/tree";
import * as UserApi from "@/api/system/user"; import * as UserApi from "@/api/system/user";
import {OrganizationApi} from "@/api/mes/organization"; import {OrganizationApi} from "@/api/mes/organization";
import {ProductApi, ProductVO} from "@/api/erp/product/product"; import {ProductApi, ProductVO} from "@/api/erp/product/product";
import {erpCountTableColumnFormatter} from "@/utils"; import {erpCountTableColumnFormatter, erpNumberFormatter} from "@/utils";
import {useUserStore} from "@/store/modules/user"; import {useUserStore} from "@/store/modules/user";
import {checkPermi} from "@/utils/permission"; import {checkPermi} from "@/utils/permission";
import ProduceReportDetailList import ProduceReportDetailList
@ -228,6 +248,11 @@ const total = ref(0) // 列表的总页数
const listJiShi = ref<ProduceReportVO[]>([]) // const listJiShi = ref<ProduceReportVO[]>([]) //
const totalJiShi = ref(0) // const totalJiShi = ref(0) //
const totalNumber = ref(0) //
const totalQuality = ref(0) //
const totalWaste = ref(0) //
const totalTime = ref(0) //
const queryParams = reactive({ const queryParams = reactive({
pageNo: 1, pageNo: 1,
pageSize: 10, pageSize: 10,
@ -238,6 +263,7 @@ const queryParams = reactive({
orgId: undefined, orgId: undefined,
orgType: undefined, orgType: undefined,
wasteReason: undefined, wasteReason: undefined,
totalTime: undefined,
remark: undefined, remark: undefined,
isEnable: undefined, isEnable: undefined,
createTime: [], createTime: [],
@ -256,16 +282,33 @@ const getList = async () => {
queryParams.reportStatus = 2 queryParams.reportStatus = 2
// //
if(typeName.value ==='jishi'){ if(typeName.value ==='jishi'){
const data = await ProduceReportApi.getProduceReportPage(queryParams) queryParams.totalTime=0
const data = await ProduceReportApi.getDailyReportPage(queryParams)
listJiShi.value = data.list listJiShi.value = data.list
totalJiShi.value = data.total totalJiShi.value = data.total
let sumTime= 0;
// value
for (let entity of listJiShi.value) {
sumTime += entity.totalTime
}
totalTime.value = sumTime
} }
// //
else{ else{
const data = await ProduceReportDetailApi.getProduceReportDetailPage(queryParams) const data = await ProduceReportDetailApi.getProduceReportDetailPage(queryParams)
list.value = data.list list.value = data.list
total.value = data.total total.value = data.total
// 0
let sumQuality= 0;
let sumWaste= 0;
// value
for (let entity of list.value) {
sumQuality += entity.qualityNumber;
sumWaste += entity.wasteNumber
}
totalQuality.value = sumQuality
totalWaste.value = sumWaste
totalNumber.value = Number(totalQuality.value)+Number(totalWaste.value)
} }
} finally { } finally {
loading.value = false loading.value = false
@ -293,6 +336,7 @@ const handleExport = async () => {
exportLoading.value = true exportLoading.value = true
//v //v
queryParams.reportStatus = 2 queryParams.reportStatus = 2
queryParams.totalTime=0
// //
if(typeName.value ==='jishi'){ if(typeName.value ==='jishi'){
const data = await ProduceReportApi.exportProduceReport(queryParams) const data = await ProduceReportApi.exportProduceReport(queryParams)

@ -140,6 +140,7 @@ const formRules = reactive<FormRules>({
], ],
mobile: [ mobile: [
{ {
required: true,
pattern: /^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/, pattern: /^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/,
message: '请输入正确的手机号码', message: '请输入正确的手机号码',
trigger: 'blur' trigger: 'blur'

Loading…
Cancel
Save