From 4c6f9bcc9b3f8bdf5298d73d1035bad529f86d69 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期五, 27 三月 2026 10:04:13 +0800
Subject: [PATCH] 军泰伟业 1.生产订单新增编辑逻辑重写
---
src/views/productionManagement/productionProcess/Edit.vue | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 173 insertions(+), 4 deletions(-)
diff --git a/src/views/productionManagement/productionProcess/Edit.vue b/src/views/productionManagement/productionProcess/Edit.vue
index 31e3109..4434fa2 100644
--- a/src/views/productionManagement/productionProcess/Edit.vue
+++ b/src/views/productionManagement/productionProcess/Edit.vue
@@ -22,8 +22,29 @@
]">
<el-input v-model="formState.name" />
</el-form-item>
- <el-form-item label="宸ヨ祫瀹氶" prop="salaryQuota">
- <el-input v-model="formState.salaryQuota" type="number" :step="0.001" />
+ <el-form-item label="宸ュ簭缂栧彿" prop="no">
+ <el-input v-model="formState.no" />
+ </el-form-item>
+<!-- <el-form-item label="宸ヨ祫瀹氶" prop="salaryQuota">-->
+<!-- <el-input v-model="formState.salaryQuota" type="number" :step="0.001" />-->
+<!-- </el-form-item>-->
+ <el-form-item label="鏄惁璐ㄦ" prop="isQuality">
+ <el-switch v-model="formState.isQuality" :active-value="true" inactive-value="false"/>
+ </el-form-item>
+ <el-form-item label="鎶ュ伐鏉冮檺" prop="userPower" :rules="[{ required: true, message: '璇烽�夋嫨鎶ュ伐鏉冮檺', trigger: 'change' }]">
+ <el-tree-select
+ v-model="formState.userPower"
+ :data="staffList"
+ :props="treeProps"
+ placeholder="璇烽�夋嫨浜哄憳"
+ multiple
+ show-checkbox
+ collapse-tags
+ collapse-tags-tooltip
+ style="width: 100%"
+ node-key="id"
+ :render-after-expand="false"
+ />
</el-form-item>
<el-form-item label="澶囨敞" prop="remark">
<el-input v-model="formState.remark" type="textarea" />
@@ -40,8 +61,9 @@
</template>
<script setup>
-import { ref, computed, getCurrentInstance } from "vue";
+import { ref, computed, getCurrentInstance, watch, onMounted } from "vue";
import {update} from "@/api/productionManagement/productionProcess.js";
+import { listDeptUserTree } from "@/api/basicData/productProcess.js";
const props = defineProps({
visible: {
@@ -61,9 +83,19 @@
const formState = ref({
id: props.record.id,
name: props.record.name,
+ no: props.record.no,
remark: props.record.remark,
salaryQuota: props.record.salaryQuota,
+ isQuality: props.record.isQuality,
+ userPower: props.record.userPower ? props.record.userPower.split(',') : [],
});
+
+const staffList = ref([]);
+
+const treeProps = {
+ label: 'label',
+ children: 'children',
+};
const isShow = computed({
get() {
@@ -74,6 +106,56 @@
},
});
+// 鐩戝惉 record 鍙樺寲锛屾洿鏂拌〃鍗曟暟鎹�
+watch(() => props.record, (newRecord) => {
+ if (newRecord && isShow.value) {
+ formState.value = {
+ id: newRecord.id,
+ name: newRecord.name || '',
+ no: newRecord.no || '',
+ remark: newRecord.remark || '',
+ salaryQuota: newRecord.salaryQuota || '',
+ isQuality: newRecord.isQuality,
+ userPower: [],
+ };
+
+ // 绛夊緟 staffList 鍔犺浇瀹屾垚鍚庯紝鍐嶆煡鎵剧敤鎴稩D
+ if (staffList.value.length > 0) {
+ setUserPowerIds(newRecord.userPower);
+ } else {
+ // staffList 杩樻病鍔犺浇锛岀瓑寰呬竴涓嬪啀鏌ユ壘
+ const checkStaffList = () => {
+ if (staffList.value.length > 0) {
+ setUserPowerIds(newRecord.userPower);
+ } else {
+ setTimeout(checkStaffList, 100);
+ }
+ };
+ checkStaffList();
+ }
+ }
+}, { immediate: true, deep: true });
+
+// 鏍规嵁鐢ㄦ埛鍚嶆煡鎵剧敤鎴稩D
+const setUserPowerIds = (userPowerStr) => {
+ const userPowerNames = userPowerStr ? userPowerStr.split(',') : [];
+ const userPowerIds = [];
+ const findUserIds = (nodes, targetName) => {
+ nodes.forEach(node => {
+ if (node.isUser && node.label === targetName) {
+ userPowerIds.push(node.id);
+ }
+ if (node.children && node.children.length > 0) {
+ findUserIds(node.children, targetName);
+ }
+ });
+ };
+ userPowerNames.forEach(name => {
+ findUserIds(staffList.value, name);
+ });
+ formState.value.userPower = userPowerIds;
+};
+
let { proxy } = getCurrentInstance()
const closeModal = () => {
@@ -83,7 +165,13 @@
const handleSubmit = () => {
proxy.$refs["formRef"].validate(valid => {
if (valid) {
- update(formState.value).then(res => {
+ const userPowerNames = getAllUserNamesFromSelection(formState.value.userPower);
+
+ const submitData = {
+ ...formState.value,
+ userPower: userPowerNames.join(',')
+ };
+ update(submitData).then(res => {
// 鍏抽棴妯℃�佹
isShow.value = false;
// 鍛婄煡鐖剁粍浠跺凡瀹屾垚
@@ -94,6 +182,87 @@
})
};
+const findUserById = (userId) => {
+ const findInTree = (nodes) => {
+ for (const node of nodes) {
+ if (node.id === userId) {
+ return node;
+ }
+ if (node.children && node.children.length > 0) {
+ const found = findInTree(node.children);
+ if (found) return found;
+ }
+ }
+ return null;
+ };
+ return findInTree(staffList.value);
+};
+
+const getStaffList = () => {
+ listDeptUserTree().then(res => {
+ const buildTree = (nodes) => {
+ return nodes.map(node => {
+ const deptNode = {
+ id: `dept_${node.deptId}`,
+ label: node.deptName,
+ isUser: false,
+ children: []
+ };
+
+ if (node.userList && node.userList.length > 0) {
+ node.userList.forEach(user => {
+ deptNode.children.push({
+ id: user.userId,
+ label: user.nickName || user.userName,
+ isUser: true,
+ userName: user.userName,
+ nickName: user.nickName
+ });
+ });
+ }
+
+ if (node.childrenList && node.childrenList.length > 0) {
+ const childNodes = buildTree(node.childrenList);
+ deptNode.children = deptNode.children.concat(childNodes);
+ }
+
+ return deptNode;
+ });
+ };
+ staffList.value = buildTree(res.data || []);
+ }).catch(() => {
+ staffList.value = [];
+ });
+};
+
+const getAllUserNamesFromSelection = (selectedIds) => {
+ const names = [];
+ const processNode = (node) => {
+ if (selectedIds.includes(node.id)) {
+ if (node.isUser) {
+ names.push(node.label);
+ } else {
+ if (node.children && node.children.length > 0) {
+ node.children.forEach(child => {
+ if (child.isUser) {
+ names.push(child.label);
+ }
+ });
+ }
+ }
+ }
+ if (node.children && node.children.length > 0) {
+ node.children.forEach(child => processNode(child));
+ }
+ };
+ staffList.value.forEach(node => processNode(node));
+ return [...new Set(names)];
+};
+
+onMounted(() => {
+ getStaffList();
+});
+
defineExpose({
closeModal,
handleSubmit,
--
Gitblit v1.9.3