maven
2025-10-10 add294f3c89ab2c6adbe11bc5c718c855a7fc545
yys  联调关键煤种锁仓页面
已添加1个文件
已修改1个文件
324 ■■■■■ 文件已修改
src/api/warehouseManagement/keyCoalLocks.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/warehouseManagement/coalLockManagement/index.vue 287 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
    })
}
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']"
          >解除锁仓</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="预计解锁时间" align="center" prop="expectedUnlockTime" width="180" />
        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
        <el-table-column label="解锁时间" 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="预计解锁时间" prop="expectedUnlockTime">
              <el-date-picker
                v-model="form.expectedUnlockTime"
                type="datetime"
                placeholder="选择预计解锁时间"
                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="解锁时间" prop="expectedUnlockTime">-->
<!--              <el-date-picker-->
<!--                v-model="form.expectedUnlockTime"-->
<!--                type="datetime"-->
<!--                placeholder="选择解锁时间"-->
<!--                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(() => {
  listPage(queryParams).then(res =>{
    if(res.code === 200){
      lockList.value = res.data.records
      total.value = res.data.total
    loading.value = false
  }, 500)
    }
  })
}
// æœç´¢
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('删除成功')
    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('解锁成功')
    edit(lockData).then(res => {
      if(res.code === 200){
    getList()
  })
        ElMessage.success('解锁成功')
}
// å¯¼å‡º
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)
        }
        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('新增成功')
      }
      open.value = false
        add(form).then(res => {
          if(res.code === 200){
      getList()
            ElMessage.success('新增成功')
            open.value = false
          }
        })
      }
    }
  })
}
@@ -687,7 +599,6 @@
    lockCode: '',
    coalId: '',
    coalName: '',
    supplierId: '',
    supplierName: '',
    totalInventory: 0,
    lockQuantity: 0,