From 72bb57e08bb5ac3b7fd724bed3995a518d889221 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 17 九月 2025 14:15:38 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 src/views/procurementManagement/arrivalManagement/index.vue |  149 +++++++++++++++++++++++++++++++++----------------
 1 files changed, 100 insertions(+), 49 deletions(-)

diff --git a/src/views/procurementManagement/arrivalManagement/index.vue b/src/views/procurementManagement/arrivalManagement/index.vue
index d2c89b1..060d2f1 100644
--- a/src/views/procurementManagement/arrivalManagement/index.vue
+++ b/src/views/procurementManagement/arrivalManagement/index.vue
@@ -18,7 +18,6 @@
     <el-card class="table-card" shadow="never">
       <div class="table-header">
         <el-button type="primary" @click="openDialog('add')">鏂板鍒拌揣</el-button>
-        <el-button type="success" @click="handleBatchReceive">鎵归噺鏀惰揣</el-button>
         <el-button type="danger" @click="handleBatchDelete">鎵归噺鍒犻櫎</el-button>
       </div>
 
@@ -37,23 +36,34 @@
         <el-table-column label="鎿嶄綔" width="200" align="center">
           <template #default="{ row }">
             <el-button type="primary" link @click="openDialog('edit', row)">缂栬緫</el-button>
-            <el-button type="success" link @click="handleReceive(row)">鏀惰揣</el-button>
+            <el-button type="success" v-if="row.status === 'pending'" link @click="handleReceive(row)">鏀惰揣</el-button>
             <el-button type="danger" link @click="handleDelete(row)">鍒犻櫎</el-button>
           </template>
         </el-table-column>
       </el-table>
+      <!-- 鍒嗛〉 -->
+      <pagination
+          :total="total"
+          layout="total, sizes, prev, pager, next, jumper"
+          :page="pagination.current"
+          :limit="pagination.size"
+          @pagination="handleCurrentChange"
+      />
     </el-card>
 
     <el-dialog v-model="dialogVisible" :title="dialogType === 'add' ? '鏂板鍒拌揣' : '缂栬緫鍒拌揣'" width="600px">
       <el-form :model="formData" label-width="120px">
+        <el-form-item label="鍒拌揣鍗曞彿">
+          <el-input v-model="formData.arrivalNo" placeholder="鍒拌揣鍗曞彿" />
+        </el-form-item>
         <el-form-item label="閲囪喘璁㈠崟鍙�">
-          <el-select v-model="formData.orderNo" placeholder="璇烽�夋嫨閲囪喘璁㈠崟" style="width: 100%">
-            <el-option label="PO20241201001" value="PO20241201001" />
-            <el-option label="PO20241201002" value="PO20241201002" />
-          </el-select>
+          <el-input v-model="formData.orderNo" placeholder="閲囪喘璁㈠崟鍙�" />
         </el-form-item>
         <el-form-item label="渚涘簲鍟嗗悕绉�">
           <el-input v-model="formData.supplierName" placeholder="渚涘簲鍟嗗悕绉�" />
+        </el-form-item>
+        <el-form-item label="鍒拌揣鏁伴噺">
+          <el-input-number  :min="0" v-model="formData.arrivalQuantity" placeholder="鍒拌揣鏁伴噺" />
         </el-form-item>
         <el-form-item label="澶囨敞">
           <el-input v-model="formData.remark" type="textarea" :rows="3" placeholder="璇疯緭鍏ュ娉ㄤ俊鎭�" />
@@ -68,8 +78,40 @@
 </template>
 
 <script setup>
-import { ref, reactive } from 'vue'
+import { ref, reactive,onMounted } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
+import {listPage,add,update,del} from "@/api/procurementManagement/arrivalManagement.js"
+import Pagination from '@/components/PIMTable/Pagination.vue'
+
+onMounted(() => {
+    getList()
+})
+
+const tableData = ref([])
+
+const getList = () => {
+  loading.value = true
+  listPage({...searchForm,...pagination}).then(res =>{
+    if(res.code === 200){
+      tableData.value = res.data.records
+      total.value = res.data.total
+      loading.value = false
+    }
+  })
+}
+
+const pagination = reactive({
+  current: 1,
+  size: 10
+})
+
+const total = ref(0)
+
+const handleCurrentChange = (val) => {
+  pagination.current = val.page
+  pagination.size = val.limit
+  getList()
+}
 
 const loading = ref(false)
 const dialogVisible = ref(false)
@@ -82,25 +124,13 @@
 })
 
 const formData = reactive({
+  arrivalNo: '',
+  arrivalQuantity: 0,
   orderNo: '',
   supplierName: '',
-  remark: ''
+  remark: '',
+  status: 'pending'
 })
-
-const mockData = [
-  {
-    id: 1,
-    arrivalNo: 'AR20241201001',
-    orderNo: 'PO20241201001',
-    supplierName: '渚涘簲鍟咥',
-    status: 'received',
-    arrivalQuantity: 250,
-    arrivalTime: '2025-12-01 15:30:00',
-    remark: '姝e父鍒拌揣'
-  }
-]
-
-const tableData = ref([...mockData])
 
 const getStatusType = (status) => {
   const statusMap = { pending: 'warning', received: 'success', stored: 'info' }
@@ -114,7 +144,7 @@
 
 const handleSearch = () => {
   loading.value = true
-  setTimeout(() => { loading.value = false }, 500)
+  getList()
 }
 
 const resetSearch = () => {
@@ -124,34 +154,45 @@
 const openDialog = (type, row = {}) => {
   dialogType.value = type
   if (type === 'edit' && row.id) {
-    Object.assign(formData, { orderNo: row.orderNo, supplierName: row.supplierName, remark: row.remark })
+    obj.id = row.id
+    Object.assign(formData, { orderNo: row.orderNo, supplierName: row.supplierName, remark: row.remark, arrivalQuantity: row.arrivalQuantity,arrivalNo: row.arrivalNo })
   } else {
-    Object.assign(formData, { orderNo: '', supplierName: '', remark: '' })
+    Object.assign(formData, { orderNo: '', supplierName: '', remark: '',arrivalQuantity: 0,arrivalNo: '' })
   }
   dialogVisible.value = true
 }
 
+const obj = reactive({
+  id:''
+})
+
 const handleSubmit = () => {
   if (dialogType.value === 'add') {
-    const newArrival = {
-      id: Date.now(),
-      arrivalNo: `AR${Date.now()}`,
-      orderNo: formData.orderNo,
-      supplierName: formData.supplierName,
-      status: 'pending',
-      arrivalQuantity: 0,
-      arrivalTime: new Date().toLocaleString(),
-      remark: formData.remark
-    }
-    tableData.value.unshift(newArrival)
-    ElMessage.success('鏂板鎴愬姛')
+    add(formData).then(res => {
+      if(res.code === 200){
+        ElMessage.success('鏂板鎴愬姛')
+        getList()
+      }
+    })
+  }else{
+    update({...formData, ...obj}).then(res => {
+      if(res.code === 200){
+        ElMessage.success('缂栬緫鎴愬姛')
+        getList()
+      }
+    })
   }
   dialogVisible.value = false
 }
 
 const handleReceive = (row) => {
   row.status = 'received'
-  ElMessage.success('鏀惰揣鎴愬姛')
+  update(row).then(res => {
+    if(res.code === 200){
+      ElMessage.success('鏀惰揣鎴愬姛')
+      getList()
+    }
+  })
 }
 
 const handleDelete = (row) => {
@@ -160,20 +201,30 @@
     cancelButtonText: '鍙栨秷',
     type: 'warning'
   }).then(() => {
-    const index = tableData.value.findIndex(item => item.id === row.id)
-    if (index !== -1) {
-      tableData.value.splice(index, 1)
-      ElMessage.success('鍒犻櫎鎴愬姛')
-    }
+    let ids = [row.id]
+    del(ids).then(res => {
+      if(res.code === 200){
+        ElMessage.success('鍒犻櫎鎴愬姛')
+        getList()
+      }
+    })
   })
 }
 
-const handleBatchReceive = () => {
-  ElMessage.success('鎵归噺鏀惰揣鎴愬姛')
-}
-
 const handleBatchDelete = () => {
-  ElMessage.success('鎵归噺鍒犻櫎鎴愬姛')
+  ElMessageBox.confirm('纭畾瑕佸垹闄ら�変腑鐨勮褰曞悧锛�', '鎻愮ず', {
+    confirmButtonText: '纭畾',
+    cancelButtonText: '鍙栨秷',
+    type: 'warning'
+  }).then(() => {
+    let ids = selectedRows.value.map(item => item.id)
+    del(ids).then(res => {
+      if(res.code === 200){
+        ElMessage.success('鍒犻櫎鎴愬姛')
+        getList()
+      }
+    })
+  })
 }
 
 const handleSelectionChange = (rows) => {

--
Gitblit v1.9.3