Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
# Conflicts:
# north-glass-erp/target/classes/mapper/pp/Report.xml
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <project version="4"> |
| | | <component name="dataSourceStorageLocal" created-in="IU-232.9559.62"> |
| | | <component name="dataSourceStorageLocal" created-in="IU-232.8660.185"> |
| | | <data-source name="@localhost [2]" uuid="165c5447-d19a-4aaf-af5f-cee92ae696c2"> |
| | | <database-info product="MySQL" version="8.0.22" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0)" dbms="MYSQL" exact-version="8.0.22" exact-driver-version="8.0"> |
| | | <extra-name-characters>#@</extra-name-characters> |
New file |
| | |
| | | <script setup> |
| | | import {Search} from "@element-plus/icons-vue" |
| | | import {reactive, ref} from "vue" |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | border: "full",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 |
| | | id: 'OrderReport', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY:{ enabled: true },//开启虚拟滚动 |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {type: 'seq',fixed:"left", title: '自序', width: 80 }, |
| | | {field: '1',width:120, title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '2',width:120, title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '3',width:120, title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '4',width:120, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '5',width:120, title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '6',width:120, title: '产品编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '7',width:120, title: '产品编码',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '8',width:120, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '9',width:120, title: '订单序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '宽',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '高',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '半径',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '实际面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '结算总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '形状',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '磨边类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '主加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '商标选项',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '包装方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '工艺流程',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '周长',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '单价',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '金额',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '铝条方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '业务员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '送货地址',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '制单员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '建立时间',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '总厚度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '产品大类',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '产品小类',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '客户批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true} |
| | | |
| | | ],//表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | // import: false, |
| | | // export: true, |
| | | // print: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: [ |
| | | ],//table body实际数据 |
| | | footerMethod ({ columns, data }) {//页脚函数 |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | } |
| | | // if (props.tableProp.footList.includes(column.field)) { |
| | | // return sumNum(data, column.field) |
| | | // } |
| | | return '' |
| | | }) |
| | | ] |
| | | } |
| | | |
| | | }) |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="main-div"> |
| | | <el-date-picker |
| | | v-model="value1" |
| | | type="daterange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | /> |
| | | <el-button style="margin-top: -5px" id="searchButton" type="primary" :icon="Search">查询</el-button> |
| | | <div class="order-detail"> |
| | | <vxe-grid |
| | | max-height="97%" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | ></vxe-grid> |
| | | |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .main-div { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | .el-col{ |
| | | border: #181818 1px solid; |
| | | } |
| | | :deep(.el-table .el-input__wrapper) { |
| | | box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset; |
| | | cursor: default; |
| | | border: none !important; |
| | | background-color: transparent; |
| | | } |
| | | .order-primary{ |
| | | width: 100%; |
| | | } |
| | | .order-detail{ |
| | | width: 100%; |
| | | height: 90%; |
| | | |
| | | } |
| | | </style> |
| | |
| | | children:[ |
| | | //sd模块 |
| | | { |
| | | path:'orderBasicData', |
| | | name: 'orderBasicData', |
| | | component: () => import('../views/sd/basicData/BasicData.vue'), |
| | | children:[ |
| | | { |
| | | path: 'searchBasicData', |
| | | name: 'searchBasicData', |
| | | component: () => import('../views/sd/basicData/SearchBasicData.vue') |
| | | }, |
| | | { |
| | | name: 'OrderBasicData', |
| | | path: '', |
| | | redirect:'/main/orderBasicData/searchBasicData' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | path: 'product',//产品 |
| | | name: 'product', |
| | | component: () => import('../views/sd/product/Product.vue'), |
| | |
| | | // } |
| | | ] |
| | | }, |
| | | |
| | | { |
| | | //基础数据管理 |
| | | path: 'productionBasicData', |
| | | name: 'productionBasicData', |
| | | component: () => import('../views/pp/productionBasicData/ProductionBasicData.vue'), |
| | | children:[ |
| | | { |
| | | path: 'selectProductionBasicData', |
| | | name: 'selectProductionBasicData', |
| | | component: () => import('../views/pp/productionBasicData/SelectProductionBasicData.vue'), |
| | | }, |
| | | { |
| | | path: 'addBreakageReason', |
| | | name: 'addBreakageReason', |
| | | component: () => import('../views/pp/productionBasicData/AddBreakageReason.vue'), |
| | | }, |
| | | { |
| | | path: 'addBreakageType', |
| | | name: 'addBreakageType', |
| | | component: () => import('../views/pp/productionBasicData/AddBreakageType.vue'), |
| | | }, |
| | | { |
| | | path: 'addTeamGroup', |
| | | name: 'addTeamGroup', |
| | | component: () => import('../views/pp/productionBasicData/AddTeamGroup.vue'), |
| | | }, |
| | | { |
| | | path: '', |
| | | redirect:'/main/productionBasicData/SelectProductionBasicData' |
| | | } |
| | | ] |
| | | }, |
| | | |
| | | |
| | | |
| | |
| | | <script setup> |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | 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 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 |
| | | } |
| | | } |
| | | } |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | | let count = 0 |
| | | list.forEach(item => { |
| | | count += Number(item[field]) |
| | | //定义接收加载表头下拉数据 |
| | | const titleSelectJson = ref({ |
| | | processType: [], |
| | | |
| | | }) |
| | | return count.toFixed(2) |
| | | //第一次加载数据 |
| | | 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",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | |
| | | },//表头参数 |
| | | 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'] |
| | | let footList = ['', ''] |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | |
| | | |
| | | }) |
| | | |
| | | 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> |
| | |
| | | |
| | | <style scoped> |
| | | .main-div-customer{ |
| | | width: 99%; |
| | | 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' |
| | | 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 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 |
| | | } |
| | | } |
| | | } |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | | let count = 0 |
| | | list.forEach(item => { |
| | | count += Number(item[field]) |
| | | //定义接收加载表头下拉数据 |
| | | const titleSelectJson = ref({ |
| | | processType: [], |
| | | deviceType: [], |
| | | |
| | | }) |
| | | return count.toFixed(2) |
| | | |
| | | 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",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | |
| | | },//表头参数 |
| | | 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: '' } }}, |
| | | ],//表头按钮 |
| | | { |
| | | 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'] |
| | | let footList = ['', ''] |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | |
| | | |
| | | }) |
| | | |
| | | 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> |
| | | |
| | |
| | | width: 99%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .vxe-grid { |
| | | /* 禁用浏览器默认选中 */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
| | |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | 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' :{ |
| | |
| | | break |
| | | } |
| | | case 'delete':{ |
| | | alert('我接收到子组件传送的删除信息') |
| | | 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':{ |
| | |
| | | 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",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | // remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: 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 }, |
| | | { |
| | | 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=['费用'] |
| | |
| | | <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 #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-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-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-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-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-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"><el-form-item label="保养/维修人员" :label-width="formLabelWidth"> |
| | | <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-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form-item label="费用" :label-width="formLabelWidth"> |
| | | <el-form-item :label-width="formLabelWidth" label="费用"> |
| | | <el-input v-model="form.name" autocomplete="off" style="width: 220px"/> |
| | | </el-form-item> |
| | | </el-form> |
| | |
| | | </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" |
New file |
| | |
| | | <script setup> |
| | | |
| | | 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() |
| | | |
| | | onMounted(() => { |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value, gridOptions) |
| | | }) |
| | | |
| | | //子组件接收参数 |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | border: "full",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY:{ enabled: true },//开启虚拟滚动 |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[ |
| | | { type: 'seq',fixed:"left", title: '自序', width: 50 }, |
| | | { |
| | | field: 'basicName', |
| | | title: '次破原因', |
| | | width: 1000, |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | |
| | | }, |
| | | ], |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {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, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: [ |
| | | |
| | | ],//table body实际数据 |
| | | //脚部求和 |
| | | footerMethod ({ columns, data }) {//页脚函数 |
| | | let footList=['maintenanceFrequency','MaintenancesFrequency'] |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | } |
| | | if (footList.includes(column.field)) { |
| | | return sumNum(data, column.field) |
| | | } |
| | | 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 breakageTypeData = ref({ |
| | | basicDataProduce: tableData |
| | | }) |
| | | request.post("/basicDataProduce/saveBreakageReason", breakageTypeData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("保存成功") |
| | | router.push({ |
| | | path: '/main/productionBasicData/AddBreakageReason', |
| | | query: {random: Math.random()} |
| | | }) |
| | | |
| | | //location.reload(); |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | const size = ref<'default' | 'large' | 'small'>('default') |
| | | |
| | | const value1 = ref('') |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <vxe-grid |
| | | ref="xGrid" |
| | | class="mytable-scrollbar" |
| | | max-height="100%" |
| | | height="650px" |
| | | 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 #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)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | </vxe-grid> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .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> |
New file |
| | |
| | | <script setup> |
| | | 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() |
| | | |
| | | onMounted(() => { |
| | | //启用表格拖动选中 |
| | | addListener(xGrid.value, gridOptions) |
| | | }) |
| | | |
| | | //子组件接收参数 |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | border: "full",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY:{ enabled: true },//开启虚拟滚动 |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[ |
| | | { type: 'seq',fixed:"left", title: '自序', width: 50 }, |
| | | |
| | | { |
| | | field: 'basicName', |
| | | title: '次破类型', |
| | | width: 1000, |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | |
| | | }, |
| | | ], |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {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, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: [ |
| | | |
| | | ],//table body实际数据 |
| | | //脚部求和 |
| | | footerMethod ({ columns, data }) {//页脚函数 |
| | | let footList=['maintenanceFrequency','MaintenancesFrequency'] |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | } |
| | | if (footList.includes(column.field)) { |
| | | return sumNum(data, column.field) |
| | | } |
| | | 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 breakageTypeData = ref({ |
| | | basicDataProduce: tableData |
| | | }) |
| | | request.post("/basicDataProduce/saveBreakageType", breakageTypeData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("保存成功") |
| | | router.push({ |
| | | path: '/main/productionBasicData/AddBreakageType', |
| | | query: {random: Math.random()} |
| | | }) |
| | | |
| | | //location.reload(); |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | const size = ref<'default' | 'large' | 'small'>('default') |
| | | |
| | | const value1 = ref('') |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <vxe-grid |
| | | ref="xGrid" |
| | | class="mytable-scrollbar" |
| | | max-height="100%" |
| | | height="650px" |
| | | 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 #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)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | </vxe-grid> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .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> |
New file |
| | |
| | | <script setup> |
| | | |
| | | 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 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",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe: true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true, height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY: {enabled: true},//开启虚拟滚动 |
| | | showOverflow: true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns: [ |
| | | {type: 'seq', fixed: "left", title: '自序', width: 50}, |
| | | { |
| | | field: 'basicName', |
| | | title: '班组名称', |
| | | width: 600, |
| | | editRender: {name: 'input', attrs: {placeholder: ''}}, |
| | | |
| | | }, |
| | | { |
| | | field: 'basicCategory', |
| | | title: '所在工序', |
| | | editRender: {}, |
| | | slots: {default: 'basicCategory_default', edit: 'basicCategory'} |
| | | }, |
| | | ], |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {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, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: [],//table body实际数据 |
| | | //脚部求和 |
| | | footerMethod({columns, data}) {//页脚函数 |
| | | let footList = ['', ''] |
| | | return [ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | } |
| | | if (footList.includes(column.field)) { |
| | | return sumNum(data, column.field) |
| | | } |
| | | 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 teamGroupData = ref({ |
| | | basicDataProduce: tableData |
| | | }) |
| | | request.post("/basicDataProduce/saveTeamGroup", teamGroupData.value).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success("保存成功") |
| | | //router.push('/main/processCard/SplittingDetails?orderId=${orderId}') |
| | | router.push({ |
| | | path: '/main/productionBasicData/AddTeamGroup', |
| | | query: {random: Math.random()} |
| | | }) |
| | | |
| | | //location.reload(); |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | const size = ref<'default' | 'large' | 'small'>('default') |
| | | |
| | | const value1 = ref('') |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <vxe-grid |
| | | ref="xGrid" |
| | | class="mytable-scrollbar" |
| | | max-height="100%" |
| | | height="650px" |
| | | v-bind="gridOptions" |
| | | v-on="teamGridEvents" |
| | | @filter-change="filterChanged" |
| | | |
| | | > |
| | | |
| | | <template #num1_filter="{ column, $panel }"> |
| | | <div> |
| | | <div v-for="(option, index) in column.filters" :key="index"> |
| | | <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%; |
| | | height: 100%; |
| | | } |
| | | .vxe-grid { |
| | | /* 禁用浏览器默认选中 */ |
| | | -webkit-user-select: none; |
| | | -moz-user-select: none; |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | import {ref} from "vue"; |
| | | import {ArrowLeftBold, ArrowRight} from "@element-plus/icons-vue"; |
| | | import request from "@/utils/request"; |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {ElMessage} from "element-plus"; |
| | | import {useRoute, useRouter} from "vue-router"; |
| | | import GlassType from '@/components/basic/product/GlassType.vue' |
| | | |
| | | const route = useRoute() |
| | | const router = useRouter() |
| | | let indexFlag=$ref(1) |
| | | function changeRouter(index){ |
| | | indexFlag=index |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <div id="main"> |
| | | <div id="div-title"> |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/productionBasicData/SelectProductionBasicData' }">基础数据查询</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/productionBasicData/AddBreakageType' }">次破类型新增</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/productionBasicData/AddBreakageReason' }">次破原因新增</el-breadcrumb-item> |
| | | <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productionBasicData/AddTeamGroup' }">班组新增新增</el-breadcrumb-item> |
| | | <!-- <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/productionBasicData/AddMaintenanceAndRepair' }">班组人员新增新增</el-breadcrumb-item>--> |
| | | <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">打印</el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | </div> |
| | | |
| | | <div id="main-body"> |
| | | <router-view :key="route.fullPath" /> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | #main{ |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | #div-title{ |
| | | height: 5%; |
| | | width: 100%; |
| | | } |
| | | #searchButton{ |
| | | margin-top: -5px; |
| | | margin-left: 1rem; |
| | | } |
| | | #searchButton1{ |
| | | //margin-left: 10rem; |
| | | } |
| | | /*main-body样式*/ |
| | | #main-body{ |
| | | width: 99%; |
| | | height: 92%; |
| | | margin-top: 1%; |
| | | } |
| | | :deep(.indexTag .el-breadcrumb__inner){ |
| | | color: #5CADFE !important; |
| | | } |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | |
| | | import {reactive, ref} from "vue"; |
| | | import {useRouter} from 'vue-router' |
| | | import request from "@/utils/request"; |
| | | import deepClone from "@/utils/deepClone"; |
| | | import {ElMessage} from "element-plus"; |
| | | import { useI18n } from 'vue-i18n' |
| | | import {changeFilterEvent, filterChanged} from "@/hook" |
| | | //语言获取 |
| | | const { t } = useI18n() |
| | | let router=useRouter() |
| | | //定义数据返回结果 |
| | | let produceList = ref([]) |
| | | //定义接收加载表头下拉数据 |
| | | const titleSelectJson = ref({ |
| | | processType: [], |
| | | |
| | | }) |
| | | const size = ref<'default' | 'large' | 'small'>('default') |
| | | |
| | | const value1 = ref('') |
| | | let dialogTableVisible = ref(false) |
| | | |
| | | const getBasicData = ref({ |
| | | id: '', |
| | | basic_type: '', |
| | | basic_name: '', |
| | | d_basic_name: '', |
| | | }) |
| | | const getTableRow = (row,type) =>{ |
| | | switch (type) { |
| | | case 'edit' :{ |
| | | request.post(`/basicDataProduce/openSelectId/${row.id}`).then((res) => { |
| | | if (res.code == 200) { |
| | | |
| | | getBasicData.value = res.data.data[0] |
| | | dialogTableVisible.value=true |
| | | //router.push({path: '/main/productionBasicData/SelectProductionBasicData', query: {random:Math.random()}}) |
| | | } else { |
| | | |
| | | ElMessage.warning(res.msg) |
| | | |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | case 'delete':{ |
| | | request.post(`/basicDataProduce/deleteBasic/${row.id}`).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success(t('workOrder.deleteOk')) |
| | | router.push({path: '/main/productionBasicData/SelectProductionBasicData', query: {random:Math.random()}}) |
| | | } else { |
| | | |
| | | ElMessage.warning(res.msg) |
| | | |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | case 'setType':{ |
| | | alert('我接收到子组件传送的反审状态') |
| | | break |
| | | } |
| | | } |
| | | } |
| | | |
| | | //表尾求和 |
| | | const sumNum = (list, field) => { |
| | | let count = 0 |
| | | list.forEach(item => { |
| | | count += Number(item[field]) |
| | | }) |
| | | 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; |
| | | xGrid.value.reloadData(produceList) |
| | | gridOptions.loading = false |
| | | } else { |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | |
| | | //子组件接收参数 |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | border: "full",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮 |
| | | id: 'CustomerList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY:{ enabled: true },//开启虚拟滚动 |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | //remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {title: '操作', width: 140, slots: { default: 'button_slot' },fixed:"left"}, |
| | | {field: 'id', width: 60, title: 'id',filters:[{ data: '' }],slots: { filter: 'num1_filter' },}, |
| | | {field: 'basic_type',width: 370, title: '类型', showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'basic_name', width: 330,title: '名称', filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | {field: 'd_basic_name',width: 330, title: '类别',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, |
| | | ], |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | | // buttons: [{ |
| | | // |
| | | // }], |
| | | // import: false, |
| | | // export: true, |
| | | // print: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: [ |
| | | |
| | | ],//table body实际数据 |
| | | //脚部求和 |
| | | footerMethod ({ columns, data }) {//页脚函数 |
| | | let footList=['','','',''] |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | } |
| | | if (footList.includes(column.field)) { |
| | | return sumNum(data, column.field) |
| | | } |
| | | return '' |
| | | }) |
| | | ] |
| | | } |
| | | |
| | | }) |
| | | |
| | | const updateBasic = () => { |
| | | let id = getBasicData.value.id |
| | | let process = getBasicData.value.d_basic_name |
| | | let name = getBasicData.value.basic_name |
| | | let type = getBasicData.value.basic_type |
| | | request.post(`/basicDataProduce/updateBasic/${id}/${process}/${name}/${type}`).then((res) => { |
| | | if (res.code == 200) { |
| | | ElMessage.success(t('processCard.modifySuccessfully')) |
| | | router.push({path: '/main/productionBasicData/SelectProductionBasicData', query: {random:Math.random()}}) |
| | | } else { |
| | | |
| | | ElMessage.warning(res.msg) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="main-div-customer"> |
| | | <vxe-grid |
| | | max-height="100%" |
| | | @filter-change="filterChanged" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | |
| | | > |
| | | <!-- @toolbar-button-click="toolbarButtonClickEvent"--> |
| | | <!-- 下拉显示所有信息插槽--> |
| | | <template #content="{ row }"> |
| | | <ul class="expand-wrapper"> |
| | | <li v-for="(item,index) in gridOptions.columns" v-show="item.field!=undefined "> |
| | | <span style="font-weight: bold">{{ item.title + ': ' }}</span> |
| | | <span v-if="hasDecimal(item.field)">{{ row[item.field.split('.')[0]][item.field.split('.')[1]] }}</span> |
| | | <span v-else>{{ row[item.field] }}</span> |
| | | |
| | | </li> |
| | | </ul> |
| | | </template> |
| | | |
| | | <!--左边固定显示的插槽--> |
| | | <template #button_slot="{ row }"> |
| | | <el-button @click="getTableRow(row,'edit');" link type="primary" size="small">{{$t('basicData.edit')}}</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)"/> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | |
| | | </vxe-grid> |
| | | |
| | | <el-dialog v-model="dialogTableVisible" title="基础数据修改"> |
| | | <el-row> |
| | | <el-col :span="2"> |
| | | <el-text>id:</el-text> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-input v-model="getBasicData.id" readonly autocomplete="off" style="width: 220px"/> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"> |
| | | <el-text>类型:</el-text> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-input v-model="getBasicData.basic_type" readonly autocomplete="off" style="width: 220px"/> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"> |
| | | <el-text>名称:</el-text> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <el-input v-model="getBasicData.basic_name" autocomplete="off" style="width: 220px"/> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="2"> |
| | | <el-text>类别:</el-text> |
| | | </el-col> |
| | | <el-col :span="3"> |
| | | <!-- <el-input v-model="getBasicData.d_basic_name" autocomplete="off" style="width: 220px"/>--> |
| | | <el-select v-model="getBasicData.d_basic_name" clearable placeholder="" style="width: 220px" |
| | | > |
| | | <el-option |
| | | v-for="item in titleSelectJson['processType']" |
| | | :key="item.id" |
| | | :label="item.basic_name" |
| | | :value="item.basic_name" |
| | | /> |
| | | </el-select> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <template #footer> |
| | | <span class="dialog-footer"> |
| | | <el-button @click="dialogTableVisible = false">取消</el-button> |
| | | <el-button type="primary" @click="updateBasic"> |
| | | 修改 |
| | | </el-button> |
| | | </span> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .main-div-customer{ |
| | | width: 99%; |
| | | height: 100%; |
| | | } |
| | | .el-row{ |
| | | margin: 10px; |
| | | } |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue" |
| | | import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router" |
| | | import {useI18n} from "vue-i18n" |
| | | const { t } = useI18n() |
| | | const router = useRouter() |
| | | const route = useRoute() |
| | | let indexFlag=$ref(1) |
| | | function changeRouter(index){ |
| | | indexFlag=index |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div id="main-div"> |
| | | <div id="div-title"> |
| | | <el-breadcrumb :separator-icon="ArrowRight"> |
| | | <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/orderBasicData/searchBasicData' }">基础数据</el-breadcrumb-item> |
| | | <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">报表</el-breadcrumb-item> |
| | | </el-breadcrumb> |
| | | </div> |
| | | |
| | | <div id="main-body"> |
| | | <router-view :key="route.fullPath" /> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | #main-div{ |
| | | width: 99%; |
| | | height: 100%; |
| | | } |
| | | #div-title{ |
| | | height: 2%; |
| | | width: 100%; |
| | | } |
| | | #searchButton{ |
| | | margin-top: -5px; |
| | | margin-left: 1rem; |
| | | } |
| | | #searchButton1{ |
| | | //margin-left: 10rem; |
| | | } |
| | | /*main-body样式*/ |
| | | #main-body{ |
| | | width: 100%; |
| | | height: 95%; |
| | | margin-top: 1%; |
| | | } |
| | | #select{ |
| | | margin-left:0.5rem; |
| | | } |
| | | :deep(.indexTag .el-breadcrumb__inner){ |
| | | color: #5CADFE !important; |
| | | } |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | import request from "@/utils/request" |
| | | import {onMounted, ref, watch} from "vue"; |
| | | import {useI18n} from "vue-i18n" |
| | | import {ElMessage} from "element-plus" |
| | | import {useRouter,useRoute} from "vue-router" |
| | | const { t } = useI18n() |
| | | const router = useRouter() |
| | | const route = useRoute() |
| | | |
| | | |
| | | let basic = ref({ |
| | | basicType : ['',''], |
| | | input:'' |
| | | }) |
| | | let options=ref([ |
| | | { "label": "订单", |
| | | "value": "order", |
| | | "children": [ |
| | | { |
| | | "label": "订单类型", |
| | | "value": "orderType" |
| | | }, |
| | | { |
| | | "label": "订单分类", |
| | | "value": "orderClassify" |
| | | }, |
| | | { |
| | | "label": "商标选项", |
| | | "value": "icon" |
| | | }, |
| | | { |
| | | "label": "包装方式", |
| | | "value": "packType" |
| | | }, |
| | | { |
| | | "label": "铝条方式", |
| | | "value": "alType" |
| | | }, |
| | | { |
| | | "label": "业务员", |
| | | "value": "saleMan" |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "label": "产品", |
| | | "value": "product", |
| | | "children": [ |
| | | { |
| | | "label": "材料厚度", |
| | | "value": "stuffThickness" |
| | | }, |
| | | { |
| | | "label": "材料颜色", |
| | | "value": "stuffColor" |
| | | }, |
| | | { |
| | | "label": "工艺属性", |
| | | "value": "stuffCraft" |
| | | }, |
| | | { |
| | | "label": "玻璃位置", |
| | | "value": "stuffPosition" |
| | | }, |
| | | { |
| | | "label": "lowe", |
| | | "value": "stuffLowE" |
| | | }, |
| | | { |
| | | "label": "夹胶厚度", |
| | | "value": "InterlayerThickness" |
| | | }, |
| | | { |
| | | "label": "夹胶类型", |
| | | "value": "InterlayerType" |
| | | }, |
| | | { |
| | | "label": "夹胶颜色", |
| | | "value": "InterlayerColor" |
| | | }, |
| | | { |
| | | "label": "工艺流程", |
| | | "value": "process" |
| | | }, |
| | | { |
| | | "label": "中空厚度", |
| | | "value": "hollowThickness" |
| | | }, |
| | | { |
| | | "label": "充气方式", |
| | | "value": "hollowGasType" |
| | | }, |
| | | { |
| | | "label": "封胶", |
| | | "value": "hollowType" |
| | | }, |
| | | { |
| | | "label": "默认胶深", |
| | | "value": "hollowGlueDepth" |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | "children": [ |
| | | { |
| | | "label": "付款条件", |
| | | "value": "paymentTerms" |
| | | }, |
| | | { |
| | | "label": "收款方式", |
| | | "value": "payMethod" |
| | | } |
| | | ], |
| | | "label": "送货", |
| | | "value": "delivery" |
| | | } |
| | | ]) |
| | | |
| | | let props = defineProps({ |
| | | rowIndex:{ |
| | | Object, |
| | | default: null |
| | | } |
| | | }) |
| | | onMounted(() =>{ |
| | | if(props.rowIndex){ |
| | | basic.value.basicType[0] = props.rowIndex.basicType |
| | | basic.value.basicType[1] = props.rowIndex.basicCategory |
| | | basic.value.input = props.rowIndex.basicName |
| | | } |
| | | }) |
| | | |
| | | const emit = defineEmits(['gaveParent']) |
| | | const saveBasicData = () =>{ |
| | | request.post(`/basicData/addBasicData`, basic.value).then(res => { |
| | | if (res.data) { |
| | | ElMessage.success('保存成功') |
| | | emit('gaveParent', true) |
| | | } |
| | | }) |
| | | } |
| | | const updateBasicData = () =>{ |
| | | let submitArr = props.rowIndex |
| | | submitArr.basicType = basic.value.basicType[0] |
| | | submitArr.basicCategory = basic.value.basicType[1] |
| | | submitArr.basicName = basic.value.input |
| | | request.post(`/basicData/updateBasicData`, submitArr).then(res => { |
| | | if (res.data) { |
| | | ElMessage.success('修改成功') |
| | | emit('gaveParent', true) |
| | | } |
| | | }) |
| | | |
| | | } |
| | | |
| | | const handleChange = (value) => { |
| | | const filterArr = options.value.filter((item) =>item.value === value[0] |
| | | ).map((item) =>item.children.filter((item) =>item.value === value[1])) |
| | | console.log(filterArr) |
| | | } |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div> |
| | | <el-row> |
| | | <el-col :span="4">基础类型:</el-col> |
| | | <el-col :span="12"> |
| | | <el-cascader |
| | | v-model="basic.basicType" |
| | | @change="handleChange" |
| | | :options="options" |
| | | clearable |
| | | placeholder="" |
| | | :disabled="props.rowIndex" |
| | | /> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="4">名称:</el-col> |
| | | <el-col :span="12"> |
| | | <el-input v-model="basic.input"/> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="4"></el-col> |
| | | <el-col :span="12"> |
| | | <el-button v-show="!props.rowIndex" @click="saveBasicData" type="primary">新增</el-button> |
| | | <el-button v-show="props.rowIndex" @click="updateBasicData" type="primary">修改</el-button> |
| | | |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | div{ |
| | | text-align: center; |
| | | } |
| | | .el-row{ |
| | | margin-top: 10px; |
| | | } |
| | | </style> |
New file |
| | |
| | | <script setup> |
| | | import {reactive, ref} from "vue"; |
| | | import {VXETable} from "vxe-table"; |
| | | import {ElMessage} from "element-plus"; |
| | | import request from "@/utils/request" |
| | | import CreateBasicData from "@/views/sd/basicData/CreateBasicData.vue" |
| | | import {useRouter,useRoute} from "vue-router" |
| | | import {useI18n} from "vue-i18n" |
| | | const { t } = useI18n() |
| | | |
| | | let dialogTableVisible = ref(false) |
| | | const router = useRouter() |
| | | const xGrid = ref() |
| | | const gridOptions = reactive({ |
| | | border: "full",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 30},//鼠标移动或选择高亮 |
| | | id: 'OrderList', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY:{ enabled: true },//开启虚拟滚动 |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | }, |
| | | |
| | | //表头参数 |
| | | columns:[ |
| | | {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",}, |
| | | {type: 'seq', title: '序号', width: 80 ,fixed:"left",}, |
| | | {field:'basicName',title: '名称'}, |
| | | {field:'createTime',title: '创建日期'}, |
| | | |
| | | |
| | | ], |
| | | |
| | | //表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [ |
| | | {'code': 'add', 'name': '新增',status: 'primary'}, |
| | | ], |
| | | |
| | | // import: false, |
| | | // export: true, |
| | | // print: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | |
| | | footerMethod ({ columns, data }) {//页脚函数 |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | // if (columnIndex === 0) { |
| | | // return t('basicData.total') |
| | | // } |
| | | // if (props.tableProp.footList.includes(column.field)) { |
| | | // return sumNum(data, column.field) |
| | | // } |
| | | return '' |
| | | }) |
| | | ] |
| | | } |
| | | |
| | | }) |
| | | const gridEvents = { |
| | | toolbarButtonClick ({ code }) { |
| | | const $grid = xGrid.value |
| | | if ($grid) { |
| | | switch (code) { |
| | | case 'add': { |
| | | rowIndex.value = null |
| | | dialogTableVisible.value = true |
| | | break |
| | | } |
| | | |
| | | } |
| | | } |
| | | }, |
| | | menuClick ({ menu, row, column }) { |
| | | const $grid = xGrid.value |
| | | if ($grid) { |
| | | switch (menu.code) { |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | request.get('/basicData/getBasicData').then(res => { |
| | | if(res.code==='200'){ |
| | | xGrid.value.reloadData(res.data) |
| | | } |
| | | }) |
| | | |
| | | const getChildrenFunction = (flag) => { |
| | | if(flag){ |
| | | router.push({ |
| | | path:'/main/orderBasicData/searchBasicData', |
| | | query:{random:Math.random() |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | |
| | | let rowIndex = ref(null) |
| | | const getTableRow = (row,type) => { |
| | | switch (type) { |
| | | case 'edit': { |
| | | rowIndex.value = row |
| | | dialogTableVisible.value = true |
| | | break |
| | | } |
| | | case 'delete': { |
| | | request.post(`/basicData/deleteBasicData`,row).then((res) => { |
| | | if(res.code==200){ |
| | | ElMessage.success(t('searchOrder.msgDeleteSuccess')) |
| | | router.push({ |
| | | path:'/main/orderBasicData/searchBasicData', |
| | | query:{random:Math.random() |
| | | } |
| | | }) |
| | | }else{ |
| | | ElMessage.warning(t('searchOrder.msgDeleteFail')) |
| | | } |
| | | }) |
| | | break |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | | <div> |
| | | <vxe-grid |
| | | style="width: 40vw;" |
| | | class="mytable-scrollbar" |
| | | max-height="500px" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | v-on="gridEvents" |
| | | > |
| | | <template #button_slot="{ row }"> |
| | | <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{ $t('basicData.edit') }}</el-button> |
| | | <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')"> |
| | | <template #reference> |
| | | <el-button link type="primary" size="small">{{ $t('basicData.delete') }}</el-button> |
| | | </template> |
| | | </el-popconfirm> |
| | | </template> |
| | | |
| | | </vxe-grid> |
| | | <el-dialog |
| | | v-model="dialogTableVisible" |
| | | destroy-on-close |
| | | style="width: 30%;height:30% "> |
| | | <create-basic-data :rowIndex="rowIndex" @gaveParent='getChildrenFunction'/> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
| | |
| | | <script setup> |
| | | |
| | | import {Folder, Search} from "@element-plus/icons-vue"; |
| | | import BasicTable from "@/components/basic/BasicTable.vue"; |
| | | import {reactive} from "vue"; |
| | | |
| | | const gridOptions = reactive({ |
| | | border: "full",//表格加边框 |
| | | keepSource: true,//保持源数据 |
| | | align: 'center',//文字居中 |
| | | stripe:true,//斑马纹 |
| | | rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 |
| | | id: 'OrderReport', |
| | | showFooter: true,//显示脚 |
| | | printConfig: {}, |
| | | importConfig: {}, |
| | | exportConfig: {}, |
| | | scrollY:{ enabled: true },//开启虚拟滚动 |
| | | showOverflow:true, |
| | | columnConfig: { |
| | | resizable: true, |
| | | useKey: true |
| | | }, |
| | | filterConfig: { //筛选配置项 |
| | | remote: true |
| | | }, |
| | | customConfig: { |
| | | storage: true |
| | | }, |
| | | editConfig: { |
| | | trigger: 'click', |
| | | mode: 'row', |
| | | showStatus: true |
| | | },//表头参数 |
| | | columns:[ |
| | | {type:'expand',fixed:"left",slots: { content:'content' },width: 50}, |
| | | {type: 'seq',fixed:"left", title: '自序', width: 80 }, |
| | | {field: '1',width:120, title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '2',width:120, title: '客户名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '3',width:120, title: '项目名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '4',width:120, title: '销售单号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '5',width:120, title: '批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '6',width:120, title: '产品编号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '7',width:120, title: '产品编码',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '8',width:120, title: '产品名称',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: '9',width:120, title: '订单序号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '楼号',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '宽',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '高',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '数量',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '半径',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '实际面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '结算总面积',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '形状',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '磨边类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '主加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '加工要求',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '备注',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '商标选项',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '包装方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '工艺流程',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '周长',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '单价',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '金额',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '铝条方式',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '订单类型',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '业务员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '送货地址',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '制单员',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '建立时间',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '总厚度',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '产品大类',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '产品小类',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}, |
| | | {field: 'prodID',width:120, title: '客户批次',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true} |
| | | |
| | | ],//表头按钮 |
| | | toolbarConfig: { |
| | | buttons: [], |
| | | import: false, |
| | | export: true, |
| | | print: true, |
| | | zoom: true, |
| | | custom: true |
| | | }, |
| | | data: [ |
| | | ],//table body实际数据 |
| | | footerMethod ({ columns, data }) {//页脚函数 |
| | | return[ |
| | | columns.map((column, columnIndex) => { |
| | | if (columnIndex === 0) { |
| | | return '合计:' |
| | | } |
| | | // if (props.tableProp.footList.includes(column.field)) { |
| | | // return sumNum(data, column.field) |
| | | // } |
| | | return '' |
| | | }) |
| | | ] |
| | | } |
| | | |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | import BasicTable from "@/components/BasicTable.vue" |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="main-div"> |
| | | <el-date-picker |
| | | v-model="value1" |
| | | type="daterange" |
| | | start-placeholder="开始时间" |
| | | end-placeholder="结束时间" |
| | | /> |
| | | <el-button style="margin-top: -5px" id="searchButton" type="primary" :icon="Search">查询</el-button> |
| | | <div class="order-detail"> |
| | | <vxe-grid |
| | | max-height="97%" |
| | | class="mytable-scrollbar" |
| | | ref="xGrid" |
| | | v-bind="gridOptions" |
| | | ></vxe-grid> |
| | | <!-- <el-table |
| | | :data="dataList" |
| | | :header-cell-style="{ 'text-align': 'center' }" |
| | | :cell-style="{ 'text-align': 'center' }" |
| | | border |
| | | > |
| | | |
| | | <el-table-column type="expand" fixed> |
| | | <template #default="props" > |
| | | <div m="4"> |
| | | <p m="t-0 b-2">: {{ props.row['2'] }}</p> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | |
| | | <el-table-column |
| | | :prop="index.toString()" |
| | | :show-overflow-tooltip='true' |
| | | width="100" v-for="(item,index) in titleList" |
| | | :label="item" /> |
| | | </el-table>--> |
| | | </div> |
| | | </div> |
| | | <basic-table/> |
| | | </template> |
| | | |
| | | <style scoped> |
| | | .main-div { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | .el-col{ |
| | | border: #181818 1px solid; |
| | | } |
| | | :deep(.el-table .el-input__wrapper) { |
| | | box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset; |
| | | cursor: default; |
| | | border: none !important; |
| | | background-color: transparent; |
| | | } |
| | | .order-primary{ |
| | | width: 100%; |
| | | } |
| | | .order-detail{ |
| | | width: 100%; |
| | | height: 90%; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | </style> |
| | |
| | | <script setup> |
| | | import {computed, onMounted, reactive, ref} from "vue" |
| | | import {computed, onMounted, reactive, ref, watch} from "vue" |
| | | import {useRouter,useRoute} from "vue-router" |
| | | import request from "@/utils/request" |
| | | import {ElMessage} from "element-plus" |
| | |
| | | |
| | | }) |
| | | |
| | | |
| | | |
| | | let process = ref([]) |
| | | request.get(`/basicData/BasicDataByType/product/process`).then((res) =>{ |
| | | if (res.code==200){ |
| | |
| | | return filterArr.length > 0 |
| | | |
| | | } |
| | | const resetTrademark = () => { |
| | | for(const key in trademarkAttr.value){ |
| | | |
| | | trademarkAttr.value[key] = '' |
| | | if(key==='location'){ |
| | | trademarkAttr.value[key] = [] |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | </script> |
| | | |
| | | <template> |
| | |
| | | <el-row> |
| | | <el-col > |
| | | <el-button @click="changeTrademark" style="float:right;" type="primary" >{{$t('craft.sure')}}</el-button> |
| | | <el-button style="float:right;margin-right: 0.5rem" type="primary" >{{$t('craft.reset')}}</el-button> |
| | | <el-button @click="resetTrademark" style="float:right;margin-right: 0.5rem" type="primary" >{{$t('craft.reset')}}</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | |
| | | v-if="tagCheck('左上')" |
| | | style="float: left;width: 60px;height: 60px;margin-left: 1rem"> |
| | | <el-row> |
| | | <el-col :span="20"><el-icon :size="20"><Location /></el-icon></el-col> |
| | | <el-col :span="20"><el-image :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" src="/trademark.png"/></el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-row style="margin-top: -25px" > |
| | | <el-col :span="5" >X:</el-col> |
| | | <el-col :span="2" >{{trademarkAttr.xMargin}}</el-col> |
| | | </el-row> |
| | |
| | | v-if="tagCheck('右上')" |
| | | style="float: right;width: 60px;height: 60px;margin-right: 1rem"> |
| | | <el-row> |
| | | <el-col :span="20"><el-icon :size="20"><Location /></el-icon></el-col> |
| | | <el-col :span="20"><el-image :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" src="/trademark.png"/></el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-row style="margin-top: -25px" > |
| | | <el-col :span="5" >X:</el-col> |
| | | <el-col :span="2" >{{trademarkAttr.xMargin}}</el-col> |
| | | </el-row> |
| | |
| | | |
| | | <div |
| | | v-if="tagCheck('左下')" |
| | | style="width: 60px;height: 60px;margin-left: 1rem;float: left;position: absolute;bottom: 8px"> |
| | | style="width: 60px;height: 60px;margin-left: 1rem;float: left;position: absolute;bottom: 15px"> |
| | | <el-row> |
| | | <el-col :span="20"><el-icon :size="20"><Location /></el-icon></el-col> |
| | | <el-col :span="20"><el-image :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" src="/trademark.png"/></el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-row style="margin-top: -25px" > |
| | | <el-col :span="5" >X:</el-col> |
| | | <el-col :span="2" >{{trademarkAttr.xMargin}}</el-col> |
| | | </el-row> |
| | |
| | | |
| | | <div |
| | | v-if="tagCheck('右下')" |
| | | style="width: 60px;height: 60px;position: absolute;bottom: 8px;right: 1rem"> |
| | | style="width: 60px;height: 60px;position: absolute;bottom: 15px;right: 1rem"> |
| | | <el-row> |
| | | <el-col :span="20"><el-icon :size="20"><Location /></el-icon></el-col> |
| | | <el-col :span="20"> |
| | | <el-image :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" src="/trademark.png"/> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row > |
| | | <el-row style="margin-top: -25px"> |
| | | <el-col :span="5" >X:</el-col> |
| | | <el-col :span="2" >{{trademarkAttr.xMargin}}</el-col> |
| | | </el-row> |
| | |
| | | -ms-user-select: none; |
| | | user-select: none; |
| | | } |
| | | .xStyle{ |
| | | transform : rotateY(180deg) |
| | | } |
| | | .yStyle{ |
| | | transform : rotateX(180deg) |
| | | } |
| | | </style> |
| | |
| | | package com.example.erp.controller.pp; |
| | | |
| | | import com.example.erp.common.Constants; |
| | | import com.example.erp.common.Result; |
| | | import com.example.erp.entity.pp.BasicDataProduce; |
| | | import com.example.erp.entity.pp.FlowCard; |
| | | import com.example.erp.exception.ServiceException; |
| | | import com.example.erp.service.pp.BasicDateProduceService; |
| | | 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("/basicDataProduce") |
| | | public class BasicDataProduceController { |
| | | @Autowired |
| | | BasicDateProduceService basicDateProduceService; |
| | | // @PostMapping("/selectWorkBasic/{process}") |
| | | // public Result SelectWorkBasic( |
| | | // @PathVariable String process) { |
| | | // return Result.seccess(basicDateProduceService.SelectWorkBasicSv(process)); |
| | | // } |
| | | @ApiOperation("查询工序接口") |
| | | @PostMapping ("/selectProcess") |
| | | public Result selectProcess() { |
| | | return Result.seccess(basicDateProduceService.selectProcessSv()); |
| | | } |
| | | |
| | | @ApiOperation("查询所有基础数据接口") |
| | | @PostMapping ("/selectBasic") |
| | | public Result selectBasic() { |
| | | return Result.seccess(basicDateProduceService.selectBasicSv()); |
| | | } |
| | | |
| | | @ApiOperation("根据Id查询对应基础数据接口") |
| | | @PostMapping ("/openSelectId/{id}") |
| | | public Result openSelectId( |
| | | @PathVariable String id){ |
| | | return Result.seccess(basicDateProduceService.openSelectIdSv(id)); |
| | | |
| | | } |
| | | |
| | | @ApiOperation("删除基础数据接口") |
| | | @PostMapping("/deleteBasic/{id}") |
| | | public Result deleteBasic(@PathVariable String id){ |
| | | if(basicDateProduceService.deleteBasicSv(id)){ |
| | | return Result.seccess(); |
| | | }else { |
| | | throw new ServiceException(Constants.Code_500,"删除失败!"); |
| | | |
| | | } |
| | | } |
| | | |
| | | @ApiOperation("修改基础数据接口") |
| | | @PostMapping("/updateBasic/{id}/{process}/{name}/{type}") |
| | | public Result updateBasic(@PathVariable String id, |
| | | @PathVariable String process, |
| | | @PathVariable String name, |
| | | @PathVariable String type){ |
| | | if(basicDateProduceService.updateBasicSv(id,process,name,type)){ |
| | | return Result.seccess(); |
| | | }else { |
| | | throw new ServiceException(Constants.Code_500,"修改失败"); |
| | | |
| | | } |
| | | } |
| | | |
| | | @ApiOperation("班组基础数据添加接口") |
| | | @PostMapping("/saveTeamGroup") |
| | | public Result saveTeamGroup( @RequestBody Map<String,Object> object){ |
| | | if(basicDateProduceService.saveTeamGroupSv(object)){ |
| | | return Result.seccess(); |
| | | }else { |
| | | throw new ServiceException(Constants.Code_500,"保存失败"); |
| | | |
| | | } |
| | | } |
| | | |
| | | @ApiOperation("次破类型基础数据添加接口") |
| | | @PostMapping("/saveBreakageType") |
| | | public Result saveBreakageType( @RequestBody Map<String,Object> object){ |
| | | if(basicDateProduceService.saveBreakageTypeSv(object)){ |
| | | return Result.seccess(); |
| | | }else { |
| | | throw new ServiceException(Constants.Code_500,"保存失败"); |
| | | |
| | | } |
| | | } |
| | | |
| | | @ApiOperation("次破原因基础数据添加接口") |
| | | @PostMapping("/saveBreakageReason") |
| | | public Result saveBreakageReason( @RequestBody Map<String,Object> object){ |
| | | if(basicDateProduceService.saveBreakageReasonSv(object)){ |
| | | return Result.seccess(); |
| | | }else { |
| | | throw new ServiceException(Constants.Code_500,"保存失败"); |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
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.controller.sd; |
| | | |
| | | import com.example.erp.common.Result; |
| | | import com.example.erp.entity.sd.BasicData; |
| | | import com.example.erp.service.sd.BasicDateService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | |
| | | public Result getBasicDataByTypeAndChildType(@PathVariable String type,@PathVariable String childType){ |
| | | return Result.seccess(basicDateService.getBasicDataByTypeAndChildType(type,childType)); |
| | | } |
| | | @GetMapping("/getBasicData") |
| | | public Result getBasicData(){ |
| | | return Result.seccess(basicDateService.getBasicData()); |
| | | } |
| | | @GetMapping("/getBasicDataType") |
| | | public Result getBasicDataType(){ |
| | | return Result.seccess(basicDateService.getBasicDataType()); |
| | | } |
| | | |
| | | @PostMapping("addBasicData") |
| | | public Result addBasicData(@RequestBody Map<String,Object> map){ |
| | | return Result.seccess(basicDateService.addBasicData(map)); |
| | | } |
| | | @PostMapping("updateBasicData") |
| | | public Result updateBasicData(@RequestBody BasicData basicData){ |
| | | return Result.seccess(basicDateService.updateBasicData(basicData)); |
| | | } |
| | | |
| | | @PostMapping("deleteBasicData") |
| | | public Result deleteBasicData(@RequestBody BasicData basicData){ |
| | | return Result.seccess(basicDateService.deleteBasicData(basicData)); |
| | | } |
| | | } |
| | |
| | | import com.example.erp.common.Constants; |
| | | import com.example.erp.common.Result; |
| | | import com.example.erp.entity.sd.Order; |
| | | import com.example.erp.entity.sd.OrderDetail; |
| | | import com.example.erp.entity.sd.OrderGlassDetail; |
| | | import com.example.erp.exception.ServiceException; |
| | | import com.example.erp.service.sd.OrderService; |
| | |
| | | public Result updateOrderMoney(@RequestBody Map<String,Object> map) { |
| | | return Result.seccess(orderService.updateOrderMoney(map)); |
| | | } |
| | | |
| | | @ApiOperation("查询订单报表") |
| | | @PostMapping("/getOrderReport/{pageNum}/{pageSize}/{selectDate}") |
| | | public Result getOrderReport(@PathVariable Integer pageNum, |
| | | @PathVariable Integer pageSize, |
| | | @PathVariable List<String> selectDate, |
| | | @RequestBody OrderDetail orderDetail) { |
| | | return Result.seccess(orderService.getOrderReport(pageNum,pageSize,selectDate,orderDetail)); |
| | | |
| | | } |
| | | } |
| | |
| | | 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; |
| | | } |
| | |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Mapper |
| | | public interface BasicDateProduceMapper { |
| | | |
| | | |
| | | |
| | | List<BasicDataProduce> SelectWorkBasicDeviceMp(String process); |
| | | |
| | | List<BasicDataProduce> SelectWorkBasicTeamsMp(String process); |
| | | |
| | | List<BasicDataProduce> SelectWorkBasicTeams(String process); |
| | | |
| | | List<Map<String,String>> selectProcessMp(); |
| | | |
| | | List<Map<String,String>> selectBasicMp(); |
| | | |
| | | List<Map<String,String>> openSelectIdMp(String id); |
| | | |
| | | Boolean deleteBasicMp(String id); |
| | | |
| | | Boolean updateBasicMp(String id, String basicId, String name, String type); |
| | | |
| | | String getBasicData(String process); |
| | | |
| | | Boolean addTeamGroupMp(String basicId, String basicName); |
| | | |
| | | Boolean saveBreakageTypeMp(String basicName); |
| | | |
| | | Boolean saveBreakageReasonMp(String basicName); |
| | | } |
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> { |
| | | //流程卡管理查询 |
| | |
| | | package com.example.erp.mapper.sd; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.example.erp.entity.sd.BasicData; |
| | | import com.example.erp.entity.sd.Order; |
| | | import com.example.erp.service.sd.BasicDateService; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | import java.util.Map; |
| | | |
| | | @Mapper |
| | | public interface BasicDateMapper { |
| | | public interface BasicDateMapper extends BaseMapper<BasicData> { |
| | | |
| | | List<BasicData> getOrderBasicData(String type); |
| | | List<String> getOrderBasicDataType(String type); |
| | | |
| | | List<BasicData> getOrderBasicDataByTypeAndChildType(String type, String childType); |
| | | |
| | | List<BasicData> getBasicData(); |
| | | |
| | | List<BasicData> getBasicDataFirstType(); |
| | | |
| | | List<BasicData> getBasicDataLastType(); |
| | | } |
| | |
| | | boolean insertBatch(List<OrderDetail> orderDetails); |
| | | |
| | | boolean updateOrderMoney( List<OrderDetail> orderDetails); |
| | | |
| | | List<OrderDetail> getOrderReport(Integer offset, Integer pageSize, String startDate, String endDate, OrderDetail orderDetail); |
| | | } |
| | |
| | | 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.FlowCard; |
| | | import com.example.erp.mapper.pp.BasicDateProduceMapper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Service |
| | | @DS("sd") |
| | | @DS("pp") |
| | | public class BasicDateProduceService { |
| | | @Autowired |
| | | private BasicDateProduceMapper basicDateProduceMapper; |
| | | |
| | | //查询工序 |
| | | public Map<String, Object> selectProcessSv() { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("process", basicDateProduceMapper.selectProcessMp()); |
| | | return map; |
| | | } |
| | | |
| | | // public Object SelectWorkBasicSv(String process) { |
| | | // Map<String, Object> map = new HashMap<>(); |
| | | // map.put("device", basicDateProduceMapper.SelectWorkBasicDeviceMp(process)); |
| | | // map.put("teams", basicDateProduceMapper.SelectWorkBasicTeamsMp(process)); |
| | | // return map; |
| | | // } |
| | | |
| | | //查询所有基础数据 |
| | | public Map<String, Object> selectBasicSv() { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", basicDateProduceMapper.selectBasicMp()); |
| | | map.put("process", basicDateProduceMapper.selectProcessMp()); |
| | | return map; |
| | | } |
| | | |
| | | //根据Id查询对应基础数据 |
| | | public Map<String, Object> openSelectIdSv(String id) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("data", basicDateProduceMapper.openSelectIdMp(id)); |
| | | return map; |
| | | } |
| | | |
| | | //删除基础数据 |
| | | public Boolean deleteBasicSv(String id) { |
| | | if (!id.isEmpty()) { |
| | | |
| | | return basicDateProduceMapper.deleteBasicMp(id); |
| | | } else { |
| | | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | //updateBasicSv |
| | | public Boolean updateBasicSv(String id, String process, String name, String type) { |
| | | if (!id.isEmpty()) { |
| | | String BasicId = basicDateProduceMapper.getBasicData(process); |
| | | basicDateProduceMapper.updateBasicMp(id,BasicId,name,type); |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | //班组基础数据添加 |
| | | public Boolean saveTeamGroupSv(Map<String, Object> object) { |
| | | List<BasicDataProduce> basicDataProduceList = JSONArray.parseArray(JSONObject.toJSONString(object.get("basicDataProduce")), BasicDataProduce.class); |
| | | if (!basicDataProduceList.isEmpty()) { |
| | | for (BasicDataProduce basicDataProduce : basicDataProduceList) { |
| | | //查询工序对应的工序id |
| | | String BasicId = basicDateProduceMapper.getBasicData(basicDataProduce.getBasicCategory()); |
| | | basicDateProduceMapper.addTeamGroupMp(BasicId,basicDataProduce.getBasicName()); |
| | | } |
| | | return true; |
| | | }else{ |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | | //次破类型基础数据添加 |
| | | public Boolean saveBreakageTypeSv(Map<String, Object> object) { |
| | | List<BasicDataProduce> basicDataProduceList = JSONArray.parseArray(JSONObject.toJSONString(object.get("basicDataProduce")), BasicDataProduce.class); |
| | | if (!basicDataProduceList.isEmpty()) { |
| | | for (BasicDataProduce basicDataProduce : basicDataProduceList) { |
| | | basicDateProduceMapper.saveBreakageTypeMp(basicDataProduce.getBasicName()); |
| | | } |
| | | return true; |
| | | }else{ |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | //次破原因基础数据添加 |
| | | public boolean saveBreakageReasonSv(Map<String, Object> object) { |
| | | List<BasicDataProduce> basicDataProduceList = JSONArray.parseArray(JSONObject.toJSONString(object.get("basicDataProduce")), BasicDataProduce.class); |
| | | if (!basicDataProduceList.isEmpty()) { |
| | | for (BasicDataProduce basicDataProduce : basicDataProduceList) { |
| | | basicDateProduceMapper.saveBreakageReasonMp(basicDataProduce.getBasicName()); |
| | | } |
| | | return true; |
| | | }else{ |
| | | return false; |
| | | } |
| | | } |
| | | } |
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; |
| | | productIdVl = orderId + letters; |
| | | //查询生成的生产订单号是否存在 |
| | | Integer workCount = workOrderMapper.selectOrderNumber(productIdVl); |
| | | if (workCount < 1) { |
| | |
| | | } |
| | | //添加生产订单 |
| | | workOrderMapper.addOrderWorkMp(productIdVl, orderDetail.getOrderId(), orderDetail.getProductId(), orderDetail.getProductName(), userName); |
| | | Integer State = 2; |
| | | Integer States = 1; |
| | | Integer state = 2; |
| | | Integer states = 1; |
| | | //查询该订单未转生产订单的条数 |
| | | Integer NoWorkCount = workOrderMapper.selectWorkCount(orderDetail.getOrderId()); |
| | | if (NoWorkCount == 0) { |
| | | Integer noWorkCount = workOrderMapper.selectWorkCount(orderDetail.getOrderId()); |
| | | if (noWorkCount == 0) { |
| | | //条数为0修改转生产订单状态为2,否则为1 |
| | | workOrderMapper.updateWorkType(orderDetail.getOrderId(), State); |
| | | workOrderMapper.updateWorkType(orderDetail.getOrderId(), state); |
| | | } else { |
| | | workOrderMapper.updateWorkType(orderDetail.getOrderId(), States); |
| | | workOrderMapper.updateWorkType(orderDetail.getOrderId(), states); |
| | | } |
| | | } |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | 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 { |
| | |
| | | return basicDateMapper.getOrderBasicDataByTypeAndChildType(type, childType); |
| | | |
| | | } |
| | | |
| | | public List<BasicData> getBasicData() { |
| | | return basicDateMapper.getBasicData(); |
| | | } |
| | | |
| | | public Object getBasicDataType() { |
| | | List<BasicData> lastType = basicDateMapper.getBasicDataLastType(); |
| | | List<BasicData> firstType= basicDateMapper.getBasicDataFirstType(); |
| | | List<Map<String,Object>> list = new ArrayList<>(); |
| | | if(!firstType.isEmpty()){ |
| | | firstType.forEach(item->{ |
| | | Map<String,Object> map = new HashMap<>(); |
| | | List<Map<String,String>> lastTypeList = new ArrayList<>(); |
| | | lastType.forEach(item1->{ |
| | | Map<String,String> map1 = new HashMap<>(); |
| | | if(Objects.equals(item.getBasicType(), item1.getBasicType())){ |
| | | map1.put("value",item1.getBasicCategory()); |
| | | map1.put("label",item1.getBasicCategory()); |
| | | lastTypeList.add(map1); |
| | | } |
| | | }); |
| | | map.put("children",lastTypeList); |
| | | map.put("value",item.getBasicType()); |
| | | map.put("label",item.getBasicType()); |
| | | list.add(map); |
| | | }); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | public boolean addBasicData(Map<String, Object> map) { |
| | | List<String> basicTypeList = (List<String>) map.get("basicType"); |
| | | if(basicTypeList.size()==2){ |
| | | BasicData basicData = new BasicData(); |
| | | basicData.setBasicType(basicTypeList.get(0)); |
| | | basicData.setBasicCategory(basicTypeList.get(1)); |
| | | basicData.setBasicName(map.get("input").toString()); |
| | | basicDateMapper.insert(basicData); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | public int deleteBasicData(BasicData basicData) { |
| | | |
| | | return basicDateMapper.deleteById(basicData.getId()); |
| | | } |
| | | |
| | | public int updateBasicData(BasicData basicData) { |
| | | return basicDateMapper.updateById(basicData); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | public Map<String,Object> getOrderReport(Integer pageNum, Integer pageSize, List<String> selectDate, OrderDetail orderDetail) { |
| | | Integer offset = (pageNum-1)*pageSize; |
| | | String endDate = LocalDate.now().toString(); |
| | | String startDate = LocalDate.now().minusDays(15).toString(); |
| | | if(selectDate !=null && selectDate.size()==2){ |
| | | if(!selectDate.get(0).isEmpty()){ |
| | | startDate = selectDate.get(0); |
| | | } |
| | | if(!selectDate.get(1).isEmpty()){ |
| | | endDate = selectDate.get(1); |
| | | } |
| | | } |
| | | |
| | | Map<String,Object> map = new HashMap<>(); |
| | | map.put("data",orderDetailMapper.getOrderReport(offset, pageSize, startDate, endDate, orderDetail)); |
| | | // map.put("total",orderMapper.getPageTotal(offset, pageSize, startDate, endDate, orderDetail)); |
| | | return map; |
| | | } |
| | | } |
| | |
| | | */ |
| | | @OnMessage |
| | | public void onMessage(Session session, String message) { |
| | | log.info("[onOpen][session({}) 接收到一条消息({})]", session, message); |
| | | //log.info("[onOpen][session({}) 接收到一条消息({})]", session, message); |
| | | // TODO: 对于客户端发送的指令信息,解析后进行对应的逻辑处理 |
| | | } |
| | | |
| | |
| | | <result column="d_basic_type" property="basicData.basicType"/> |
| | | <result column="d_basic_name" property="basicData.basicName"/> |
| | | <result column="d_basic_category" property="basicData.basicCategory"/> |
| | | |
| | | <association property="basicData" javaType="com.example.erp.entity.sd.BasicData"> |
| | | <result column="basic_name" property="basicName"/> |
| | | </association> |
| | | |
| | | |
| | | </resultMap> |
| | | <select id="SelectWorkBasicDeviceMp"> |
| | | select |
| | | * |
| | | from |
| | | basic_data_produce as a |
| | | where a.basic_category=#{process} and a.basic_type='设备' |
| | | </select> |
| | | |
| | | <select id="SelectWorkBasicTeamsMp"> |
| | | select |
| | | * |
| | | from |
| | | basic_data_produce as a |
| | | where a.basic_category=#{process} and a.basic_type='班组' |
| | | </select> |
| | | |
| | | <select id="SelectWorkBasicTeams" resultMap="selectBasicDataProduce"> |
| | | select bdp.basic_name ,bd.basic_name as d_basic_name |
| | |
| | | where bd.basic_name = #{process} |
| | | and bdp.basic_type = "teamsgroups" |
| | | </select> |
| | | |
| | | <!-- 查询工序--> |
| | | <select id="selectProcessMp"> |
| | | select * from sd.basic_data where basic_type='product' and basic_category='process' |
| | | |
| | | </select> |
| | | |
| | | <select id="selectBasicMp"> |
| | | select bdp.id, bdp.basic_type, bdp.basic_name, bd.basic_name as d_basic_name |
| | | from pp.basic_data_produce bdp |
| | | left join sd.basic_data bd on bdp.basic_category = bd.id |
| | | order by bdp.id desc |
| | | </select> |
| | | |
| | | <select id="openSelectIdMp"> |
| | | select bdp.id, bdp.basic_type, bdp.basic_name, bd.basic_name as d_basic_name |
| | | from pp.basic_data_produce bdp |
| | | left join sd.basic_data bd on bdp.basic_category = bd.id |
| | | where bdp.id = #{id} |
| | | </select> |
| | | |
| | | <delete id="deleteBasicMp"> |
| | | delete from pp.basic_data_produce where id = #{id} |
| | | </delete> |
| | | |
| | | <update id="updateBasicMp"> |
| | | update pp.basic_data_produce set basic_type = #{type},basic_name = #{name},basic_category = #{basicId} where id = #{id} |
| | | </update> |
| | | |
| | | <select id="getBasicData"> |
| | | select id from sd.basic_data where basic_category = 'process' and basic_name = #{process} |
| | | </select> |
| | | |
| | | <insert id="addTeamGroupMp"> |
| | | insert into pp.basic_data_produce(basic_type,basic_name,basic_category,create_time) |
| | | values('teamsgroups',#{basicName},#{basicId},now()) |
| | | </insert> |
| | | |
| | | <insert id="saveBreakageTypeMp"> |
| | | insert into pp.basic_data_produce(basic_type,basic_name,create_time) |
| | | values('breakagetype',#{basicName},now()) |
| | | </insert> |
| | | |
| | | <insert id="saveBreakageReasonMp"> |
| | | insert into pp.basic_data_produce(basic_type,basic_name,create_time) |
| | | values('breakagereason',#{basicName},now()) |
| | | </insert> |
| | | </mapper> |
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} |
| | |
| | | group by a.basic_category |
| | | |
| | | </select> |
| | | |
| | | <select id="getBasicData"> |
| | | select * from basic_data |
| | | order by id desc |
| | | </select> |
| | | |
| | | <select id="getBasicDataFirstType"> |
| | | select * from basic_data |
| | | group by basic_type |
| | | </select> |
| | | <select id="getBasicDataLastType"> |
| | | select * from basic_data |
| | | group by basic_category |
| | | </select> |
| | | </mapper> |
| | |
| | | </foreach> |
| | | |
| | | </update> |
| | | |
| | | <!-- <select id="getOrderReport">--> |
| | | <!-- SELECT--> |
| | | <!-- from order_detail as a--> |
| | | <!-- left join sd.`order` o on o.id = a.order_id--> |
| | | |
| | | <!-- </select>--> |
| | | |
| | | </mapper> |
| | |
| | | <result column="d_basic_type" property="basicData.basicType"/> |
| | | <result column="d_basic_name" property="basicData.basicName"/> |
| | | <result column="d_basic_category" property="basicData.basicCategory"/> |
| | | |
| | | <association property="basicData" javaType="com.example.erp.entity.sd.BasicData"> |
| | | <result column="basic_name" property="basicName"/> |
| | | </association> |
| | | |
| | | |
| | | </resultMap> |
| | | <select id="SelectWorkBasicDeviceMp"> |
| | | select |
| | | * |
| | | from |
| | | basic_data_produce as a |
| | | where a.basic_category=#{process} and a.basic_type='设备' |
| | | </select> |
| | | |
| | | <select id="SelectWorkBasicTeamsMp"> |
| | | select |
| | | * |
| | | from |
| | | basic_data_produce as a |
| | | where a.basic_category=#{process} and a.basic_type='班组' |
| | | </select> |
| | | |
| | | <select id="SelectWorkBasicTeams" resultMap="selectBasicDataProduce"> |
| | | select bdp.basic_name ,bd.basic_name as d_basic_name |
| | |
| | | where bd.basic_name = #{process} |
| | | and bdp.basic_type = "teamsgroups" |
| | | </select> |
| | | |
| | | <!-- 查询工序--> |
| | | <select id="selectProcessMp"> |
| | | select * from sd.basic_data where basic_type='product' and basic_category='process' |
| | | |
| | | </select> |
| | | |
| | | <select id="selectBasicMp"> |
| | | select bdp.id, bdp.basic_type, bdp.basic_name, bd.basic_name as d_basic_name |
| | | from pp.basic_data_produce bdp |
| | | left join sd.basic_data bd on bdp.basic_category = bd.id |
| | | order by bdp.id desc |
| | | </select> |
| | | |
| | | <select id="openSelectIdMp"> |
| | | select bdp.id, bdp.basic_type, bdp.basic_name, bd.basic_name as d_basic_name |
| | | from pp.basic_data_produce bdp |
| | | left join sd.basic_data bd on bdp.basic_category = bd.id |
| | | where bdp.id = #{id} |
| | | </select> |
| | | |
| | | <delete id="deleteBasicMp"> |
| | | delete from pp.basic_data_produce where id = #{id} |
| | | </delete> |
| | | |
| | | <update id="updateBasicMp"> |
| | | update pp.basic_data_produce set basic_type = #{type},basic_name = #{name},basic_category = #{basicId} where id = #{id} |
| | | </update> |
| | | |
| | | <select id="getBasicData"> |
| | | select id from sd.basic_data where basic_category = 'process' and basic_name = #{process} |
| | | </select> |
| | | |
| | | <insert id="addTeamGroupMp"> |
| | | insert into pp.basic_data_produce(basic_type,basic_name,basic_category,create_time) |
| | | values('teamsgroups',#{basicName},#{basicId},now()) |
| | | </insert> |
| | | |
| | | <insert id="saveBreakageTypeMp"> |
| | | insert into pp.basic_data_produce(basic_type,basic_name,create_time) |
| | | values('breakagetype',#{basicName},now()) |
| | | </insert> |
| | | |
| | | <insert id="saveBreakageReasonMp"> |
| | | insert into pp.basic_data_produce(basic_type,basic_name,create_time) |
| | | values('breakagereason',#{basicName},now()) |
| | | </insert> |
| | | </mapper> |
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} |
| | |
| | | e.reportWorkQuantityCount, |
| | | e.broken_num, |
| | | round(ifnull(f.inventory,0)*a.area,2) as inventoryArea |
| | | <<<<<<< HEAD |
| | | |
| | | ======= |
| | | |
| | | >>>>>>> b27e80bcfaacc225fcf8d2f1617b98bdedb7edf7 |
| | | from |
| | | flow_card as c |
| | | left join |
| | |
| | | ) as e |
| | | on e.process_id = c.process_id |
| | | and e.technology_number = c.technology_number |
| | | <<<<<<< HEAD |
| | | |
| | | where a.order_id = #{orderId} |
| | | |
| | | ======= |
| | | |
| | | where a.order_id = #{orderId} |
| | | |
| | | >>>>>>> b27e80bcfaacc225fcf8d2f1617b98bdedb7edf7 |
| | | </select> |
| | | </mapper> |
| | |
| | | group by a.basic_category |
| | | |
| | | </select> |
| | | |
| | | <select id="getBasicData"> |
| | | select * from basic_data |
| | | order by id desc |
| | | </select> |
| | | |
| | | <select id="getBasicDataFirstType"> |
| | | select * from basic_data |
| | | group by basic_type |
| | | </select> |
| | | <select id="getBasicDataLastType"> |
| | | select * from basic_data |
| | | group by basic_category |
| | | </select> |
| | | </mapper> |
| | |
| | | </foreach> |
| | | |
| | | </update> |
| | | |
| | | <select id="getOrderReport"> |
| | | SELECT |
| | | from order_detail as a |
| | | left join sd.`order` o on o.id = a.order_id |
| | | |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | com\example\erp\mapper\pp\BasicDateProduceMapper.class |
| | | com\example\erp\entity\sd\Returns.class |
| | | com\example\erp\entity\sd\Product.class |
| | | com\example\erp\service\pp\ReportService.class |
| | | com\example\erp\service\sd\BasicGlassTypeServise.class |
| | | com\example\erp\service\sd\ProductService.class |
| | | com\example\erp\entity\mm\FinishedOperateLog.class |
| | |
| | | com\example\erp\config\MyCorsConfig$1.class |
| | | com\example\erp\controller\pp\ProductionSchedulingController.class |
| | | com\example\erp\service\sd\OrderProcessDetailService.class |
| | | com\example\erp\entity\mm\MaterialOutboundDetail.class |
| | | com\example\erp\controller\pp\ReworkController.class |
| | | com\example\erp\entity\pp\DamageDetails.class |
| | | com\example\erp\mapper\mm\BasicWarehouseTypeMapper.class |
| | |
| | | com\example\erp\controller\sd\ProductController.class |
| | | com\example\erp\entity\sd\GlassType.class |
| | | com\example\erp\mapper\sd\OrderMapper.class |
| | | com\example\erp\controller\pp\ReportController.class |
| | | com\example\erp\service\mm\BasicWarehouseTypeService.class |
| | | com\example\erp\mapper\OrderTestMapper.class |
| | | com\example\erp\mapper\mm\MaterialStoreMapper.class |
| | |
| | | com\example\erp\entity\sd\Customer.class |
| | | com\example\erp\entity\userInfo\SysMenu.class |
| | | com\example\erp\entity\sd\Delivery.class |
| | | com\example\erp\controller\mm\MaterialController.class |
| | | com\example\erp\controller\pp\BasicDataProduceController.class |
| | | com\example\erp\config\WebSocketConfig.class |
| | | com\example\erp\controller\dto\UserDTO.class |
| | |
| | | com\example\erp\service\userInfo\SysMenuItemService.class |
| | | com\example\erp\entity\pp\ReportingWorkDetail.class |
| | | com\example\erp\controller\sd\DeliveryController.class |
| | | com\example\erp\entity\mm\ReturningWarehouseDetail.class |
| | | com\example\erp\service\impl\OrderServiceImpl.class |
| | | com\example\erp\entity\sd\ProductDetail.class |
| | | com\example\erp\mapper\pp\ReworkMapper.class |
| | |
| | | com\example\erp\mapper\pp\FlowCardMapper.class |
| | | com\example\erp\mapper\userInfo\SysMenuItemMapper.class |
| | | com\example\erp\controller\userInfo\SysMenuController.class |
| | | com\example\erp\entity\mm\ReturningWarehouse.class |
| | | com\example\erp\entity\sd\Order.class |
| | | com\example\erp\entity\sd\BasicGlassType.class |
| | | com\example\erp\entity\sd\OrderGlassDetail.class |
| | |
| | | com\example\erp\entity\pp\BaseBom.class |
| | | com\example\erp\mapper\userInfo\SysErrorMapper.class |
| | | com\example\erp\service\mm\FinishedGoodsInventoryService.class |
| | | com\example\erp\entity\mm\MaterialInventory.class |
| | | com\example\erp\entity\sd\ReturnsDetail.class |
| | | com\example\erp\entity\sd\OrderProcessDetail.class |
| | | com\example\erp\config\SwaggerConfig.class |
| | |
| | | com\example\erp\exception\ServiceException.class |
| | | com\example\erp\common\interceptor\JwtInterceptor.class |
| | | com\example\erp\entity\pp\Rework.class |
| | | com\example\erp\service\mm\MaterialStoreService.class |
| | | com\example\erp\entity\pp\ReportingWork.class |
| | | com\example\erp\tools\netty\MyWebSocketHandler.class |
| | | com\example\erp\service\mm\MaterialService.class |
| | | com\example\erp\entity\mm\MaterialOutbound.class |
| | | com\example\erp\controller\sd\OrderController.class |
| | | com\example\erp\mapper\pp\ReportMapper.class |
| | | com\example\erp\entity\pp\BasicDataProduce.class |
| | | com\example\erp\controller\pp\ReportWorkController.class |
| | | com\example\erp\entity\pp\PatchLog.class |
| | |
| | | com\example\erp\mapper\sd\ProductMapper.class |
| | | com\example\erp\common\Result.class |
| | | com\example\erp\service\sd\CustomerService.class |
| | | com\example\erp\controller\mm\MaterialInventoryController.class |
| | | com\example\erp\mapper\pp\DamageDetailsMapper.class |
| | | com\example\erp\mapper\sd\OrderProcessDetailMapper.class |
| | | com\example\erp\entity\pp\Device.class |
| | |
| | | com\example\erp\controller\OrderTestController.class |
| | | com\example\erp\mapper\userInfo\SysMenuMapper.class |
| | | com\example\erp\tools\TokenTools.class |
| | | com\example\erp\controller\mm\MaterialStoreController.class |
| | | com\example\erp\mapper\sd\OrderDetailMapper.class |
| | | com\example\erp\service\mm\MaterialInventoryService.class |
| | | com\example\erp\controller\userInfo\SysMenuItemController.class |
| | | com\example\erp\mapper\sd\ProductDetailMapper.class |
| | | com\example\erp\entity\pp\FlowCard.class |
| | |
| | | com\example\erp\controller\pp\WorkOrderController.class |
| | | com\example\erp\entity\pp\DeviceMaintenance.class |
| | | com\example\erp\tools\netty\NettyServer$1.class |
| | | com\example\erp\mapper\mm\MaterialInventoryMapper.class |
| | | com\example\erp\entity\userInfo\SysMenuItem.class |
| | | com\example\erp\mapper\pp\ReportingWorkMapper.class |
| | | com\example\erp\entity\sd\BasicData.class |
| | |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\BasicDateProduceService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\config\MybatisPlusConfig.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\ProductDetailMapper.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\mm\MaterialController.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\pp\ReportController.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\GlassType.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\common\interceptor\JwtInterceptor.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\WorkOrderMapper.java |
| | |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\mm\FinishedOperateLogMapper.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\FlowCardMapper.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\tools\TokenTools.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\mm\MaterialInventoryController.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\pp\ReportWorkController.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\mm\MaterialStore.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\userInfo\SysMenuItem.java |
| | |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\common\Result.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\Returns.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\userInfo\SysMenuService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\ReportService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\WorkOrderService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\mm\MaterialStoreService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\dto\UserDTO.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\ReportingWorkService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\ProductDetail.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\mm\ReturningWarehouseDetail.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\mm\BasicWarehouseTypeService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\sd\OrderProcessDetailService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\mm\MaterialInventoryMapper.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\tools\netty\MyWebSocketHandler.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\FlowCard.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\ReportingWorkDetailMapper.java |
| | |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\config\InterceptorConfig.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\BasicDataProduce.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\sd\BasicGlassTypeServise.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\mm\MaterialOutbound.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\mm\MaterialInventoryService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\config\MyCorsConfig.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\config\SwaggerConfig.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\Device.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\sd\ProductService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\pp\OrderBom.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\mm\MaterialStoreController.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\Order.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\pp\ProductionSchedulingService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\tools\WebSocketServerPool.java |
| | |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\DeliveryDetailMapper.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\userInfo\SysMenuItemMapper.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\common\CacheUtil.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\pp\ReportMapper.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\mm\FinishedGoodsInventoryController.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\userInfo\UserService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\BasicGlassTypeMapper.java |
| | |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\userInfo\SysMenuController.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\sd\CustomerMapper.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\tools\netty\NettyServer.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\mm\MaterialInventory.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\mm\ReturningWarehouse.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\OrderProcessDetail.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\mm\BasicWarehouseType.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\pp\ReplenishController.java |
| | |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\sd\DeliveryService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\controller\OrderTestController.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\mapper\mm\BasicWarehouseTypeMapper.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\service\mm\MaterialService.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\mm\MaterialOutboundDetail.java |
| | | D:\Documents\ERP_override\north-glass-erp\src\main\java\com\example\erp\entity\sd\Product.java |