| | |
| | | @edit="handleEdit" |
| | | @viewRow="handleView" |
| | | @selection-change="handleSelectionChange" |
| | | :operations="['edit', 'viewRow']" |
| | | :operationsWidth="200" |
| | | @custom-click="handleCustomButtonClick" |
| | | :operations="getTableOperations()" |
| | | :operationsWidth="getOperationsWidth()" |
| | | :customButtons="getCustomButtons()" |
| | | > |
| | | <!-- åæ®µåç§°åçèªå®ä¹ææ§½ - æ¾ç¤ºä¸ºæ ç¾ --> |
| | | <template |
| | | v-if="activeTab === 'coalQualityMaintenance'" |
| | | #fieldIds="{ row }" |
| | | > |
| | | <template |
| | | v-if=" |
| | | typeof row.fieldIds === 'string' && row.fieldIds.includes(',') |
| | | " |
| | | > |
| | | <el-tag |
| | | v-for="(field, index) in row.fieldIds.split(',')" |
| | | :key="index" |
| | | size="small" |
| | | style="margin-right: 4px; margin-bottom: 2px" |
| | | type="primary" |
| | | > |
| | | </el-tag> |
| | | </template> |
| | | <template v-else> |
| | | <el-tag size="small" type="primary"> </el-tag> |
| | | </template> |
| | | </template> |
| | | </data-table> |
| | | </div> |
| | | <pagination |
| | |
| | | :form="form" |
| | | @submit="getList" |
| | | /> --> |
| | | |
| | | <!-- æ¥ç详æ
å¼¹çª --> |
| | | <DilogTable |
| | | v-model="dialogTableVisible" |
| | | :title="dialogTableTitle" |
| | | :table-data="dialogTableData" |
| | | :columns="dialogTableColumns" |
| | | width="60%" |
| | | /> |
| | | </el-card> |
| | | </div> |
| | | </template> |
| | |
| | | import Pagination from "@/components/Pagination"; |
| | | import managementDialog from "./mould/managementDialog.vue"; |
| | | import EquipmentRequisition from "./mould/equipmentRequisitionDialog.vue"; |
| | | import UsageRecord from "./mould/usageRecord.vue"; |
| | | import DilogTable from "@/components/dialog/DilogTable.vue"; |
| | | |
| | | // API æå¡å¯¼å
¥ |
| | | import { useDelete } from "@/hooks/useDelete.js"; |
| | |
| | | getManagementList, |
| | | delEquipment, |
| | | } from "@/api/equipment/management/index.js"; |
| | | import { getUsageRecordList } from "@/api/equipment/requisition/index.js"; |
| | | import { getUsageRecordList, getUsageDetailList } from "@/api/equipment/requisition/index.js"; |
| | | |
| | | // ååºå¼ç¶æç®¡ç |
| | | const form = ref({}); |
| | | const title = ref(""); |
| | | const copyForm = ref({}); |
| | | const addOrEdit = ref("add"); |
| | | const manaDialog = ref(false); |
| | | const equipmentRequisitionDialog = ref(false); |
| | | const usageRecordDialog = ref(false); |
| | | const loading = ref(false); |
| | | const activeTab = ref("management"); |
| | | const selectedRows = ref([]); |
| | | const tableData = ref([]); |
| | | // ååºå¼ç¶æç®¡ç - 使ç¨è§£æåé»è®¤å¼ |
| | | const initFormState = () => ({ consumables: false }); |
| | | |
| | | const state = reactive({ |
| | | form: initFormState(), |
| | | title: "", |
| | | copyForm: {}, |
| | | addOrEdit: "add", |
| | | loading: false, |
| | | activeTab: "management", |
| | | selectedRows: [], |
| | | tableData: [], |
| | | // å¼¹çªç¶æ |
| | | dialogs: { |
| | | management: false, |
| | | equipmentRequisition: false, |
| | | usageRecord: false, |
| | | detailTable: false, |
| | | }, |
| | | // 详æ
è¡¨æ ¼ç¶æ |
| | | detailTable: { |
| | | data: [], |
| | | columns: [], |
| | | title: "", |
| | | }, |
| | | // åé¡µç¶æ |
| | | const pageNum = ref(1); |
| | | const pageSizes = ref(10); |
| | | const total = ref(0); |
| | | |
| | | pagination: { |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | total: 0, |
| | | }, |
| | | // æ¥è¯¢åæ° |
| | | const queryParams = reactive({ |
| | | queryParams: { |
| | | searchAll: "", |
| | | }, |
| | | }); |
| | | |
| | | // 使ç¨è§£æç®åè®¿é® |
| | | const { |
| | | form, |
| | | title, |
| | | copyForm, |
| | | addOrEdit, |
| | | loading, |
| | | activeTab, |
| | | selectedRows, |
| | | tableData, |
| | | dialogs, |
| | | detailTable, |
| | | pagination, |
| | | queryParams, |
| | | } = toRefs(state); |
| | | |
| | | // æ ç¾é¡µé
ç½® - 便äºåç»æ©å± |
| | | const tabsConfig = { |
| | |
| | | { prop: "equipmentNo", label: "设å¤ç¼å·", minWidth: 100 }, |
| | | { prop: "equipmentName", label: "设å¤åç§°", minWidth: 100 }, |
| | | { prop: "usageQuantity", label: "é¢ç¨æ°é", minWidth: 100 }, |
| | | {prop: "returnQuantity" , label: "å½è¿æ°é", minWidth: 100, |
| | | formatter: (row) => row.returnQuantity || 0 |
| | | }, |
| | | { |
| | | prop: "equipmentStatus", |
| | | label: "使ç¨ç¶æ", |
| | | minWidth: 100, |
| | | formatter: (row) => (row.equipmentStatus == 1 ? "使ç¨ä¸" : "å·²å½è¿"), |
| | | }, |
| | | |
| | | { prop: "usageStartTime", label: "使ç¨å¼å§æ¶é´", minWidth: 100 }, |
| | | { prop: "usageEndTime", label: "使ç¨ç»ææ¶é´", minWidth: 100 }, |
| | | { prop: "remarks", label: "夿³¨", minWidth: 100 }, |
| | |
| | | const columns = computed(() => currentTabConfig.value?.columns || []); |
| | | const selectedCount = computed(() => selectedRows.value.length); |
| | | |
| | | // 卿è·åè¡¨æ ¼æä½é
ç½® |
| | | const getTableOperations = () => { |
| | | if (activeTab.value === 'equipmentRequisition') { |
| | | return [ 'viewRow']; // 设å¤é¢ç¨é¡µé¢åªæ¾ç¤ºç¼è¾åæ¥ç |
| | | } |
| | | return ['edit', 'viewRow']; // é»è®¤æä½ |
| | | }; |
| | | |
| | | // 卿è·åæä½å宽度 |
| | | const getOperationsWidth = () => { |
| | | if (activeTab.value === 'equipmentRequisition') { |
| | | return 250; // 为å½è¿æé®é¢çæ´å¤ç©ºé´ |
| | | } |
| | | return 200; // é»è®¤å®½åº¦ |
| | | }; |
| | | |
| | | // 卿è·åèªå®ä¹æé®é
ç½® |
| | | const getCustomButtons = () => { |
| | | const buttons = []; |
| | | |
| | | // å¨è®¾å¤é¢ç¨é¡µé¢æ·»å å½è¿æé® |
| | | if (activeTab.value === 'equipmentRequisition') { |
| | | buttons.push({ |
| | | name: 'return', |
| | | label: 'å½è¿', |
| | | type: 'success', |
| | | size: 'small', |
| | | link: true, |
| | | show: (row) => row.equipmentStatus == 1 || row.equipmentStatus == 2, // åªæä½¿ç¨ä¸çè®¾å¤ææ¾ç¤ºå½è¿æé® |
| | | disabled: (row) => false, |
| | | }); |
| | | } |
| | | |
| | | return buttons; |
| | | }; |
| | | |
| | | // å¤çèªå®ä¹æé®ç¹å»äºä»¶ |
| | | const handleCustomButtonClick = ({ buttonName, row }) => { |
| | | switch (buttonName) { |
| | | case 'return': |
| | | handleReturn(row); |
| | | break; |
| | | // å¯ä»¥å¨è¿éæ·»å æ´å¤èªå®ä¹æé®çå¤çé»è¾ |
| | | default: |
| | | console.warn(`æªå¤ççèªå®ä¹æé®: ${buttonName}`); |
| | | } |
| | | }; |
| | | const handleReturn = (row) => { |
| | | form.value = { ...row }; |
| | | addOrEdit.value = "return"; // 设置为å½è¿æ¨¡å¼ |
| | | title.value = `å½è¿è®¾å¤`; |
| | | copyForm.value = { ...row }; |
| | | equipmentRequisitionDialog.value = true; |
| | | console.log("å½è¿è®¾å¤ï¼", row); |
| | | }; |
| | | // äºä»¶å¤ç彿° |
| | | const handleTabClick = (tab) => { |
| | | activeTab.value = tab.props.name; |
| | |
| | | } |
| | | }; |
| | | |
| | | const handleView = (row) => { |
| | | const handleView = async (row) => { |
| | | // é对设å¤ç®¡ç页é¢ï¼ç´æ¥æå¼ç¼è¾å¼¹çªæ¥ç |
| | | if (activeTab.value === 'management') { |
| | | form.value = { ...row }; |
| | | addOrEdit.value = "viewRow"; |
| | | title.value = `æ¥ç${currentTabConfig.value.label}`; |
| | | copyForm.value = { ...row }; |
| | | if (activeTab.value === "equipmentRequisition") { |
| | | equipmentRequisitionDialog.value = true; |
| | | } else if (activeTab.value === "usageRecord") { |
| | | manaDialog.value = true; |
| | | return; |
| | | } |
| | | |
| | | // é对设å¤é¢ç¨é¡µé¢ï¼æå¼è¯¦æ
è®°å½è¡¨æ ¼ |
| | | if (activeTab.value === 'equipmentRequisition') { |
| | | try { |
| | | dialogTableTitle.value = `${row.equipmentName || '设å¤'} - æä½è®°å½è¯¦æ
`; |
| | | |
| | | // æ¾ç¤ºå è½½ç¶æ |
| | | dialogTableVisible.value = true; |
| | | dialogTableData.value = []; |
| | | |
| | | // è°ç¨è¯¦æ
æ¥å£è·åæ°æ® |
| | | const { data, code } = await getUsageDetailList(row.id); |
| | | |
| | | if (code === 200 && data) { |
| | | console.log('è®¾å¤æä½è®°å½:', data); |
| | | |
| | | // å¤çæ°ç»æ°æ®ï¼ç´æ¥æ¾ç¤ºæä½è®°å½å表 |
| | | if (Array.isArray(data.records)) { |
| | | dialogTableData.value = data.records; |
| | | dialogTableColumns.value = [ |
| | | { prop: 'equipmentNo', label: '设å¤ç¼å·', minWidth: 100 }, |
| | | { prop: 'equipmentName', label: '设å¤åç§°', minWidth: 120 }, |
| | | { prop: 'specification', label: 'è§æ ¼åå·', minWidth: 100 }, |
| | | { |
| | | prop: 'operationType', |
| | | label: 'æä½ç±»å', |
| | | minWidth: 80, |
| | | formatter: (row) => row.operationType === 1 ? 'é¢ç¨' : 'å½è¿' |
| | | }, |
| | | { prop: 'quantity', label: 'æä½æ°é', minWidth: 80 }, |
| | | { prop: 'operator', label: 'æä½äºº', minWidth: 80 }, |
| | | { prop: 'remark', label: '夿³¨', minWidth: 150, showOverflowTooltip: true }, |
| | | { prop: 'createTime', label: 'æä½æ¶é´', minWidth: 150 } |
| | | ]; |
| | | } else { |
| | | ElMessage.warning('ææ æä½è®°å½'); |
| | | dialogTableVisible.value = false; |
| | | } |
| | | } else { |
| | | ElMessage.error('è·å详æ
æ°æ®å¤±è´¥'); |
| | | dialogTableVisible.value = false; |
| | | } |
| | | |
| | | } catch (error) { |
| | | console.error('è·å详æ
失败:', error); |
| | | ElMessage.error('è·å详æ
æ°æ®å¤±è´¥'); |
| | | dialogTableVisible.value = false; |
| | | } |
| | | return; |
| | | } |
| | | |
| | | // å
¶ä»é¡µé¢çé»è®¤å¤ç |
| | | form.value = { ...row }; |
| | | addOrEdit.value = "viewRow"; |
| | | title.value = `æ¥ç${currentTabConfig.value.label}`; |
| | | copyForm.value = { ...row }; |
| | | |
| | | if (activeTab.value === "usageRecord") { |
| | | usageRecordDialog.value = true; |
| | | } else { |
| | | manaDialog.value = true; |
| | |
| | | |
| | | // 设å¤é¢ç¨å¼¹çªæäº¤å¤ç |
| | | const onEquipmentRequisitionSubmit = (formData) => { |
| | | console.log("设å¤é¢ç¨æäº¤æ°æ®ï¼", formData); |
| | | if (formData.equipmentStatus == 1) { |
| | | if (formData.equipmentStatus == 2) { |
| | | ElMessage.success("设å¤å½è¿æå"); |
| | | } else { |
| | | ElMessage.success("设å¤é¢ç¨æå"); |