From a660db06773007b1be690e0674829c00a57aeb7b Mon Sep 17 00:00:00 2001
From: 廖井涛 <2265517004@qq.com>
Date: 星期三, 24 十二月 2025 16:21:23 +0800
Subject: [PATCH] 订单首页流程卡新增楼层编号显示
---
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue | 201 +++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 165 insertions(+), 36 deletions(-)
diff --git a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
index 5dedb14..6768389 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/ProcessCard.vue
@@ -1,15 +1,16 @@
<script setup>
-import {onMounted, reactive, ref} from "vue";
+import {nextTick, onMounted, reactive, ref, watch} from "vue";
import {useI18n} from "vue-i18n";
import {Search} from "@element-plus/icons-vue";
import request from "@/utils/request";
import deepClone from "@/utils/deepClone";
import {ElMessage} from "element-plus";
import useUserInfoStore from "@/stores/userInfo";
+import {changeFilterEvent, filterChanged} from "@/hook";
const {t} = useI18n()
const userStore = useUserInfoStore()
-const username = userStore.user.userName
+const username = userStore.user.userId
let rowClickIndex = ref(null)
let props = defineProps({
@@ -69,12 +70,25 @@
onMounted(() => {
+ console.log(userStore.user);
getProjectId();
selectGlassType();
})
const xGrid = ref()
+
+// 娣诲姞鐩戝惉鍣� - 鐩戝惉鑶滅郴閫夋嫨鍙樺寲
+watch(optionVal, (newVal, oldVal) => {
+ if (oldVal !== undefined && newVal !== oldVal) {
+ // 褰撹啘绯绘敼鍙樻椂锛岃嚜鍔ㄥ埛鏂版暟鎹�
+ if (newVal) {
+ selectFlowCardList();
+ }
+ }
+}, { flush: 'post' });
+
+
const gridOptions = reactive({
height: '100%',
@@ -93,7 +107,7 @@
useKey: true
},
filterConfig: { //绛涢�夐厤缃」
- remote: true
+ //remote: true
},
customConfig: {
storage: true
@@ -105,14 +119,15 @@
},
columns: [
- {type: 'checkbox', fixed: "left", title: t('basicData.check'), width: 80},
+ {field: 'select',type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"},
{
field: 'process_id',
width: 150,
title: t('processCard.processId'),
filters: [{data: ''}],
slots: {filter: 'num1_filter'},
- sortable: true
+ sortable: true,
+ filterMethod:filterChanged
},
{
field: 'technology_number',
@@ -120,7 +135,8 @@
title: '灞�',
filters: [{data: ''}],
slots: {filter: 'num1_filter'},
- sortable: true
+ sortable: true,
+ filterMethod:filterChanged
},
{
field: 'TotalFloors',
@@ -128,7 +144,8 @@
title: '鎬诲眰鏁�',
filters: [{data: ''}],
slots: {filter: 'num1_filter'},
- sortable: true
+ sortable: true,
+ filterMethod:filterChanged
},
{
field: 'TotalNumber',
@@ -136,7 +153,8 @@
title: '瑙勬牸',
filters: [{data: ''}],
slots: {filter: 'num1_filter'},
- sortable: true
+ sortable: true,
+ filterMethod:filterChanged
},
{
field: 'quantity',
@@ -144,7 +162,8 @@
title: t('order.quantity'),
filters: [{data: ''}],
slots: {filter: 'num1_filter'},
- sortable: true
+ sortable: true,
+ filterMethod:filterChanged
},
{
field: 'shape',
@@ -152,7 +171,8 @@
title: t('order.shape'),
filters: [{data: ''}],
slots: {filter: 'num1_filter'},
- sortable: true
+ sortable: true,
+ filterMethod:filterChanged
},
{
field: 'glass_child',
@@ -160,16 +180,22 @@
title: t('order.product'),
filters: [{data: ''}],
slots: {filter: 'num1_filter'},
- sortable: true
+ sortable: true,
+ filterMethod:filterChanged
},
- {field: 'project', width: 150, title: t('order.project'), showOverflow: "ellipsis"},
+ {field: 'project', width: 150, title: t('order.project'), showOverflow: "ellipsis",filterMethod:filterChanged},
{
field: 'area',
width: 150,
title: t('order.area'),
filters: [{data: ''}],
slots: {filter: 'num1_filter'},
- sortable: true
+ sortable: true,
+ filterMethod:filterChanged
+ },{
+ field: 'patch_state',
+ width: 100,
+ title: '琛ョ墖鐘舵��'
},
@@ -194,15 +220,20 @@
emit('updateTechnologyNumber', rowClickIndex.value.technology_number);
}
}
-const emit = defineEmits(['updateProcessId', 'updateTechnologyNumber']);
+const emit = defineEmits(['updateProcessId', 'updateTechnologyNumber', 'updateState']);
//灏忓渾鐐瑰崟閫夋
let radio = ref(1);
+let isButtonDisabledAdd = ref(false);
+let isButtonDisabledUpdate = ref(true);
-const selectFlowCardList = () => {
+const selectFlowCardList = async () => {
request.post(`/glassOptimize/getFlowCardList/${optionVal.value}/${radio.value}`).then((res) => {
if (res.code == 200) {
+ getProjectId()
+ isButtonDisabledAdd.value=false
+ isButtonDisabledUpdate.value = true
xGrid.value.loadData(res.data.data)
} else {
ElMessage.warning(res.msg)
@@ -210,23 +241,96 @@
})
}
+const getUpdateFlowCardList = async (projectNumber, type, thickness) => {
+ // 閲嶇疆鐘舵��
+ radio.value = 1;
+ isButtonDisabledAdd.value = true;
+ isButtonDisabledUpdate.value = false;
+
+ // 娓呯┖鐜版湁鏁版嵁
+ if (xGrid.value) {
+ xGrid.value.loadData([]);
+ }
+
+ // 寮哄埗鏇存柊琛ㄥ崟瀛楁
+ oddNumbers.value = projectNumber;
+ projectNmae.value = ''; // 鍏堟竻绌哄伐绋嬪悕绉�
+
+ // 鏋勯�犳纭殑鑶滅郴鍊�
+ const glassTypeValue = `${thickness}mm${type}`;
+ optionVal.value = glassTypeValue;
+
+ request.post(`/glassOptimize/getUpdateFlowCardList/${type}/${thickness}/${radio.value}/${projectNumber}`).then((res) => {
+ if (res.code == 200) {
+ // 鏇存柊宸ョ▼缂栧彿
+ oddNumbers.value = projectNumber;
+
+ // 鏇存柊宸ョ▼鍚嶇О锛堝鏋滃悗绔繑鍥烇級
+ if (res.data.projectName) {
+ projectNmae.value = res.data.projectName;
+ }
+
+ // 纭繚鑶滅郴閫夋嫨姝g‘
+ optionVal.value = glassTypeValue;
+
+ isButtonDisabledAdd.value = true;
+ isButtonDisabledUpdate.value = false;
+
+ // 浣跨敤 $nextTick 纭繚DOM鏇存柊鍚庡啀鍔犺浇鏁版嵁
+ nextTick(() => {
+ if (xGrid.value) {
+ xGrid.value.loadData(deepClone(res.data.data));
+ // 璁剧疆閫変腑鐘舵��
+ nextTick(() => {
+ const tableData = xGrid.value.getTableData().fullData;
+ tableData.forEach(item => {
+ if(item.occupyState === 0){
+ xGrid.value.setCheckboxRow(item, true);
+ }
+ });
+ });
+ }
+ });
+ } else {
+ ElMessage.warning(res.msg);
+ }
+ }).catch(error => {
+ ElMessage.error('鑾峰彇娴佺▼鍗℃暟鎹け璐�');
+ console.error(error);
+ });
+};
+
//鍒涘缓宸ョ▼
-const addProject = () => {
+const addProject = (type) => {
const $table = xGrid.value
if ($table) {
const selectRecords = $table.getCheckboxRecords()
- if (selectRecords.length == 0) {
- ElMessage.warning(t('reportingWorks.selectProcessCardData'))
- return;
+ if($table.getCheckedFilters().length!==0){
+ ElMessage.error(t('order.msg.pleaseCancelTheFilteringFirst'))
+ return
}
+ // if (selectRecords.length == 0) {
+ // ElMessage.warning(t('reportingWorks.selectProcessCardData'))
+ // return;
+ // }
let projectData = ref({
projectdetail: selectRecords,
- userName : username
+ userName : username,
+ projectType: type
})
- request.post(`/glassOptimize/addProject/${optionVal.value}/${oddNumbers.value}/${projectNmae.value}`, projectData.value).then((res) => {
- if (res.code == 200 && res.data === true) {
+ let inputProject = projectNmae.value
+ if (inputProject == undefined) {
+ inputProject = null
+ }
+ request.post(`/glassOptimize/addProject/${optionVal.value}/${oddNumbers.value}/${inputProject}`, projectData.value).then((res) => {
+ if (res.code == 200 && res.data === "true") {
+ emit('updateState', 1);
ElMessage.success(t('basicData.msg.saveSuccess'))
+ selectFlowCardList()
+ getProjectId();
+ }else if(res.data === "false1") {
+ ElMessage.warning("宸ョ▼鍙峰凡瀛樺湪璇烽噸鏂板埛鏂扮晫闈�")
} else {
ElMessage.warning(res.msg)
}
@@ -234,19 +338,43 @@
}
}
+
+watch(optionVal, (newVal, oldVal) => {
+ if (newVal) {
+ // 褰撹啘绯绘敼鍙樻椂锛屾洿鏂板伐绋嬪悕绉颁负褰撳墠鑶滅郴鍊�
+ projectNmae.value = newVal;
+
+ // 褰撹啘绯绘敼鍙樻椂锛岃嚜鍔ㄥ埛鏂版暟鎹�
+ selectFlowCardList();
+ }
+}, { flush: 'post' });
+
+const handleRowClassName = ({ row, rowIndex }) => {
+ if (row.patch_state === 1) {
+ return 'high-score';
+ }
+ if (row.occupyState === 0) {
+ return 'high-score2';
+ }
+}
+
+//鎶涘嚭鏂规硶鍒扮埗鐣岄潰
+defineExpose({getProjectId,selectFlowCardList,selectGlassType,getUpdateFlowCardList})
</script>
<template>
<div style="width: 100%;height: 110%; margin-top: -36px">
- <h1>娴佺▼鍗″垪琛�
+ <div>
+ 娴佺▼鍗″垪琛�
<span style="margin-left: 140px;font-size: 14px">宸ョ▼缂栧彿锛�</span>
<!-- <span>{{oddNumbers}}</span>-->
<el-input disabled v-model="oddNumbers" style="width: 100px"></el-input>
<!-- <vxe-input :disabled="isDisabled" placeholder="" v-model="oddNumbers" size="small" style="color:black;"></vxe-input> -->
<span style="font-size: 14px">宸ョ▼鍚嶇О锛�</span>
- <vxe-input placeholder="" v-model="projectNmae" size="small"></vxe-input>
- <el-button style="margin-left: 20px" type="primary" @click="addProject">鍒涘缓</el-button>
- </h1>
+ <el-input style="width: 150px" placeholder="" v-model="projectNmae" size="small"></el-input>
+ <el-button style="margin-left: 20px" type="primary" :disabled="isButtonDisabledAdd" @click="addProject(1)">鍒涘缓</el-button>
+ <el-button style="margin-left: 20px;" type="primary" :disabled="isButtonDisabledUpdate" @click="addProject(2)">淇敼</el-button>
+ </div>
<vxe-grid
ref="xGrid"
class="mytable-scrollbar"
@@ -254,7 +382,7 @@
size="small"
v-bind="gridOptions"
v-on="gridEvents"
- @filter-change="filterChanged"
+ :row-class-name="handleRowClassName"
>
<template #num2_filter="{ column, $panel }">
<div>
@@ -271,18 +399,13 @@
<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)"
- @keyup.enter.native="$panel.confirmFilter()"/>
+ <input type="type" v-model="option.data" @keyup.enter.native="$panel.confirmFilter()" @input="changeFilterEvent($event, option, $panel)"/>
</div>
</div>
</template>
<template #toolbar_buttons>
- <h1>鑶滅郴绛涢�夛細</h1>
+ <h2>鑶滅郴绛涢�夛細</h2>
<el-select v-model="optionVal" clearable default-value="default_city" placeholder="閫夋嫨鑶滅郴"
style="width: 120px">
<el-option
@@ -299,10 +422,16 @@
<vxe-radio content="琛ュ崟" label="3"></vxe-radio>
</vxe-radio-group>
</template>
+
</vxe-grid>
</div>
</template>
-<style scoped>
-
+<style lang="css">
+.high-score {
+ background-color: #d4baba !important;
+}
+.high-score2 {
+ background-color: #a5aec9 !important;
+}
</style>
\ No newline at end of file
--
Gitblit v1.8.0