src/api/archiveManagement/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/basicInformation/coal.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/basicInformation/coalFieldMaintenance.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/archiveManagement/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/basicInformation/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/basicInformation/indexs.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/basicInformation/mould/coalQualityMaintenance.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/procureMent/components/ProductionDialog.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/production/components/ProductionDialog.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/production/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/archiveManagement/index.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,58 @@ // ææ¡£ç®¡ç import request from '@/utils/request' // æ¥è¯¢ææ¡£ç®¡çæ å½¢ç»æ export function getTree(query) { return request({ url: '/tree/list', method: 'get', params: query }) } // æ°å¢æç¼è¾ææ¡£ä¿¡æ¯ export function addOrEditTree(query) { return request({ url: '/tree/addOrEditTree', method: 'post', data: query }) } // å é¤ææ¡£ä¿¡æ¯æ°æ® export function delTree(query) { return request({ url: '/tree/delTree', method: 'delete', data: query }) } // /archive/list // æ¥è¯¢ææ¡£å表 export function getArchiveList(query) { return request({ url: '/archive/list', method: 'get', params: query }) } // /archive/addOrEditArchive // æ°å¢æç¼è¾ææ¡£ä¿¡æ¯ export function addOrEditArchive(query) { return request({ url: '/archive/addOrEditArchive', method: 'post', data: query }) } // /archive/delArchive // å é¤ææ¡£ä¿¡æ¯æ°æ® export function delArchive(query) { return request({ url: '/archive/delArchive', method: 'delete', data: query }) } src/api/basicInformation/coal.js
@@ -6,7 +6,7 @@ return request({ url: '/coalInfo/list', method: 'get', data: query params: query }) } src/api/basicInformation/coalFieldMaintenance.js
@@ -6,7 +6,7 @@ return request({ url: '/coalField/list', method: 'get', data: query params: query }) } // æ°å¢æç¼è¾ç ¤è´¨å段 src/views/archiveManagement/index.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,570 @@ <template> <el-card class="archive-management-card"> <div class="left"> <div class="left-content"> <div class="tree-header"> <h3>ææ¡£ç®¡ç</h3> <el-button type="primary" size="small" @click="append('')" icon="Plus" >æ°å¢</el-button > </div> <!-- æç´¢æ¡ --> <div class="search-box"> <el-input v-model="filterText" placeholder="è¾å ¥å ³é®åè¿è¡æç´¢" size="small" clearable @input="handleFilter" > <template #prefix> <el-icon><Search /></el-icon> </template> </el-input> </div> <div class="tree-container"> <el-tree ref="treeRef" :data="treeData" :props="props" :filter-node-method="filterNode" :expand-on-click-node="false" :default-expand-all="false" node-key="id" @node-click="handleNodeClick" class="custom-tree" > <template #default="{ node, data }"> <div class="tree-node-content" @dblclick="headerDbClick(data)"> <div class="node-icon"> <el-icon v-if="!node.isLeaf" :class="{ expanded: node.expanded }" > <Folder /> </el-icon> <el-icon v-else> <Document /> </el-icon> </div> <div class="node-label"> <span v-if="!data.isEdit" class="label-text">{{ node.label }}</span> <el-input v-else :ref="(el) => setInputRef(el, data)" placeholder="请è¾å ¥èç¹åç§°" v-model="newName" @blur="($event) => handleInputBlur($event, data, node)" @keyup.enter=" ($event) => handleInputBlur($event, data, node) " size="small" class="tree-input" autofocus /> </div> <div class="node-actions" v-show="!data.isEdit"> <el-button link size="small" @click.stop="append(data)" icon="Plus" title="æ°å¢åèç¹" ></el-button> <el-button link size="small" @click.stop="remove(node, data)" icon="Delete" title="å é¤" ></el-button> </div> </div> </template> </el-tree> </div> </div> </div> <div class="right"> <el-row :gutter="24"> <el-col :span="2" :offset="20"><el-button :icon="Delete" type="danger">å é¤</el-button></el-col> <el-col :span="2"><el-button :icon="Plus" type="primary">æ°å¢</el-button></el-col> </el-row> <ETable :loading="loading" :table-data="tableData" :columns="columns" @selection-change="handleSelectionChange" @edit="handleEdit" :show-selection="true" :border="true" > </ETable> <Pagination :total="total" :page-size="10" :page-count="Math.ceil(total / 10)" @page-change="currentPageChange" ></Pagination> </div> </el-card> </template> <script setup> import { onMounted, ref, nextTick } from "vue"; import ETable from "@/components/Table/ETable.vue"; import { ElButton, ElInput, ElIcon } from "element-plus"; import Pagination from "@/components/Pagination/index.vue"; import { Plus, Search, Folder, Document, Delete, } from "@element-plus/icons-vue"; import { getTree, addOrEditTree, delTree, getArchiveList, addOrEditArchive, delArchive, } from "@/api/archiveManagement"; const loading = ref(false); const tableData = ref([]); const treeData = ref([]); const newName = ref(""); const inputRefs = ref(new Map()); // åå¨è¾å ¥æ¡å¼ç¨ const filterText = ref(""); // æç´¢å ³é®å const treeRef = ref(); // æ ç»ä»¶å¼ç¨ const total = ref(0); // æ»è®°å½æ° const current = ref(1); // å½å页ç const columns = [ { prop: "name", label: "åç§°", minWidth: 180 }, { prop: "type", label: "ç±»å", minWidth: 120 }, { prop: "status", label: "ç¶æ", minWidth: 100 }, ]; const handleSelectionChange = (selection) => { console.log("Selected rows:", selection); }; // æç´¢è¿æ»¤åè½ const handleFilter = () => { treeRef.value?.filter(filterText.value); }; const filterNode = (value, data) => { if (!value) return true; return data.name?.toLowerCase().includes(value.toLowerCase()); }; // å¤çèç¹ç¹å» const handleNodeClick = async (data) => { console.log("ç¹å»èç¹:", data); let res = await getArchiveList(data.id); tableData.value = res.data?.records || res.data || []; console.log(data) }; const currentPageChange = (id) => { console.log(id); }; // åå»ç¼è¾èç¹ const headerDbClick = (comeTreeData) => { comeTreeData.isEdit = true; newName.value = comeTreeData.name; nextTick(() => { const inputEl = inputRefs.value.get(comeTreeData.id || comeTreeData); if (inputEl) { inputEl.focus(); inputEl.select(); } }); }; // 设置è¾å ¥æ¡å¼ç¨çæ¹æ³ const setInputRef = (el, data) => { if (el) { inputRefs.value.set(data.id || data, el); if (data.isEdit) { nextTick(() => { // el.focus(); // el.select(); }); } } }; // å¤çè¾å ¥æ¡å¤±ç¦ const handleInputBlur = async (event, comeTreeData, node) => { if (!comeTreeData.isEdit) return; // 妿䏿¯ç¼è¾ç¶æï¼ç´æ¥è¿å if (event.relatedTarget && event.relatedTarget.tagName === "BUTTON") { return; } comeTreeData.isEdit = false; const newValue = newName.value.trim(); if (comeTreeData.name === newValue) { console.log("没æä¿®æ¹å 容"); return; } if (newValue === "") { console.warn("è¾å ¥ä¸è½ä¸ºç©º"); newName.value = comeTreeData.name || "æ°èç¹"; return; } try { comeTreeData.name = newValue; // è·åç¶èç¹çid - éè¿ node åæ°æ´åç¡®å°è·å let parentId = null; if (node && node.parent && node.parent.data) { parentId = node.parent.data.id; } await addOrEditTree({ name: newValue, parentId: parentId || null, // å¦ææ²¡æç¶èç¹ï¼å为 null }); } catch (error) { console.error("åå¨å¤±è´¥", error); comeTreeData.name = comeTreeData.name || "æ°èç¹"; } console.log("ä¿åæå:", newValue); }; onMounted(async () => { await getList(); }); const props = { label: "name", children: "children", // æ¹ä¸º children 以å¹é æ åç»æ isLeaf: "leaf", }; const remove = async (node, data) => { console.log("å é¤èç¹:", data); if (!data || !data.id) { console.warn("æ æ³å 餿ªå®ä¹ææ æçèç¹"); return; } console.log("å é¤èç¹ ID:", data.id); let { code, msg } = await delTree([data.id]); if (code !== 200) { ElMessage.warning("å é¤å¤±è´¥, " + msg); } else { ElMessage.success("å 餿å"); } await getList(); }; const append = async (data) => { if (data === "") { // æ°å¢æ ¹èç¹ console.log("æ°å¢æ ¹èç¹"); const newNode = { id: Date.now(), name: "æ°èç¹", isEdit: true, }; treeData.value.push(newNode); newName.value = "æ°èç¹"; nextTick(() => { const inputEl = inputRefs.value.get(newNode.id || newNode); if (inputEl) { inputEl.focus(); inputEl.select(); } }); } else { const hasChildren = data.children && data.children.length > 0; const nodeKey = data.id || data; const node = treeRef.value?.getNode(nodeKey); const isExpanded = node?.expanded; // 妿æåçº§ä¸æªå±å¼ï¼å å±å¼èç¹ if (hasChildren && !isExpanded) { console.log(treeRef.value, "å±å¼èç¹", nodeKey); if ( treeRef.value && treeRef.value.store && treeRef.value.store.nodesMap[nodeKey] ) { treeRef.value.store.nodesMap[nodeKey].expanded = true; } } const newNode = { id: Date.now(), name: "æ°åèç¹", isEdit: true, }; if (!data.children) { data.children = []; } data.children.push(newNode); newName.value = "æ°åèç¹"; // æ ¹æ®æ¯å¦éè¦å±å¼æ¥å³å®å»¶è¿æ¶é´ const delay = hasChildren && !isExpanded ? 200 : 50; // çå¾ DOMæ´æ°å®æååèç¦ nextTick(() => { setTimeout(() => { const inputEl = inputRefs.value.get(newNode.id || newNode); if (inputEl) { inputEl.focus(); inputEl.select(); // æ»å¨å°æ°å¢çèç¹ä½ç½® inputEl.$el?.scrollIntoView?.({ behavior: "smooth", block: "nearest", }); } }, delay); }); } }; const handleEdit = () => {}; // ç§»é¤æå è½½ï¼ç´æ¥è·åæ°æ® const getList = async () => { try { let res = await getTree(); if (res.code === 200) { treeData.value = res.data?.records || res.data || []; } else { console.error("Failed to fetch tree data:", res.message); treeData.value = []; } } catch (error) { console.error("è·åæ å½¢æ°æ®å¤±è´¥:", error); treeData.value = []; } }; </script> <style scoped lang="scss"> .custom-tree-node { flex: 1; display: flex; align-items: center; justify-content: space-between; font-size: 14px; padding-right: 8px; } // æ å½¢èåæ ·å¼ .tree-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid #e4e7ed; h3 { margin: 0; font-size: 16px; font-weight: 600; color: #303133; } } .search-box { margin-bottom: 16px; .el-input { border-radius: 6px; :deep(.el-input__wrapper) { border-radius: 6px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); &:hover { box-shadow: 0 1px 6px rgba(0, 0, 0, 0.15); } &.is-focus { box-shadow: 0 0 0 2px rgba(64, 158, 255, 0.2); } } } } .tree-container { flex: 1; overflow-y: auto; border: 1px solid #dcdfe6; border-radius: 8px; background: #fff; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06); .custom-tree { padding: 8px; background: transparent; :deep(.el-tree-node) { .el-tree-node__content { height: 36px; padding: 0 8px; border-radius: 6px; margin: 2px 0; transition: all 0.2s ease; &:hover { background-color: #f0f9ff; } &.is-current { background-color: #e6f7ff; border: 1px solid #91d5ff; } } .el-tree-node__expand-icon { color: #606266; font-size: 14px; padding: 6px; &.expanded { transform: rotate(90deg); } &.is-leaf { color: transparent; } } } } } .tree-node-content { display: flex; align-items: center; width: 100%; padding: 4px 0; .node-icon { margin-right: 8px; color: #faad14; display: flex; align-items: center; .el-icon { font-size: 16px; &.expanded { color: #1890ff; } } } .node-label { flex: 1; min-width: 0; .label-text { font-size: 14px; color: #303133; cursor: pointer; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; &:hover { color: #1890ff; } } } .node-actions { opacity: 0; transition: opacity 0.2s ease; display: flex; .el-button { padding: 4px; margin-left: 4px; color: #909399; min-height: auto; &:hover { color: #1890ff; background-color: #f0f9ff; } &.el-button--text:hover { background-color: #f0f9ff; } } } &:hover .node-actions { opacity: 1; } } // è¾å ¥æ¡æ ·å¼ç¾å .tree-input { flex: 1; :deep(.el-input__wrapper) { border-radius: 4px; border: 1px solid #d9d9d9; transition: all 0.2s ease; &:hover { border-color: #40a9ff; } &.is-focus { border-color: #1890ff; box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); } } :deep(.el-input__inner) { padding: 4px 8px; font-size: 14px; color: #303133; &::placeholder { color: #bfbfbf; } } } .el-card { width: calc(100% - 40px); height: calc(100vh - 130px); margin: 20px; box-sizing: border-box; .left { width: 30%; height: calc(100vh - 160px); background-color: #fafafa; padding: 16px; float: left; box-sizing: border-box; border-radius: 8px; .left-content { width: 100%; height: 100%; display: flex; flex-direction: column; } } .right { width: 70%; height: calc(100vh - 160px); padding: 0px 10px; float: left; } } .archive-management-card{ margin: 0; } </style> src/views/basicInformation/index.vue
@@ -416,7 +416,10 @@ loading.value = true; tabName.value = tab.props.name; tableData.value = []; pageNum.value = 1; pageSizes.value = 10; total.value = 0; queryParams.searchAll = ""; // æ ¹æ®æ ç¾é¡µç±»å设置对åºçåé ç½® const tabConfig = { supplier: () => { @@ -615,7 +618,7 @@ ElMessage.error("å 餿¥å£æªé ç½®"); return; } console.log(deleteIds) const res = await deleteApi(deleteIds); if (res.code !== 200 && res.msg !== "æä½æå") { src/views/basicInformation/indexs.vue
ÎļþÒÑɾ³ý src/views/basicInformation/mould/coalQualityMaintenance.vue
@@ -118,12 +118,11 @@ */ const initFormData = (newForm) => { formData.value = { ...newForm }; console.log(formData.value) // å¤ç coalFieldList åæ®µï¼ç¼è¾æ¶éè¦å°å符串转æ¢ä¸ºæ°ç»ä¾å¤éç»ä»¶ä½¿ç¨ if (newForm.coalFields) { if (typeof newForm.coalFields === 'string') { if (newForm.fieldIds) { if (typeof newForm.fieldIds === 'string') { // å°å符串转æ¢ä¸ºIDæ°ç»ï¼ç¶åå¹é 对åºçé项对象 const ids = parseCoalFields(newForm.coalFields); const ids = parseCoalFields(newForm.fieldIds); formData.value.coalFieldList = ids.map(id => { const option = fieldOptions.find(opt => opt.value === id); return option || { fields: `åæ®µ${id}`, value: id }; src/views/procureMent/components/ProductionDialog.vue
@@ -33,48 +33,66 @@ <el-option label="å¨" value="å¨" /> <el-option label="åå " value="åå " /> </el-select> </el-form-item> <el-form-item label="éè´æ°é" prop="purchaseQuantity"> <el-input v-model.number="form.purchaseQuantity" placeholder="请è¾å ¥" > </el-form-item> <el-form-item label="éè´æ°é" prop="purchaseQuantity"> <el-input v-model.number="form.purchaseQuantity" placeholder="请è¾å ¥" @blur="handleQuantityBlur" > <template v-slot:suffix> <i style="font-style:normal;">{{form.unit?form.unit:''}}</i> </template> </el-input> </el-form-item><el-form-item label="ç¨ç" prop="taxRate"> <el-input v-model.number="form.taxRate" placeholder="请è¾å ¥ç¨ç" @blur="handleTaxRateBlur" > <template v-slot:suffix> <i style="font-style:normal;">%</i> </template> </el-input> </el-form-item> <el-form-item label="åä»·(ä¸å«ç¨)" prop="priceExcludingTax"> <el-input v-model.number="form.priceExcludingTax" placeholder="请è¾å ¥" > <el-input v-model.number="form.priceExcludingTax" placeholder="请è¾å ¥" @blur="handlePriceBlur" > <template v-slot:suffix> <i style="font-style:normal;">å </i> </template> </el-input> </el-form-item> <el-form-item label="åä»·(å«ç¨)" prop="priceIncludingTax"> <el-input v-model.number="form.priceIncludingTax" placeholder="èªå¨è®¡ç®" > <template v-slot:suffix> <i style="font-style:normal;">å </i> </template> </el-input> </el-form-item> <el-form-item label="æ»ä»·(ä¸å«ç¨)" prop="totalPriceExcludingTax"> <el-input v-model.number="form.totalPriceExcludingTax" placeholder="请è¾å ¥" > <template v-slot:suffix> <i style="font-style:normal;">å </i> </template> </el-input> </el-form-item> <el-form-item label="åä»·(å«ç¨)" prop="priceIncludingTax"> <el-input v-model.number="form.priceIncludingTax" placeholder="请è¾å ¥" > <el-input v-model.number="form.totalPriceExcludingTax" placeholder="èªå¨è®¡ç®" > <template v-slot:suffix> <i style="font-style:normal;">å </i> </template> </el-input> </el-form-item> <el-form-item label="æ»ä»·(å«ç¨)" prop="totalPriceIncludingTax"> <el-input v-model.number="form.totalPriceIncludingTax" placeholder="请è¾å ¥" > <el-input v-model.number="form.totalPriceIncludingTax" placeholder="èªå¨è®¡ç®" > <template v-slot:suffix> <i style="font-style:normal;">å </i> </template> </el-input> </el-form-item> <el-form-item label="ç¨ç" prop="taxRate"> <el-input v-model="form.taxRate" placeholder="请è¾å ¥ç¨ç" > <template v-slot:suffix> <i style="font-style:normal;">%</i> </template> </el-input> </el-form-item> <el-form-item label="ç»è®°äºº" prop="registrantId"> <el-input v-model="form.registrantId" disabled placeholder="请è¾å ¥" /> @@ -111,7 +129,7 @@ </template> <script setup name="ProductionDialog"> import { ref, defineProps, watch, onMounted, nextTick } from "vue"; import { ref, defineProps, watch, onMounted, nextTick, computed } from "vue"; import { ElMessage } from "element-plus"; import useUserStore from '@/store/modules/user' import {addOrEditPR} from "@/api/procureMent"; @@ -134,8 +152,89 @@ required: true, type: Object, }); const toFixed = (num, precision = 2) => { if (isNaN(num) || num === null || num === undefined || num === '') { return 0; } return Math.floor(parseFloat(num) * Math.pow(10, precision)) / Math.pow(10, precision); }; // å«ç¨åä»·è®¡ç® const unitPriceWithTax = computed(() => { const priceExcludingTax = parseFloat(form.value.priceExcludingTax) || 0; const taxRate = parseFloat(form.value.taxRate) || 0; if (!priceExcludingTax || !taxRate) { return 0; } const result = priceExcludingTax * (1 + taxRate / 100); return toFixed(result, 2); }); // å«ç¨æ»ä»·è®¡ç® const totalUnitPriceWithTax = computed(() => { const priceExcludingTax = parseFloat(form.value.priceExcludingTax) || 0; const taxRate = parseFloat(form.value.taxRate) || 0; const purchaseQuantity = parseFloat(form.value.purchaseQuantity) || 0; if (!priceExcludingTax || !taxRate || !purchaseQuantity) { return 0; } const unitPriceWithTaxValue = priceExcludingTax * (1 + taxRate / 100); const result = unitPriceWithTaxValue * purchaseQuantity; return toFixed(result, 2); }); // ä¸å«ç¨æ»ä»·è®¡ç® const taxExclusiveTotalPrice = computed(() => { const purchaseQuantity = parseFloat(form.value.purchaseQuantity) || 0; const priceExcludingTax = parseFloat(form.value.priceExcludingTax) || 0; if (!purchaseQuantity || !priceExcludingTax) { return 0; } const result = purchaseQuantity * priceExcludingTax; return toFixed(result, 2); }); // çå¬è®¡ç®å¼ååï¼åæ¥å° form å¯¹è±¡ä¸ watch(unitPriceWithTax, (newValue) => { form.value.priceIncludingTax = newValue; }); watch(totalUnitPriceWithTax, (newValue) => { form.value.totalPriceIncludingTax = newValue; }); watch(taxExclusiveTotalPrice, (newValue) => { form.value.totalPriceExcludingTax = newValue; }); const userStore = useUserStore() const userInfo = ref({}); // å¤çç¨çè¾å ¥æ¡å¤±ç¦ï¼ç¡®ä¿ç²¾åº¦ const handleTaxRateBlur = () => { if (form.value.taxRate !== null && form.value.taxRate !== undefined && form.value.taxRate !== '') { form.value.taxRate = toFixed(parseFloat(form.value.taxRate), 2); } }; // å¤çä¸å«ç¨åä»·è¾å ¥æ¡å¤±ç¦ï¼ç¡®ä¿ç²¾åº¦ const handlePriceBlur = () => { if (form.value.priceExcludingTax !== null && form.value.priceExcludingTax !== undefined && form.value.priceExcludingTax !== '') { form.value.priceExcludingTax = toFixed(parseFloat(form.value.priceExcludingTax), 2); } }; // å¤çéè´æ°éè¾å ¥æ¡å¤±ç¦ï¼ç¡®ä¿ç²¾åº¦ const handleQuantityBlur = () => { if (form.value.purchaseQuantity !== null && form.value.purchaseQuantity !== undefined && form.value.purchaseQuantity !== '') { form.value.purchaseQuantity = toFixed(parseFloat(form.value.purchaseQuantity), 3); // æ°éä¿ç3ä½å°æ° } }; onMounted(async () => { let res = await userStore.getInfo() userInfo.value = res; @@ -176,6 +275,7 @@ const formRef = ref(null); // æäº¤è¡¨å const handleSubmit = async () => { console.log("æäº¤è¡¨å", form.value); if (!formRef.value) return; await formRef.value.validate(async (valid) => { if (valid) { src/views/production/components/ProductionDialog.vue
@@ -1,4 +1,4 @@ <template> div<template> <el-dialog v-model="dialogVisible" :title="dialogType === 'add' ? 'æ°å¢ç产å å·¥' : 'ç¼è¾ç产å å·¥'" @@ -17,9 +17,9 @@ @row-click="handleRowClick" :editableColumns="['used']" /> <div v-if="tableData.length > 0" class="empty-table"> <div class="empty-table"> <h1>ç产æç»</h1> <el-row :gutter="10"> <el-row :gutter="10" v-if="tableData.length > 0"> <el-col :span="2"> <el-button type="primary" @click="addNewRow"> <el-icon> @@ -45,6 +45,7 @@ </el-col> --> </el-row> <ProductionDetailsTable v-if="tableData.length > 0" v-model="detailsTableData" :border="false" :show-operations="true" @@ -52,8 +53,9 @@ @input-change="handleDetailsChange" @delete-row="handleDeleteRow" /> </div> <div style="margin-top: 20px;" v-else>ææ æ°æ®ï¼è¯·éæ©é ç½®æ°æ®</div> </div> <template #footer> <div class="dialog-footer"> @@ -452,4 +454,7 @@ .el-row > .el-col > h1 { font-weight: bolder; } .empty-table > .el-row{ margin-bottom: 12px; } </style> src/views/production/index.vue
@@ -32,17 +32,17 @@ import Pagination from "@/components/Pagination/index.vue"; const childRef = ref(null); const columns = [ { prop: "category", label: "ç ¤ç§", width: 150 }, { prop: "unit", label: "åä½", width: 120 }, { prop: "productionVolume", label: "ç产æ°é", width: 150 }, { prop: "laborCost", label: "äººå·¥ææ¬", width: 150 }, { prop: "materialCost", label: "åæææ¬", width: 120 }, { prop: "equipmentCost", label: "设å¤è´¹ç¨", width: 143 }, { prop: "totalCost", label: "æ»ææ¬", width: 150 }, { prop: "totalPrice", label: "æ»å®ä»·", width: 150 }, { prop: "profit", label: "婿¶¦", width: 100 }, { prop: "reviewer", label: "å¤è®°äºº", width: 120 }, { prop: "date", label: "æ¥æ", width: 150 }, { prop: "category", label: "ç ¤ç§", minWidth: 150 }, { prop: "unit", label: "åä½", minWidth: 120 }, { prop: "productionVolume", label: "ç产æ°é", minWidth: 150 }, { prop: "laborCost", label: "äººå·¥ææ¬", minWidth: 150 }, { prop: "materialCost", label: "åæææ¬", minWidth: 120 }, { prop: "equipmentCost", label: "设å¤è´¹ç¨", minWidth: 143 }, { prop: "totalCost", label: "æ»ææ¬", minWidth: 150 }, { prop: "totalPrice", label: "æ»å®ä»·", minWidth: 150 }, { prop: "profit", label: "婿¶¦", minWidth: 100 }, { prop: "reviewer", label: "å¤è®°äºº", minWidth: 120 }, { prop: "date", label: "æ¥æ", minWidth: 150 }, ]; // æç´¢è¡¨åæ°æ®