| src/api/inventoryManagement/stockInventory.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/api/inventoryManagement/stockUninventory.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/stockManagement/FrozenAndThaw.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/stockManagement/New.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/stockManagement/Qualified.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/stockManagement/Subtract.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/stockManagement/Unqualified.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/stockReport/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/inventoryManagement/stockInventory.js
@@ -41,3 +41,22 @@ params, }); }; // å»ç»åºåè®°å½ export const frozenStockInventory = (params) => { return request({ url: "/stockInventory/frozenStock", method: "post", data: params, }); }; // è§£å»åºåè®°å½ export const thawStockInventory = (params) => { return request({ url: "/stockInventory/thawStock", method: "post", data: params, }); }; src/api/inventoryManagement/stockUninventory.js
@@ -25,3 +25,21 @@ data: params, }); }; // å»ç»åºåè®°å½ export const frozenStockUninventory = (params) => { return request({ url: "/stockUninventory/frozenStock", method: "post", data: params, }); }; // è§£å»åºåè®°å½ export const thawStockUninventory = (params) => { return request({ url: "/stockUninventory/thawStock", method: "post", data: params, }); }; src/views/inventoryManagement/stockManagement/FrozenAndThaw.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,164 @@ <template> <div> <el-dialog v-model="isShow" :title="operationType === 'frozen' ? 'å»ç»åºå' : 'è§£å»åºå'" width="800" @close="closeModal" > <el-form label-width="140px" :model="formState" ref="formRef"> <el-form-item :label="operationType === 'frozen' ? 'å»ç»æ°éï¼' : 'è§£å»æ°éï¼'" prop="lockedQuantity" > <el-input-number v-model="formState.lockedQuantity" :step="1" :min="1" precision="0" style="width: 100%" :max="maxCount" /> </el-form-item> </el-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="handleSubmit">确认</el-button> <el-button @click="closeModal">åæ¶</el-button> </div> </template> </el-dialog> </div> </template> <script setup> import {ref, computed, getCurrentInstance} from "vue"; import {frozenStockInventory, thawStockInventory} from "@/api/inventoryManagement/stockInventory.js"; import {frozenStockUninventory, thawStockUninventory} from "@/api/inventoryManagement/stockUninventory.js"; const props = defineProps({ visible: { type: Boolean, required: true, }, operationType: { type: String, required: true, default: 'frozen', }, type: { type: String, required: true, default: 'qualified', }, record: { type: Object, default: () => {}, } }); const emit = defineEmits(['update:visible', 'completed']); // ååºå¼æ°æ®ï¼æ¿ä»£é项å¼ç dataï¼ const formState = ref({ lockedQuantity: 0, }); const isShow = computed({ get() { return props.visible; }, set(val) { emit('update:visible', val); }, }); let { proxy } = getCurrentInstance() const closeModal = () => { // éç½®è¡¨åæ°æ® formState.value = { lockedQuantity: undefined }; isShow.value = false; }; const maxCount = computed(() => { // å»ç»åºåæå¤§æ°é为æªè§£å»æ°é if (props.operationType === 'frozen') { return props.record.unLockedQuantity } // è§£å»åºåæå¤§æ°é为已å»ç»æ°é return props.record.lockedQuantity }) const handleSubmit = () => { proxy.$refs["formRef"].validate(valid => { if (valid) { const data = Object.assign({id: props.record.id}, formState.value); if (props.type === 'qualified') { // å»ç» if (props.operationType === 'frozen') { frozenStockInventory(data).then(res => { if (res.code === 200) { // å ³éæ¨¡ææ¡ isShow.value = false; // åç¥ç¶ç»ä»¶å·²å®æ emit('completed'); proxy.$modal.msgSuccess("æäº¤æå"); } else { proxy.$modal.msgError(res.msg); } }) } else { thawStockInventory(data).then(res => { if (res.code === 200) { // å ³éæ¨¡ææ¡ isShow.value = false; // åç¥ç¶ç»ä»¶å·²å®æ emit('completed'); proxy.$modal.msgSuccess("æäº¤æå"); } else { proxy.$modal.msgError(res.msg); } }) } } else { if (props.operationType === 'frozen') { frozenStockUninventory(data).then(res => { if (res.code === 200) { // å ³éæ¨¡ææ¡ isShow.value = false; // åç¥ç¶ç»ä»¶å·²å®æ emit('completed'); proxy.$modal.msgSuccess("æäº¤æå"); } else { proxy.$modal.msgError(res.msg); } }) } else { thawStockUninventory(data).then(res => { if (res.code === 200) { // å ³éæ¨¡ææ¡ isShow.value = false; // åç¥ç¶ç»ä»¶å·²å®æ emit('completed'); proxy.$modal.msgSuccess("æäº¤æå"); } else { proxy.$modal.msgError(res.msg); } }) } } } }) }; onMounted(() => { formState.value.lockedQuantity = maxCount.value; }) defineExpose({ closeModal, handleSubmit, isShow, }); </script> src/views/inventoryManagement/stockManagement/New.vue
@@ -38,10 +38,18 @@ </el-form-item> <el-form-item label="æ°é" label="åºåæ°é" prop="qualitity" > <el-input-number v-model="formState.qualitity" :step="1" :min="0" style="width: 100%" /> <el-input-number v-model="formState.qualitity" :step="1" :min="1" style="width: 100%" /> </el-form-item> <el-form-item v-if="type === 'qualified'" label="åºåé¢è¦æ°é" prop="warnNum" > <el-input-number v-model="formState.warnNum" :step="1" :min="0" :max="formState.qualitity" style="width: 100%" /> </el-form-item> <el-form-item label="夿³¨" prop="remark"> @@ -94,6 +102,7 @@ productModelName: "", unit: "", qualitity: 0, warnNum: 0, remark: '', }); src/views/inventoryManagement/stockManagement/Qualified.vue
@@ -27,12 +27,15 @@ <el-table-column label="è§æ ¼åå·" prop="model" show-overflow-tooltip /> <el-table-column label="åä½" prop="unit" show-overflow-tooltip /> <el-table-column label="åºåæ°é" prop="qualitity" show-overflow-tooltip /> <el-table-column label="å»ç»æ°é" prop="lockedQuantity" show-overflow-tooltip /> <el-table-column label="åºåé¢è¦æ°é" prop="warnNum" show-overflow-tooltip /> <el-table-column label="夿³¨" prop="remark" show-overflow-tooltip /> <el-table-column label="æè¿æ´æ°æ¶é´" prop="updateTime" show-overflow-tooltip /> <el-table-column fixed="right" label="æä½" min-width="60" align="center"> <template #default="scope"> <el-button link type="primary" size="small" @click="showSubtractModal(scope.row)" :disabled="scope.row.qualitity === 0">é¢ç¨</el-button> <el-button link type="primary" size="small" @click="showSubtractModal(scope.row)" :disabled="scope.row.unLockedQuantity === 0">é¢ç¨</el-button> <el-button link type="primary" size="small" v-if="scope.row.unLockedQuantity > 0" @click="showFrozenModal(scope.row)">å»ç»</el-button> <el-button link type="primary" size="small" v-if="scope.row.lockedQuantity > 0" @click="showThawModal(scope.row)">è§£å»</el-button> </template> </el-table-column> </el-table> @@ -47,12 +50,20 @@ <subtract-stock-inventory v-if="isShowSubtractModal" v-model:visible="isShowSubtractModal" :record="record" type="qualified" @completed="handleQuery" /> <!-- å¯¼å ¥åºå--> <import-stock-inventory v-if="isShowImportModal" v-model:visible="isShowImportModal" type="qualified" @uploadSuccess="handleQuery" /> <!-- å»ç»/è§£å»åºå--> <frozen-and-thaw-stock-inventory v-if="isShowFrozenAndThawModal" v-model:visible="isShowFrozenAndThawModal" :record="record" :operation-type="operationType" type="qualified" @completed="handleQuery" /> </div> </template> @@ -64,6 +75,7 @@ const NewStockInventory = defineAsyncComponent(() => import("@/views/inventoryManagement/stockManagement/New.vue")); const SubtractStockInventory = defineAsyncComponent(() => import("@/views/inventoryManagement/stockManagement/Subtract.vue")); const ImportStockInventory = defineAsyncComponent(() => import("@/views/inventoryManagement/stockManagement/Import.vue")); const FrozenAndThawStockInventory = defineAsyncComponent(() => import("@/views/inventoryManagement/stockManagement/FrozenAndThaw.vue")); const { proxy } = getCurrentInstance() const tableData = ref([]) const selectedRows = ref([]) @@ -78,6 +90,10 @@ const isShowNewModal = ref(false) // æ¯å¦æ¾ç¤ºé¢ç¨å¼¹æ¡ const isShowSubtractModal = ref(false) // æ¯å¦æ¾ç¤ºå»ç»/è§£å»å¼¹æ¡ const isShowFrozenAndThawModal = ref(false) // æä½ç±»å const operationType = ref('frozen') // æ¯å¦æ¾ç¤ºå¯¼å ¥å¼¹æ¡ const isShowImportModal = ref(false) const data = reactive({ @@ -128,6 +144,20 @@ isShowSubtractModal.value = true } // ç¹å»å»ç» const showFrozenModal = (row) => { record.value = row isShowFrozenAndThawModal.value = true operationType.value = 'frozen' } // ç¹å»è§£å» const showThawModal = (row) => { record.value = row isShowFrozenAndThawModal.value = true operationType.value = 'thaw' } // è¡¨æ ¼éæ©æ°æ® const handleSelectionChange = (selection) => { // è¿æ»¤æåæ°æ® @@ -138,7 +168,7 @@ // è¡¨æ ¼è¡ç±»å const tableRowClassName = ({ row }) => { const stock = Number(row?.inboundNum0 ?? 0); const stock = Number(row?.unLockedQuantity ?? 0); const warn = Number(row?.warnNum ?? 0); if (!Number.isFinite(stock) || !Number.isFinite(warn)) { return ''; src/views/inventoryManagement/stockManagement/Subtract.vue
@@ -94,7 +94,7 @@ }) const maxQuality = computed(() => { return props.record.qualitity ? props.record.qualitity : 0; return props.record.unLockedQuantity ? props.record.unLockedQuantity : 0; }) const initFormData = () => { src/views/inventoryManagement/stockManagement/Unqualified.vue
@@ -24,12 +24,14 @@ <el-table-column label="è§æ ¼åå·" prop="model" show-overflow-tooltip /> <el-table-column label="åä½" prop="unit" show-overflow-tooltip /> <el-table-column label="åºåæ°é" prop="qualitity" show-overflow-tooltip /> <el-table-column label="åºåé¢è¦æ°é" prop="warnNum" show-overflow-tooltip /> <el-table-column label="å»ç»æ°é" prop="lockedQuantity" show-overflow-tooltip /> <el-table-column label="夿³¨" prop="remark" show-overflow-tooltip /> <el-table-column label="æè¿æ´æ°æ¶é´" prop="updateTime" show-overflow-tooltip /> <el-table-column fixed="right" label="æä½" min-width="60" align="center"> <template #default="scope"> <el-button link type="primary" size="small" @click="showSubtractModal(scope.row)" :disabled="scope.row.qualitity === 0">é¢ç¨</el-button> <el-button link type="primary" size="small" @click="showSubtractModal(scope.row)" :disabled="scope.row.unLockedQuantity === 0">é¢ç¨</el-button> <el-button link type="primary" size="small" v-if="scope.row.unLockedQuantity > 0" @click="showFrozenModal(scope.row)">å»ç»</el-button> <el-button link type="primary" size="small" v-if="scope.row.lockedQuantity > 0" @click="showThawModal(scope.row)">è§£å»</el-button> </template> </el-table-column> </el-table> @@ -44,7 +46,15 @@ <subtract-stock-inventory v-if="isShowSubtractModal" v-model:visible="isShowSubtractModal" :record="record" type="unqualified" @completed="handleQuery" /> <!-- å»ç»/è§£å»åºå--> <frozen-and-thaw-stock-inventory v-if="isShowFrozenAndThawModal" v-model:visible="isShowFrozenAndThawModal" :record="record" :operation-type="operationType" type="unqualified" @completed="handleQuery" /> </div> </template> @@ -55,6 +65,7 @@ import { getStockUninventoryListPage } from "@/api/inventoryManagement/stockUninventory.js"; const NewStockInventory = defineAsyncComponent(() => import("@/views/inventoryManagement/stockManagement/New.vue")); const SubtractStockInventory = defineAsyncComponent(() => import("@/views/inventoryManagement/stockManagement/Subtract.vue")); const FrozenAndThawStockInventory = defineAsyncComponent(() => import("@/views/inventoryManagement/stockManagement/FrozenAndThaw.vue")); const { proxy } = getCurrentInstance() const tableData = ref([]) @@ -70,6 +81,10 @@ const isShowNewModal = ref(false) // æ¯å¦æ¾ç¤ºé¢ç¨å¼¹æ¡ const isShowSubtractModal = ref(false) // æ¯å¦æ¾ç¤ºå»ç»/è§£å»å¼¹æ¡ const isShowFrozenAndThawModal = ref(false) // æä½ç±»å const operationType = ref('frozen') const data = reactive({ searchForm: { productName: '', @@ -107,6 +122,20 @@ isShowSubtractModal.value = true } // ç¹å»å»ç» const showFrozenModal = (row) => { record.value = row isShowFrozenAndThawModal.value = true operationType.value = 'frozen' } // ç¹å»è§£å» const showThawModal = (row) => { record.value = row isShowFrozenAndThawModal.value = true operationType.value = 'thaw' } // è¡¨æ ¼éæ©æ°æ® const handleSelectionChange = (selection) => { // è¿æ»¤æåæ°æ® @@ -117,12 +146,12 @@ // è¡¨æ ¼è¡ç±»å const tableRowClassName = ({ row }) => { const stock = Number(row?.inboundNum0 ?? 0); const warn = Number(row?.warnNum ?? 0); if (!Number.isFinite(stock) || !Number.isFinite(warn)) { return ''; } return stock < warn ? 'row-low-stock' : ''; // const stock = Number(row?.unLockedQuantity ?? 0); // const warn = Number(row?.warnNum ?? 0); // if (!Number.isFinite(stock) || !Number.isFinite(warn)) { // return ''; // } // return stock < warn ? 'row-low-stock' : ''; }; // å¯¼åº src/views/inventoryManagement/stockReport/index.vue
@@ -14,17 +14,17 @@ <el-option label="ææ¥" value="monthly" /> <el-option label="è¿åºåæ¥è¡¨" value="inout" /> </el-select> <span class="search_title ml10">æ¶é´èå´ï¼</span> <el-date-picker v-if="searchForm.reportType === 'daily'" v-model="searchForm.singleDate" type="date" placeholder="è¯·éæ©æ¥æ" format="YYYY-MM-DD" value-format="YYYY-MM-DD" style="width: 200px;" /> <el-date-picker v-if="searchForm.reportType === 'daily'" v-model="searchForm.singleDate" type="date" placeholder="è¯·éæ©æ¥æ" format="YYYY-MM-DD" value-format="YYYY-MM-DD" style="width: 200px;" /> <el-date-picker v-else-if="searchForm.reportType === 'monthly'" v-model="searchForm.monthRange" @@ -47,7 +47,7 @@ value-format="YYYY-MM-DD" style="width: 240px;" /> <el-button type="primary" @click="handleQuery" style="margin-left: 10px"> æ¥è¯¢ </el-button> @@ -55,91 +55,91 @@ </div> <div class="search_right"> <!-- <el-button type="success" @click="handleExport" icon="Download">--> <!-- å¯¼åºæ¥è¡¨--> <!-- </el-button>--> <!-- <el-button type="success" @click="handleExport" icon="Download">--> <!-- å¯¼åºæ¥è¡¨--> <!-- </el-button>--> </div> </div> <!-- <!– ç»è®¡å¡ç –>--> <!-- <div class="stats_cards" v-if="reportData.summary">--> <!-- <el-row :gutter="20">--> <!-- <el-col :span="6">--> <!-- <el-card class="stats_card">--> <!-- <div class="stats_content">--> <!-- <div class="stats_icon in">--> <!-- <el-icon><TrendCharts /></el-icon>--> <!-- </div>--> <!-- <div class="stats_info">--> <!-- <div class="stats_value">{{ reportData.summary.totalIn || 0 }}</div>--> <!-- <div class="stats_label">æ»å ¥åºé</div>--> <!-- </div>--> <!-- </div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- <el-col :span="6">--> <!-- <el-card class="stats_card">--> <!-- <div class="stats_content">--> <!-- <div class="stats_icon out">--> <!-- <el-icon><TrendCharts /></el-icon>--> <!-- </div>--> <!-- <div class="stats_info">--> <!-- <div class="stats_value">{{ reportData.summary.totalOut || 0 }}</div>--> <!-- <div class="stats_label">æ»åºåºé</div>--> <!-- </div>--> <!-- </div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- <el-col :span="6">--> <!-- <el-card class="stats_card">--> <!-- <div class="stats_content">--> <!-- <div class="stats_icon stock">--> <!-- <el-icon><Box /></el-icon>--> <!-- </div>--> <!-- <div class="stats_info">--> <!-- <div class="stats_value">{{ reportData.summary.currentStock || 0 }}</div>--> <!-- <div class="stats_label">å½ååºå</div>--> <!-- </div>--> <!-- </div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- <el-col :span="6">--> <!-- <el-card class="stats_card">--> <!-- <div class="stats_content">--> <!-- <div class="stats_icon turnover">--> <!-- <el-icon><Refresh /></el-icon>--> <!-- </div>--> <!-- <div class="stats_info">--> <!-- <div class="stats_value">{{ reportData.summary.turnoverRate || 0 }}%</div>--> <!-- <div class="stats_label">å¨è½¬ç</div>--> <!-- </div>--> <!-- </div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- </el-row>--> <!-- </div>--> <!-- <!– ç»è®¡å¡ç –>--> <!-- <div class="stats_cards" v-if="reportData.summary">--> <!-- <el-row :gutter="20">--> <!-- <el-col :span="6">--> <!-- <el-card class="stats_card">--> <!-- <div class="stats_content">--> <!-- <div class="stats_icon in">--> <!-- <el-icon><TrendCharts /></el-icon>--> <!-- </div>--> <!-- <div class="stats_info">--> <!-- <div class="stats_value">{{ reportData.summary.totalIn || 0 }}</div>--> <!-- <div class="stats_label">æ»å ¥åºé</div>--> <!-- </div>--> <!-- </div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- <el-col :span="6">--> <!-- <el-card class="stats_card">--> <!-- <div class="stats_content">--> <!-- <div class="stats_icon out">--> <!-- <el-icon><TrendCharts /></el-icon>--> <!-- </div>--> <!-- <div class="stats_info">--> <!-- <div class="stats_value">{{ reportData.summary.totalOut || 0 }}</div>--> <!-- <div class="stats_label">æ»åºåºé</div>--> <!-- </div>--> <!-- </div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- <el-col :span="6">--> <!-- <el-card class="stats_card">--> <!-- <div class="stats_content">--> <!-- <div class="stats_icon stock">--> <!-- <el-icon><Box /></el-icon>--> <!-- </div>--> <!-- <div class="stats_info">--> <!-- <div class="stats_value">{{ reportData.summary.currentStock || 0 }}</div>--> <!-- <div class="stats_label">å½ååºå</div>--> <!-- </div>--> <!-- </div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- <el-col :span="6">--> <!-- <el-card class="stats_card">--> <!-- <div class="stats_content">--> <!-- <div class="stats_icon turnover">--> <!-- <el-icon><Refresh /></el-icon>--> <!-- </div>--> <!-- <div class="stats_info">--> <!-- <div class="stats_value">{{ reportData.summary.turnoverRate || 0 }}%</div>--> <!-- <div class="stats_label">å¨è½¬ç</div>--> <!-- </div>--> <!-- </div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- </el-row>--> <!-- </div>--> <!-- <!– å¾è¡¨åºå –>--> <!-- <div class="chart_section" v-if="reportData.chartData">--> <!-- <el-row :gutter="20">--> <!-- <el-col :span="12">--> <!-- <el-card>--> <!-- <template #header>--> <!-- <span>åºåè¶å¿å¾</span>--> <!-- </template>--> <!-- <div ref="trendChart" style="height: 300px;"></div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- <el-col :span="12">--> <!-- <el-card>--> <!-- <template #header>--> <!-- <span>è¿åºåºå¯¹æ¯</span>--> <!-- </template>--> <!-- <div ref="comparisonChart" style="height: 300px;"></div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- </el-row>--> <!-- </div>--> <!-- <!– å¾è¡¨åºå –>--> <!-- <div class="chart_section" v-if="reportData.chartData">--> <!-- <el-row :gutter="20">--> <!-- <el-col :span="12">--> <!-- <el-card>--> <!-- <template #header>--> <!-- <span>åºåè¶å¿å¾</span>--> <!-- </template>--> <!-- <div ref="trendChart" style="height: 300px;"></div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- <el-col :span="12">--> <!-- <el-card>--> <!-- <template #header>--> <!-- <span>è¿åºåºå¯¹æ¯</span>--> <!-- </template>--> <!-- <div ref="comparisonChart" style="height: 300px;"></div>--> <!-- </el-card>--> <!-- </el-col>--> <!-- </el-row>--> <!-- </div>--> <!-- è¯¦ç»æ°æ®è¡¨æ ¼ --> <div class="table_section"> @@ -147,88 +147,88 @@ <template #header> <span>{{ getTableTitle() }}</span> </template> <el-table v-loading="tableLoading" :data="reportData.tableData" border height="400" style="width: 100%" :header-cell-style="{ background: '#F0F1F5', color: '#333333' }" > <el-table v-loading="tableLoading" :data="reportData.tableData" border height="400" style="width: 100%" :header-cell-style="{ background: '#F0F1F5', color: '#333333' }" > <el-table-column align="center" label="åºå·" type="index" width="60" align="center" label="åºå·" type="index" width="60" /> <el-table-column label="å ¥åºæ¶é´" prop="createTime" width="200" show-overflow-tooltip v-if="searchForm.reportType !== 'inout'" /> <el-table-column label="å ¥åºæ¹æ¬¡" prop="inboundBatches" width="240" show-overflow-tooltip v-if="searchForm.reportType !== 'inout'" /> <el-table-column label="产å大类" prop="productName" show-overflow-tooltip /> <el-table-column label="è§æ ¼åå·" prop="model" show-overflow-tooltip /> <el-table-column label="åä½" prop="unit" show-overflow-tooltip /> <el-table-column label="å ¥åºæ°é" prop="totalStockIn" align="center" v-if="searchForm.reportType === 'inout'" /> <el-table-column label="å ¥åºæ°é" prop="stockInNum" align="center" v-else /> <el-table-column label="åºåºæ°é" prop="totalStockOut" width="100" align="center" v-if="searchForm.reportType === 'inout'" /> <el-table-column label="ç°å¨åºå" prop="currentStock" align="center" /> <el-table-column label="æ¥æº" prop="recordType" v-if="searchForm.reportType !== 'inout'" show-overflow-tooltip> <template #default="scope"> {{ getRecordType(scope.row.recordType) }} </template> </el-table-column> <el-table-column label="å ¥åºäºº" prop="createBy" width="80" v-if="searchForm.reportType !== 'inout'" show-overflow-tooltip /> <el-table-column label="å ¥åºæ¶é´" prop="createTime" width="200" show-overflow-tooltip v-if="searchForm.reportType !== 'inout'" /> <el-table-column label="å ¥åºæ¹æ¬¡" prop="inboundBatches" width="240" show-overflow-tooltip v-if="searchForm.reportType !== 'inout'" /> <el-table-column label="产å大类" prop="productName" show-overflow-tooltip /> <el-table-column label="è§æ ¼åå·" prop="model" show-overflow-tooltip /> <el-table-column label="åä½" prop="unit" show-overflow-tooltip /> <el-table-column label="å ¥åºæ°é" prop="totalStockIn" align="center" v-if="searchForm.reportType === 'inout'" /> <el-table-column label="å ¥åºæ°é" prop="stockInNum" align="center" v-else /> <el-table-column label="åºåºæ°é" prop="totalStockOut" width="100" align="center" v-if="searchForm.reportType === 'inout'" /> <el-table-column label="ç°å¨åºå" prop="currentStock" align="center" /> <el-table-column label="æ¥æº" prop="recordType" v-if="searchForm.reportType !== 'inout'" show-overflow-tooltip> <template #default="scope"> {{ getRecordType(scope.row.recordType) }} </template> </el-table-column> <el-table-column label="å ¥åºäºº" prop="createBy" width="80" v-if="searchForm.reportType !== 'inout'" show-overflow-tooltip /> </el-table> </el-card> </div> @@ -307,7 +307,7 @@ if (!validateSearchForm()) { return } tableLoading.value = true try { const params = getQueryParams() @@ -325,7 +325,7 @@ // nextTick(() => { // initCharts() // }) } } catch (error) { ElMessage.error('æ¥è¯¢å¤±è´¥ï¼' + error.message) @@ -395,7 +395,7 @@ startDate: "", endDate: "" } if (searchForm.reportType === 'daily') { params.reportDate = searchForm.singleDate } else if (searchForm.reportType === 'monthly') { @@ -405,7 +405,7 @@ params.startDate = searchForm.dateRange[0] params.endDate = searchForm.dateRange[1] } return params } @@ -427,7 +427,7 @@ if (!validateSearchForm()) { return } try { const params = getQueryParams() // const response = await exportStockReport(params) @@ -442,7 +442,7 @@ // link.click() // document.body.removeChild(link) // window.URL.revokeObjectURL(url) // ElMessage.success('å¯¼åºæå') } catch (error) { ElMessage.error('导åºå¤±è´¥ï¼' + error.message) @@ -452,7 +452,7 @@ // åå§åå¾è¡¨ const initCharts = () => { if (!reportData.value.chartData) return initTrendChart() initComparisonChart() } @@ -460,7 +460,7 @@ // åå§åè¶å¿å¾ const initTrendChart = () => { if (!trendChart.value) return const chart = echarts.init(trendChart.value) const option = { title: { @@ -497,7 +497,7 @@ // åå§å对æ¯å¾ const initComparisonChart = () => { if (!comparisonChart.value) return const chart = echarts.init(comparisonChart.value) const option = { title: { @@ -544,7 +544,7 @@ onMounted(() => { const today = new Date() searchForm.singleDate = today.toISOString().split('T')[0] const yesterday = new Date(today.getTime() - 24 * 60 * 60 * 1000) searchForm.dateRange = [ yesterday.toISOString().split('T')[0],