From c6b112564e0a97fc20db23e67dae0adee03f941c Mon Sep 17 00:00:00 2001 From: chenlu <1320612696@qq.com> Date: 星期四, 22 二月 2024 08:22:15 +0800 Subject: [PATCH] 工单管理模块修改 --- north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue | 351 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 260 insertions(+), 91 deletions(-) diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue index 94408ab..a0760c6 100644 --- a/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue +++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue @@ -1,89 +1,232 @@ <script setup> -import {ArrowLeftBold} from "@element-plus/icons-vue"; -import {useRouter} from "vue-router"; -const router = useRouter() -let flag = $ref(true) -function intoCreateProduct(){ - if(flag){ - router.push('/main/processCard/SplittingDetails') - }else { - router.push('/main/processCard/SplittingDetails') + +import request from "@/utils/request" +import deepClone from "@/utils/deepClone" +import {ElDatePicker, ElMessage} from "element-plus" +import useProductGlassTypeStore from "@/stores/sd/product/productGlassType" +import {nextTick, onMounted, onUnmounted, reactive, ref, watch} from "vue" +import {Search} from "@element-plus/icons-vue" +import GlassType from "@/components/sd/product/GlassType.vue" +import {useRouter} from 'vue-router' +import Sortable from 'sortablejs' +import BasicTable from '@/components/basic/BasicTable.vue' +import {VXETable} from "vxe-table"; + +let productGlassTypeStore = useProductGlassTypeStore() +let router = useRouter() +const getTableRow = (row, type) => { + switch (type) { + case 'edit' : { + router.push({path: '/main/processCard/PrintFlowCard', query: {id: row.id}}) + break + } + case 'setType': { + alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅') + break + } + case 'delete': { + request.post(`/processCard/deleteFlowCard/${row.orderId}/${row.processId}`).then((res) => { + if (res.code == 200) { + ElMessage.success("鍒犻櫎鎴愬姛") + location.reload(); + } else { + ElMessage.warning(res.msg) + router.push("/login") + } + }) + break + } } - flag=!flag } -const tableData = [ - { - processCard: 'NG231201A01', - orderSequence: '1', - landingSequence: '1', - floorNumber: '14-BSGB05', - shape: '鏅舰', - longSide: '5000', - shortSide: '4400', - total: '24', - totalThickness: '26', + + +//瀹氫箟鏃堕棿 +const form = reactive({ + date1: '', +}) + +//琛ㄥ熬姹傚拰 +const sumNum = (list, field) => { + let count = 0 + list.forEach(item => { + count += Number(item[field]) + }) + return count.toFixed(2) +} + +//瀹氫箟婊氬姩鏉¢珮搴� +let scrollTop = ref(null) +let scrollHeight = ref(null) +let clientHeight = ref(null) +const scrollEvnt = (row) => { + // 鍐呭楂樺害 + scrollTop.value = row.$event.target.scrollTop + scrollHeight.value = row.$event.target.scrollHeight + clientHeight.value = row.$event.target.clientHeight +} +//绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹� +let filterData = ref({ + product: { + thickness: '', + totalThickness:'' }, - { - processCard: 'NG231201A01', - orderSequence: '2', - landingSequence: '2', - floorNumber: '15-BSGB05', - shape: '鏅舰', - longSide: '5000', - shortSide: '4400', - total: '24', - totalThickness: '26', + orderDetail: { + orderNumber: '', + height: '', + computeGrossArea: '', + quantity: '', + shape:'', + width:'', + weight:'' + } + +}) +//瀹氫箟椤甸潰鎬婚〉鏁� +let pageTotal = ref('') +//瀹氫箟鏁版嵁杩斿洖缁撴灉 +let produceList = ref([]) +//瀹氫箟褰撳墠椤垫暟 +let pageNum = $ref(1) +let pageState = null + +const {currentRoute} = useRouter() +const route = currentRoute.value + +let orderId = route.query.orderId +let productionId = route.query.productionId +//绗竴娆″姞杞芥暟鎹� + +request.post(`/processCard/selectNoCard/${orderId}/${productionId}`, filterData.value).then((res) => { + + if (res.code == 200) { + console.log(res.data.data) + pageTotal.value = res.data.total + produceList = produceList.value.concat(deepClone(res.data.data)) + xGrid.value.reloadData(produceList) + gridOptions.loading = false + } else { + ElMessage.warning(res.msg) + } +}) + +/*浣跨敤绛涢�夛紝鍚庣鑾峰彇鏁版嵁*/ +const changeFilterEvent = (event, option, $panel,) => { + // 鎵嬪姩瑙﹀彂绛涢�� + $panel.changeOption(event, !!option.data, option) +} +function padLeftZero(str) { + return ('00' + str).substr(str.length) +} +function filterChanged(column) { + gridOptions.loading = true + //绛涢�夋潯浠跺彂鐢熷彉鍖栨潯浠跺彂鐢熷彉鍖� + let value = column.datas[0] != undefined ? column.datas[0] : '' + value = value.trim() + //鍒ゆ柇鏄惁瀛樺湪澶栭敭 + if (column.property.indexOf('.') > -1) { + const columnArr = column.property.split('.') + filterData.value[columnArr[0]] = { + [columnArr[1]]: value + } + } else { + filterData.value[column.property] = value + } + + + request.post(`/processCard/selectNoCard/${orderId}/${productionId}`, 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{ + ElMessage.warning(res.msg) + } + }) +} + +/*鍚庣杩斿洖缁撴灉澶氬眰宓屽灞曠ず*/ +const hasDecimal = (value) => { + const regex = /\./; // 瀹氫箟姝e垯琛ㄨ揪寮忥紝鏌ユ壘灏忔暟鐐� + return regex.test(value); // 杩斿洖true/false +} + +//瀛愮粍浠舵帴鏀跺弬鏁� +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 }, - { - processCard: 'NG231201A02', - orderSequence: '3', - landingSequence: '3', - floorNumber: '16-BSGB05', - shape: '鏅舰', - longSide: '5000', - shortSide: '4400', - total: '24', - totalThickness: '26', + filterConfig: { //绛涢�夐厤缃」 + remote: true }, -] -const tableData2 = [ - { - orderSequence: '4', - floorNumber: '17-BSGB08', - shape: '鏅舰', - longSide: '4600', - shortSide: '3880', - undividedQuantity: '15', - undividedArea: '99.84', - totalThickness:'28', - glassThickness:'24', - undividedWeight:'111' + customConfig: { + storage: true }, - { - orderSequence: '5', - floorNumber: '18-BSGB08', - shape: '鏅舰', - longSide: '4600', - shortSide: '3880', - undividedQuantity: '15', - undividedArea: '99.84', - totalThickness:'28', - glassThickness:'24', - undividedWeight:'111' + editConfig: { + trigger: 'click', + mode: 'row', + showStatus: true + },//琛ㄥご鍙傛暟 + columns:[ + {type: 'checkbox', fixed: "left", title: '閫夋嫨'}, + {field: 'orderDetail.orderNumber', title: '璁㈠簭',filters:[{ data: '' }],slots: { filter: 'num1_filter' } }, + {field: 'orderDetail.shape', title: '褰㈢姸', showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, + {field: 'orderDetail.width', title: '瀹�', filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, + {field: 'orderDetail.height', title: '楂�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }}, + {field: 'orderDetail.quantity', title: '鏁伴噺', showOverflow:"ellipsis"}, + {field: 'orderDetail.computeGrossArea', title: '闈㈢Н'}, + {field: 'product.totalThickness', title: '鎬诲帤搴�'}, + {field: 'product.thickness', title: '鐜荤拑鍘氬害'}, + {field: 'orderDetail.weight', title: '閲嶉噺'} + ],//琛ㄥご鎸夐挳 + + toolbarConfig: { + // buttons: [{ + // + // }], + import: false, + export: true, + print: true, + zoom: true, + custom: true }, - { - orderSequence: '6', - floorNumber: '19-BSGB08', - shape: '鏅舰', - longSide: '4600', - shortSide: '3880', - undividedQuantity: '15', - undividedArea: '99.84', - totalThickness:'28', - glassThickness:'24', - undividedWeight:'111' - }, -] + 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 '' + }) + ] + } + +}) + + + </script> <template> @@ -123,7 +266,7 @@ <el-main width="12%" style=""> <span>鏈垎鏁伴噺:45</span><br> <span>鏈垎閲嶉噺:333</span><br> - <span>閫変腑鏁伴噺:</span><br> + <span>閫変腑鏁伴噺:<el-input></el-input></span><br> <el-button type="primary"> 鈫� </el-button> <br> <br> @@ -134,19 +277,45 @@ </el-main> <el-aside width="44%" style=""> - <el-table :data="tableData2" border style="width: 100%" height="100%"> - <el-table-column prop="orderSequence" label="璁㈠簭" width="60" /> - <el-table-column prop="floorNumber" label="妤煎眰缂栧彿" :show-overflow-tooltip='true' width="100" /> - <el-table-column prop="shape" label="褰㈢姸" width="65" /> - <el-table-column prop="longSide" label="闀胯竟" width="60" /> - <el-table-column prop="shortSide" label="鐭竟" width="60" /> - <el-table-column prop="undividedQuantity" label="寰呭垎鏁伴噺" width="85" /> - <el-table-column prop="undividedArea" label="寰呭垎闈㈢Н" width="85" /> - <el-table-column prop="totalThickness" label="鎬诲帤搴�" width="75" /> - <el-table-column prop="glassThickness" label="鐜荤拑鍘氬害" width="85" /> - <el-table-column prop="undividedWeight" label="寰呭垎閲嶉噺" width="85" /> - </el-table><!-- <h1>{{msg}}</h1> --> + <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">鎵撳嵃</el-button> + <el-button @click="getTableRow(row,'setType')" 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)"/> + </div> + </div> + </template> + + + </vxe-grid> </el-aside> </el-container> </div> -- Gitblit v1.8.0