From 2f853b74d6b37d0bb2e3301f7417c5f90e307c0b Mon Sep 17 00:00:00 2001 From: chenlu <1320612696@qq.com> Date: 星期二, 02 四月 2024 16:20:49 +0800 Subject: [PATCH] 设备管理新增,维修保养新增查询 --- north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue | 271 +++++++++++++++++++++++++++-------------------------- 1 files changed, 139 insertions(+), 132 deletions(-) diff --git a/north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue b/north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue index a1aa829..eb54c7a 100644 --- a/north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue +++ b/north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue @@ -1,50 +1,55 @@ <script setup> -import {reactive, ref} from "vue"; -import {useRouter} from 'vue-router' -let router=useRouter() -const getTableRow = (row,type) =>{ - switch (type) { - case 'edit' :{ - //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅') - router.push({path: '/main/reportingWorks/ReportingWorkDetail', query: { id: row.id }}) - break - } - case 'delete':{ - alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅') - break - } - case 'setType':{ - alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍙嶅鐘舵��') - break - } - } -} +import {computed, nextTick, onMounted, reactive, ref, toRefs} from "vue"; +import {useRouter, useRoute} from 'vue-router' +import request from "@/utils/request"; +import {ElMessage} from "element-plus"; +import {changeFilterEvent, filterChanged} from "@/hook" +import userInfo from "@/stores/userInfo" +import {useI18n} from 'vue-i18n' +import {addListener, toolbarButtonClickEvent} from "@/hook/mouseMove"; +//璇█鑾峰彇 +const {t} = useI18n() +const route = useRoute() +const user = userInfo() +let router = useRouter() -//琛ㄥ熬姹傚拰 -const sumNum = (list, field) => { - let count = 0 - list.forEach(item => { - count += Number(item[field]) - }) - return count.toFixed(2) -} +//瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁 +const titleSelectJson = ref({ + processType: [], + +}) +//绗竴娆″姞杞芥暟鎹� +request.post(`/basicDataProduce/selectProcess`).then((res) => { + if (res.code == 200) { + + titleSelectJson.value.processType = res.data.process; + } else { + ElMessage.warning(res.msg) + } +}) + +onMounted(() => { + //鍚敤琛ㄦ牸鎷栧姩閫変腑 + addListener(xGrid.value, gridOptions) +}) + //瀛愮粍浠舵帴鏀跺弬鏁� - +const xGrid = ref() const gridOptions = reactive({ - border: "full",//琛ㄦ牸鍔犺竟妗� + border: "full",//琛ㄦ牸鍔犺竟妗� keepSource: true,//淇濇寔婧愭暟鎹� align: 'center',//鏂囧瓧灞呬腑 - stripe:true,//鏂戦┈绾� - rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒 + stripe: true,//鏂戦┈绾� + rowConfig: {isCurrent: true, isHover: true, height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒 id: 'CustomerList', showFooter: true,//鏄剧ず鑴� printConfig: {}, importConfig: {}, exportConfig: {}, - scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔� - showOverflow:true, + scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔� + showOverflow: true, columnConfig: { resizable: true, useKey: true @@ -60,78 +65,41 @@ mode: 'row', showStatus: true },//琛ㄥご鍙傛暟 - columns:[ - { type: 'seq',fixed:"left", title: '鑷簭', width: 50 }, + columns: [ + {type: 'seq', fixed: "left", title: '鑷簭', width: 50}, + { + field: 'basicName', + title: '璁惧鍚嶇О', + width: 500, + editRender: {name: 'input', attrs: {placeholder: ''}}, + }, - {field: 'standardName', title: '鏍囧噯鍚嶇О',editRender: { name: 'input', attrs: { placeholder: '' } } }, - {field: 'deviceName', title: '璁惧鍚嶇О',editRender: { name: 'input', attrs: { placeholder: '' } } }, - {field: 'buyingTime', title: '璐拱鏃堕棿',editRender: { name: 'input', attrs: { placeholder: '' } }}, - {field: 'installationTime',title: '瀹夎鏃堕棿',editRender: { name: 'input', attrs: { placeholder: '' } } }, - {field: 'serviceInterval', title: '淇濆吇鍛ㄦ湡',editRender: { name: 'input', attrs: { placeholder: '' } }}, - {field: 'process', title: '鎵�鍦ㄥ伐鑹�', editRender: { name: 'input', attrs: { placeholder: '' } }}, + { + field: 'basicCategory', + title: '鎵�鍦ㄥ伐搴�', + width: 500, + editRender: {}, + slots: {default: 'basicCategory_default', edit: 'basicCategory'} + }, ], //琛ㄥご鎸夐挳 toolbarConfig: { buttons: [ - {code: 'print_lck', name: '淇濆瓨',status:'primary' ,icon:'vxe-icon-save'}, + {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'}, + {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'}, + {code: 'save', name: '淇濆瓨', status: 'primary', icon: 'vxe-icon-save'}, ], - import: false, - export: true, - print: true, + // import: false, + // export: true, + // print: true, zoom: true, custom: true }, - data: [ - { - standardName: '', - deviceName: '', - buyingTime: '', - installationTime: '', - serviceInterval:'', - process:'', - - }, - { - standardName: '', - deviceName: '', - buyingTime: '', - installationTime: '', - serviceInterval:'', - process:'', - - }, - { - standardName: '', - deviceName: '', - buyingTime: '', - installationTime: '', - serviceInterval:'', - process:'', - - }, - { - standardName: '', - deviceName: '', - buyingTime: '', - installationTime: '', - serviceInterval:'', - process:'', - - }, - { - standardName: '', - deviceName: '', - buyingTime: '', - installationTime: '', - serviceInterval:'', - process:'', - - }, - ],//table body瀹為檯鏁版嵁 + data: [],//table body瀹為檯鏁版嵁 //鑴氶儴姹傚拰 - footerMethod ({ columns, data }) {//椤佃剼鍑芥暟 - let footList=['maintenanceFrequency','MaintenancesFrequency'] - return[ + footerMethod({columns, data}) {//椤佃剼鍑芥暟 + let footList = ['', ''] + return [ columns.map((column, columnIndex) => { if (columnIndex === 0) { return '鍚堣:' @@ -146,69 +114,108 @@ }) +const teamGridEvents = { + toolbarButtonClick({code}) { + const $grid = xGrid.value + if ($grid) { + switch (code) { + case 'addRow': { + $grid.insertAt({}) + break + } + + case 'removeRow': { + let result = toolbarButtonClickEvent() + if (result) { + $grid.remove(result.row) + } + break + } + case 'save': { + const tableData = $grid.getTableData().fullData + //console.log(tableData) + let machineData = ref({ + machine: tableData + }) + request.post("/maintenance/saveMachine", machineData.value).then((res) => { + if (res.code == 200) { + ElMessage.success("淇濆瓨鎴愬姛") + //router.push('/main/processCard/SplittingDetails?orderId=${orderId}') + router.push({ + path: '/main/machine/AddMachine', + query: {random: Math.random()} + }) + + //location.reload(); + } else { + ElMessage.warning(res.msg) + } + }) + break + } + } + } + } +} + const size = ref<'default' | 'large' | 'small'>('default') const value1 = ref('') -const dialogFormVisible = ref(false) -const formLabelWidth = '140px' -const form = reactive({ - name: '', - region: '', - date1: '', - date2: '', - delivery: false, - type: [], - resource: '', - desc: '', -}) </script> <template> <div class="main-div-customer"> <vxe-grid - max-height="100%" - @filter-change="filterChanged" - class="mytable-scrollbar" ref="xGrid" + class="mytable-scrollbar" + height="650px" + max-height="100%" v-bind="gridOptions" + v-on="teamGridEvents" + @filter-change="filterChanged" > - <!-- @toolbar-button-click="toolbarButtonClickEvent"--> - <!-- 涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�--> - <template #content="{ row}"> - <ul class="expand-wrapper"> - <li v-for="(item,key,index) in row"> - <span style="font-weight: bold">{{key+': '}}</span> - <span>{{ item }}</span> - </li> - </ul> - </template> - - <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�--> - <template #button_slot="{ row }"> - <el-button @click="dialogFormVisible = true" link type="primary" size="small">缂栬緫</el-button> - <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button> - </template> <template #num1_filter="{ column, $panel }"> <div> <div v-for="(option, index) in column.filters" :key="index"> - <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/> + <input v-model="option.data" type="type" @input="changeFilterEvent($event, option, $panel)"/> </div> </div> </template> - - + <!--宸ュ簭--> + <template #basicCategory="{ row }"> + <vxe-select v-model="row.basicCategory" + clearable + filterable + placeholder=""> + <vxe-option v-for="item in titleSelectJson.processType" + :key="item.basic_name" + :label="item.basic_name" + :value="item.basic_name"/> + </vxe-select> + </template> + <template #basicCategory_default="{ row }"> + <span>{{ row.basicCategory }}</span> + </template> </vxe-grid> </div> </template> <style scoped> -.main-div-customer{ - width: 99%; +.main-div-customer { + width: 80%; + margin: 0 auto; height: 100%; } +.vxe-grid { + /* 绂佺敤娴忚鍣ㄩ粯璁ら�変腑 */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} </style> \ No newline at end of file -- Gitblit v1.8.0