From add294f3c89ab2c6adbe11bc5c718c855a7fc545 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 10 十月 2025 15:56:25 +0800
Subject: [PATCH] yys  联调关键煤种锁仓页面

---
 src/api/warehouseManagement/keyCoalLocks.js                |   37 ++++++
 src/views/warehouseManagement/coalLockManagement/index.vue |  295 +++++++++++++++++--------------------------------
 2 files changed, 140 insertions(+), 192 deletions(-)

diff --git a/src/api/warehouseManagement/keyCoalLocks.js b/src/api/warehouseManagement/keyCoalLocks.js
new file mode 100644
index 0000000..4173a96
--- /dev/null
+++ b/src/api/warehouseManagement/keyCoalLocks.js
@@ -0,0 +1,37 @@
+import request from '@/utils/request'
+
+// 鍏抽敭鐓ょ閿佷粨琛ㄦ煡璇�
+export function listPage(query) {
+    return request({
+        url: '/keyCoalLocks/list',
+        method: 'get',
+        params: query
+    })
+}
+
+// 鍏抽敭鐓ょ閿佷粨琛ㄦ柊澧�
+export function add(query) {
+    return request({
+        url: '/keyCoalLocks/add',
+        method: 'post',
+        data: query
+    })
+}
+
+// 鍏抽敭鐓ょ閿佷粨琛ㄤ慨鏀�
+export function edit(query) {
+    return request({
+        url: '/keyCoalLocks/edit',
+        method: 'post',
+        data: query
+    })
+}
+
+// 鍏抽敭鐓ょ閿佷粨琛ㄥ垹闄�
+export function del(query) {
+    return request({
+        url: '/keyCoalLocks/del',
+        method: 'delete',
+        data: query
+    })
+}
\ No newline at end of file
diff --git a/src/views/warehouseManagement/coalLockManagement/index.vue b/src/views/warehouseManagement/coalLockManagement/index.vue
index ee9fff6..d9c1b29 100644
--- a/src/views/warehouseManagement/coalLockManagement/index.vue
+++ b/src/views/warehouseManagement/coalLockManagement/index.vue
@@ -8,12 +8,12 @@
             v-model="queryParams.coalName"
             placeholder="璇疯緭鍏ョ叅绉嶅悕绉�"
             clearable
-            size="small"
+            size="default"
             @keyup.enter="handleQuery"
           />
         </el-form-item>
         <el-form-item label="閿佷粨鐘舵��" prop="lockStatus">
-          <el-select v-model="queryParams.lockStatus" placeholder="璇烽�夋嫨閿佷粨鐘舵��" clearable size="small">
+          <el-select v-model="queryParams.lockStatus" placeholder="璇烽�夋嫨閿佷粨鐘舵��" clearable style="width: 120px;">
             <el-option label="宸查攣瀹�" value="locked" />
             <el-option label="閮ㄥ垎閿佸畾" value="partial" />
             <el-option label="鏈攣瀹�" value="unlocked" />
@@ -24,25 +24,25 @@
             v-model="queryParams.supplierName"
             placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О"
             clearable
-            size="small"
+            size="default"
             @keyup.enter="handleQuery"
           />
         </el-form-item>
-        <el-form-item label="閿佷粨鏃ユ湡" prop="lockDateRange">
+        <el-form-item label="閿佷粨鏃ユ湡" prop="lockTime">
           <el-date-picker
-            v-model="queryParams.lockDateRange"
-            type="daterange"
-            range-separator="鑷�"
-            start-placeholder="寮�濮嬫棩鏈�"
-            end-placeholder="缁撴潫鏃ユ湡"
-            size="small"
+            v-model="queryParams.lockTime"
+            type="date"
+            placeholder="璇烽�夋嫨閿佷粨鏃ユ湡"
+            size="default"
+            :value-format="'YYYY-MM-DD'"
+            style="width: 100%;"
             format="YYYY-MM-DD"
             value-format="YYYY-MM-DD"
           />
         </el-form-item>
         <el-form-item>
-          <el-button type="primary" icon="Search" size="small" @click="handleQuery">鎼滅储</el-button>
-          <el-button icon="Refresh" size="small" @click="resetQuery">閲嶇疆</el-button>
+          <el-button type="primary" icon="Search" size="default" @click="handleQuery">鎼滅储</el-button>
+          <el-button icon="Refresh" size="default" @click="resetQuery">閲嶇疆</el-button>
         </el-form-item>
       </el-form>
 
@@ -53,65 +53,11 @@
             type="primary"
             plain
             icon="Plus"
-            size="small"
+            size="default"
             @click="handleAdd"
             v-hasPermi="['coalLock:add']"
           >鏂板閿佷粨</el-button>
         </el-col>
-        <el-col :span="1.5">
-          <el-button
-            type="success"
-            plain
-            icon="Edit"
-            size="small"
-            :disabled="single"
-            @click="handleUpdate"
-            v-hasPermi="['coalLock:edit']"
-          >淇敼閿佷粨</el-button>
-        </el-col>
-        <el-col :span="1.5">
-          <el-button
-            type="danger"
-            plain
-            icon="Delete"
-            size="small"
-            :disabled="multiple"
-            @click="handleDelete"
-            v-hasPermi="['coalLock:remove']"
-          >鍒犻櫎閿佷粨</el-button>
-        </el-col>
-        <el-col :span="1.5">
-          <el-button
-            type="warning"
-            plain
-            icon="Unlock"
-            size="small"
-            :disabled="single"
-            @click="handleUnlock"
-            v-hasPermi="['coalLock:unlock']"
-          >瑙i櫎閿佷粨</el-button>
-        </el-col>
-        <el-col :span="1.5">
-          <el-button
-            type="info"
-            plain
-            icon="View"
-            size="small"
-            :disabled="single"
-            @click="handleView"
-            v-hasPermi="['coalLock:query']"
-          >鏌ョ湅璇︽儏</el-button>
-        </el-col>
-        <!-- <el-col :span="1.5">
-          <el-button
-            type="primary"
-            plain
-            icon="Download"
-            size="small"
-            @click="handleExport"
-            v-hasPermi="['coalLock:export']"
-          >瀵煎嚭</el-button>
-        </el-col> -->
         <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
       </el-row>
 
@@ -134,8 +80,8 @@
         <el-table-column label="閿佷粨鍘熷洜" align="center" prop="lockReason" min-width="150" show-overflow-tooltip />
         <el-table-column label="閿佷粨浜�" align="center" prop="lockUser" width="100" />
         <el-table-column label="閿佷粨鏃堕棿" align="center" prop="lockTime" width="180" />
-        <el-table-column label="棰勮瑙i攣鏃堕棿" align="center" prop="expectedUnlockTime" width="180" />
-        <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="200">
+        <el-table-column label="瑙i攣鏃堕棿" align="center" prop="expectedUnlockTime" width="180" />
+        <el-table-column label="鎿嶄綔" align="center" fixed="right" class-name="small-padding fixed-width" width="200">
           <template #default="scope">
             <el-button
               size="small"
@@ -145,6 +91,7 @@
               v-hasPermi="['coalLock:edit']"
             >淇敼</el-button>
             <el-button
+              :disabled="scope.row.lockStatus === 'unlocked'"
               size="small"
               type="text"
               icon="Unlock"
@@ -166,8 +113,8 @@
       <pagination
         v-show="total > 0"
         :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
+        v-model:page="queryParams.current"
+        v-model:limit="queryParams.size"
         @pagination="getList"
       />
     </el-card>
@@ -179,7 +126,7 @@
           <el-col :span="12">
             <el-form-item label="鐓ょ鍚嶇О" prop="coalName">
               <el-select
-                v-model="form.coalId"
+                v-model="form.coalName"
                 placeholder="璇烽�夋嫨鐓ょ"
                 filterable
                 clearable
@@ -196,9 +143,9 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="渚涘簲鍟�" prop="supplierId">
+            <el-form-item label="渚涘簲鍟�" prop="supplierName">
               <el-select
-                v-model="form.supplierId"
+                v-model="form.supplierName"
                 placeholder="璇烽�夋嫨渚涘簲鍟�"
                 filterable
                 clearable
@@ -217,12 +164,13 @@
         <el-row>
           <el-col :span="12">
             <el-form-item label="鎬诲簱瀛橀噺(鍚�)" prop="totalInventory">
-              <el-input v-model="form.totalInventory" placeholder="璇疯緭鍏ユ�诲簱瀛橀噺" disabled />
+              <el-input v-model="form.totalInventory" placeholder="璇疯緭鍏ユ�诲簱瀛橀噺" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="閿佷粨鏁伴噺(鍚�)" prop="lockQuantity">
               <el-input
+                :disabled="form.totalInventory <= 0"
                 v-model="form.lockQuantity"
                 placeholder="璇疯緭鍏ラ攣浠撴暟閲�"
                 type="number"
@@ -261,18 +209,18 @@
               />
             </el-form-item>
           </el-col>
-          <el-col :span="12">
-            <el-form-item label="棰勮瑙i攣鏃堕棿" prop="expectedUnlockTime">
-              <el-date-picker
-                v-model="form.expectedUnlockTime"
-                type="datetime"
-                placeholder="閫夋嫨棰勮瑙i攣鏃堕棿"
-                style="width: 100%"
-                format="YYYY-MM-DD HH:mm:ss"
-                value-format="YYYY-MM-DD HH:mm:ss"
-              />
-            </el-form-item>
-          </el-col>
+<!--          <el-col :span="12">-->
+<!--            <el-form-item label="瑙i攣鏃堕棿" prop="expectedUnlockTime">-->
+<!--              <el-date-picker-->
+<!--                v-model="form.expectedUnlockTime"-->
+<!--                type="datetime"-->
+<!--                placeholder="閫夋嫨瑙i攣鏃堕棿"-->
+<!--                style="width: 100%"-->
+<!--                format="YYYY-MM-DD HH:mm:ss"-->
+<!--                value-format="YYYY-MM-DD HH:mm:ss"-->
+<!--              />-->
+<!--            </el-form-item>-->
+<!--          </el-col>-->
         </el-row>
         <el-row>
           <el-col :span="24">
@@ -344,6 +292,12 @@
 import { ref, reactive, computed, onMounted } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import { Search, Plus, Edit, Delete, Unlock, View, Download, Refresh } from '@element-plus/icons-vue'
+import {
+  listPage,
+  add,
+  edit,
+  del
+} from '@/api/warehouseManagement/keyCoalLocks.js'
 
 // 鍝嶅簲寮忔暟鎹�
 const loading = ref(false)
@@ -359,12 +313,12 @@
 
 // 鏌ヨ鍙傛暟
 const queryParams = reactive({
-  pageNum: 1,
-  pageSize: 10,
+  current: 1,
+  size: 10,
   coalName: '',
   lockStatus: '',
   supplierName: '',
-  lockDateRange: []
+  lockTime: ''
 })
 
 // 琛ㄥ崟鏁版嵁
@@ -373,7 +327,6 @@
   lockCode: '',
   coalId: '',
   coalName: '',
-  supplierId: '',
   supplierName: '',
   totalInventory: 0,
   lockQuantity: 0,
@@ -391,13 +344,13 @@
   coalId: [
     { required: true, message: '璇烽�夋嫨鐓ょ', trigger: 'change' }
   ],
-  supplierId: [
+  supplierName: [
     { required: true, message: '璇烽�夋嫨渚涘簲鍟�', trigger: 'change' }
   ],
-  lockQuantity: [
-    { required: true, message: '璇疯緭鍏ラ攣浠撴暟閲�', trigger: 'blur' },
-    { type: 'number', min: 0, message: '閿佷粨鏁伴噺涓嶈兘灏忎簬0', trigger: 'blur' }
-  ],
+  // lockQuantity: [
+  //   { required: true, message: '璇疯緭鍏ラ攣浠撴暟閲�', trigger: 'blur' },
+  //   { type: 'number', min: 0, message: '閿佷粨鏁伴噺涓嶈兘灏忎簬0', trigger: 'blur' }
+  // ],
   lockStatus: [
     { required: true, message: '璇烽�夋嫨閿佷粨鐘舵��', trigger: 'change' }
   ],
@@ -437,65 +390,12 @@
   
   // 妯℃嫙渚涘簲鍟嗘暟鎹�
   supplierOptions.value = [
-    { value: '1', label: '灞辫タ鐓ょ偔闆嗗洟' },
-    { value: '2', label: '鍐呰挋鍙ょ叅鐐叕鍙�' },
-    { value: '3', label: '闄曡タ鐓ょ偔宸ヤ笟' },
-    { value: '4', label: '娌冲崡鐓ょ偔闆嗗洟' },
-    { value: '5', label: '娌冲寳鐓ょ偔鍏徃' }
+    { value: '灞辫タ鐓ょ偔闆嗗洟', label: '灞辫タ鐓ょ偔闆嗗洟' },
+    { value: '鍐呰挋鍙ょ叅鐐叕鍙�', label: '鍐呰挋鍙ょ叅鐐叕鍙�' },
+    { value: '闄曡タ鐓ょ偔宸ヤ笟', label: '闄曡タ鐓ょ偔宸ヤ笟' },
+    { value: '娌冲崡鐓ょ偔闆嗗洟', label: '娌冲崡鐓ょ偔闆嗗洟' },
+    { value: '娌冲寳鐓ょ偔鍏徃', label: '娌冲寳鐓ょ偔鍏徃' }
   ]
-  
-  // 妯℃嫙閿佷粨鍒楄〃鏁版嵁
-  lockList.value = [
-    {
-      id: '1',
-      lockCode: 'LK20241201001',
-      coalId: '1',
-      coalName: '鏃犵儫鐓�',
-      supplierId: '1',
-      supplierName: '灞辫タ鐓ょ偔闆嗗洟',
-      totalInventory: 1000,
-      lockQuantity: 300,
-      availableQuantity: 700,
-      lockStatus: 'partial',
-      lockReason: '鐢熶骇璁″垝棰勭暀',
-      lockUser: '寮犱笁',
-      lockTime: '2024-12-01 09:00:00',
-      expectedUnlockTime: '2024-12-31 18:00:00'
-    },
-    {
-      id: '2',
-      lockCode: 'LK20241201002',
-      coalId: '2',
-      coalName: '鐑熺叅',
-      supplierId: '2',
-      supplierName: '鍐呰挋鍙ょ叅鐐叕鍙�',
-      totalInventory: 800,
-      lockQuantity: 800,
-      availableQuantity: 0,
-      lockStatus: 'locked',
-      lockReason: '璐ㄩ噺妫�娴嬩腑',
-      lockUser: '鏉庡洓',
-      lockTime: '2024-12-01 10:00:00',
-      expectedUnlockTime: '2024-12-15 18:00:00'
-    },
-    {
-      id: '3',
-      lockCode: 'LK20241201003',
-      coalId: '4',
-      coalName: '鐒︾叅',
-      supplierId: '3',
-      supplierName: '闄曡タ鐓ょ偔宸ヤ笟',
-      totalInventory: 1200,
-      lockQuantity: 0,
-      availableQuantity: 1200,
-      lockStatus: 'unlocked',
-      lockReason: '',
-      lockUser: '',
-      lockTime: '',
-      expectedUnlockTime: ''
-    }
-  ]
-  total.value = lockList.value.length
 }
 
 // 鑾峰彇閿佷粨鐘舵�佺被鍨�
@@ -523,9 +423,9 @@
   const selectedCoal = coalOptions.value.find(item => item.value === coalId)
   if (selectedCoal) {
     form.coalName = selectedCoal.label
-    // 妯℃嫙璁剧疆搴撳瓨鏁版嵁
-    form.totalInventory = Math.floor(Math.random() * 1000) + 500
-    form.availableQuantity = form.totalInventory - form.lockQuantity
+    // // 妯℃嫙璁剧疆搴撳瓨鏁版嵁
+    // form.totalInventory = Math.floor(Math.random() * 1000) + 500
+    // form.availableQuantity = form.totalInventory - form.lockQuantity
   }
 }
 
@@ -549,15 +449,18 @@
 // 鏌ヨ鍒楄〃
 const getList = () => {
   loading.value = true
-  // 妯℃嫙API璋冪敤寤惰繜
-  setTimeout(() => {
-    loading.value = false
-  }, 500)
+  listPage(queryParams).then(res =>{
+    if(res.code === 200){
+      lockList.value = res.data.records
+      total.value = res.data.total
+      loading.value = false
+    }
+  })
 }
 
 // 鎼滅储
 const handleQuery = () => {
-  queryParams.pageNum = 1
+  queryParams.current = 1
   getList()
 }
 
@@ -566,7 +469,7 @@
   queryParams.coalName = ''
   queryParams.lockStatus = ''
   queryParams.supplierName = ''
-  queryParams.lockDateRange = []
+  queryParams.lockTime = ''
   handleQuery()
 }
 
@@ -606,14 +509,19 @@
 
 // 鍒犻櫎閿佷粨
 const handleDelete = (row) => {
-  const ids = row.id || row
+  let ids = []
+  ids.push(row.id)
   ElMessageBox.confirm('纭鍒犻櫎閫変腑鐨勯攣浠撹褰曞悧锛�', '璀﹀憡', {
     confirmButtonText: '纭畾',
     cancelButtonText: '鍙栨秷',
     type: 'warning'
   }).then(() => {
-    ElMessage.success('鍒犻櫎鎴愬姛')
-    getList()
+    del(ids).then(res => {
+      if(res.code === 200){
+        getList()
+        ElMessage.success('鍒犻櫎鎴愬姛')
+      }
+    })
   })
 }
 
@@ -633,16 +541,23 @@
       lockData.lockReason = ''
       lockData.lockUser = ''
       lockData.lockTime = ''
-      lockData.expectedUnlockTime = ''
+      // 鑾峰彇褰撳墠鏃堕棿  yyyy-MM-dd HH:mm:ss
+      const now = new Date();
+      const year = now.getFullYear();
+      const month = String(now.getMonth() + 1).padStart(2, '0');
+      const day = String(now.getDate()).padStart(2, '0');
+      const hours = String(now.getHours()).padStart(2, '0');
+      const minutes = String(now.getMinutes()).padStart(2, '0');
+      const seconds = String(now.getSeconds()).padStart(2, '0');
+      lockData.expectedUnlockTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
     }
-    ElMessage.success('瑙i攣鎴愬姛')
-    getList()
+    edit(lockData).then(res => {
+      if(res.code === 200){
+        getList()
+        ElMessage.success('瑙i攣鎴愬姛')
+      }
+    })
   })
-}
-
-// 瀵煎嚭
-const handleExport = () => {
-  ElMessage.success('瀵煎嚭鍔熻兘寮�鍙戜腑...')
 }
 
 // 鎻愪氦琛ㄥ崟
@@ -650,26 +565,23 @@
   lockFormRef.value.validate((valid) => {
     if (valid) {
       if (form.id) {
-        // 淇敼
-        const index = lockList.value.findIndex(item => item.id === form.id)
-        if (index !== -1) {
-          Object.assign(lockList.value[index], form)
-        }
-        ElMessage.success('淇敼鎴愬姛')
+        edit(form).then(res => {
+          if(res.code === 200){
+            getList()
+            ElMessage.success('淇敼鎴愬姛')
+            open.value = false
+          }
+        })
       } else {
         // 鏂板
-        const newLock = {
-          ...form,
-          id: Date.now().toString(),
-          lockCode: `LK${new Date().toISOString().slice(0, 10).replace(/-/g, '')}${String(lockList.value.length + 1).padStart(3, '0')}`,
-          lockUser: '褰撳墠鐢ㄦ埛'
-        }
-        lockList.value.unshift(newLock)
-        total.value = lockList.value.length
-        ElMessage.success('鏂板鎴愬姛')
+        add(form).then(res => {
+          if(res.code === 200){
+            getList()
+            ElMessage.success('鏂板鎴愬姛')
+            open.value = false
+          }
+        })
       }
-      open.value = false
-      getList()
     }
   })
 }
@@ -687,7 +599,6 @@
     lockCode: '',
     coalId: '',
     coalName: '',
-    supplierId: '',
     supplierName: '',
     totalInventory: 0,
     lockQuantity: 0,

--
Gitblit v1.9.3