Browse Source

feat(check): 添加自动盘盈盘亏处理和盘点模式管理功能

- 添加自动处理盈亏按钮和功能实现
- 新增盘盈盘亏记录页签显示事务明细和子明细
- 实现人工处理完成功能的接口调用
- 添加盘点模式开关面板和状态管理
- 集成盘盈盘亏相关的API接口和数据处理逻辑
- 优化异常处理流程和用户交互体验
master
常熟吴彦祖 3 weeks ago
parent
commit
c48bc3ae72
  1. 24
      src/api/check/physicalInventory.js
  2. 218
      src/views/modules/check/currentPhysicalInventory.vue
  3. 245
      src/views/modules/check/searchPhysicalInventory.vue

24
src/api/check/physicalInventory.js

@ -91,5 +91,27 @@ export const searchUnhandledExceptionList = data => createAPI(`/check/physicalIn
// 保存异常处理结果 // 保存异常处理结果
export const saveExceptionHandle = data => createAPI(`/check/physicalInventory/saveExceptionHandle`, 'post', data) export const saveExceptionHandle = data => createAPI(`/check/physicalInventory/saveExceptionHandle`, 'post', data)
export const manualHandleCount = data => createAPI(`/check/physicalInventory/manualHandleCount`, 'post', data)
export const scanAndCallPalletForHetuo = data => createAPI(`/wcsIntegration/scanAndCallPalletForHetuo`,'post',data) export const scanAndCallPalletForHetuo = data => createAPI(`/wcsIntegration/scanAndCallPalletForHetuo`,'post',data)
// ==================== 盘点模式管理 ==================== - rqrq
// 获取当前盘点模式状态 - rqrq
export const getSysIfCount = data => createAPI(`/check/physicalInventory/getSysIfCount`, 'post', data)
// 开启或关闭盘点模式 - rqrq
export const updateSysIfCount = data => createAPI(`/check/physicalInventory/updateSysIfCount`, 'post', data)
// ==================== 自动盘盈盘亏处理 ==================== - rqrq
// 检查是否有需要系统处理的异常结果 - rqrq
export const checkSystemHandleCount = data => createAPI(`/check/physicalInventory/checkSystemHandleCount`, 'post', data)
// 执行自动盘盈盘亏处理 - rqrq
export const executeSystemAdjustment = data => createAPI(`/check/physicalInventory/executeSystemAdjustment`, 'post', data)
// 查询盘盈盘亏事务记录 - rqrq
export const queryAdjustmentTransList = data => createAPI(`/check/physicalInventory/queryAdjustmentTransList`, 'post', data)
// 查询盘盈盘亏事务子明细 - rqrq
export const queryAdjustmentTransSubList = data => createAPI(`/check/physicalInventory/queryAdjustmentTransSubList`, 'post', data)

218
src/views/modules/check/currentPhysicalInventory.vue

@ -19,7 +19,11 @@
<!-- 处理异常按钮 - 已审批状态显示 - rqrq --> <!-- 处理异常按钮 - 已审批状态显示 - rqrq -->
<el-button type="danger" @click="openHandleExceptionDialog" <el-button type="danger" @click="openHandleExceptionDialog"
v-if="headerData && headerData.status === 'APPROVED'" v-if="headerData && headerData.status === 'APPROVED'"
:disabled="headerLoading || handleExceptionLoading">处理异常</el-button>
:disabled="headerLoading || handleExceptionLoading">选择处理方式</el-button>
<el-button type="danger" @click="handleAutoAdjustment"
v-if="headerData && headerData.status === 'APPROVED'"
:disabled="headerLoading || autoAdjustLoading">{{ autoAdjustLoading ? '处理中...' : '自动处理盈亏' }}</el-button>
</div> </div>
<!-- Header信息展示区域 - 一行6个input框 --> <!-- Header信息展示区域 - 一行6个input框 -->
@ -202,7 +206,7 @@
width="150" width="150"
:label="'操作'"> :label="'操作'">
<template slot-scope="scope"> <template slot-scope="scope">
<a type="text" size="small" v-if="scope.row.handleFlag==='N'&&scope.row.handleType==='MANUAL'" @click="addOrUpdateHandle(scope.row.id)">{{'人工处理完成'}}</a>
<a type="text" size="small" v-if="scope.row.handleFlag==='N'&&scope.row.handleType==='MANUAL'" @click="manualHandleCount(scope.row.id)">{{'人工处理完成'}}</a>
<a type="text" size="small" @click="callPallet(scope.row)">{{'Call栈板'}}</a> <a type="text" size="small" @click="callPallet(scope.row)">{{'Call栈板'}}</a>
</template> </template>
</el-table-column> </el-table-column>
@ -246,6 +250,54 @@
</div> </div>
</div> </div>
</el-tab-pane> </el-tab-pane>
<!-- 盘盈盘亏记录页签 - rqrq -->
<el-tab-pane label="盘盈盘亏记录" name="adjustment">
<div style="display: flex; gap: 10px;">
<!-- 左边事务明细 - rqrq -->
<div style="flex: 1;">
<div style="font-weight: bold; margin-bottom: 5px; font-size: 12px;">事务明细</div>
<el-table :data="adjustmentTransList" :height="height" border v-loading="adjustmentTransLoading"
highlight-current-row @row-click="onAdjustmentTransRowClick" style="width: 100%;">
<el-table-column prop="transNo" label="事务号" min-width="120" header-align="center" align="center"></el-table-column>
<el-table-column prop="transTypeDesc" label="事务类型" min-width="80" header-align="center" align="center">
<template slot-scope="scope">
<span :style="{color: scope.row.transTypeDb === 'PY' ? '#67C23A' : '#F56C6C'}">{{ scope.row.transTypeDesc }}</span>
</template>
</el-table-column>
<el-table-column prop="itemNo" label="行号" min-width="60" header-align="center" align="center"></el-table-column>
<el-table-column prop="partNo" label="物料号" min-width="120" header-align="center" align="center"></el-table-column>
<el-table-column prop="transQty" label="事务数量" min-width="100" header-align="center" align="center"></el-table-column>
<el-table-column prop="batchNo" label="批号" min-width="100" header-align="center" align="center"></el-table-column>
<el-table-column prop="locationId" label="库位" min-width="100" header-align="center" align="center"></el-table-column>
<el-table-column prop="directionDesc" label="方向" min-width="60" header-align="center" align="center">
<template slot-scope="scope">
<span :style="{color: scope.row.direction === 'IN' ? '#67C23A' : '#F56C6C'}">{{ scope.row.directionDesc }}</span>
</template>
</el-table-column>
<el-table-column prop="warehouseId" label="仓库" min-width="80" header-align="center" align="center"></el-table-column>
<el-table-column prop="userName" label="操作人" min-width="80" header-align="center" align="center"></el-table-column>
</el-table>
</div>
<!-- 右边事务子明细 - rqrq -->
<div style="flex: 1;">
<div style="font-weight: bold; margin-bottom: 5px; font-size: 12px;">事务子明细</div>
<el-table :data="adjustmentTransSubList" :height="height" border v-loading="adjustmentTransSubLoading" style="width: 100%;">
<el-table-column prop="subNo" label="子行号" min-width="60" header-align="center" align="center"></el-table-column>
<el-table-column prop="handlingUnitId" label="标签号" min-width="150" header-align="center" align="center"></el-table-column>
<el-table-column prop="subQty" label="子数量" min-width="80" header-align="center" align="center"></el-table-column>
<el-table-column prop="partNo" label="物料号" min-width="120" header-align="center" align="center"></el-table-column>
<el-table-column prop="batchNo" label="批号" min-width="100" header-align="center" align="center"></el-table-column>
<el-table-column prop="locationId" label="库位" min-width="100" header-align="center" align="center"></el-table-column>
<el-table-column prop="palletId" label="栈板号" min-width="120" header-align="center" align="center"></el-table-column>
<el-table-column prop="directionDesc" label="方向" min-width="60" header-align="center" align="center">
<template slot-scope="scope">
<span :style="{color: scope.row.direction === 'IN' ? '#67C23A' : '#F56C6C'}">{{ scope.row.directionDesc }}</span>
</template>
</el-table-column>
</el-table>
</div>
</div>
</el-tab-pane>
</el-tabs> </el-tabs>
<!-- 复核弹框 - rqrq --> <!-- 复核弹框 - rqrq -->
@ -323,7 +375,8 @@
</template> </template>
<script> <script>
import {scanAndCallPalletForHetuo, getCurrentActiveCount, releaseCount, pushCountToWcs, continuePushCount, approveCount, completeCount, cancelCount, searchCountLabelList, searchCountPalletList, searchCountResultList, searchMaterialSummary, searchOrderTaskByCountNo, searchOrderTaskDetail, hasUncompletedTask, createReviewTask, searchUnhandledExceptionList, saveExceptionHandle ,} from '@/api/check/physicalInventory'
import {scanAndCallPalletForHetuo, getCurrentActiveCount, releaseCount, pushCountToWcs, continuePushCount, approveCount, completeCount, cancelCount, searchCountLabelList, searchCountPalletList, searchCountResultList, searchMaterialSummary, searchOrderTaskByCountNo, searchOrderTaskDetail, hasUncompletedTask, createReviewTask, searchUnhandledExceptionList, saveExceptionHandle, checkSystemHandleCount, executeSystemAdjustment, queryAdjustmentTransList, queryAdjustmentTransSubList} from '@/api/check/physicalInventory'
import {manualHandleCount} from '../../../api/check/physicalInventory'
export default { export default {
name: 'currentPhysicalInventory', name: 'currentPhysicalInventory',
@ -446,7 +499,17 @@ export default {
handleExceptionDialogVisible: false, handleExceptionDialogVisible: false,
handleExceptionLoading: false, handleExceptionLoading: false,
saveExceptionLoading: false, saveExceptionLoading: false,
exceptionResultList: [] //
exceptionResultList: [], //
// - rqrq
autoAdjustLoading: false,
// - rqrq
adjustmentTransList: [], //
adjustmentTransLoading: false,
adjustmentTransSubList: [], //
adjustmentTransSubLoading: false,
currentAdjustmentTrans: null //
} }
}, },
mounted() { mounted() {
@ -511,6 +574,8 @@ export default {
this.loadSummaryList(params) this.loadSummaryList(params)
} else if (this.activeName === 'task') { } else if (this.activeName === 'task') {
this.loadTaskList(params) this.loadTaskList(params)
} else if (this.activeName === 'adjustment') {
this.loadAdjustmentTransList(params)
} }
}, },
@ -620,6 +685,52 @@ export default {
this.taskDetailListLoading = false this.taskDetailListLoading = false
}) })
}, },
// - rqrq
loadAdjustmentTransList(params) {
this.adjustmentTransLoading = true
this.adjustmentTransList = []
this.adjustmentTransSubList = []
this.currentAdjustmentTrans = null
queryAdjustmentTransList(params).then(({ data }) => {
if (data && data.code === 0) {
this.adjustmentTransList = data.rows || []
//
if (this.adjustmentTransList.length > 0) {
this.currentAdjustmentTrans = this.adjustmentTransList[0]
this.loadAdjustmentTransSubList()
}
}
}).finally(() => {
this.adjustmentTransLoading = false
})
},
// - rqrq
onAdjustmentTransRowClick(row) {
this.currentAdjustmentTrans = row
this.loadAdjustmentTransSubList()
},
// - rqrq
loadAdjustmentTransSubList() {
if (!this.currentAdjustmentTrans) {
this.adjustmentTransSubList = []
return
}
this.adjustmentTransSubLoading = true
const params = {
site: this.$store.state.user.site,
transNo: this.currentAdjustmentTrans.transNo
}
queryAdjustmentTransSubList(params).then(({ data }) => {
if (data && data.code === 0) {
this.adjustmentTransSubList = data.rows || []
}
}).finally(() => {
this.adjustmentTransSubLoading = false
})
},
// - rqrq // - rqrq
handleRelease() { handleRelease() {
@ -1019,6 +1130,105 @@ export default {
}) })
}) })
}, },
manualHandleCount(id){
this.$confirm(`确定要手动处理完成这个标签?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const params = {
site: this.$store.state.user.site,
id: id,
}
manualHandleCount(params).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success('处理完成')
this.loadTabData()
}else {
this.$alert(data.msg, '错误', {
confirmButtonText: '确定'
})
}
})
})
},
// ==================== ==================== - rqrq
// - rqrq
handleAutoAdjustment() {
// 1. - rqrq
const checkParams = {
site: this.$store.state.user.site,
countNo: this.headerData.countNo
}
checkSystemHandleCount(checkParams).then(({ data }) => {
if (data && data.code === 0) {
const count = data.count || 0
if (count === 0) {
this.$alert('无异常结果需要系统处理', '提示', { confirmButtonText: '确定' })
return
}
// 2. - rqrq
this.$confirm(`检测到${count}条异常结果需要系统处理,确定执行自动盘盈盘亏处理?\n\n处理后将:\n1. 生成盘盈/盘亏事务单据\n2. 更新库存数据\n3. 调整标签数量`, '确认自动处理', {
confirmButtonText: '确定执行',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.executeAutoAdjustment()
})
} else {
this.$alert(data.msg || '检查失败', '错误', { confirmButtonText: '确定' })
}
}).catch(() => {
this.$alert('网络错误', '错误', { confirmButtonText: '确定' })
})
},
// - rqrq
executeAutoAdjustment() {
this.autoAdjustLoading = true
const params = {
site: this.$store.state.user.site,
countNo: this.headerData.countNo,
username: this.$store.state.user.name
}
executeSystemAdjustment(params).then(({ data }) => {
if (data && data.code === 0) {
const result = data.row
if (result && result.success) {
// - rqrq
let msg = result.message || '处理完成'
if (result.lossTransNoList && result.lossTransNoList.length > 0) {
msg += '\n盘亏单据:' + result.lossTransNoList.join(', ')
}
if (result.profitTransNoList && result.profitTransNoList.length > 0) {
msg += '\n盘盈单据:' + result.profitTransNoList.join(', ')
}
this.$alert(msg, '处理成功', {
confirmButtonText: '确定',
type: 'success'
})
// - rqrq
this.loadCurrentCount()
this.loadTabData()
} else {
this.$alert(result.message || '处理失败', '错误', { confirmButtonText: '确定' })
}
} else {
this.$alert(data.msg || '处理失败', '错误', { confirmButtonText: '确定' })
}
}).catch(() => {
this.$alert('网络错误', '错误', { confirmButtonText: '确定' })
}).finally(() => {
this.autoAdjustLoading = false
})
}
} }
} }
</script> </script>

245
src/views/modules/check/searchPhysicalInventory.vue

@ -1,6 +1,26 @@
<template> <template>
<!-- 盘点查询页面 - rqrq --> <!-- 盘点查询页面 - rqrq -->
<div class="mod-config yzz"> <div class="mod-config yzz">
<!-- 盘点模式开关区域 - rqrq -->
<div class="count-mode-panel" :class="{'count-mode-on': countModeStatus === 'Y', 'count-mode-off': countModeStatus === 'N'}">
<div class="count-mode-content">
<span class="count-mode-icon">
<i :class="countModeStatus === 'Y' ? 'el-icon-success' : 'el-icon-warning'"></i>
</span>
<span class="count-mode-label">盘点模式</span>
<span class="count-mode-value">{{ countModeStatus === 'Y' ? '已开启' : '已关闭' }}</span>
<el-switch
v-model="countModeSwitch"
active-color="#67C23A"
inactive-color="#F56C6C"
:loading="countModeLoading"
@change="handleCountModeChange"
style="margin-left: 15px;">
</el-switch>
<span class="count-mode-tip" v-if="countModeStatus === 'Y'">盘点模式下其他业务操作将受限</span>
<span class="count-mode-tip" v-else>关闭盘点模式后可进行其他业务操作</span>
</div>
</div>
<!-- 查询区域 --> <!-- 查询区域 -->
<el-form label-position="top" style="margin-top: 1px; margin-left: 0px;"> <el-form label-position="top" style="margin-top: 1px; margin-left: 0px;">
<el-form :inline="true" label-position="top" style="margin-top: 0px"> <el-form :inline="true" label-position="top" style="margin-top: 0px">
@ -222,6 +242,54 @@
</div> </div>
</div> </div>
</el-tab-pane> </el-tab-pane>
<!-- 盘盈盘亏记录页签 - rqrq -->
<el-tab-pane label="盘盈盘亏记录" name="adjustment">
<div style="display: flex; gap: 10px;">
<!-- 左边事务明细 - rqrq -->
<div style="flex: 1;">
<div style="font-weight: bold; margin-bottom: 5px; font-size: 12px;">事务明细</div>
<el-table :data="adjustmentTransList" :height="height" border v-loading="adjustmentTransLoading"
highlight-current-row @row-click="onAdjustmentTransRowClick" style="width: 100%;">
<el-table-column prop="transNo" label="事务号" min-width="120" header-align="center" align="center"></el-table-column>
<el-table-column prop="transTypeDesc" label="事务类型" min-width="80" header-align="center" align="center">
<template slot-scope="scope">
<span :style="{color: scope.row.transTypeDb === 'PY' ? '#67C23A' : '#F56C6C'}">{{ scope.row.transTypeDesc }}</span>
</template>
</el-table-column>
<el-table-column prop="itemNo" label="行号" min-width="60" header-align="center" align="center"></el-table-column>
<el-table-column prop="partNo" label="物料号" min-width="120" header-align="center" align="center"></el-table-column>
<el-table-column prop="transQty" label="事务数量" min-width="100" header-align="center" align="center"></el-table-column>
<el-table-column prop="batchNo" label="批号" min-width="100" header-align="center" align="center"></el-table-column>
<el-table-column prop="locationId" label="库位" min-width="100" header-align="center" align="center"></el-table-column>
<el-table-column prop="directionDesc" label="方向" min-width="60" header-align="center" align="center">
<template slot-scope="scope">
<span :style="{color: scope.row.direction === 'IN' ? '#67C23A' : '#F56C6C'}">{{ scope.row.directionDesc }}</span>
</template>
</el-table-column>
<el-table-column prop="warehouseId" label="仓库" min-width="80" header-align="center" align="center"></el-table-column>
<el-table-column prop="userName" label="操作人" min-width="80" header-align="center" align="center"></el-table-column>
</el-table>
</div>
<!-- 右边事务子明细 - rqrq -->
<div style="flex: 1;">
<div style="font-weight: bold; margin-bottom: 5px; font-size: 12px;">事务子明细</div>
<el-table :data="adjustmentTransSubList" :height="height" border v-loading="adjustmentTransSubLoading" style="width: 100%;">
<el-table-column prop="subNo" label="子行号" min-width="60" header-align="center" align="center"></el-table-column>
<el-table-column prop="handlingUnitId" label="标签号" min-width="150" header-align="center" align="center"></el-table-column>
<el-table-column prop="subQty" label="子数量" min-width="80" header-align="center" align="center"></el-table-column>
<el-table-column prop="partNo" label="物料号" min-width="120" header-align="center" align="center"></el-table-column>
<el-table-column prop="batchNo" label="批号" min-width="100" header-align="center" align="center"></el-table-column>
<el-table-column prop="locationId" label="库位" min-width="100" header-align="center" align="center"></el-table-column>
<el-table-column prop="palletId" label="栈板号" min-width="120" header-align="center" align="center"></el-table-column>
<el-table-column prop="directionDesc" label="方向" min-width="60" header-align="center" align="center">
<template slot-scope="scope">
<span :style="{color: scope.row.direction === 'IN' ? '#67C23A' : '#F56C6C'}">{{ scope.row.directionDesc }}</span>
</template>
</el-table-column>
</el-table>
</div>
</div>
</el-tab-pane>
</el-tabs> </el-tabs>
<!-- 循环盘点弹窗 --> <!-- 循环盘点弹窗 -->
@ -310,12 +378,17 @@
</template> </template>
<script> <script>
import { searchCountHeaderList, createCycleCount, createManualCount, queryMaterialForManualCount, addMaterialToCount, releaseCount, pushCountToWcs, completeCount, cancelCount, deleteCount, searchCountLabelList, searchCountPalletList, searchCountResultList, searchMaterialSummary, searchOrderTaskByCountNo, searchOrderTaskDetail } from '@/api/check/physicalInventory'
import { searchCountHeaderList, createCycleCount, createManualCount, queryMaterialForManualCount, addMaterialToCount, releaseCount, pushCountToWcs, completeCount, cancelCount, deleteCount, searchCountLabelList, searchCountPalletList, searchCountResultList, searchMaterialSummary, searchOrderTaskByCountNo, searchOrderTaskDetail, getSysIfCount, updateSysIfCount, queryAdjustmentTransList, queryAdjustmentTransSubList } from '@/api/check/physicalInventory'
export default { export default {
name: 'searchPhysicalInventory', name: 'searchPhysicalInventory',
data() { data() {
return { return {
// - rqrq
countModeStatus: 'N', // Y= N=
countModeSwitch: false, //
countModeLoading: false, // loading
// - rqrq // - rqrq
dataList: [], dataList: [],
dataListLoading: false, dataListLoading: false,
@ -498,15 +571,79 @@ export default {
taskListLoading: false, taskListLoading: false,
taskDetailList: [], taskDetailList: [],
taskDetailListLoading: false, taskDetailListLoading: false,
currentTask: null
currentTask: null,
// - rqrq
adjustmentTransList: [], //
adjustmentTransLoading: false,
adjustmentTransSubList: [], //
adjustmentTransSubLoading: false,
currentAdjustmentTrans: null //
} }
}, },
mounted() { mounted() {
// - rqrq // - rqrq
this.height = (window.innerHeight - 315) / 2 this.height = (window.innerHeight - 315) / 2
// - rqrq
this.loadCountModeStatus()
this.search() this.search()
}, },
methods: { methods: {
// ==================== ==================== - rqrq
// - rqrq
loadCountModeStatus() {
const params = {
site: this.$store.state.user.site
}
getSysIfCount(params).then(({ data }) => {
if (data && data.code === 0) {
this.countModeStatus = data.value || 'N'
this.countModeSwitch = this.countModeStatus === 'Y'
}
})
},
// - rqrq
handleCountModeChange(val) {
const newValue = val ? 'Y' : 'N'
const actionText = val ? '开启' : '关闭'
this.$confirm(`确认${actionText}盘点模式?${val ? '开启后其他业务操作将受限。' : ''}`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.countModeLoading = true
const params = {
site: this.$store.state.user.site,
value: newValue
}
updateSysIfCount(params).then(({ data }) => {
if (data && data.code === 0) {
this.countModeStatus = newValue
this.countModeSwitch = val
this.$message.success(`盘点模式已${actionText}`)
} else {
//
this.countModeSwitch = !val
this.$alert(data.msg || `${actionText}盘点模式失败`, '错误', { confirmButtonText: '确定' })
}
}).catch(() => {
//
this.countModeSwitch = !val
this.$alert('网络错误', '错误', { confirmButtonText: '确定' })
}).finally(() => {
this.countModeLoading = false
})
}).catch(() => {
//
this.countModeSwitch = !val
})
},
// ==================== ==================== - rqrq
// - rqrq // - rqrq
search() { search() {
this.pageIndex = 1 this.pageIndex = 1
@ -594,6 +731,8 @@ export default {
this.loadSummaryList(params) this.loadSummaryList(params)
} else if (this.activeName === 'task') { } else if (this.activeName === 'task') {
this.loadTaskList(params) this.loadTaskList(params)
} else if (this.activeName === 'adjustment') {
this.loadAdjustmentTransList(params)
} }
}, },
@ -703,6 +842,52 @@ export default {
this.taskDetailListLoading = false this.taskDetailListLoading = false
}) })
}, },
// - rqrq
loadAdjustmentTransList(params) {
this.adjustmentTransLoading = true
this.adjustmentTransList = []
this.adjustmentTransSubList = []
this.currentAdjustmentTrans = null
queryAdjustmentTransList(params).then(({ data }) => {
if (data && data.code === 0) {
this.adjustmentTransList = data.rows || []
//
if (this.adjustmentTransList.length > 0) {
this.currentAdjustmentTrans = this.adjustmentTransList[0]
this.loadAdjustmentTransSubList()
}
}
}).finally(() => {
this.adjustmentTransLoading = false
})
},
// - rqrq
onAdjustmentTransRowClick(row) {
this.currentAdjustmentTrans = row
this.loadAdjustmentTransSubList()
},
// - rqrq
loadAdjustmentTransSubList() {
if (!this.currentAdjustmentTrans) {
this.adjustmentTransSubList = []
return
}
this.adjustmentTransSubLoading = true
const params = {
site: this.$store.state.user.site,
transNo: this.currentAdjustmentTrans.transNo
}
queryAdjustmentTransSubList(params).then(({ data }) => {
if (data && data.code === 0) {
this.adjustmentTransSubList = data.rows || []
}
}).finally(() => {
this.adjustmentTransSubLoading = false
})
},
// - rqrq // - rqrq
sizeChangeHandle(val) { sizeChangeHandle(val) {
@ -1050,4 +1235,60 @@ export default {
/deep/ .el-table a:hover { /deep/ .el-table a:hover {
text-decoration: underline; text-decoration: underline;
} }
/* 盘点模式面板样式 - rqrq */
.count-mode-panel {
padding: 12px 20px;
border-radius: 6px;
margin-bottom: 15px;
display: flex;
align-items: center;
transition: all 0.3s ease;
}
.count-mode-panel.count-mode-on {
background: linear-gradient(135deg, #e8f5e9 0%, #c8e6c9 100%);
border: 2px solid #67C23A;
box-shadow: 0 2px 8px rgba(103, 194, 58, 0.2);
}
.count-mode-panel.count-mode-off {
background: linear-gradient(135deg, #fff3e0 0%, #ffe0b2 100%);
border: 2px solid #E6A23C;
box-shadow: 0 2px 8px rgba(230, 162, 60, 0.2);
}
.count-mode-content {
display: flex;
align-items: center;
width: 100%;
}
.count-mode-icon {
font-size: 24px;
margin-right: 10px;
}
.count-mode-on .count-mode-icon {
color: #67C23A;
}
.count-mode-off .count-mode-icon {
color: #E6A23C;
}
.count-mode-label {
font-size: 16px;
font-weight: bold;
color: #303133;
}
.count-mode-value {
font-size: 16px;
font-weight: bold;
margin-left: 5px;
}
.count-mode-on .count-mode-value {
color: #67C23A;
}
.count-mode-off .count-mode-value {
color: #E6A23C;
}
.count-mode-tip {
font-size: 12px;
color: #909399;
margin-left: 15px;
}
</style> </style>
Loading…
Cancel
Save