| | |
| | | <script setup> |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | let router=useRouter() |
| | | const getTableRow = (row,type) =>{ |
| | | switch (type) { |
| | | case 'edit' :{ |
| | | //alert('我接收到子组件传送的编辑信息') |
| | | router.push({path: '/main/reportingWorks/ReportingWorkDetail', query: { id: row.id }}) |
| | | break |
| | | } |
| | | case 'delete':{ |
| | | alert('我接收到子组件传送的删除信息') |
| | | break |
| | | } |
| | | case 'setType':{ |
| | | alert('我接收到子组件传送的反审状态') |
| | | break |
| | | } |
| | | } |
| | | } |
| | | import {computed, nextTick, onMounted, reactive, ref, toRefs} from "vue"; |
| | | import {useRouter, useRoute} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import userInfo from "@/stores/userInfo" |
| | | import {useI18n} from 'vue-i18n' |
| | | import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | //语言获取 |
| | | const {t} = useI18n() |
| | | const route = useRoute() |
| | | const user = userInfo() |
| | | let router = useRouter() |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | | let count = 0 |
| | | list.forEach(item => { |
| | | count += Number(item[field]) |
| | | }) |
| | | return count.toFixed(2) |
| | | } |
| | | //定义接收加载表头下拉数据 |
| | | const titleSelectJson = ref({ |
| | | processType: [], |
| | | |
| | | }) |
| | | //第一次加载数据 |
| | | request.post(`/basicDataProduce/selectProcess`).then((res) => { |
| | | if (res.code == 200) { |
| | | |
| | | titleSelectJson.value.processType = res.data.process; |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | |
| | | onMounted(() => { |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value, gridOptions) |
| | | }) |
| | | |
| | | |
| | | //子组件接收参数 |
| | | |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | border: "full",//表格加边框 |
| | | border: "full",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 |
| | | stripe: true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY:{ enabled: true },//开启虚拟滚动 |
| | | showOverflow:true, |
| | | scrollY: {enabled: true},//开启虚拟滚动 |
| | | showOverflow: true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[ |
| | | { type: 'seq',fixed:"left", title: '自序', width: 50 }, |
| | | columns: [ |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | { |
| | | field: 'basicName', |
| | | title: '设备名称', |
| | | width: 500, |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | }, |
| | | |
| | | {field: 'standardName', title: '标准名称',editRender: { name: 'input', attrs: { placeholder: '' } } }, |
| | | {field: 'deviceName', title: '设备名称',editRender: { name: 'input', attrs: { placeholder: '' } } }, |
| | | {field: 'buyingTime', title: '购买时间',editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'installationTime',title: '安装时间',editRender: { name: 'input', attrs: { placeholder: '' } } }, |
| | | {field: 'serviceInterval', title: '保养周期',editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'process', title: '所在工艺', editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | { |
| | | field: 'basicCategory', |
| | | title: '所在工序', |
| | | width: 500, |
| | | editRender: {}, |
| | | slots: {default: 'basicCategory_default', edit: 'basicCategory'} |
| | | }, |
| | | ], |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {code: 'print_lck', name: '保存',status:'primary' ,icon:'vxe-icon-save'}, |
| | | {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'}, |
| | | {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'}, |
| | | {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'}, |
| | | ], |
| | | import: false, |
| | | export: true, |
| | | print: true, |
| | | // import: false, |
| | | // export: true, |
| | | // print: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: [ |
| | | { |
| | | standardName: '', |
| | | deviceName: '', |
| | | buyingTime: '', |
| | | installationTime: '', |
| | | serviceInterval:'', |
| | | process:'', |
| | | |
| | | }, |
| | | { |
| | | standardName: '', |
| | | deviceName: '', |
| | | buyingTime: '', |
| | | installationTime: '', |
| | | serviceInterval:'', |
| | | process:'', |
| | | |
| | | }, |
| | | { |
| | | standardName: '', |
| | | deviceName: '', |
| | | buyingTime: '', |
| | | installationTime: '', |
| | | serviceInterval:'', |
| | | process:'', |
| | | |
| | | }, |
| | | { |
| | | standardName: '', |
| | | deviceName: '', |
| | | buyingTime: '', |
| | | installationTime: '', |
| | | serviceInterval:'', |
| | | process:'', |
| | | |
| | | }, |
| | | { |
| | | standardName: '', |
| | | deviceName: '', |
| | | buyingTime: '', |
| | | installationTime: '', |
| | | serviceInterval:'', |
| | | process:'', |
| | | |
| | | }, |
| | | ],//table body实际数据 |
| | | data: [],//table body实际数据 |
| | | //脚部求和 |
| | | footerMethod ({ columns, data }) {//页脚函数 |
| | | let footList=['maintenanceFrequency','MaintenancesFrequency'] |
| | | return[ |
| | | footerMethod({columns, data}) {//页脚函数 |
| | | let footList = ['', ''] |
| | | return [ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | |
| | | |
| | | }) |
| | | |
| | | const teamGridEvents = { |
| | | toolbarButtonClick({code}) { |
| | | const $grid = xGrid.value |
| | | if ($grid) { |
| | | switch (code) { |
| | | case 'addRow': { |
| | | $grid.insertAt({}) |
| | | break |
| | | } |
| | | |
| | | case 'removeRow': { |
| | | let result = toolbarButtonClickEvent() |
| | | if (result) { |
| | | $grid.remove(result.row) |
| | | } |
| | | break |
| | | } |
| | | case 'save': { |
| | | const tableData = $grid.getTableData().fullData |
| | | //console.log(tableData) |
| | | let machineData = ref({ |
| | | machine: tableData |
| | | }) |
| | | request.post("/maintenance/saveMachine", machineData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("保存成功") |
| | | //router.push('/main/processCard/SplittingDetails?orderId=${orderId}') |
| | | router.push({ |
| | | path: '/main/machine/AddMachine', |
| | | query: {random: Math.random()} |
| | | }) |
| | | |
| | | //location.reload(); |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | const size = ref<'default' | 'large' | 'small'>('default') |
| | | |
| | | const value1 = ref('') |
| | | const dialogFormVisible = ref(false) |
| | | const formLabelWidth = '140px' |
| | | |
| | | const form = reactive({ |
| | | name: '', |
| | | region: '', |
| | | date1: '', |
| | | date2: '', |
| | | delivery: false, |
| | | type: [], |
| | | resource: '', |
| | | desc: '', |
| | | }) |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <vxe-grid |
| | | max-height="100%" |
| | | @filter-change="filterChanged" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | class="mytable-scrollbar" |
| | | height="650px" |
| | | max-height="100%" |
| | | v-bind="gridOptions" |
| | | v-on="teamGridEvents" |
| | | @filter-change="filterChanged" |
| | | |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | | <!-- 下拉显示所有信息插槽--> |
| | | <template #content="{ row}"> |
| | | <ul class="expand-wrapper"> |
| | | <li v-for="(item,key,index) in row"> |
| | | <span style="font-weight: bold">{{key+': '}}</span> |
| | | <span>{{ item }}</span> |
| | | </li> |
| | | </ul> |
| | | </template> |
| | | |
| | | <!--左边固定显示的插槽--> |
| | | <template #button_slot="{ row }"> |
| | | <el-button @click="dialogFormVisible = true" link type="primary" size="small">编辑</el-button> |
| | | <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/> |
| | | <input v-model="option.data" type="type" @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | <!--工序--> |
| | | <template #basicCategory="{ row }"> |
| | | <vxe-select v-model="row.basicCategory" |
| | | clearable |
| | | filterable |
| | | placeholder=""> |
| | | <vxe-option v-for="item in titleSelectJson.processType" |
| | | :key="item.basic_name" |
| | | :label="item.basic_name" |
| | | :value="item.basic_name"/> |
| | | </vxe-select> |
| | | </template> |
| | | <template #basicCategory_default="{ row }"> |
| | | <span>{{ row.basicCategory }}</span> |
| | | </template> |
| | | </vxe-grid> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .main-div-customer{ |
| | | width: 99%; |
| | | .main-div-customer { |
| | | width: 80%; |
| | | margin: 0 auto; |
| | | height: 100%; |
| | | } |
| | | .vxe-grid { |
| | | /* 禁用浏览器默认选中 */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| | |
| | | <script setup> |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | let router=useRouter() |
| | | const getTableRow = (row,type) =>{ |
| | | switch (type) { |
| | | case 'edit' :{ |
| | | //alert('我接收到子组件传送的编辑信息') |
| | | router.push({path: '/main/reportingWorks/ReportingWorkDetail', query: { id: row.id }}) |
| | | break |
| | | } |
| | | case 'delete':{ |
| | | alert('我接收到子组件传送的删除信息') |
| | | break |
| | | } |
| | | case 'setType':{ |
| | | alert('我接收到子组件传送的反审状态') |
| | | break |
| | | } |
| | | } |
| | | } |
| | | import {computed, nextTick, onMounted, reactive, ref, toRefs} from "vue"; |
| | | import {useRouter, useRoute} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import {ElMessage} from "element-plus"; |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import userInfo from "@/stores/userInfo" |
| | | import {useI18n} from 'vue-i18n' |
| | | import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | //语言获取 |
| | | const {t} = useI18n() |
| | | const route = useRoute() |
| | | const user = userInfo() |
| | | let router = useRouter() |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | | let count = 0 |
| | | list.forEach(item => { |
| | | count += Number(item[field]) |
| | | }) |
| | | return count.toFixed(2) |
| | | } |
| | | //定义接收加载表头下拉数据 |
| | | const titleSelectJson = ref({ |
| | | processType: [], |
| | | deviceType: [], |
| | | |
| | | }) |
| | | |
| | | const titleUploadData = ref({ |
| | | process: '', |
| | | }) |
| | | |
| | | onMounted(() => { |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value, gridOptions) |
| | | }) |
| | | |
| | | //第一次加载数据 |
| | | request.post(`/maintenance/selectData`).then((res) => { |
| | | if (res.code == 200) { |
| | | //工序下拉框 |
| | | titleSelectJson.value.processType = res.data.process; |
| | | //设备下拉框 |
| | | titleSelectJson.value.deviceType = res.data.device |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | |
| | | //子组件接收参数 |
| | | |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | border: "full",//表格加边框 |
| | | border: "full",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 |
| | | stripe: true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY:{ enabled: true },//开启虚拟滚动 |
| | | showOverflow:true, |
| | | scrollY: {enabled: true},//开启虚拟滚动 |
| | | showOverflow: true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[ |
| | | { type: 'seq',fixed:"left", title: '自序', width: 50 }, |
| | | {field: 'deviceName', width: 100,title: '设备名称', editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'types',width: 80, title: '类型',editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'faultDate', width: 100,title: '故障日期',editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'failureCause', width: 100,title: '故障原因', editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'maintenanceDate',width: 100, title: '保养日期', editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'maintenanceInstructions',width: 110, title: '保养说明', editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'RepairMaintenanceStartTime', width: 160,title: '维修/保养开始时间', editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'RepairMaintenanceEndTime',width: 160, title: '维修/保养结束时间', editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'process',width: 100, title: '所在工艺', editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'RepairMaintenancePersonnel',width: 150, title: '维修/保养人员', editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | {field: 'cost', title: '费用', editRender: { name: 'input', attrs: { placeholder: '' } }}, |
| | | ],//表头按钮 |
| | | columns: [ |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | { |
| | | field: 'deviceName', |
| | | title: '设备名称', |
| | | editRender: {}, |
| | | slots: {default: 'basicCategory_default', edit: 'deviceName'} |
| | | }, |
| | | { |
| | | field: 'type', |
| | | title: '类型', |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | }, |
| | | { |
| | | field: 'faultTime', |
| | | title: '故障日期', |
| | | editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}}, |
| | | }, |
| | | { |
| | | field: 'faultReason', |
| | | title: '故障原因', |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | }, |
| | | { |
| | | field: 'maintenanceTime', |
| | | title: '保养日期', |
| | | editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}}, |
| | | }, |
| | | { |
| | | field: 'maintenanceIllustrate', |
| | | title: '保养说明', |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | }, |
| | | { |
| | | field: 'startTime', |
| | | title: '维修/保养开始时间', |
| | | editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}}, |
| | | }, |
| | | { |
| | | field: 'stopTime', |
| | | title: '维修/保养结束时间', |
| | | editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}}, |
| | | }, |
| | | |
| | | { |
| | | field: 'process', |
| | | title: '所在工序', |
| | | editRender: {}, |
| | | slots: {default: 'reportingDeviceSort_default', edit: 'process'} |
| | | }, |
| | | { |
| | | field: 'personnel', |
| | | title: '维修/保养人员', |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | }, |
| | | { |
| | | field: 'cost', |
| | | title: '费用', |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | }, |
| | | ], |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {code: 'print_lck', name: '保存',status:'primary' ,icon:'vxe-icon-save'}, |
| | | {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'}, |
| | | {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'}, |
| | | {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'}, |
| | | ], |
| | | import: false, |
| | | export: true, |
| | | print: true, |
| | | // import: false, |
| | | // export: true, |
| | | // print: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: [ |
| | | { |
| | | deviceName: '', |
| | | types: '', |
| | | faultDate: '', |
| | | failureCause: '', |
| | | maintenanceDate:'', |
| | | maintenanceInstructions:'', |
| | | RepairMaintenanceStartTime:'', |
| | | RepairMaintenanceEndTime:'', |
| | | process:'', |
| | | RepairMaintenancePersonnel:'', |
| | | cost:'', |
| | | |
| | | }, |
| | | { |
| | | deviceName: '', |
| | | types: '', |
| | | faultDate: '', |
| | | failureCause: '', |
| | | maintenanceDate:'', |
| | | maintenanceInstructions:'', |
| | | RepairMaintenanceStartTime:'', |
| | | RepairMaintenanceEndTime:'', |
| | | process:'', |
| | | RepairMaintenancePersonnel:'', |
| | | cost:'', |
| | | |
| | | }, |
| | | { |
| | | deviceName: '', |
| | | types: '', |
| | | faultDate: '', |
| | | failureCause: '', |
| | | maintenanceDate:'', |
| | | maintenanceInstructions:'', |
| | | RepairMaintenanceStartTime:'', |
| | | RepairMaintenanceEndTime:'', |
| | | process:'', |
| | | RepairMaintenancePersonnel:'', |
| | | cost:'', |
| | | |
| | | }, |
| | | { |
| | | deviceName: '', |
| | | types: '', |
| | | faultDate: '', |
| | | failureCause: '', |
| | | maintenanceDate:'', |
| | | maintenanceInstructions:'', |
| | | RepairMaintenanceStartTime:'', |
| | | RepairMaintenanceEndTime:'', |
| | | process:'', |
| | | RepairMaintenancePersonnel:'', |
| | | cost:'', |
| | | |
| | | }, |
| | | { |
| | | deviceName: '', |
| | | types: '', |
| | | faultDate: '', |
| | | failureCause: '', |
| | | maintenanceDate:'', |
| | | maintenanceInstructions:'', |
| | | RepairMaintenanceStartTime:'', |
| | | RepairMaintenanceEndTime:'', |
| | | process:'', |
| | | RepairMaintenancePersonnel:'', |
| | | cost:'', |
| | | |
| | | }, |
| | | ],//table body实际数据 |
| | | data: [],//table body实际数据 |
| | | //脚部求和 |
| | | footerMethod ({ columns, data }) {//页脚函数 |
| | | let footList=['maintenanceFrequency','MaintenancesFrequency'] |
| | | return[ |
| | | footerMethod({columns, data}) {//页脚函数 |
| | | let footList = ['', ''] |
| | | return [ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | |
| | | |
| | | }) |
| | | |
| | | const teamGridEvents = { |
| | | toolbarButtonClick({code}) { |
| | | const $grid = xGrid.value |
| | | if ($grid) { |
| | | switch (code) { |
| | | case 'addRow': { |
| | | $grid.insertAt({}) |
| | | break |
| | | } |
| | | case 'removeRow': { |
| | | let result = toolbarButtonClickEvent() |
| | | if (result) { |
| | | $grid.remove(result.row) |
| | | } |
| | | break |
| | | } |
| | | case 'save': { |
| | | const tableData = $grid.getTableData().fullData |
| | | //console.log(tableData) |
| | | let machineData = ref({ |
| | | machine: tableData |
| | | }) |
| | | request.post("/maintenance/saveMaintenanceAndRepair", machineData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("保存成功") |
| | | //router.push('/main/processCard/SplittingDetails?orderId=${orderId}') |
| | | router.push({ |
| | | path: '/main/machine/AddMaintenanceAndRepair', |
| | | query: {random: Math.random()} |
| | | }) |
| | | |
| | | //location.reload(); |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | const size = ref<'default' | 'large' | 'small'>('default') |
| | | |
| | | const value1 = ref('') |
| | | const dialogFormVisible = ref(false) |
| | | const formLabelWidth = '140px' |
| | | |
| | | const form = reactive({ |
| | | name: '', |
| | | region: '', |
| | | date1: '', |
| | | date2: '', |
| | | delivery: false, |
| | | type: [], |
| | | resource: '', |
| | | desc: '', |
| | | const computedDevice = computed((name) => { |
| | | return function (name) { |
| | | return titleSelectJson.value.deviceType.filter((item) => { |
| | | |
| | | return item.basic_name === name |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | </script> |
| | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <vxe-grid |
| | | max-height="100%" |
| | | @filter-change="filterChanged" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | class="mytable-scrollbar" |
| | | height="650px" |
| | | max-height="100%" |
| | | v-bind="gridOptions" |
| | | |
| | | v-on="teamGridEvents" |
| | | @filter-change="filterChanged" |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | | <!-- 下拉显示所有信息插槽--> |
| | | <template #content="{ row}"> |
| | | <ul class="expand-wrapper"> |
| | | <li v-for="(item,key,index) in row"> |
| | | <span style="font-weight: bold">{{key+': '}}</span> |
| | | <span>{{ item }}</span> |
| | | </li> |
| | | </ul> |
| | | </template> |
| | | |
| | | <!--左边固定显示的插槽--> |
| | | <template #button_slot="{ row }"> |
| | | <el-button @click="dialogFormVisible = true" link type="primary" size="small">编辑</el-button> |
| | | <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/> |
| | | <input v-model="option.data" type="type" @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <!--设备--> |
| | | <template #deviceName="{ row }"> |
| | | <vxe-select v-model="row.deviceName" |
| | | clearable |
| | | filterable |
| | | placeholder=""> |
| | | <vxe-option v-for="item in titleSelectJson.deviceType" |
| | | :key="item.basic_name" |
| | | :label="item.basic_name" |
| | | :value="item.basic_name"/> |
| | | </vxe-select> |
| | | </template> |
| | | <template #basicCategory_default="{ row }"> |
| | | <span>{{ row.deviceName }}</span> |
| | | </template> |
| | | |
| | | |
| | | <!--工序--> |
| | | <template #process="{ row }"> |
| | | <vxe-select v-model="row.process" |
| | | clearable |
| | | filterable |
| | | placeholder=""> |
| | | <vxe-option v-for="item in computedDevice(row.deviceName)" :key="item.id" :label="item.basic_category" |
| | | :value="item.basic_category"/> |
| | | </vxe-select> |
| | | </template> |
| | | <template #reportingDeviceSort_default="{ row }"> |
| | | <span>{{ row.process }}</span> |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | | |
| | |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .main-div-customer{ |
| | | .main-div-customer { |
| | | width: 99%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .vxe-grid { |
| | | /* 禁用浏览器默认选中 */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| | |
| | | <script setup> |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | let router=useRouter() |
| | | const getTableRow = (row,type) =>{ |
| | | import {useRouter} from 'vue-router' |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import {useI18n} from 'vue-i18n' |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {ElMessage} from "element-plus"; |
| | | import request from "@/utils/request"; |
| | | //语言获取 |
| | | const {t} = useI18n() |
| | | let router = useRouter() |
| | | //定义数据返回结果 |
| | | let produceList = ref([]) |
| | | const getTableRow = (row, type) => { |
| | | switch (type) { |
| | | case 'edit' :{ |
| | | case 'edit' : { |
| | | //alert('我接收到子组件传送的编辑信息') |
| | | router.push({path: '/main/reportingWorks/ReportingWorkDetail', query: { id: row.id }}) |
| | | router.push({path: '/main/reportingWorks/ReportingWorkDetail', query: {id: row.id}}) |
| | | break |
| | | } |
| | | case 'delete':{ |
| | | alert('我接收到子组件传送的删除信息') |
| | | case 'delete': { |
| | | request.post(`/maintenance/deleteMaintenance/${row.id}`).then((res) => { |
| | | if (res.code === 200) { |
| | | ElMessage.success(t('workOrder.deleteOk')) |
| | | router.push({path: '/main/machine/MaintenanceAndRepair', query: {random:Math.random()}}) |
| | | } else { |
| | | |
| | | ElMessage.warning(res.msg) |
| | | |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | case 'setType':{ |
| | | case 'setType': { |
| | | alert('我接收到子组件传送的反审状态') |
| | | break |
| | | } |
| | |
| | | return count.toFixed(2) |
| | | } |
| | | |
| | | //子组件接收参数 |
| | | //首次加载 |
| | | request.post(`/maintenance/selectMaintenance`).then((res) => { |
| | | if (res.code === 200) { |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | |
| | | //子组件接收参数 |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | border: "full",//表格加边框 |
| | | border: "full",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 |
| | | stripe: true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY:{ enabled: true },//开启虚拟滚动 |
| | | showOverflow:true, |
| | | scrollY: {enabled: true},//开启虚拟滚动 |
| | | showOverflow: true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | // remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {title: '操作', width: 140, slots: { default: 'button_slot' },fixed:"left"}, |
| | | { type: 'seq',fixed:"left", title: '自序', width: 50 }, |
| | | columns: [ |
| | | {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50}, |
| | | {title: '操作', width: 140, slots: {default: 'button_slot'}, fixed: "left"}, |
| | | { |
| | | field: 'id', width: 130, title: 'Id' |
| | | }, |
| | | |
| | | {field: '设备名称', width: 130,title: '设备名称', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: '类型',width: 120, title: '类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '故障日期', width: 100,title: '故障日期', sortable: true,showOverflow:"ellipsis"}, |
| | | {field: '故障原因', width: 100,title: '故障原因', sortable: true}, |
| | | {field: '保养日期',width: 100, title: '保养日期', sortable: true}, |
| | | {field: '保养说明',width: 120, title: '保养说明', sortable: true,showOverflow:"ellipsis"}, |
| | | {field: '维修保养开始时间', width: 160,title: '维修/保养开始时间', sortable: true}, |
| | | {field: '维修保养结束时间',width: 160, title: '维修/保养结束时间', sortable: true}, |
| | | {field: '所在工艺',width: 120, title: '所在工艺', sortable: true}, |
| | | {field: '维修保养人员',width: 150, title: '维修/保养人员', sortable: true}, |
| | | {field: '费用',width: 120, title: '费用', sortable: true}, |
| | | { |
| | | field: 'deviceName', width: 130, title: '设备名称', filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | { |
| | | field: 'type', width: 120, title: '类型', filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | {field: 'faultTime', width: 100, title: '故障日期', showOverflow: "ellipsis"}, |
| | | { |
| | | field: 'faultReason', width: 100, title: '故障原因', filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | {field: 'maintenanceTime', width: 100, title: '保养日期'}, |
| | | {field: 'maintenanceIllustrate', width: 120, title: '保养说明', showOverflow: "ellipsis"}, |
| | | {field: 'startTime', width: 160, title: '维修/保养开始时间'}, |
| | | {field: 'stopTime', width: 160, title: '维修/保养结束时间'}, |
| | | { |
| | | field: 'process', width: 120, title: '所在工艺', filters: [{data: ''}], |
| | | slots: {filter: 'num1_filter'}, |
| | | filterMethod: filterChanged |
| | | }, |
| | | {field: 'personnel', width: 150, title: '维修/保养人员'}, |
| | | {field: 'cost', width: 120, title: '费用'}, |
| | | ],//表头按钮 |
| | | |
| | | toolbarConfig: { |
| | | // buttons: [{ |
| | | // |
| | | // }], |
| | | import: false, |
| | | export: true, |
| | | print: true, |
| | | // import: false, |
| | | // export: true, |
| | | // print: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: [ |
| | | { |
| | | 设备名称: '钢化炉(22E)', |
| | | 类型: '维修', |
| | | 故障日期: '2022-03-16', |
| | | 故障原因: '坏了', |
| | | 保养日期:'', |
| | | 保养说明:'', |
| | | 维修保养开始时间:'2022-03-16', |
| | | 维修保养结束时间:'2022-03-16', |
| | | 所在工艺:'钢化', |
| | | 维修保养人员:'SSS', |
| | | 费用:'112', |
| | | }, |
| | | { |
| | | 设备名称: '钢化炉(22E)', |
| | | 类型: '维修', |
| | | 故障日期: '2022-03-16', |
| | | 故障原因: '坏了', |
| | | 保养日期:'', |
| | | 保养说明:'', |
| | | 维修保养开始时间:'2022-03-16', |
| | | 维修保养结束时间:'2022-03-16', |
| | | 所在工艺:'钢化', |
| | | 维修保养人员:'SSS', |
| | | 费用:'112', |
| | | }, |
| | | { |
| | | 设备名称: '钢化炉(22E)', |
| | | 类型: '维修', |
| | | 故障日期: '2022-03-16', |
| | | 故障原因: '坏了', |
| | | 保养日期:'', |
| | | 保养说明:'', |
| | | 维修保养开始时间:'2022-03-16', |
| | | 维修保养结束时间:'2022-03-16', |
| | | 所在工艺:'钢化', |
| | | 维修保养人员:'SSS', |
| | | 费用:'112', |
| | | }, |
| | | ],//table body实际数据 |
| | | data: [],//table body实际数据 |
| | | //脚部求和 |
| | | footerMethod ({ columns, data }) {//页脚函数 |
| | | let footList=['费用'] |
| | | return[ |
| | | footerMethod({columns, data}) {//页脚函数 |
| | | let footList = ['费用'] |
| | | return [ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <vxe-grid |
| | | max-height="100%" |
| | | @filter-change="filterChanged" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | class="mytable-scrollbar" |
| | | max-height="100%" |
| | | v-bind="gridOptions" |
| | | @filter-change="filterChanged" |
| | | |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | | <!-- 下拉显示所有信息插槽--> |
| | | <template #content="{ row}"> |
| | | <ul class="expand-wrapper"> |
| | | <li v-for="(item,key,index) in row"> |
| | | <span style="font-weight: bold">{{key+': '}}</span> |
| | | <li v-for="(item,key,index) in row"> |
| | | <span style="font-weight: bold">{{ key + ': ' }}</span> |
| | | <span>{{ item }}</span> |
| | | </li> |
| | | </ul> |
| | |
| | | |
| | | <!--左边固定显示的插槽--> |
| | | <template #button_slot="{ row }"> |
| | | <el-button @click="dialogFormVisible = true" link type="primary" size="small">编辑</el-button> |
| | | <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">删除</el-button> |
| | | <el-button link size="small" type="primary" @click="dialogFormVisible = true">编辑</el-button> |
| | | <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">删除</el-button> |
| | | </template> |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/> |
| | | <input v-model="option.data" type="text" @input="changeFilterEvent($event, option, $panel)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | <el-form :model="form"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="设备名称" :label-width="formLabelWidth"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | <el-form-item :label-width="formLabelWidth" label="设备名称"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="类型" :label-width="formLabelWidth"> |
| | | <el-form-item :label-width="formLabelWidth" label="类型"> |
| | | <el-select v-model="form.region" placeholder="维修" style="width: 220px"> |
| | | <el-option label="保养" value="shanghai" /> |
| | | <el-option label="维修" value="mobian" /> |
| | | <el-option label="保养" value="shanghai"/> |
| | | <el-option label="维修" value="mobian"/> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="故障日期" :label-width="formLabelWidth"> |
| | | <el-form-item :label-width="formLabelWidth" label="故障日期"> |
| | | <el-date-picker |
| | | v-model="value1" |
| | | type="date" |
| | | :size="size" |
| | | placeholder="2023-01-01" |
| | | :size="size" |
| | | type="date" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="故障原因" :label-width="formLabelWidth"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | <el-form-item :label-width="formLabelWidth" label="故障原因"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="保养日期" :label-width="formLabelWidth"> |
| | | <el-form-item :label-width="formLabelWidth" label="保养日期"> |
| | | <el-date-picker |
| | | v-model="value1" |
| | | type="date" |
| | | placeholder="2023-02-01" |
| | | :size="size" |
| | | placeholder="2023-02-01" |
| | | type="date" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="保养说明" :label-width="formLabelWidth"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | <el-form-item :label-width="formLabelWidth" label="保养说明"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="保养/维修开始时间" :label-width="formLabelWidth"> |
| | | <el-form-item :label-width="formLabelWidth" label="保养/维修开始时间"> |
| | | <el-date-picker |
| | | v-model="value1" |
| | | type="date" |
| | | placeholder="2023-02-01" |
| | | :size="size" |
| | | placeholder="2023-02-01" |
| | | type="date" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="保养/维修完成时间" :label-width="formLabelWidth"> |
| | | <el-form-item :label-width="formLabelWidth" label="保养/维修完成时间"> |
| | | <el-date-picker |
| | | v-model="value1" |
| | | type="date" |
| | | placeholder="2023-02-01" |
| | | :size="size" |
| | | placeholder="2023-02-01" |
| | | type="date" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="所在工艺" :label-width="formLabelWidth"> |
| | | <el-form-item :label-width="formLabelWidth" label="所在工艺"> |
| | | <el-select v-model="form.region" placeholder="钢化" style="width: 220px"> |
| | | <el-option label="切割" value="shanghai" /> |
| | | <el-option label="磨边" value="mobian" /> |
| | | <el-option label="钢化" value="ganghua" /> |
| | | <el-option label="切割" value="shanghai"/> |
| | | <el-option label="磨边" value="mobian"/> |
| | | <el-option label="钢化" value="ganghua"/> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"><el-form-item label="保养/维修人员" :label-width="formLabelWidth"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | </el-form-item></el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item :label-width="formLabelWidth" label="保养/维修人员"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form-item label="费用" :label-width="formLabelWidth"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | <el-form-item :label-width="formLabelWidth" label="费用"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | </el-form-item> |
| | | </el-form> |
| | | <template #footer> |
| | |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .main-div-customer{ |
| | | .main-div-customer { |
| | | width: 99%; |
| | | height: 100%; |
| | | } |
| | |
| | | </div> |
| | | <vxe-grid |
| | | max-height="100%" |
| | | height="600px" |
| | | @filter-change="filterChanged" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | { type: 'seq',fixed:"left", title: '自序', width: 50 }, |
| | | {field: 'order_id', title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 80 }, |
| | | {field: 'process_id', width: 130, title: '流程卡号' ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'process_id', width: 140, title: '流程卡号' ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'order_number', title: '订单序号' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },}, |
| | | {field: 'technology_number', title: '小片顺序' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },}, |
| | | {field: 'quantity', title: '数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 180}, |
| | | {field: 'quantity', title: '数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 80}, |
| | | {field: 'area', title: '面积' ,showOverflow:"ellipsis"}, |
| | | {field: 'product_name', title: '产品名称', }, |
| | | {field: 'glass_child', title: '单片名称', }, |
| | |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {title: t('basicData.operate'), width: 160, slots: { default: 'button_slot' },fixed:"left"}, |
| | | { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 }, |
| | | {field: 'orderId', title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 80 }, |
| | | {field: 'processId', width: 130, title: t('processCard.processId') ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderId', title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 110 }, |
| | | {field: 'processId', width: 140, title: t('processCard.processId') ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'orderDetail.productId', title: t('order.productId') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },}, |
| | | {field: 'orderDetail.productName', title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 180}, |
| | | {field: 'order.project', title: t('order.project') ,showOverflow:"ellipsis"}, |
| | |
| | | if (res.code == 200) { |
| | | pageTotal.value = res.data.total |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | console.log('produceList', produceList) |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | request.post(`/processCard/detailsSelect/${id}`, filterData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | pageTotal.value = res.data.total |
| | | |
| | | produceList = deepClone(res.data.data) |
| | | |
| | | xGrid.value.loadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | |
| | | <div class="main-div-customer"> |
| | | <vxe-grid |
| | | max-height="100%" |
| | | height="600px" |
| | | @filter-change="filterChanged" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import userInfo from "@/stores/userInfo" |
| | | import {useI18n} from 'vue-i18n' |
| | | import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | //语言获取 |
| | | const {t} = useI18n() |
| | | const route = useRoute() |
| | | const user = userInfo() |
| | | let router = useRouter() |
| | | |
| | | onMounted(() => { |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value, gridOptions) |
| | | }) |
| | | |
| | | //子组件接收参数 |
| | | const xGrid = ref() |
| | |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'}, |
| | | {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'}, |
| | | {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'}, |
| | | {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'}, |
| | | ], |
| | | // import: false, |
| | | // export: true, |
| | |
| | | switch (code) { |
| | | case 'addRow': { |
| | | $grid.insertAt({}) |
| | | break |
| | | } |
| | | case 'removeRow': { |
| | | let result = toolbarButtonClickEvent() |
| | | if (result) { |
| | | $grid.remove(result.row) |
| | | } |
| | | break |
| | | } |
| | | case 'save': { |
| | |
| | | margin: 0 auto; |
| | | height: 100%; |
| | | } |
| | | .vxe-grid { |
| | | /* 禁用浏览器默认选中 */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| | |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import userInfo from "@/stores/userInfo" |
| | | import {useI18n} from 'vue-i18n' |
| | | import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | //语言获取 |
| | | const {t} = useI18n() |
| | | const route = useRoute() |
| | | const user = userInfo() |
| | | let router = useRouter() |
| | | |
| | | onMounted(() => { |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value, gridOptions) |
| | | }) |
| | | |
| | | //子组件接收参数 |
| | | const xGrid = ref() |
| | |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'}, |
| | | {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'}, |
| | | {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'}, |
| | | {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'}, |
| | | ], |
| | | // import: false, |
| | | // export: true, |
| | |
| | | switch (code) { |
| | | case 'addRow': { |
| | | $grid.insertAt({}) |
| | | break |
| | | } |
| | | case 'removeRow': { |
| | | let result = toolbarButtonClickEvent() |
| | | if (result) { |
| | | $grid.remove(result.row) |
| | | } |
| | | break |
| | | } |
| | | case 'save': { |
| | |
| | | margin: 0 auto; |
| | | height: 100%; |
| | | } |
| | | .vxe-grid { |
| | | /* 禁用浏览器默认选中 */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| | |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | import userInfo from "@/stores/userInfo" |
| | | import {useI18n} from 'vue-i18n' |
| | | import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove"; |
| | | //语言获取 |
| | | const {t} = useI18n() |
| | | const route = useRoute() |
| | |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | |
| | | onMounted(() => { |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value, gridOptions) |
| | | }) |
| | | |
| | | //子组件接收参数 |
| | |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'}, |
| | | {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'}, |
| | | {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'}, |
| | | {code: 'save', name: '保存', status: 'primary', icon: 'vxe-icon-save'}, |
| | | ], |
| | | // import: false, |
| | | // export: true, |
| | |
| | | switch (code) { |
| | | case 'addRow': { |
| | | $grid.insertAt({}) |
| | | break |
| | | } |
| | | case 'removeRow': { |
| | | let result = toolbarButtonClickEvent() |
| | | if (result) { |
| | | $grid.remove(result.row) |
| | | } |
| | | break |
| | | } |
| | | case 'save': { |
| | |
| | | width: 99%; |
| | | height: 100%; |
| | | } |
| | | .vxe-grid { |
| | | /* 禁用浏览器默认选中 */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| | |
| | | return count.toFixed(2) |
| | | } |
| | | |
| | | //首次加载 |
| | | request.post(`/basicDataProduce/selectBasic`).then((res) => { |
| | | |
| | | if (res.code == 200) { |
| | | produceList = produceList.value.concat(deepClone(res.data.data)) |
| | | titleSelectJson.value.processType = res.data.process; |
New file |
| | |
| | | package com.example.erp.controller.pp; |
| | | |
| | | import com.example.erp.common.Constants; |
| | | import com.example.erp.common.Result; |
| | | import com.example.erp.exception.ServiceException; |
| | | import com.example.erp.service.pp.DeviceMaintenanceService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Map; |
| | | |
| | | @RestController |
| | | |
| | | @Api(value="设备保养维修controller",tags={"设备保养维修操作接口"}) |
| | | @RequestMapping("/maintenance") |
| | | public class DeviceMaintenanceController { |
| | | @Autowired |
| | | DeviceMaintenanceService deviceMaintenanceService; |
| | | |
| | | @ApiOperation("设备新增接口") |
| | | @PostMapping("/saveMachine") |
| | | public Result saveTeamGroup( @RequestBody Map<String,Object> object){ |
| | | if(deviceMaintenanceService.saveMachineSv(object)){ |
| | | return Result.seccess(); |
| | | }else { |
| | | throw new ServiceException(Constants.Code_500,"保存失败"); |
| | | |
| | | } |
| | | } |
| | | @ApiOperation("查询下拉框数据接口") |
| | | @PostMapping ("/selectData") |
| | | public Result selectData() { |
| | | return Result.seccess(deviceMaintenanceService.selectDataSv()); |
| | | } |
| | | |
| | | @ApiOperation("保养维修新增接口") |
| | | @PostMapping("/saveMaintenanceAndRepair") |
| | | public Result saveMaintenanceAndRepair( @RequestBody Map<String,Object> object){ |
| | | if(deviceMaintenanceService.saveMaintenanceAndRepairSv(object)){ |
| | | return Result.seccess(); |
| | | }else { |
| | | throw new ServiceException(Constants.Code_500,"保存失败"); |
| | | |
| | | } |
| | | } |
| | | |
| | | @ApiOperation("查询维修保养数据接口") |
| | | @PostMapping ("/selectMaintenance") |
| | | public Result selectMaintenance() { |
| | | return Result.seccess(deviceMaintenanceService.selectMaintenanceSv()); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("删除维修保养记录接口") |
| | | @PostMapping("/deleteMaintenance/{id}") |
| | | public Result deleteMaintenance(@PathVariable String id){ |
| | | if(deviceMaintenanceService.deleteMaintenanceSv(id)){ |
| | | return Result.seccess(); |
| | | }else { |
| | | throw new ServiceException(Constants.Code_500,"删除失败!"); |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | package com.example.erp.entity.pp; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import lombok.Data; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | |
| | | @Data |
| | | public class DeviceMaintenance { |
| | | |
| | | //自增id |
| | | private Integer id; |
| | | //设备编号 |
| | | private String deviceId; |
| | | //设备名称 |
| | | private String deviceName; |
| | | //类型 |
| | | private Integer type; |
| | | private String type; |
| | | //故障日期 |
| | | private LocalDate faultTime; |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private LocalDateTime faultTime; |
| | | //故障原因 |
| | | private String faultReason; |
| | | //保养日期 |
| | | private LocalDate maintenanceTime; |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private LocalDateTime maintenanceTime; |
| | | //保养说明 |
| | | private String maintenanceIllustrate; |
| | | //维修/保养开始时间 |
| | | private LocalDate startTime; |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private LocalDateTime startTime; |
| | | //维修/保养结束时间 |
| | | private LocalDate stopTime; |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private LocalDateTime stopTime; |
| | | //所在工序 |
| | | private String process; |
| | | //维修/保养人员 |
| | | private String personnel; |
| | | //费用 |
| | | private String cost; |
| | | //创建时间 |
| | | private LocalDate createTime; |
| | | private LocalDateTime createTime; |
| | | //修改时间 |
| | | private LocalDate updateTime; |
| | | private LocalDateTime updateTime; |
| | | |
| | | //外键设备表 |
| | | private Device device; |
| | |
| | | package com.example.erp.entity.pp; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.example.erp.entity.sd.Order; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | |
| | | private LocalDate updateTime; |
| | | |
| | | //外键订单表 |
| | | @TableField(select = false,exist= false) |
| | | private Order order; |
| | | //外键订单明细表 |
| | | @TableField(select = false,exist= false) |
| | | private OrderDetail orderDetail; |
| | | //外键订单工艺审核表 |
| | | @TableField(select = false,exist= false) |
| | | private OrderGlassDetail orderGlassDetail; |
| | | |
| | | @TableField(select = false,exist= false) |
| | | private Product product; |
| | | } |
New file |
| | |
| | | package com.example.erp.mapper.pp; |
| | | |
| | | import com.example.erp.entity.pp.DeviceMaintenance; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Mapper |
| | | public interface DeviceMaintenanceMapper { |
| | | |
| | | |
| | | String getBasicData(String process); |
| | | Boolean addMachineMp(String basicId, String basicName); |
| | | |
| | | List<Map<String,String>> selectProcessMp(); |
| | | |
| | | List<Map<String,String>> selectDeviceMp(); |
| | | |
| | | String getDeviceData(String deviceName); |
| | | |
| | | Boolean saveMaintenanceAndRepairMp(String deviceId, String deviceName, String type, LocalDateTime faultTime, |
| | | String faultReason, LocalDateTime maintenanceTime, String maintenanceIllustrate, |
| | | LocalDateTime stopTime, LocalDateTime startTime,String process, String personnel, String cost); |
| | | |
| | | List<DeviceMaintenance> selectMaintenanceMp(); |
| | | |
| | | Boolean deleteMaintenanceMp(String id); |
| | | } |
| | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @author SNG-016 |
| | | */ |
| | | @Mapper |
| | | public interface FlowCardMapper extends BaseMapper<FlowCard> { |
| | | //流程卡管理查询 |
| | |
| | | import java.util.Map; |
| | | |
| | | @Service |
| | | @DS("sd") |
| | | @DS("pp") |
| | | public class BasicDateProduceService { |
| | | @Autowired |
| | | private BasicDateProduceMapper basicDateProduceMapper; |
New file |
| | |
| | | package com.example.erp.service.pp; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.dynamic.datasource.annotation.DS; |
| | | import com.example.erp.entity.pp.BasicDataProduce; |
| | | import com.example.erp.entity.pp.DeviceMaintenance; |
| | | import com.example.erp.mapper.pp.DeviceMaintenanceMapper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Service |
| | | @DS("pp") |
| | | public class DeviceMaintenanceService { |
| | | @Autowired |
| | | private DeviceMaintenanceMapper deviceMaintenanceMapper; |
| | | |
| | | |
| | | public Boolean saveMachineSv(Map<String, Object> object) { |
| | | List<BasicDataProduce> basicDataProduceList = JSONArray.parseArray(JSONObject.toJSONString(object.get("machine")), BasicDataProduce.class); |
| | | if (!basicDataProduceList.isEmpty()) { |
| | | for (BasicDataProduce basicDataProduce : basicDataProduceList) { |
| | | //查询工序对应的工序id |
| | | String BasicId = deviceMaintenanceMapper.getBasicData(basicDataProduce.getBasicCategory()); |
| | | deviceMaintenanceMapper.addMachineMp(BasicId,basicDataProduce.getBasicName()); |
| | | } |
| | | return true; |
| | | }else{ |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | public Map<String, Object> selectDataSv() { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("process", deviceMaintenanceMapper.selectProcessMp()); |
| | | map.put("device", deviceMaintenanceMapper.selectDeviceMp()); |
| | | return map; |
| | | } |
| | | |
| | | public Boolean saveMaintenanceAndRepairSv(Map<String, Object> object) { |
| | | List<DeviceMaintenance> deviceMaintenanceList = JSONArray.parseArray(JSONObject.toJSONString(object.get("machine")), DeviceMaintenance.class); |
| | | if (!deviceMaintenanceList.isEmpty()) { |
| | | for (DeviceMaintenance deviceMaintenance : deviceMaintenanceList) { |
| | | //查询设备对应的设备Id |
| | | String deviceId = deviceMaintenanceMapper.getDeviceData(deviceMaintenance.getDeviceName()); |
| | | //添加 |
| | | deviceMaintenanceMapper.saveMaintenanceAndRepairMp(deviceId,deviceMaintenance.getDeviceName(), |
| | | deviceMaintenance.getType(),deviceMaintenance.getFaultTime(),deviceMaintenance.getFaultReason(), |
| | | deviceMaintenance.getMaintenanceTime(),deviceMaintenance.getMaintenanceIllustrate(), |
| | | deviceMaintenance.getStopTime(),deviceMaintenance.getStartTime(),deviceMaintenance.getProcess(), |
| | | deviceMaintenance.getPersonnel(), |
| | | deviceMaintenance.getCost() |
| | | ); |
| | | } |
| | | return true; |
| | | }else{ |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | public Map<String, Object> selectMaintenanceSv() { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", deviceMaintenanceMapper.selectMaintenanceMp()); |
| | | return map; |
| | | } |
| | | |
| | | public Boolean deleteMaintenanceSv(String id) { |
| | | if (!id.isEmpty()) { |
| | | |
| | | return deviceMaintenanceMapper.deleteMaintenanceMp(id); |
| | | } else { |
| | | |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | |
| | | //查询工单 |
| | | public Map<String, Object> defaultDateWork(Date selectTime1, Date selectTime2, Integer state, OrderGlassDetail orderGlassDetail) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | // System.out.println(workOrderMapper.selectWordOrder( selectTime1,selectTime2,state, orderGlassDetail)); |
| | | if (state == 1) { |
| | | map.put("data", workOrderMapper.selectWordOrder(selectTime1, selectTime2, orderGlassDetail)); |
| | | } else { |
| | |
| | | String productIdVl = ""; |
| | | //将接收到的信息解析成list |
| | | List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderdetail")), OrderDetail.class); |
| | | String orderID = orderDetaillist.get(0).getOrderId(); |
| | | String orderId = orderDetaillist.get(0).getOrderId(); |
| | | |
| | | if (!orderDetaillist.isEmpty()) { |
| | | for (OrderDetail orderDetail : orderDetaillist) { |
| | | //生成生产订单号 |
| | | for (int i = 0; i < count; i++) { |
| | | letters = lettr++; |
| | | productIdVl = orderID + letters; |
| | | //查询生成的生产订单号是否存在 |
| | | Integer workCount = workOrderMapper.selectOrderNumber(productIdVl); |
| | | if (workCount < 1) { |
| | | break; |
| | | } |
| | | for (OrderDetail orderDetail : orderDetaillist) { |
| | | //生成生产订单号 |
| | | for (int i = 0; i < count; i++) { |
| | | letters = lettr++; |
| | | productIdVl = orderId + letters; |
| | | //查询生成的生产订单号是否存在 |
| | | Integer workCount = workOrderMapper.selectOrderNumber(productIdVl); |
| | | if (workCount < 1) { |
| | | break; |
| | | } |
| | | |
| | | } |
| | | //添加生产订单 |
| | | workOrderMapper.addOrderWorkMp(productIdVl, orderDetail.getOrderId(), orderDetail.getProductId(), orderDetail.getProductName(), userName); |
| | | Integer State = 2; |
| | | Integer States = 1; |
| | | //查询该订单未转生产订单的条数 |
| | | Integer NoWorkCount = workOrderMapper.selectWorkCount(orderDetail.getOrderId()); |
| | | if (NoWorkCount == 0) { |
| | | //条数为0修改转生产订单状态为2,否则为1 |
| | | workOrderMapper.updateWorkType(orderDetail.getOrderId(), State); |
| | | } else { |
| | | workOrderMapper.updateWorkType(orderDetail.getOrderId(), States); |
| | | } |
| | | } |
| | | return true; |
| | | } else { |
| | | return false; |
| | | //添加生产订单 |
| | | workOrderMapper.addOrderWorkMp(productIdVl, orderDetail.getOrderId(), orderDetail.getProductId(), orderDetail.getProductName(), userName); |
| | | Integer state = 2; |
| | | Integer states = 1; |
| | | //查询该订单未转生产订单的条数 |
| | | Integer noWorkCount = workOrderMapper.selectWorkCount(orderDetail.getOrderId()); |
| | | if (noWorkCount == 0) { |
| | | //条数为0修改转生产订单状态为2,否则为1 |
| | | workOrderMapper.updateWorkType(orderDetail.getOrderId(), state); |
| | | } else { |
| | | workOrderMapper.updateWorkType(orderDetail.getOrderId(), states); |
| | | } |
| | | } |
| | | return true; |
| | | |
| | | } |
| | | |
| | |
| | | if (!orderId.isEmpty() && !productName.isEmpty()) { |
| | | //删除订单小片表生产订单号 |
| | | workOrderMapper.deleteOrderWorkMp(orderId, productName); |
| | | Integer State = 0; |
| | | Integer States = 1; |
| | | Integer state = 0; |
| | | Integer states = 1; |
| | | //查询该订单未转生产订单的条数 |
| | | Integer NoWorkCount = workOrderMapper.selectWorkCount(orderId); |
| | | Integer noWorkCount = workOrderMapper.selectWorkCount(orderId); |
| | | //查询该订单转生产订单的条数 |
| | | Integer YesWorkCount = workOrderMapper.selectYesWorkCount(orderId); |
| | | if (NoWorkCount == YesWorkCount) { |
| | | workOrderMapper.updateWorkType(orderId, State); |
| | | Integer yesWorkCount = workOrderMapper.selectYesWorkCount(orderId); |
| | | if (noWorkCount == yesWorkCount) { |
| | | workOrderMapper.updateWorkType(orderId, state); |
| | | } else { |
| | | workOrderMapper.updateWorkType(orderId, States); |
| | | workOrderMapper.updateWorkType(orderId, states); |
| | | } |
| | | return true; |
| | | } else { |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.example.erp.mapper.pp.DeviceMaintenanceMapper"> |
| | | <resultMap id="DeviceMaintenanceMapper" type="com.example.erp.entity.pp.DeviceMaintenance"> |
| | | <id column="id" property="id"/> |
| | | <result column="device_id" property="deviceId"/> |
| | | <result column="type" property="type"/> |
| | | <result column="fault_time" property="faultTime"/> |
| | | <result column="fault_reason" property="faultReason"/> |
| | | <result column="maintenance_time" property="maintenanceTime"/> |
| | | <result column="maintenance_illustrate" property="maintenanceIllustrate"/> |
| | | <result column="start_time" property="startTime"/> |
| | | <result column="stop_time" property="stopTime"/> |
| | | <result column="personnel" property="personnel"/> |
| | | <result column="cost" property="cost"/> |
| | | |
| | | |
| | | </resultMap> |
| | | <select id="getBasicData"> |
| | | select id |
| | | from sd.basic_data |
| | | where basic_category = 'process' |
| | | and basic_name = #{process} |
| | | </select> |
| | | |
| | | <insert id="addMachineMp"> |
| | | insert into pp.basic_data_produce(basic_type,basic_name,basic_category,create_time) |
| | | values('device',#{basicName},#{basicId},now()) |
| | | </insert> |
| | | |
| | | <select id="selectProcessMp"> |
| | | select * from sd.basic_data where basic_type='product' and basic_category='process' |
| | | </select> |
| | | |
| | | <select id="selectDeviceMp"> |
| | | SELECT |
| | | bdp.id, |
| | | bdp.basic_type, |
| | | bdp.basic_name, |
| | | bd.basic_name AS basic_category |
| | | FROM |
| | | sd.basic_data AS bd |
| | | LEFT JOIN `basic_data_produce` AS bdp ON bd.id = bdp.basic_category |
| | | WHERE |
| | | bd.basic_category = 'process' |
| | | AND bdp.basic_type = 'device' |
| | | </select> |
| | | |
| | | <select id="getDeviceData"> |
| | | select id |
| | | from basic_data_produce |
| | | where basic_type = 'device' |
| | | and basic_name = #{deviceName} |
| | | </select> |
| | | |
| | | <insert id="saveMaintenanceAndRepairMp"> |
| | | insert into device_maintenance(device_id,device_name,type,fault_time,fault_reason,maintenance_time, |
| | | maintenance_illustrate,start_time,stop_time,process,personnel,cost,create_time) |
| | | values (#{deviceId},#{deviceName},#{type},#{faultTime},#{faultReason},#{maintenanceTime}, |
| | | #{maintenanceIllustrate},#{stopTime},#{startTime},#{process},#{personnel},#{cost},now()) |
| | | </insert> |
| | | |
| | | <select id="selectMaintenanceMp" resultMap="DeviceMaintenanceMapper"> |
| | | select * from device_maintenance |
| | | </select> |
| | | |
| | | <delete id="deleteMaintenanceMp"> |
| | | delete from device_maintenance where id = #{id} |
| | | </delete> |
| | | </mapper> |
| | |
| | | sum(c.compute_gross_area) as compute_gross_area, |
| | | a.founder, |
| | | c.processing_note, |
| | | if(a.layout_status=0,"不可排版",if(a.layout_status=1,"可排版","已排版")) as layout_status |
| | | if(a.layout_status=0,'不可排版',if(a.layout_status=1,'可排版','已排版')) as layout_status |
| | | from (select id,order_id,process_id,order_number, quantity,founder,layout_status,create_time from flow_card group by process_Id,order_number) as a left join sd.`order` as b on a.order_Id=b.order_id |
| | | left join sd.order_detail as c on a.order_Id=c.order_id and a.order_Number=c.order_number |
| | | where a.create_time between #{selectTime1} and #{selectTime2} |
New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper |
| | | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
| | | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.example.erp.mapper.pp.DeviceMaintenanceMapper"> |
| | | <resultMap id="DeviceMaintenanceMapper" type="com.example.erp.entity.pp.DeviceMaintenance"> |
| | | <id column="id" property="id"/> |
| | | <result column="device_id" property="deviceId"/> |
| | | <result column="type" property="type"/> |
| | | <result column="fault_time" property="faultTime"/> |
| | | <result column="fault_reason" property="faultReason"/> |
| | | <result column="maintenance_time" property="maintenanceTime"/> |
| | | <result column="maintenance_illustrate" property="maintenanceIllustrate"/> |
| | | <result column="start_time" property="startTime"/> |
| | | <result column="stop_time" property="stopTime"/> |
| | | <result column="personnel" property="personnel"/> |
| | | <result column="cost" property="cost"/> |
| | | |
| | | |
| | | </resultMap> |
| | | <select id="getBasicData"> |
| | | select id |
| | | from sd.basic_data |
| | | where basic_category = 'process' |
| | | and basic_name = #{process} |
| | | </select> |
| | | |
| | | <insert id="addMachineMp"> |
| | | insert into pp.basic_data_produce(basic_type,basic_name,basic_category,create_time) |
| | | values('device',#{basicName},#{basicId},now()) |
| | | </insert> |
| | | |
| | | <select id="selectProcessMp"> |
| | | select * from sd.basic_data where basic_type='product' and basic_category='process' |
| | | </select> |
| | | |
| | | <select id="selectDeviceMp"> |
| | | SELECT |
| | | bdp.id, |
| | | bdp.basic_type, |
| | | bdp.basic_name, |
| | | bd.basic_name AS basic_category |
| | | FROM |
| | | sd.basic_data AS bd |
| | | LEFT JOIN `basic_data_produce` AS bdp ON bd.id = bdp.basic_category |
| | | WHERE |
| | | bd.basic_category = 'process' |
| | | AND bdp.basic_type = 'device' |
| | | </select> |
| | | |
| | | <select id="getDeviceData"> |
| | | select id |
| | | from basic_data_produce |
| | | where basic_type = 'device' |
| | | and basic_name = #{deviceName} |
| | | </select> |
| | | |
| | | <insert id="saveMaintenanceAndRepairMp"> |
| | | insert into device_maintenance(device_id,device_name,type,fault_time,fault_reason,maintenance_time, |
| | | maintenance_illustrate,start_time,stop_time,process,personnel,cost,create_time) |
| | | values (#{deviceId},#{deviceName},#{type},#{faultTime},#{faultReason},#{maintenanceTime}, |
| | | #{maintenanceIllustrate},#{stopTime},#{startTime},#{process},#{personnel},#{cost},now()) |
| | | </insert> |
| | | |
| | | <select id="selectMaintenanceMp" resultMap="DeviceMaintenanceMapper"> |
| | | select * from device_maintenance |
| | | </select> |
| | | |
| | | <delete id="deleteMaintenanceMp"> |
| | | delete from device_maintenance where id = #{id} |
| | | </delete> |
| | | </mapper> |
| | |
| | | sum(c.compute_gross_area) as compute_gross_area, |
| | | a.founder, |
| | | c.processing_note, |
| | | if(a.layout_status=0,"不可排版",if(a.layout_status=1,"可排版","已排版")) as layout_status |
| | | if(a.layout_status=0,'不可排版',if(a.layout_status=1,'可排版','已排版')) as layout_status |
| | | from (select id,order_id,process_id,order_number, quantity,founder,layout_status,create_time from flow_card group by process_Id,order_number) as a left join sd.`order` as b on a.order_Id=b.order_id |
| | | left join sd.order_detail as c on a.order_Id=c.order_id and a.order_Number=c.order_number |
| | | where a.create_time between #{selectTime1} and #{selectTime2} |
| | |
| | | |
| | | <!-- 流程卡进度--> |
| | | <select id="processCardProgressMp"> |
| | | select |
| | | a.product_name, |
| | | b.glass_child, |
| | | d.order_type, |
| | | concat(c.process_id,'/',c.technology_number) as process_id, |
| | | c.technology_number, |
| | | c.quantity, |
| | | e.reportWorkQuantity, |
| | | e.reportWorkQuantityCount, |
| | | e.broken_num, |
| | | round(ifnull(f.inventory,0)*a.area,2) as inventoryArea |
| | | |
| | | from |
| | | flow_card as c |
| | | left join |
| | | sd.order_detail as a |
| | | on c.order_id = a.order_id |
| | | and c.order_number = a.order_number |
| | | left join sd.order_glass_detail as b |
| | | on c.order_id = b.order_id |
| | | and b.order_number = c.order_number |
| | | and c.technology_number = b.technology_number |
| | | left join sd.`order` as d |
| | | on c.order_id = d.order_id |
| | | left join mm.finished_goods_inventory as f |
| | | on c.order_id = f.order_id and f.order_number = c.order_number |
| | | left join ( |
| | | SELECT process_id, |
| | | technology_number, |
| | | sum(a.broken_num) as broken_num, |
| | | concat('{', |
| | | GROUP_CONCAT(concat("\"",process,"\":\"",reporting_work_num,"\"")), |
| | | '}' |
| | | ) as reportWorkQuantity, |
| | | concat('{', |
| | | GROUP_CONCAT(concat("\"",process,"\":\"",reporting_work_num_count,"\"")), |
| | | '}' |
| | | ) as reportWorkQuantityCount |
| | | FROM sd.order_process_detail as a |
| | | where a.order_id=#{orderId} |
| | | GROUP BY process_id,a.technology_number |
| | | ) as e |
| | | on e.process_id = c.process_id |
| | | and e.technology_number = c.technology_number |
| | | |
| | | where a.order_id = #{orderId} |
| | | |
| | | </select> |
| | | </mapper> |