From 86d49bfd45dff8e89b7a102eeeff3e2fe86b7871 Mon Sep 17 00:00:00 2001
From: 张诺 <zhang_12370@163.com>
Date: 星期四, 08 一月 2026 18:08:47 +0800
Subject: [PATCH] 1、华玺砂浆采购代码移植至军泰伟业 2、华玺砂浆发货和发货审核代码移植至军泰伟业 3、华玺砂浆报修和报修审核代码移植至军泰伟业

---
 src/views/salesManagement/salesLedger/index.vue |  146 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 107 insertions(+), 39 deletions(-)

diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue
index d599868..f9d9052 100644
--- a/src/views/salesManagement/salesLedger/index.vue
+++ b/src/views/salesManagement/salesLedger/index.vue
@@ -42,18 +42,60 @@
               <el-table-column label="浜у搧澶х被" prop="productCategory" />
               <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" />
               <el-table-column label="鍗曚綅" prop="unit" />
+              <el-table-column label="鐢熶骇鐘舵��" width="100px" align="center">
+                <template #default="scope">
+                  <el-tag v-if="scope.row.productionStatus === '宸插畬鎴�'" type="success">宸插畬鎴�</el-tag>
+                  <el-tag v-if="scope.row.productionStatus === '鐢熶骇涓�'" type="warning">鐢熶骇涓�</el-tag>
+                  <el-tag v-if="scope.row.productionStatus === '鏈紑濮�'" type="danger">鏈紑濮�</el-tag>
+                  <el-tag v-if="!scope.row.productionStatus" type="info">鏆傛棤鐘舵��</el-tag>
+                </template>
+              </el-table-column>
+              <el-table-column label="浜у搧鐘舵��" width="100px" align="center">
+                <template #default="scope">
+                  <el-tag v-if="scope.row.approveStatus === 0" type="info">鏈嚭搴�</el-tag>
+                  <el-tag v-if="scope.row.approveStatus === 1" type="success">宸插嚭搴�</el-tag>
+                  <el-tag v-if="scope.row.approveStatus === 2" type="warning">瀹℃牳涓�</el-tag>
+                  <el-tag v-if="scope.row.approveStatus === 3" type="success">瀹℃牳鎴愬姛</el-tag>
+                  <el-tag v-if="scope.row.approveStatus === 4" type="danger">瀹℃牳澶辫触</el-tag>
+                </template>
+              </el-table-column>
+              <el-table-column label="鍙戣揣杞︾墝" minWidth="100px" align="center">
+                <template #default="scope">
+                  <div>
+                    <el-tag type="success" v-if="scope.row.shippingCarNumber">{{ scope.row.shippingCarNumber }}</el-tag>
+                    <el-tag v-else type="info">鏈彂璐�</el-tag>
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column label="鍙戣揣鏃ユ湡" minWidth="100px" align="center">
+                <template #default="scope">
+                  <div>
+                    <div v-if="scope.row.shippingDate">{{ scope.row.shippingDate }}</div>
+                    <el-tag v-else type="info">鏈彂璐�</el-tag>
+                  </div>
+                </template>
+              </el-table-column>
               <el-table-column label="鏁伴噺" prop="quantity" />
               <el-table-column label="绋庣巼(%)" prop="taxRate" />
               <el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" :formatter="formattedNumber" />
               <el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" :formatter="formattedNumber" />
               <el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" :formatter="formattedNumber" />
+            <!--鎿嶄綔-->
+              <el-table-column Width="60px" label="鎿嶄綔" align="center">
+                <template #default="scope">
+                  <el-button :disabled="scope.row.approveStatus!==1" link type="primary" size="small" @click="openDeliveryForm(scope.row)">鍙戣揣</el-button>
+                </template>
+              </el-table-column>
             </el-table>
           </template>
         </el-table-column>
         <el-table-column align="center" label="搴忓彿" type="index" width="60" />
         <el-table-column label="閿�鍞悎鍚屽彿" prop="salesContractNo" width="180" show-overflow-tooltip />
+        <el-table-column label="瀹㈡埛鍚堝悓鍙�" prop="customerContractNo" width="180" show-overflow-tooltip />
         <el-table-column label="瀹㈡埛鍚嶇О" prop="customerName" width="300" show-overflow-tooltip />
         <el-table-column label="涓氬姟鍛�" prop="salesman" width="100" show-overflow-tooltip />
+        <el-table-column label="椤圭洰鍚嶇О" prop="projectName" width="180" show-overflow-tooltip />
+        <el-table-column label="浠樻鏂瑰紡" prop="paymentMethod" show-overflow-tooltip />
         <el-table-column label="鍚堝悓閲戦(鍏�)" prop="contractAmount" width="220" show-overflow-tooltip
           :formatter="formattedNumber" />
         <el-table-column label="褰曞叆浜�" prop="entryPersonName" width="100" show-overflow-tooltip />
@@ -68,12 +110,12 @@
         <el-table-column label="鍙戣揣鏃ユ湡" prop="shippingDate" width="120" show-overflow-tooltip />
         <el-table-column label="褰曞叆鏃ユ湡" prop="entryDate" width="120" show-overflow-tooltip />
         <el-table-column label="绛捐鏃ユ湡" prop="executionDate" width="120" show-overflow-tooltip />
-        <el-table-column fixed="right" label="鎿嶄綔" min-width="200" align="center">
+        <el-table-column fixed="right" label="鎿嶄綔" min-width="100" align="center">
           <template #default="scope">
             <el-button link type="primary" size="small" @click="openForm('edit', scope.row)">缂栬緫</el-button>
 <!--            <el-button link type="primary" size="small" @click="openForm('view', scope.row)">璇︽儏</el-button>-->
             <el-button link type="primary" size="small" @click="downLoadFile(scope.row)">闄勪欢</el-button>
-            <el-button v-if="!scope.row.shippingCarNumber" link type="primary" size="small" @click="openDeliveryForm(scope.row)">鍙戣揣</el-button>
+<!--            <el-button link type="primary" size="small" @click="openDeliveryForm(scope.row)">鍙戣揣</el-button>-->
           </template>
         </el-table-column>
       </el-table>
@@ -136,7 +178,13 @@
             </el-form-item>
           </el-col>
         </el-row>
-
+        <el-row :gutter="30">
+          <el-col :span="12">
+            <el-form-item label="浠樻鏂瑰紡">
+              <el-input v-model="form.paymentMethod" placeholder="璇疯緭鍏�" clearable :disabled="operationType === 'view'" />
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-row>
           <el-form-item label="浜у搧淇℃伅锛�" prop="entryDate">
             <el-button v-if="operationType !== 'view'" type="primary" @click="openProductForm('add')">娣诲姞</el-button>
@@ -429,22 +477,23 @@
 				<el-row :gutter="30">
 					<el-col :span="24">
 						<el-form-item label="鍙戣揣杞︾墝鍙凤細" prop="shippingCarNumber">
-              <el-select v-model="deliveryForm.shippingCarNumber" filterable allow-create placeholder="璇烽�夋嫨鍙戣揣杞︾墝鍙�">
-                <el-option key="1" label="鏂癆 H5153" value="鏂癆 H5153"/>
-                <el-option key="2" label="鏂癆 H4232" value="鏂癆 H4232"/>
-                <el-option key="3" label="鏂癆 H4001" value="鏂癆 H4001"/>
-                <el-option key="4" label="鏂癆 H6409" value="鏂癆 H6409"/>
-                <el-option key="5" label="鏂癆 G7446" value="鏂癆 G7446"/>
-                <el-option key="6" label="鏂癏 80369" value="鏂癏 80369"/>
-              </el-select>
-							<!-- <el-input
+							<el-input
 								v-model="deliveryForm.shippingCarNumber"
 								placeholder="璇疯緭鍏ュ彂璐ц溅鐗屽彿"
 								clearable
-							/> -->
+							/>
 						</el-form-item>
 					</el-col>
 				</el-row>
+        <el-row :gutter="30">
+          <el-col :span="24">
+            <el-form-item label="瀹℃壒浜猴細" prop="approverId">
+              <el-select v-model="deliveryForm.approverId" placeholder="璇烽�夋嫨瀹℃壒浜�" clearable :disabled="operationType === 'view'">
+                <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
 			</el-form>
 			<template #footer>
 				<div class="dialog-footer">
@@ -462,7 +511,7 @@
 import pagination from "@/components/PIMTable/Pagination.vue";
 import {onMounted, ref} from "vue";
 import { addShippingInfo } from "@/api/salesManagement/deliveryLedger.js";
-import { ElMessageBox } from "element-plus";
+import {ElMessage, ElMessageBox} from "element-plus";
 import useUserStore from "@/store/modules/user";
 import { userListNoPage } from "@/api/system/user.js";
 import FileList from "./fileList.vue";
@@ -475,7 +524,7 @@
   delLedger,
   addOrUpdateSalesLedgerProduct,
   delProduct,
-  delLedgerFile,
+  delLedgerFile, getProductInventory,
 } from "@/api/salesManagement/salesLedger.js";
 import { modelList, productTreeList } from "@/api/basicData/product.js";
 import useFormData from "@/hooks/useFormData.js";
@@ -513,7 +562,9 @@
   form: {
     salesContractNo: "",
     salesman: "",
+    customerContractNo: "",
     customerId: "",
+    projectName: "",
     entryPerson: "",
     entryDate: "",
     maintenanceTime: "",
@@ -522,7 +573,11 @@
   },
   rules: {
     salesman: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+    customerContractNo: [
+      { required: true, message: "璇疯緭鍏�", trigger: "blur" },
+    ],
     customerId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
+    projectName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }],
     entryPerson: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
     entryDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
     executionDate: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }],
@@ -596,6 +651,11 @@
     shippingCarNumber: [
       { required: true, message: "璇疯緭鍏ュ彂璐ц溅鐗屽彿", trigger: "blur" }
     ],
+    approverId:[
+      {
+        required: true,message: "",
+      }
+    ]
   },
 });
 const { deliveryForm, deliveryRules } = toRefs(deliveryFormData);
@@ -627,14 +687,12 @@
   page.size = obj.limit;
   getList();
 };
-const getList = () => {
+const getList =async () => {
+  let userLists = await userListNoPage();
+  userList.value = userLists.data;
   tableLoading.value = true;
   const { entryDate, ...rest } = searchForm;
-  // 灏嗚寖鍥存棩鏈熷瓧娈典紶閫掔粰鍚庣
-  const params = { ...rest, ...page };
-  // 绉婚櫎褰曞叆鏃ユ湡鐨勯粯璁ゅ�艰缃紝鍙繚鐣欒寖鍥存棩鏈熷瓧娈�
-  delete params.entryDate;
-  ledgerListPage(params)
+  ledgerListPage({ ...rest, ...page })
     .then((res) => {
       tableLoading.value = false;
       tableData.value = res.records;
@@ -714,23 +772,31 @@
   productSelectedRows.value = selectedRows;
 };
 const expandedRowKeys = ref([]);
-// 灞曞紑琛�
-const expandChange = (row, expandedRows) => {
-  if (expandedRows.length > 0) {
+// 灞曞紑琛岋紙濮嬬粓鍙睍寮�涓�琛岋級
+const expandChange = (row) => {
+  const rowKey = row.id;
+  const isExpanded = expandedRowKeys.value.includes(rowKey);
+
+  if (isExpanded) {
+    // 褰撳墠琛屽凡灞曞紑 -> 鏀惰捣
     expandedRowKeys.value = [];
-    try {
-      productList({ salesLedgerId: row.id, type: 1 }).then((res) => {
-        const index = tableData.value.findIndex((item) => item.id === row.id);
-        if (index > -1) {
-          tableData.value[index].children = res.data;
-        }
-        expandedRowKeys.value.push(row.id);
-      });
-    } catch (error) {
-      console.log(error);
-    }
-  } else {
-    expandedRowKeys.value = [];
+    return;
+  }
+
+  // 灞曞紑褰撳墠琛屽墠锛屽厛鏀惰捣鍏跺畠琛�
+  expandedRowKeys.value = [];
+
+  try {
+    productList({ salesLedgerId: row.id, type: 1 }).then((res) => {
+      const index = tableData.value.findIndex((item) => item.id === row.id);
+      if (index > -1) {
+        tableData.value[index].children = res.data;
+      }
+      // 鍙繚鐣欏綋鍓嶈繖涓�琛屽浜庡睍寮�鐘舵��
+      expandedRowKeys.value = [rowKey];
+    });
+  } catch (error) {
+    console.log(error);
   }
 };
 // 涓昏〃鍚堣鏂规硶
@@ -775,7 +841,7 @@
   //     form.value.entryPerson = userAll.user.userId // 璁剧疆榛樿涓氬姟鍛樹负褰撳墠鐢ㄦ埛
   //   }
   // });
-  // 绉婚櫎褰曞叆鏃ユ湡榛樿鍊艰缃紝鍙鐞嗚寖鍥存棩鏈熷瓧娈�
+  form.value.entryDate = getCurrentDate(); // 璁剧疆榛樿褰曞叆鏃ユ湡涓哄綋鍓嶆棩鏈�
   dialogFormVisible.value = true;
 };
 function changs(val) {
@@ -1542,7 +1608,9 @@
   proxy.$refs["deliveryFormRef"].validate((valid) => {
     if (valid) {
       addShippingInfo({
-        salesLedgerId: currentDeliveryRow.value.id,
+        approverId:deliveryForm.value.approverId,
+        salesLedgerId: currentDeliveryRow.value.salesLedgerId,
+        salesLedgerProductId: currentDeliveryRow.value.id,
         shippingDate: deliveryForm.value.shippingDate,
         shippingCarNumber: deliveryForm.value.shippingCarNumber,
       })

--
Gitblit v1.9.3