¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-card class="box-card"> |
| | | <!-- æç´¢åºå --> |
| | | <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px"> |
| | | <el-form-item label="ç
¤ç§åç§°" prop="coalName"> |
| | | <el-input |
| | | v-model="queryParams.coalName" |
| | | placeholder="请è¾å
¥ç
¤ç§åç§°" |
| | | clearable |
| | | size="small" |
| | | @keyup.enter="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="éä»ç¶æ" prop="lockStatus"> |
| | | <el-select v-model="queryParams.lockStatus" placeholder="è¯·éæ©éä»ç¶æ" clearable size="small"> |
| | | <el-option label="å·²éå®" value="locked" /> |
| | | <el-option label="é¨åéå®" value="partial" /> |
| | | <el-option label="æªéå®" value="unlocked" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="ä¾åºå" prop="supplierName"> |
| | | <el-input |
| | | v-model="queryParams.supplierName" |
| | | placeholder="请è¾å
¥ä¾åºååç§°" |
| | | clearable |
| | | size="small" |
| | | @keyup.enter="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="é仿¥æ" prop="lockDateRange"> |
| | | <el-date-picker |
| | | v-model="queryParams.lockDateRange" |
| | | type="daterange" |
| | | range-separator="è³" |
| | | start-placeholder="å¼å§æ¥æ" |
| | | end-placeholder="ç»ææ¥æ" |
| | | size="small" |
| | | 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-form-item> |
| | | </el-form> |
| | | |
| | | <!-- æä½æé®åºå --> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | | <el-button |
| | | type="primary" |
| | | plain |
| | | icon="Plus" |
| | | size="small" |
| | | @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> |
| | | |
| | | <!-- æ°æ®è¡¨æ ¼ --> |
| | | <el-table v-loading="loading" :data="lockList" @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55" align="center" /> |
| | | <el-table-column label="éä»ç¼å·" align="center" prop="lockCode" width="180" /> |
| | | <el-table-column label="ç
¤ç§åç§°" align="center" prop="coalName" min-width="120" /> |
| | | <el-table-column label="ä¾åºå" align="center" prop="supplierName" min-width="120" /> |
| | | <el-table-column label="æ»åºåé(å¨)" align="center" prop="totalInventory" width="120" /> |
| | | <el-table-column label="é仿°é(å¨)" align="center" prop="lockQuantity" width="120" /> |
| | | <el-table-column label="å¯ç¨æ°é(å¨)" align="center" prop="availableQuantity" width="120" /> |
| | | <el-table-column label="éä»ç¶æ" align="center" prop="lockStatus" width="100"> |
| | | <template #default="scope"> |
| | | <el-tag :type="getLockStatusType(scope.row.lockStatus)"> |
| | | {{ getLockStatusText(scope.row.lockStatus) }} |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <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"> |
| | | <template #default="scope"> |
| | | <el-button |
| | | size="small" |
| | | type="text" |
| | | icon="Edit" |
| | | @click="handleUpdate(scope.row)" |
| | | v-hasPermi="['coalLock:edit']" |
| | | >ä¿®æ¹</el-button> |
| | | <el-button |
| | | size="small" |
| | | type="text" |
| | | icon="Unlock" |
| | | @click="handleUnlock(scope.row)" |
| | | v-hasPermi="['coalLock:unlock']" |
| | | >è§£é</el-button> |
| | | <el-button |
| | | size="small" |
| | | type="text" |
| | | icon="Delete" |
| | | @click="handleDelete(scope.row)" |
| | | v-hasPermi="['coalLock:remove']" |
| | | >å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | |
| | | <!-- å页ç»ä»¶ --> |
| | | <pagination |
| | | v-show="total > 0" |
| | | :total="total" |
| | | v-model:page="queryParams.pageNum" |
| | | v-model:limit="queryParams.pageSize" |
| | | @pagination="getList" |
| | | /> |
| | | </el-card> |
| | | |
| | | <!-- æ·»å æä¿®æ¹éä»å¯¹è¯æ¡ --> |
| | | <el-dialog :title="title" v-model="open" width="800px" append-to-body> |
| | | <el-form ref="lockFormRef" :model="form" :rules="rules" label-width="120px"> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ç
¤ç§åç§°" prop="coalName"> |
| | | <el-select |
| | | v-model="form.coalId" |
| | | placeholder="è¯·éæ©ç
¤ç§" |
| | | filterable |
| | | clearable |
| | | @change="handleCoalChange" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="coal in coalOptions" |
| | | :key="coal.value" |
| | | :label="coal.label" |
| | | :value="coal.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="ä¾åºå" prop="supplierId"> |
| | | <el-select |
| | | v-model="form.supplierId" |
| | | placeholder="è¯·éæ©ä¾åºå" |
| | | filterable |
| | | clearable |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="supplier in supplierOptions" |
| | | :key="supplier.value" |
| | | :label="supplier.label" |
| | | :value="supplier.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ»åºåé(å¨)" prop="totalInventory"> |
| | | <el-input v-model="form.totalInventory" placeholder="请è¾å
¥æ»åºåé" disabled /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é仿°é(å¨)" prop="lockQuantity"> |
| | | <el-input |
| | | v-model="form.lockQuantity" |
| | | placeholder="请è¾å
¥é仿°é" |
| | | type="number" |
| | | :max="form.totalInventory" |
| | | @input="handleLockQuantityChange" |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å¯ç¨æ°é(å¨)" prop="availableQuantity"> |
| | | <el-input v-model="form.availableQuantity" placeholder="å¯ç¨æ°é" disabled /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="éä»ç¶æ" prop="lockStatus"> |
| | | <el-select v-model="form.lockStatus" placeholder="è¯·éæ©éä»ç¶æ" style="width: 100%"> |
| | | <el-option label="å·²éå®" value="locked" /> |
| | | <el-option label="é¨åéå®" value="partial" /> |
| | | <el-option label="æªéå®" value="unlocked" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="12"> |
| | | <el-form-item label="é仿¶é´" prop="lockTime"> |
| | | <el-date-picker |
| | | v-model="form.lockTime" |
| | | 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"> |
| | | <el-form-item label="éä»åå " prop="lockReason"> |
| | | <el-input |
| | | v-model="form.lockReason" |
| | | type="textarea" |
| | | placeholder="请è¾å
¥éä»åå " |
| | | :rows="3" |
| | | maxlength="500" |
| | | show-word-limit |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <el-form-item label="夿³¨" prop="remarks"> |
| | | <el-input |
| | | v-model="form.remarks" |
| | | type="textarea" |
| | | placeholder="请è¾å
¥å¤æ³¨ä¿¡æ¯" |
| | | :rows="2" |
| | | maxlength="200" |
| | | show-word-limit |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button type="primary" @click="submitForm">ç¡® å®</el-button> |
| | | <el-button @click="cancel">å æ¶</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- æ¥ç详æ
å¯¹è¯æ¡ --> |
| | | <el-dialog title="éä»è¯¦æ
" v-model="viewOpen" width="800px" append-to-body> |
| | | <el-descriptions :column="2" border> |
| | | <el-descriptions-item label="éä»ç¼å·">{{ form.lockCode }}</el-descriptions-item> |
| | | <el-descriptions-item label="ç
¤ç§åç§°">{{ form.coalName }}</el-descriptions-item> |
| | | <el-descriptions-item label="ä¾åºå">{{ form.supplierName }}</el-descriptions-item> |
| | | <el-descriptions-item label="æ»åºåé">{{ form.totalInventory }}å¨</el-descriptions-item> |
| | | <el-descriptions-item label="é仿°é">{{ form.lockQuantity }}å¨</el-descriptions-item> |
| | | <el-descriptions-item label="å¯ç¨æ°é">{{ form.availableQuantity }}å¨</el-descriptions-item> |
| | | <el-descriptions-item label="éä»ç¶æ"> |
| | | <el-tag :type="getLockStatusType(form.lockStatus)"> |
| | | {{ getLockStatusText(form.lockStatus) }} |
| | | </el-tag> |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="éä»äºº">{{ form.lockUser }}</el-descriptions-item> |
| | | <el-descriptions-item label="é仿¶é´">{{ form.lockTime }}</el-descriptions-item> |
| | | <el-descriptions-item label="é¢è®¡è§£éæ¶é´">{{ form.expectedUnlockTime }}</el-descriptions-item> |
| | | <el-descriptions-item label="éä»åå " :span="2">{{ form.lockReason }}</el-descriptions-item> |
| | | <el-descriptions-item label="夿³¨" :span="2">{{ form.remarks }}</el-descriptions-item> |
| | | </el-descriptions> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button @click="viewOpen = false">å
³ é</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup> |
| | | 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' |
| | | |
| | | // ååºå¼æ°æ® |
| | | const loading = ref(false) |
| | | const showSearch = ref(true) |
| | | const open = ref(false) |
| | | const viewOpen = ref(false) |
| | | const single = ref(true) |
| | | const multiple = ref(true) |
| | | const total = ref(0) |
| | | const lockList = ref([]) |
| | | const coalOptions = ref([]) |
| | | const supplierOptions = ref([]) |
| | | |
| | | // æ¥è¯¢åæ° |
| | | const queryParams = reactive({ |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | coalName: '', |
| | | lockStatus: '', |
| | | supplierName: '', |
| | | lockDateRange: [] |
| | | }) |
| | | |
| | | // è¡¨åæ°æ® |
| | | const form = reactive({ |
| | | id: undefined, |
| | | lockCode: '', |
| | | coalId: '', |
| | | coalName: '', |
| | | supplierId: '', |
| | | supplierName: '', |
| | | totalInventory: 0, |
| | | lockQuantity: 0, |
| | | availableQuantity: 0, |
| | | lockStatus: 'locked', |
| | | lockReason: '', |
| | | lockUser: '', |
| | | lockTime: '', |
| | | expectedUnlockTime: '', |
| | | remarks: '' |
| | | }) |
| | | |
| | | // 表åéªè¯è§å |
| | | const rules = reactive({ |
| | | coalId: [ |
| | | { required: true, message: 'è¯·éæ©ç
¤ç§', trigger: 'change' } |
| | | ], |
| | | supplierId: [ |
| | | { required: true, message: 'è¯·éæ©ä¾åºå', trigger: 'change' } |
| | | ], |
| | | lockQuantity: [ |
| | | { required: true, message: '请è¾å
¥é仿°é', trigger: 'blur' }, |
| | | { type: 'number', min: 0, message: 'é仿°éä¸è½å°äº0', trigger: 'blur' } |
| | | ], |
| | | lockStatus: [ |
| | | { required: true, message: 'è¯·éæ©éä»ç¶æ', trigger: 'change' } |
| | | ], |
| | | lockReason: [ |
| | | { required: true, message: '请è¾å
¥éä»åå ', trigger: 'blur' } |
| | | ], |
| | | lockTime: [ |
| | | { required: true, message: 'è¯·éæ©é仿¶é´', trigger: 'change' } |
| | | ] |
| | | }) |
| | | |
| | | // 计ç®å±æ§ |
| | | const title = computed(() => { |
| | | return form.id ? 'ä¿®æ¹éä»' : 'æ°å¢éä»' |
| | | }) |
| | | |
| | | // 表åå¼ç¨ |
| | | const lockFormRef = ref() |
| | | const queryForm = ref() |
| | | |
| | | // åå§åæ°æ® |
| | | onMounted(() => { |
| | | getList() |
| | | initOptions() |
| | | }) |
| | | |
| | | // åå§åéé¡¹æ°æ® |
| | | const initOptions = () => { |
| | | // 模æç
¤ç§æ°æ® |
| | | coalOptions.value = [ |
| | | { value: '1', label: 'æ çç
¤' }, |
| | | { value: '2', label: 'çç
¤' }, |
| | | { value: '3', label: 'è¤ç
¤' }, |
| | | { value: '4', label: 'ç¦ç
¤' }, |
| | | { value: '5', label: 'æ°ç
¤' } |
| | | ] |
| | | |
| | | // 模æä¾åºåæ°æ® |
| | | supplierOptions.value = [ |
| | | { value: '1', label: '山西ç
¤çéå¢' }, |
| | | { value: '2', label: 'å
èå¤ç
¤çå
¬å¸' }, |
| | | { value: '3', label: 'é西ç
¤çå·¥ä¸' }, |
| | | { value: '4', label: 'æ²³åç
¤çéå¢' }, |
| | | { value: '5', 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 |
| | | } |
| | | |
| | | // è·åéä»ç¶æç±»å |
| | | const getLockStatusType = (status) => { |
| | | const statusMap = { |
| | | 'locked': 'danger', |
| | | 'partial': 'warning', |
| | | 'unlocked': 'success' |
| | | } |
| | | return statusMap[status] || 'info' |
| | | } |
| | | |
| | | // è·åéä»ç¶æææ¬ |
| | | const getLockStatusText = (status) => { |
| | | const statusMap = { |
| | | 'locked': 'å·²éå®', |
| | | 'partial': 'é¨åéå®', |
| | | 'unlocked': 'æªéå®' |
| | | } |
| | | return statusMap[status] || 'æªç¥' |
| | | } |
| | | |
| | | // ç
¤ç§éæ©ååå¤ç |
| | | const handleCoalChange = (coalId) => { |
| | | 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 |
| | | } |
| | | } |
| | | |
| | | // é仿°éååå¤ç |
| | | const handleLockQuantityChange = () => { |
| | | if (form.lockQuantity > form.totalInventory) { |
| | | form.lockQuantity = form.totalInventory |
| | | } |
| | | form.availableQuantity = form.totalInventory - form.lockQuantity |
| | | |
| | | // æ´æ°éä»ç¶æ |
| | | if (form.lockQuantity === 0) { |
| | | form.lockStatus = 'unlocked' |
| | | } else if (form.lockQuantity === form.totalInventory) { |
| | | form.lockStatus = 'locked' |
| | | } else { |
| | | form.lockStatus = 'partial' |
| | | } |
| | | } |
| | | |
| | | // æ¥è¯¢å表 |
| | | const getList = () => { |
| | | loading.value = true |
| | | // 模æAPIè°ç¨å»¶è¿ |
| | | setTimeout(() => { |
| | | loading.value = false |
| | | }, 500) |
| | | } |
| | | |
| | | // æç´¢ |
| | | const handleQuery = () => { |
| | | queryParams.pageNum = 1 |
| | | getList() |
| | | } |
| | | |
| | | // éç½®æç´¢ |
| | | const resetQuery = () => { |
| | | queryParams.coalName = '' |
| | | queryParams.lockStatus = '' |
| | | queryParams.supplierName = '' |
| | | queryParams.lockDateRange = [] |
| | | handleQuery() |
| | | } |
| | | |
| | | // éæ©ååå¤ç |
| | | const handleSelectionChange = (selection) => { |
| | | single.value = selection.length !== 1 |
| | | multiple.value = !selection.length |
| | | } |
| | | |
| | | // æ°å¢éä» |
| | | const handleAdd = () => { |
| | | reset() |
| | | open.value = true |
| | | } |
| | | |
| | | // ä¿®æ¹éä» |
| | | const handleUpdate = (row) => { |
| | | reset() |
| | | const id = row.id || row |
| | | const lockData = lockList.value.find(item => item.id === id) |
| | | if (lockData) { |
| | | Object.assign(form, lockData) |
| | | } |
| | | open.value = true |
| | | } |
| | | |
| | | // æ¥ç详æ
|
| | | const handleView = (row) => { |
| | | reset() |
| | | const id = row.id || row |
| | | const lockData = lockList.value.find(item => item.id === id) |
| | | if (lockData) { |
| | | Object.assign(form, lockData) |
| | | } |
| | | viewOpen.value = true |
| | | } |
| | | |
| | | // å é¤éä» |
| | | const handleDelete = (row) => { |
| | | const ids = row.id || row |
| | | ElMessageBox.confirm('确认å é¤éä¸çéä»è®°å½åï¼', 'è¦å', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | ElMessage.success('å 餿å') |
| | | getList() |
| | | }) |
| | | } |
| | | |
| | | // è§£é¤éä» |
| | | const handleUnlock = (row) => { |
| | | const id = row.id || row |
| | | ElMessageBox.confirm('确认解é¤è¯¥ç
¤ç§çéä»åï¼', 'è¦å', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | const lockData = lockList.value.find(item => item.id === id) |
| | | if (lockData) { |
| | | lockData.lockQuantity = 0 |
| | | lockData.availableQuantity = lockData.totalInventory |
| | | lockData.lockStatus = 'unlocked' |
| | | lockData.lockReason = '' |
| | | lockData.lockUser = '' |
| | | lockData.lockTime = '' |
| | | lockData.expectedUnlockTime = '' |
| | | } |
| | | ElMessage.success('è§£éæå') |
| | | getList() |
| | | }) |
| | | } |
| | | |
| | | // å¯¼åº |
| | | const handleExport = () => { |
| | | ElMessage.success('导åºåè½å¼åä¸...') |
| | | } |
| | | |
| | | // æäº¤è¡¨å |
| | | const submitForm = () => { |
| | | 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('ä¿®æ¹æå') |
| | | } 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 |
| | | getList() |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // åæ¶ |
| | | const cancel = () => { |
| | | open.value = false |
| | | reset() |
| | | } |
| | | |
| | | // é置表å |
| | | const reset = () => { |
| | | Object.assign(form, { |
| | | id: undefined, |
| | | lockCode: '', |
| | | coalId: '', |
| | | coalName: '', |
| | | supplierId: '', |
| | | supplierName: '', |
| | | totalInventory: 0, |
| | | lockQuantity: 0, |
| | | availableQuantity: 0, |
| | | lockStatus: 'locked', |
| | | lockReason: '', |
| | | lockUser: '', |
| | | lockTime: '', |
| | | expectedUnlockTime: '', |
| | | remarks: '' |
| | | }) |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .app-container { |
| | | padding: 20px; |
| | | } |
| | | |
| | | .box-card { |
| | | margin-bottom: 20px; |
| | | } |
| | | |
| | | .mb8 { |
| | | margin-bottom: 8px; |
| | | } |
| | | |
| | | .dialog-footer { |
| | | text-align: right; |
| | | } |
| | | |
| | | .el-descriptions { |
| | | margin: 20px 0; |
| | | } |
| | | </style> |