Compare commits
18 Commits
bfab2eea96
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| daeabed075 | |||
| 2e569a8165 | |||
| adaa774236 | |||
| f2b8f2f6de | |||
| a491fd75c3 | |||
| f6c665c8fa | |||
| 7059706e9b | |||
| d05e577d13 | |||
| 23a49fc297 | |||
| 81bef6a164 | |||
| 7b77ab0996 | |||
| 079818aa0f | |||
| 2897bc3f51 | |||
| 8e818b7430 | |||
| 8af7570fe8 | |||
| 03eedebacd | |||
| b0db03bf52 | |||
| 48d900355d |
@@ -6,6 +6,6 @@ VITE_APP_ENV = 'development'
|
|||||||
|
|
||||||
# 后台管理系统/开发环境
|
# 后台管理系统/开发环境
|
||||||
# VITE_APP_BASE_API = 'http://192.168.1.112:8086'
|
# VITE_APP_BASE_API = 'http://192.168.1.112:8086'
|
||||||
VITE_APP_BASE_API = 'http://192.168.1.5:8087'
|
# VITE_APP_BASE_API = 'http://192.168.1.5:8087' #温
|
||||||
# VITE_APP_BASE_API = 'http://192.168.1.19:8086'
|
VITE_APP_BASE_API = 'http://192.168.1.13:8087' #雨欣
|
||||||
# VITE_APP_BASE_API = 'http://192.168.1.251:8086'
|
# VITE_APP_BASE_API = 'http://192.168.1.251:8087'
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import request from '@/utils/request'
|
import request from '@/utils/request'
|
||||||
|
|
||||||
// 开始盘点
|
// 开始盘点
|
||||||
export function getTaskCount(query) {
|
export function getTaskCount(data) {
|
||||||
return request({
|
return request({
|
||||||
url: '/statistics/count',
|
// url: '/statistics/count',
|
||||||
method: 'get',
|
url: '/MatchScan/countByWarehouseAndScene',
|
||||||
params: query
|
method: 'post',
|
||||||
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -17,7 +18,14 @@ export function getScan(query) {
|
|||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 统计
|
||||||
|
export function getTotalStatistics(data) {
|
||||||
|
return request({
|
||||||
|
url: '/MatchScan/statistics',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
// 开始匹配
|
// 开始匹配
|
||||||
export function getMatch(data) {
|
export function getMatch(data) {
|
||||||
return request({
|
return request({
|
||||||
@@ -44,6 +52,15 @@ export function getScanResult(query) {
|
|||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
// 获取盘点结果 - 最新再用
|
||||||
|
export function inventoryList(data) {
|
||||||
|
return request({
|
||||||
|
url: '/MatchScan/inventoryList',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 获取图表
|
// 获取图表
|
||||||
export function getChart(data) {
|
export function getChart(data) {
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<tr v-if="!isRuKu">
|
<tr v-if="!isRuKu">
|
||||||
<td class="label-td">项目编号:</td>
|
<td class="label-td">项目编号:</td>
|
||||||
<td class="value-td" colspan="3">{{ billAllObj[0]?.xmNo }}</td>
|
<td class="value-td" colspan="3">{{ billAllObj[0]?.bizType == 1 ? xmNo :billAllObj[0]?.xmNo }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr v-if="!isRuKu">
|
<tr v-if="!isRuKu">
|
||||||
<td class="label-td">项目描述:</td>
|
<td class="label-td">项目描述:</td>
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
<th>数量</th>
|
<th>数量</th>
|
||||||
<th>库位码</th>
|
<th>库位码</th>
|
||||||
<th>订单编号</th>
|
<th>订单编号</th>
|
||||||
<th v-if="isRuKu">项目编号</th>
|
<th>项目编号</th>
|
||||||
<th v-if="isRuKu">项目描述</th>
|
<th v-if="isRuKu">项目描述</th>
|
||||||
<th>备注</th>
|
<th>备注</th>
|
||||||
<th>身份码</th>
|
<th>身份码</th>
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
<td style="text-align: center;">{{ item.realQty }}</td>
|
<td style="text-align: center;">{{ item.realQty }}</td>
|
||||||
<td style="text-align: center;">{{ item.pcode }}</td>
|
<td style="text-align: center;">{{ item.pcode }}</td>
|
||||||
<td style="text-align: center;">{{ item.sapNo }}</td>
|
<td style="text-align: center;">{{ item.sapNo }}</td>
|
||||||
<td v-if="isRuKu" style="text-align: center;">{{ item.xmNo }}</td>
|
<td style="text-align: center;">{{ item.xmNo }}</td>
|
||||||
<td v-if="isRuKu" style="text-align: center;">{{ item.xmMs }}</td>
|
<td v-if="isRuKu" style="text-align: center;">{{ item.xmMs }}</td>
|
||||||
<td style="text-align: center;">{{ item.remark }}</td>
|
<td style="text-align: center;">{{ item.remark }}</td>
|
||||||
<td style="text-align: center;">{{ item.entityId }}</td>
|
<td style="text-align: center;">{{ item.entityId }}</td>
|
||||||
@@ -134,6 +134,17 @@ const isRuKu = computed(() => {
|
|||||||
return props.billAllObj[0]?.bizType == 0;
|
return props.billAllObj[0]?.bizType == 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 获取不同的项目编号
|
||||||
|
const xmNo = computed(() => {
|
||||||
|
const validXmMsValues = props.billAllObj
|
||||||
|
.map(item => item.xmNo) // 提取所有 xmMs 属性值
|
||||||
|
.filter(value => !!value); // 过滤掉 null/undefined/空字符串等假值
|
||||||
|
// 3. 去重:得到所有不同的 xmMs 值
|
||||||
|
const uniqueXmMs = [...new Set(validXmMsValues)];
|
||||||
|
// 4. 核心逻辑:多个值用 + 拼接,单个值直接返回,无值返回空字符串
|
||||||
|
return uniqueXmMs.length > 1 ? uniqueXmMs.join('、') : uniqueXmMs[0] || '';
|
||||||
|
});
|
||||||
|
|
||||||
// 获取不同的项目描述
|
// 获取不同的项目描述
|
||||||
const xmMs = computed(() => {
|
const xmMs = computed(() => {
|
||||||
const validXmMsValues = props.billAllObj
|
const validXmMsValues = props.billAllObj
|
||||||
@@ -153,8 +164,8 @@ const summaryList = computed(() => {
|
|||||||
props.billAllObj.forEach(item => {
|
props.billAllObj.forEach(item => {
|
||||||
if (map.has(item.wlNo)) {
|
if (map.has(item.wlNo)) {
|
||||||
const existing = map.get(item.wlNo);
|
const existing = map.get(item.wlNo);
|
||||||
const total = (parseFloat(existing.totalQty) + parseFloat(item.realQty)) * 100*10000
|
const total = parseFloat(existing.totalQty) * 1000000+ parseFloat(item.realQty) * 1000000
|
||||||
existing.totalQty = total / ( 100 * 10000);
|
existing.totalQty = total / ( 1000000);
|
||||||
} else {
|
} else {
|
||||||
map.set(item.wlNo, {
|
map.set(item.wlNo, {
|
||||||
...item,
|
...item,
|
||||||
|
|||||||
@@ -145,8 +145,8 @@ const summaryList = computed(() => {
|
|||||||
props.billAllObj.forEach(item => {
|
props.billAllObj.forEach(item => {
|
||||||
if (map.has(item.wlNo)) {
|
if (map.has(item.wlNo)) {
|
||||||
const existing = map.get(item.wlNo);
|
const existing = map.get(item.wlNo);
|
||||||
const total = (parseFloat(existing.totalQty) + parseFloat(item.realQty)) * 100*10000
|
const total = parseFloat(existing.totalQty) * 1000000+ parseFloat(item.realQty) * 1000000
|
||||||
existing.totalQty = total / ( 100 * 10000);
|
existing.totalQty = total / ( 1000000);
|
||||||
} else {
|
} else {
|
||||||
map.set(item.wlNo, {
|
map.set(item.wlNo, {
|
||||||
...item,
|
...item,
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="flex: 1;">
|
<div style="flex: 1;">
|
||||||
<div id="chartsMain" style="height: 300px;padding: 20px 0;"></div>
|
<!-- <div id="chartsMain" style="height: 300px;padding: 20px 0;"></div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-divider style="margin-top: 0;" />
|
<el-divider style="margin-top: 0;" />
|
||||||
@@ -69,14 +69,47 @@
|
|||||||
<el-text v-show="status == 1">当前为未扫描到,但数据库里有的数据</el-text>
|
<el-text v-show="status == 1">当前为未扫描到,但数据库里有的数据</el-text>
|
||||||
<el-text v-show="status == 2">当前为已扫描到,但数据库里没有的数据</el-text>
|
<el-text v-show="status == 2">当前为已扫描到,但数据库里没有的数据</el-text>
|
||||||
</div>
|
</div>
|
||||||
<el-table :data="matchData" border empty-text="暂无数据" v-if="status == 0 || status == 1">
|
<el-table :data="matchData" border empty-text="暂无数据" show-overflow-tooltip show-summary
|
||||||
<el-table-column prop="rkPcode" label="存放位置" />
|
:summary-method="getSummaries" v-if="status == 0 || status == 1">
|
||||||
<el-table-column prop="realQty" label="数量" />
|
<el-table-column label="序号" align="center" type="index" width="70" />
|
||||||
<el-table-column prop="count" label="操作" class-name="small-padding fixed-width">
|
<el-table-column label="单据号" align="center" prop="billNo" width="180" />
|
||||||
|
<el-table-column label="库存类型" align="center" prop="operationTypeName" width="150" />
|
||||||
|
<el-table-column label="订单编号" align="center" prop="sapNo" width="150" />
|
||||||
|
<el-table-column label="项目号" align="center" prop="xmNo" width="150" />
|
||||||
|
<el-table-column label="项目描述" align="center" prop="xmMs" width="150" />
|
||||||
|
<el-table-column label="物料号" align="center" prop="wlNo" width="100" />
|
||||||
|
<el-table-column label="物料描述" align="center" prop="wlMs" width="150" />
|
||||||
|
<el-table-column label="供应商名称" align="center" prop="gysMc" width="150" />
|
||||||
|
<el-table-column label="合同单价" align="center" prop="htDj" />
|
||||||
|
<el-table-column label="总计" align="center" prop="totalAmount" />
|
||||||
|
<el-table-column label="单位" align="center" prop="dw" />
|
||||||
|
<el-table-column label="实际入库数量" align="center" prop="realQty" width="120" />
|
||||||
|
<el-table-column label="库位码" align="center" prop="pcode" width="120" />
|
||||||
|
<el-table-column label="托盘码" align="center" prop="trayCode" />
|
||||||
|
<el-table-column label="身份码" align="center" prop="entityId" width="150" />
|
||||||
|
<el-table-column label="物资类型" align="center" prop="wlTypeName" />
|
||||||
|
<el-table-column label="场景" align="center" prop="sceneName" width="150" />
|
||||||
|
<el-table-column label="所属大库" align="center" prop="parentWarehouseName" width="150" />
|
||||||
|
<el-table-column label="所属小库" align="center" prop="warehouseName" width="150" />
|
||||||
|
<el-table-column label="入库类型" align="center" prop="operationTypeName" width="150" />
|
||||||
|
<el-table-column label="入库时间" align="center" prop="operationTime" width="150" />
|
||||||
|
<el-table-column label="还料时间" align="center" prop="returnTime" width="150">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ parseTime(scope.row.returnTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="库龄" align="center" prop="stockAge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" width="150" />
|
||||||
|
<el-table-column label="一次封样号" align="center" prop="fycde1" width="150" />
|
||||||
|
<el-table-column label="二次封样号" align="center" prop="fycde2" width="150" />
|
||||||
|
<!-- <el-table-column prop="count" label="操作" class-name="small-padding fixed-width">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" icon="View" @click="handleView(scope.row)">查看</el-button>
|
<el-button link type="primary" icon="View" @click="handleView(scope.row)">查看</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<el-table :data="matchData" border empty-text="暂无数据" v-if="status == 2">
|
<el-table :data="matchData" border empty-text="暂无数据" v-if="status == 2">
|
||||||
@@ -115,7 +148,7 @@
|
|||||||
|
|
||||||
<script setup name="AutoInventory">
|
<script setup name="AutoInventory">
|
||||||
import { ElLoading } from 'element-plus';
|
import { ElLoading } from 'element-plus';
|
||||||
import { getTaskCount, getScan, getMatch, getChart, stopScan, getScanResult, getStockList } from "@/api/Inventory/autoInventory"
|
import { getTaskCount, getScan, getMatch, getChart, stopScan, getTotalStatistics, getStockList, inventoryList } from "@/api/Inventory/autoInventory"
|
||||||
import { ref, reactive, onMounted, onBeforeUnmount, markRaw } from "vue";
|
import { ref, reactive, onMounted, onBeforeUnmount, markRaw } from "vue";
|
||||||
import avatar from "@/assets/images/avatar.jpg"
|
import avatar from "@/assets/images/avatar.jpg"
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
@@ -143,7 +176,8 @@ const handleView = (row) => {
|
|||||||
const scanTotal = ref("")
|
const scanTotal = ref("")
|
||||||
const getTotal = () => {
|
const getTotal = () => {
|
||||||
let obj = {
|
let obj = {
|
||||||
taskId: taskId.value
|
warehouseCode: deviceObj.value.warehouseCode,
|
||||||
|
sceneId: deviceObj.value.sceneId,
|
||||||
}
|
}
|
||||||
getTaskCount(obj).then(res => {
|
getTaskCount(obj).then(res => {
|
||||||
scanTotal.value = res.data
|
scanTotal.value = res.data
|
||||||
@@ -160,7 +194,7 @@ const startScan = async (formEl) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let chartInt = ref("")
|
// let chartInt = ref("")
|
||||||
const status = ref(0) // 盘点状态
|
const status = ref(0) // 盘点状态
|
||||||
const statusList = ref(
|
const statusList = ref(
|
||||||
[
|
[
|
||||||
@@ -238,49 +272,49 @@ const getMatchData = () => {
|
|||||||
matchStatus.value = 2
|
matchStatus.value = 2
|
||||||
getResultList()
|
getResultList()
|
||||||
// 渲染图表
|
// 渲染图表
|
||||||
let chartObj = {
|
// let chartObj = {
|
||||||
ids: arr,
|
// ids: arr,
|
||||||
}
|
// }
|
||||||
getChart(chartObj).then(res => {
|
// getChart(chartObj).then(res => {
|
||||||
console.log(res.data)
|
// console.log(res.data)
|
||||||
chartInt.value.setOption({
|
// chartInt.value.setOption({
|
||||||
title: {
|
// title: {
|
||||||
text: '本次共计盘点到' + res.data.total + "个库位(库位货品数如下表)",
|
// text: '本次共计盘点到' + res.data.total + "个库位(库位货品数如下表)",
|
||||||
},
|
// },
|
||||||
tooltip: {
|
// tooltip: {
|
||||||
trigger: 'axis',
|
// trigger: 'axis',
|
||||||
axisPointer: {
|
// axisPointer: {
|
||||||
type: 'shadow'
|
// type: 'shadow'
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
grid: {
|
// grid: {
|
||||||
left: '3%',
|
// left: '3%',
|
||||||
right: '4%',
|
// right: '4%',
|
||||||
bottom: '3%',
|
// bottom: '3%',
|
||||||
containLabel: true
|
// containLabel: true
|
||||||
},
|
// },
|
||||||
xAxis: {
|
// xAxis: {
|
||||||
type: 'category',
|
// type: 'category',
|
||||||
data: res.data.xdata,
|
// data: res.data.xdata,
|
||||||
axisTick: {
|
// axisTick: {
|
||||||
alignWithLabel: true
|
// alignWithLabel: true
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
yAxis: {
|
// yAxis: {
|
||||||
type: 'value'
|
// type: 'value'
|
||||||
},
|
// },
|
||||||
series: [
|
// series: [
|
||||||
{
|
// {
|
||||||
data: res.data.ydata,
|
// data: res.data.ydata,
|
||||||
type: 'bar',
|
// type: 'bar',
|
||||||
showBackground: true,
|
// showBackground: true,
|
||||||
backgroundStyle: {
|
// backgroundStyle: {
|
||||||
color: 'rgba(180, 180, 180, 0.2)'
|
// color: 'rgba(180, 180, 180, 0.2)'
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
]
|
// ]
|
||||||
})
|
// })
|
||||||
})
|
// })
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -290,9 +324,15 @@ const getResultList = () => {
|
|||||||
pageNum: queryParams.value.pageNum,
|
pageNum: queryParams.value.pageNum,
|
||||||
pageSize: queryParams.value.pageSize,
|
pageSize: queryParams.value.pageSize,
|
||||||
status: status.value,
|
status: status.value,
|
||||||
taskId: taskId.value
|
warehouseCode: deviceObj.value.warehouseCode,
|
||||||
|
sceneId: deviceObj.value.sceneId,
|
||||||
}
|
}
|
||||||
getScanResult(obj).then(res => {
|
if (status.value != 0) {
|
||||||
|
matchData.value = null
|
||||||
|
matchTotal.value = 0
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
inventoryList(obj).then(res => {
|
||||||
matchData.value = res.rows
|
matchData.value = res.rows
|
||||||
matchTotal.value = res.total
|
matchTotal.value = res.total
|
||||||
})
|
})
|
||||||
@@ -390,7 +430,41 @@ if (deviceInfo) {
|
|||||||
});
|
});
|
||||||
connectWebSocket(); // 组件加载时连接 WebSocket
|
connectWebSocket(); // 组件加载时连接 WebSocket
|
||||||
}
|
}
|
||||||
|
// 获取总计
|
||||||
|
const totalMoney = ref(null)
|
||||||
|
const pcodeCount = ref(null)
|
||||||
|
const sumQty = ref(null)
|
||||||
|
function getSummaries(param) {
|
||||||
|
const { columns, data } = param;
|
||||||
|
const sums = [];
|
||||||
|
columns.forEach((column, index) => {
|
||||||
|
if (index === 1) { // 第一列不进行合计操作,通常是序列号或选择框等非数值列。
|
||||||
|
sums[index] = '总计'; // 这里可以设置为其他文字或空字符串。
|
||||||
|
return;
|
||||||
|
} else if (index === 2) { // 第二列是金额列,进行求和操作。
|
||||||
|
sums[index] = '总金额:' + totalMoney.value;
|
||||||
|
} else if (index === 3) {
|
||||||
|
sums[index] = '共存于:' + pcodeCount.value + '个库位'
|
||||||
|
} else if (index === 4) {
|
||||||
|
sums[index] = '总数:' + sumQty.value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return sums
|
||||||
|
}
|
||||||
|
function getSumInfo() {
|
||||||
|
//统计信息
|
||||||
|
console.log(deviceObj.value,'deviceObj');
|
||||||
|
let rkInfo = JSON.parse(JSON.stringify({
|
||||||
|
warehouseCode: deviceObj.value.warehouseCode,
|
||||||
|
sceneId: deviceObj.value.sceneId,
|
||||||
|
}))
|
||||||
|
getTotalStatistics(rkInfo).then(response => {
|
||||||
|
totalMoney.value = response.data.totalAmount
|
||||||
|
pcodeCount.value = response.data.locationCount
|
||||||
|
sumQty.value = response.data.totalQuantity
|
||||||
|
});
|
||||||
|
}
|
||||||
|
getSumInfo()
|
||||||
// 使用 Websocket 发送消息
|
// 使用 Websocket 发送消息
|
||||||
const send = () => {
|
const send = () => {
|
||||||
let obj = {
|
let obj = {
|
||||||
@@ -420,7 +494,7 @@ const stopTask = () => {
|
|||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
chartInt.value = markRaw(echarts.init(document.getElementById('chartsMain')))
|
// chartInt.value = markRaw(echarts.init(document.getElementById('chartsMain')))
|
||||||
taskId.value = route.query.taskId
|
taskId.value = route.query.taskId
|
||||||
getTotal()
|
getTotal()
|
||||||
// chartInt.value.setOption({
|
// chartInt.value.setOption({
|
||||||
|
|||||||
@@ -408,13 +408,17 @@ function handleInventory(row) {
|
|||||||
|
|
||||||
/** 查看结果操作 */
|
/** 查看结果操作 */
|
||||||
function handleHistory(row) {
|
function handleHistory(row) {
|
||||||
router.push({ path: "/Inventory/task/inventoryResult" , query: {"taskId": row.id} })
|
router.push({ path: "/Inventory/task/inventoryResult" , query: {"taskId": row.id,'warehouseCode':row.warehouseCode,"sceneId":row.sceneId} })
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 导出按钮操作 */
|
/** 导出按钮操作 */
|
||||||
function handleExport(row) {
|
function handleExport(row) {
|
||||||
let taskId = row.id
|
// let taskId = row.id
|
||||||
proxy.download('/MatchScan/export', {taskId}, `${row.taskName}_${new Date().getTime()}.xlsx`)
|
let obj = {
|
||||||
|
sceneId: row.sceneId,
|
||||||
|
warehouseCode: row.warehouseCode,
|
||||||
|
}
|
||||||
|
proxy.download('/MatchScan/exportInventory', obj, `${row.taskName}_${new Date().getTime()}.xlsx`)
|
||||||
}
|
}
|
||||||
|
|
||||||
getList();
|
getList();
|
||||||
|
|||||||
@@ -18,14 +18,47 @@
|
|||||||
|
|
||||||
<el-tabs v-model="activeTabs" type="border-card" @tab-change="handleQueryInfo">
|
<el-tabs v-model="activeTabs" type="border-card" @tab-change="handleQueryInfo">
|
||||||
<el-tab-pane v-for="item in statusList" :label="item.label" :name="item.value">
|
<el-tab-pane v-for="item in statusList" :label="item.label" :name="item.value">
|
||||||
<el-table :data="dialogData" border empty-text="暂无数据" v-if="dialogParams.status == 0 || dialogParams.status == 1">
|
<el-table :data="dialogData" border empty-text="暂无数据" show-overflow-tooltip show-summary
|
||||||
<el-table-column prop="rkPcode" label="存放位置" />
|
:summary-method="getSummaries" v-if="dialogParams.status == 0 || dialogParams.status == 1">
|
||||||
<el-table-column prop="realQty" label="数量" />
|
<el-table-column label="序号" align="center" type="index" width="70" />
|
||||||
<el-table-column prop="count" label="操作" class-name="small-padding fixed-width">
|
<el-table-column label="单据号" align="center" prop="billNo" width="180" />
|
||||||
|
<el-table-column label="库存类型" align="center" prop="operationTypeName" width="150" />
|
||||||
|
<el-table-column label="订单编号" align="center" prop="sapNo" width="150" />
|
||||||
|
<el-table-column label="项目号" align="center" prop="xmNo" width="150" />
|
||||||
|
<el-table-column label="项目描述" align="center" prop="xmMs" width="150" />
|
||||||
|
<el-table-column label="物料号" align="center" prop="wlNo" width="100" />
|
||||||
|
<el-table-column label="物料描述" align="center" prop="wlMs" width="150" />
|
||||||
|
<el-table-column label="供应商名称" align="center" prop="gysMc" width="150" />
|
||||||
|
<el-table-column label="合同单价" align="center" prop="htDj" />
|
||||||
|
<el-table-column label="总计" align="center" prop="totalAmount" />
|
||||||
|
<el-table-column label="单位" align="center" prop="dw" />
|
||||||
|
<el-table-column label="实际入库数量" align="center" prop="realQty" width="120" />
|
||||||
|
<el-table-column label="库位码" align="center" prop="pcode" width="120" />
|
||||||
|
<el-table-column label="托盘码" align="center" prop="trayCode" />
|
||||||
|
<el-table-column label="身份码" align="center" prop="entityId" width="150" />
|
||||||
|
<el-table-column label="物资类型" align="center" prop="wlTypeName" />
|
||||||
|
<el-table-column label="场景" align="center" prop="sceneName" width="150" />
|
||||||
|
<el-table-column label="所属大库" align="center" prop="parentWarehouseName" width="150" />
|
||||||
|
<el-table-column label="所属小库" align="center" prop="warehouseName" width="150" />
|
||||||
|
<el-table-column label="入库类型" align="center" prop="operationTypeName" width="150" />
|
||||||
|
<el-table-column label="入库时间" align="center" prop="operationTime" width="150" />
|
||||||
|
<el-table-column label="还料时间" align="center" prop="returnTime" width="150">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ parseTime(scope.row.returnTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="库龄" align="center" prop="stockAge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<el-table-column label="备注" align="center" prop="remark" width="150" />
|
||||||
|
<el-table-column label="一次封样号" align="center" prop="fycde1" width="150" />
|
||||||
|
<el-table-column label="二次封样号" align="center" prop="fycde2" width="150" />
|
||||||
|
<!-- <el-table-column prop="count" label="操作" class-name="small-padding fixed-width">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" icon="View" @click="handleView(scope.row)">查看</el-button>
|
<el-button link type="primary" icon="View" @click="handleView(scope.row)">查看</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<el-table :data="dialogData" border empty-text="暂无数据" v-if="dialogParams.status == 2">
|
<el-table :data="dialogData" border empty-text="暂无数据" v-if="dialogParams.status == 2">
|
||||||
@@ -64,7 +97,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="InventoryResult">
|
<script setup name="InventoryResult">
|
||||||
import { getScanResult, getStockList } from "@/api/Inventory/autoInventory";
|
import { getStockList, getTotalStatistics, inventoryList } from "@/api/Inventory/autoInventory";
|
||||||
import { onMounted, ref } from "vue";
|
import { onMounted, ref } from "vue";
|
||||||
import { useRoute } from 'vue-router';
|
import { useRoute } from 'vue-router';
|
||||||
|
|
||||||
@@ -91,13 +124,19 @@ const dialogParams = ref({
|
|||||||
status: 0,
|
status: 0,
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
taskId: ""
|
warehouseCode: '',
|
||||||
|
sceneId: '',
|
||||||
})
|
})
|
||||||
const dialogData = ref([])
|
const dialogData = ref([])
|
||||||
const dialogTotal = ref(0)
|
const dialogTotal = ref(0)
|
||||||
|
|
||||||
const getHistoryInfo = () => {
|
const getHistoryInfo = () => {
|
||||||
getScanResult(dialogParams.value).then(res => {
|
if(dialogParams.value.status!=0){
|
||||||
|
dialogData.value =null
|
||||||
|
dialogTotal.value = 0
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
inventoryList(dialogParams.value).then(res => {
|
||||||
dialogData.value = res.rows
|
dialogData.value = res.rows
|
||||||
dialogTotal.value = res.total
|
dialogTotal.value = res.total
|
||||||
})
|
})
|
||||||
@@ -105,7 +144,11 @@ const getHistoryInfo = () => {
|
|||||||
|
|
||||||
/** 导出按钮操作 */
|
/** 导出按钮操作 */
|
||||||
function handleExport() {
|
function handleExport() {
|
||||||
proxy.download('/MatchScan/export', {taskId: dialogParams.value.taskId}, `盘点结果_${new Date().getTime()}.xlsx`)
|
let obj = {
|
||||||
|
warehouseCode:route.query.warehouseCode,
|
||||||
|
sceneId:route.query.sceneId,
|
||||||
|
}
|
||||||
|
proxy.download('/MatchScan/exportInventory', obj, `盘点结果_${new Date().getTime()}.xlsx`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleQueryInfo = (tab) => {
|
const handleQueryInfo = (tab) => {
|
||||||
@@ -122,25 +165,59 @@ const chageDialogPage = (e) => {
|
|||||||
const taskView = ref(false)
|
const taskView = ref(false)
|
||||||
const viewData = ref([])
|
const viewData = ref([])
|
||||||
const handleView = (row) => {
|
const handleView = (row) => {
|
||||||
// let obj = {
|
|
||||||
// pageNum: 1,
|
|
||||||
// pageSize: 100,
|
|
||||||
// pcode: row.rkPcode
|
|
||||||
// }
|
|
||||||
getStockList(row.rkPcode).then(res => {
|
getStockList(row.rkPcode).then(res => {
|
||||||
console.log(res)
|
console.log(res)
|
||||||
viewData.value = res.data
|
viewData.value = res.data
|
||||||
taskView.value = true
|
taskView.value = true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const totalMoney = ref(null)
|
||||||
|
const pcodeCount = ref(null)
|
||||||
|
const sumQty = ref(null)
|
||||||
|
function getSummaries(param) {
|
||||||
|
const { columns, data } = param;
|
||||||
|
const sums = [];
|
||||||
|
columns.forEach((column, index) => {
|
||||||
|
if (index === 1) { // 第一列不进行合计操作,通常是序列号或选择框等非数值列。
|
||||||
|
sums[index] = '总计'; // 这里可以设置为其他文字或空字符串。
|
||||||
|
return;
|
||||||
|
} else if (index === 2) { // 第二列是金额列,进行求和操作。
|
||||||
|
sums[index] = '总金额:' + totalMoney.value;
|
||||||
|
} else if (index === 3) {
|
||||||
|
sums[index] = '共存于:' + pcodeCount.value + '个库位'
|
||||||
|
} else if (index === 4) {
|
||||||
|
sums[index] = '总数:' + sumQty.value
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return sums
|
||||||
|
}
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
dialogParams.value.taskId = route.query.taskId
|
// dialogParams.value.taskId = route.query.taskId
|
||||||
|
dialogParams.value.warehouseCode = route.query.warehouseCode
|
||||||
|
dialogParams.value.sceneId = route.query.sceneId
|
||||||
|
dialogParams.value.pageNum = 1
|
||||||
|
dialogParams.value.pageSize = 10
|
||||||
getHistoryInfo()
|
getHistoryInfo()
|
||||||
})
|
})
|
||||||
|
// 获取总计
|
||||||
|
|
||||||
|
function getSumInfo() {
|
||||||
|
//统计信息
|
||||||
|
let rkInfo = JSON.parse(JSON.stringify({
|
||||||
|
warehouseCode:route.query.warehouseCode,
|
||||||
|
sceneId:route.query.sceneId,
|
||||||
|
}))
|
||||||
|
delete rkInfo.pageNum
|
||||||
|
delete rkInfo.pageSize
|
||||||
|
getTotalStatistics(rkInfo).then(response => {
|
||||||
|
totalMoney.value = response.data.totalAmount
|
||||||
|
pcodeCount.value = response.data.locationCount
|
||||||
|
sumQty.value = response.data.totalQuantity
|
||||||
|
});
|
||||||
|
}
|
||||||
|
getSumInfo()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss"></style>
|
||||||
</style>
|
|
||||||
|
|||||||
@@ -50,8 +50,9 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-table v-loading="loading" ref="billTableRef" :data="billList" highlight-current-row @row-click="(row) => tableInfoRowClick(row, billTableRef)" :row-class-name="tableBillRowClassName" @row-dblclick="billClick"
|
<el-table v-loading="loading" ref="billTableRef" :data="billList" highlight-current-row
|
||||||
@selection-change="billSelectionChange">
|
@row-click="(row) => tableInfoRowClick(row, billTableRef)" :row-class-name="tableBillRowClassName"
|
||||||
|
@row-dblclick="billClick" @selection-change="billSelectionChange">
|
||||||
<!-- <el-table-column type="selection" width="55" align="center" /> -->
|
<!-- <el-table-column type="selection" width="55" align="center" /> -->
|
||||||
<el-table-column label="单据号" align="center" prop="billNo" width="180" />
|
<el-table-column label="单据号" align="center" prop="billNo" width="180" />
|
||||||
<el-table-column label="库存状态" align="center">
|
<el-table-column label="库存状态" align="center">
|
||||||
@@ -64,7 +65,7 @@
|
|||||||
<dict-tag :options="dictTagData()" :value="scope.row.bizType" />
|
<dict-tag :options="dictTagData()" :value="scope.row.bizType" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="理货员" align="center" prop="operatorName" width="100" />
|
|
||||||
<el-table-column label="入库类型" align="center" prop="operationTypeName" width="120" />
|
<el-table-column label="入库类型" align="center" prop="operationTypeName" width="120" />
|
||||||
<el-table-column label="物资类型" align="center" prop="wlTypeName" width="100" />
|
<el-table-column label="物资类型" align="center" prop="wlTypeName" width="100" />
|
||||||
<el-table-column label="入库时间" align="center" prop="operationTime" width="170">
|
<el-table-column label="入库时间" align="center" prop="operationTime" width="170">
|
||||||
@@ -74,6 +75,7 @@
|
|||||||
}}</span>
|
}}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="理货员" align="center" prop="operatorName" width="100" />
|
||||||
<el-table-column label="操作" align="center" fixed="right" width="260">
|
<el-table-column label="操作" align="center" fixed="right" width="260">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="picDetailFun(scope.row.billNo, 0, 1)">入库图片</el-button>
|
<el-button link type="primary" @click="picDetailFun(scope.row.billNo, 0, 1)">入库图片</el-button>
|
||||||
@@ -128,7 +130,8 @@
|
|||||||
<el-button type="primary" plain icon="Delete" @click="handleOneClickStockDel">一键删除</el-button>
|
<el-button type="primary" plain icon="Delete" @click="handleOneClickStockDel">一键删除</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-table v-loading="detailLoading" ref="infoTableRef" highlight-current-row @row-click="(row) => tableInfoRowClick(row, infoTableRef)" show-overflow-tooltip border :data="stockList"
|
<el-table v-loading="detailLoading" ref="infoTableRef" highlight-current-row
|
||||||
|
@row-click="(row) => tableInfoRowClick(row, infoTableRef)" show-overflow-tooltip border :data="stockList"
|
||||||
@selection-change="printSelectionChange">
|
@selection-change="printSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column label="序号" align="center" type="index" width="70" />
|
<el-table-column label="序号" align="center" type="index" width="70" />
|
||||||
@@ -310,21 +313,27 @@
|
|||||||
<div class="addBox">
|
<div class="addBox">
|
||||||
<div style="display: flex;align-items: center;">
|
<div style="display: flex;align-items: center;">
|
||||||
<div class="addData" @click="addData">
|
<div class="addData" @click="addData">
|
||||||
<el-icon style="margin-right: 10px;" size="20"><FolderAdd /></el-icon>
|
<el-icon style="margin-right: 10px;" size="20">
|
||||||
|
<FolderAdd />
|
||||||
|
</el-icon>
|
||||||
添加至入库
|
添加至入库
|
||||||
</div>
|
</div>
|
||||||
<div @click="viewData" style="color: #000;text-decoration: underline;margin-left: 5px;">[已添加{{ outTempData.length }}条库存]</div>
|
<div @click="viewData" style="color: #000;text-decoration: underline;margin-left: 5px;">[已添加{{
|
||||||
|
outTempData.length }}条库存]</div>
|
||||||
<!-- <div @click="viewData" style="color: red;text-decoration: underline;font-weight: bold;">[凭证重复入库或项目已关闭,请点击查看!]</div> -->
|
<!-- <div @click="viewData" style="color: red;text-decoration: underline;font-weight: bold;">[凭证重复入库或项目已关闭,请点击查看!]</div> -->
|
||||||
</div>
|
</div>
|
||||||
<div v-show="outTempData.length > 0 && planList.length === outTempData.length" @click="deleteData" style="display: flex;align-items: center;color: var(--el-color-primary);">
|
<div v-show="outTempData.length > 0 && planList.length === outTempData.length" @click="deleteData"
|
||||||
<el-icon><delete /></el-icon>
|
style="display: flex;align-items: center;color: var(--el-color-primary);">
|
||||||
|
<el-icon>
|
||||||
|
<delete />
|
||||||
|
</el-icon>
|
||||||
<span>删除</span>
|
<span>删除</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-table :data="planList" height="400" style="width: 100%" show-overflow-tooltip
|
<el-table :data="planList" height="400" style="width: 100%" show-overflow-tooltip border
|
||||||
:row-class-name="tableRowClassName" @selection-change="handleSelectionChange">
|
:row-class-name="tableRowClassName" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="30" align="center" />
|
<el-table-column type="selection" width="30" align="center" />
|
||||||
<el-table-column label="序号" align="center" type="index" width="50" />
|
<el-table-column label="序号" align="center" type="index" width="70" />
|
||||||
<el-table-column label="状态" align="center" prop="status" width="100" v-if="idEdit == 0">
|
<el-table-column label="状态" align="center" prop="status" width="100" v-if="idEdit == 0">
|
||||||
<template #default="scoped">
|
<template #default="scoped">
|
||||||
<el-tag :type="scoped.row.status == 1
|
<el-tag :type="scoped.row.status == 1
|
||||||
@@ -896,7 +905,7 @@ const statusList = ref([
|
|||||||
]);
|
]);
|
||||||
const checkPlanList = ref([]); //已选中的要入库的数据
|
const checkPlanList = ref([]); //已选中的要入库的数据
|
||||||
|
|
||||||
// 点击添加至出库
|
// 点击添加至入库
|
||||||
const outTempData = ref([]);
|
const outTempData = ref([]);
|
||||||
function addData() {
|
function addData() {
|
||||||
if (checkPlanList.value.length == 0) {
|
if (checkPlanList.value.length == 0) {
|
||||||
@@ -904,27 +913,74 @@ function addData() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let data = outTempData.value.concat(checkPlanList.value);
|
let data = outTempData.value.concat(checkPlanList.value);
|
||||||
let arr = []
|
// let arr = []; // 去重后的最终数组
|
||||||
let spaNoTotal = ''
|
// let duplicateSapNos = ''; // 存储重复数据的sapNo
|
||||||
const idList = []; // 用于统计每个id出现的次数
|
// let invalidQtySapNos = ''; // 存储入库数量有误的sapNo
|
||||||
// 第一步:遍历数组,统计id出现次数
|
// const uniqueKeys = new Set(); // 用于存储唯一的组合键 (id+pcode+realQty)
|
||||||
data.forEach(item => {
|
|
||||||
if (idList.includes(item.id)) {
|
// // 遍历数组,先校验数量合法性,再判断唯一性
|
||||||
spaNoTotal += item.sapNo + ','
|
// data.forEach(item => {
|
||||||
} else {
|
// // 1. 校验realQty是否大于0(处理空值/非数字情况)
|
||||||
arr.push(item)
|
// const realQty = Number(item.realQty);
|
||||||
idList.push(item.id);
|
// if (isNaN(realQty) || realQty <= 0) {
|
||||||
|
// // 避免同一个sapNo重复添加到提示中
|
||||||
|
// if (!invalidQtySapNos.includes(item.sapNo)) {
|
||||||
|
// invalidQtySapNos += item.sapNo + ',';
|
||||||
|
// }
|
||||||
|
// return; // 数量不合法,直接跳过后续唯一性判断
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // 2. 生成唯一标识组合键
|
||||||
|
// const uniqueKey = `${item.id}_${item.pcode}_${realQty}`;
|
||||||
|
|
||||||
|
// // 3. 检查组合键是否已存在
|
||||||
|
// if (uniqueKeys.has(uniqueKey)) {
|
||||||
|
// // 存在重复,拼接sapNo(去重避免重复拼接)
|
||||||
|
// if (!duplicateSapNos.includes(item.sapNo)) {
|
||||||
|
// duplicateSapNos += item.sapNo + ',';
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// // 不存在重复,加入结果数组并记录组合键
|
||||||
|
// arr.push(item);
|
||||||
|
// uniqueKeys.add(uniqueKey);
|
||||||
|
// }
|
||||||
|
// console.log(uniqueKeys)
|
||||||
|
// });
|
||||||
|
|
||||||
|
// // 处理入库数量有误的提示
|
||||||
|
// if (invalidQtySapNos) {
|
||||||
|
// invalidQtySapNos = invalidQtySapNos.slice(0, -1); // 去掉最后一个逗号
|
||||||
|
// proxy.$modal.msgError(`入库数量有误:${invalidQtySapNos}(入库数量需大于0)`);
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // 处理重复数据的提示
|
||||||
|
// if (duplicateSapNos) {
|
||||||
|
// duplicateSapNos = duplicateSapNos.slice(0, -1); // 去掉最后一个逗号
|
||||||
|
// proxy.$modal.msgError(`存在重复数据:${duplicateSapNos}`);
|
||||||
|
// }
|
||||||
|
|
||||||
|
outTempData.value = data
|
||||||
}
|
}
|
||||||
});
|
|
||||||
if (spaNoTotal) {
|
const generateSimpleUniqueStr = () => {
|
||||||
proxy.$modal.msgError("存在重复数据:" + spaNoTotal);
|
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
||||||
|
return crypto.randomUUID();
|
||||||
}
|
}
|
||||||
outTempData.value = arr
|
|
||||||
|
// 兼容旧版浏览器/Node.js(crypto API 降级)
|
||||||
|
return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c =>
|
||||||
|
(c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查看所有的出库数据
|
// 查看所有的出库数据
|
||||||
const viewData = () => {
|
const viewData = () => {
|
||||||
planList.value = JSON.parse(JSON.stringify(outTempData.value));
|
let arr = JSON.parse(JSON.stringify(outTempData.value));
|
||||||
|
planList.value = arr.map(item => ({
|
||||||
|
...item,
|
||||||
|
uniqueId: generateSimpleUniqueStr() // 新增随机唯一值
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 删除选中的出库数据
|
// 删除选中的出库数据
|
||||||
@@ -934,11 +990,11 @@ const deleteData = () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
proxy.$modal.confirm("确认删除选中的出库数据吗?").then(() => {
|
proxy.$modal.confirm("确认删除选中的出库数据吗?").then(() => {
|
||||||
const ids = checkPlanList.value.map(item => item.id);
|
const uniqueIds = checkPlanList.value.map(item => item.uniqueId);
|
||||||
console.log(ids)
|
console.log(uniqueIds)
|
||||||
planList.value = planList.value.filter(item => {
|
planList.value = planList.value.filter(item => {
|
||||||
// 无id的元素默认保留(如果想删除无id的,可改为 item?.id && !arr2Ids.has(item.id))
|
// 无id的元素默认保留(如果想删除无id的,可改为 item?.id && !arr2Ids.has(item.id))
|
||||||
return !ids.includes(item?.id);
|
return !uniqueIds.includes(item?.uniqueId);
|
||||||
});
|
});
|
||||||
outTempData.value = planList.value
|
outTempData.value = planList.value
|
||||||
});
|
});
|
||||||
@@ -946,7 +1002,7 @@ const deleteData = () => {
|
|||||||
|
|
||||||
|
|
||||||
//新增入库 多选框选中数据
|
//新增入库 多选框选中数据
|
||||||
function handleSelectionChange(selection) {
|
function handleSelectionChange(selection, $event) {
|
||||||
checkPlanList.value = selection;
|
checkPlanList.value = selection;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -963,6 +1019,7 @@ function searchPlan() {
|
|||||||
for (let i = 0; i < planData.length; i++) {
|
for (let i = 0; i < planData.length; i++) {
|
||||||
planData[i].realQty = planData[i].waitQty;
|
planData[i].realQty = planData[i].waitQty;
|
||||||
planData[i].gysJhId = planData[i].id;
|
planData[i].gysJhId = planData[i].id;
|
||||||
|
planData[i].pcode = "";
|
||||||
if (autoFill.value && kzms.value != "") {
|
if (autoFill.value && kzms.value != "") {
|
||||||
planData[i].remark = kzms.value;
|
planData[i].remark = kzms.value;
|
||||||
}
|
}
|
||||||
@@ -975,7 +1032,7 @@ function searchPlan() {
|
|||||||
proxy.$modal.msgWarning("暂无数据");
|
proxy.$modal.msgWarning("暂无数据");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
planList.value = planData;
|
planList.value = planList.value.concat(planData);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1383,6 +1440,7 @@ function handleUpdate(row) {
|
|||||||
];
|
];
|
||||||
pcodeList(storeData.value.warehouseCode);
|
pcodeList(storeData.value.warehouseCode);
|
||||||
open.value = true;
|
open.value = true;
|
||||||
|
outTempData.value = []
|
||||||
title.value = "修改库存单据";
|
title.value = "修改库存单据";
|
||||||
}
|
}
|
||||||
// 取消按钮
|
// 取消按钮
|
||||||
@@ -1530,6 +1588,11 @@ function handleDispatch() {
|
|||||||
proxy.$modal.msgError("请勾选数据");
|
proxy.$modal.msgError("请勾选数据");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
let isDiaodu = checkStockList.value.some((item) => item.execStatus == 0);
|
||||||
|
if (isDiaodu) {
|
||||||
|
proxy.$modal.msgWarning("预入库数据不能生成调度任务");
|
||||||
|
return;
|
||||||
|
}
|
||||||
dispatchOpen.value = true;
|
dispatchOpen.value = true;
|
||||||
}
|
}
|
||||||
// 提交调度任务
|
// 提交调度任务
|
||||||
@@ -1540,7 +1603,7 @@ function submitDispatch() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let data;
|
let data;
|
||||||
if (billStatus.value == "rk") {
|
|
||||||
data = checkStockList.value.map((item) => ({
|
data = checkStockList.value.map((item) => ({
|
||||||
sourceName: "V01-010101",
|
sourceName: "V01-010101",
|
||||||
targetName: item.pcode,
|
targetName: item.pcode,
|
||||||
@@ -1550,17 +1613,28 @@ function submitDispatch() {
|
|||||||
num: 1,
|
num: 1,
|
||||||
dispatchMode: resource.value,
|
dispatchMode: resource.value,
|
||||||
}));
|
}));
|
||||||
} else if (billStatus.value == "ck") {
|
|
||||||
data = checkStockList.value.map((item) => ({
|
// if (billStatus.value == "rk") {
|
||||||
sourceName: item.pcode,
|
// data = checkStockList.value.map((item) => ({
|
||||||
targetName: "V01-010101",
|
// sourceName: "V01-010101",
|
||||||
taskTypeName: "下架",
|
// targetName: item.pcode,
|
||||||
taskType: 1,
|
// taskTypeName: "上架",
|
||||||
mid: item.wlNo,
|
// taskType: 0,
|
||||||
num: 1,
|
// mid: item.wlNo,
|
||||||
dispatchMode: resource.value,
|
// num: 1,
|
||||||
}));
|
// dispatchMode: resource.value,
|
||||||
}
|
// }));
|
||||||
|
// } else if (billStatus.value == "ck") {
|
||||||
|
// data = checkStockList.value.map((item) => ({
|
||||||
|
// sourceName: item.pcode,
|
||||||
|
// targetName: "V01-010101",
|
||||||
|
// taskTypeName: "下架",
|
||||||
|
// taskType: 1,
|
||||||
|
// mid: item.wlNo,
|
||||||
|
// num: 1,
|
||||||
|
// dispatchMode: resource.value,
|
||||||
|
// }));
|
||||||
|
// }
|
||||||
//调用生成调度任务接口
|
//调用生成调度任务接口
|
||||||
generateDispatch(data).then((response) => {
|
generateDispatch(data).then((response) => {
|
||||||
// console.log(11111)
|
// console.log(11111)
|
||||||
@@ -1793,7 +1867,6 @@ function isAudit() {
|
|||||||
isAudit();
|
isAudit();
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
||||||
.printMeBox {
|
.printMeBox {
|
||||||
div {
|
div {
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
@@ -1867,6 +1940,7 @@ isAudit();
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
.addData {
|
.addData {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -2,101 +2,51 @@
|
|||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<el-splitter>
|
<el-splitter>
|
||||||
<el-splitter-panel size="40%">
|
<el-splitter-panel size="40%">
|
||||||
<el-form
|
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" label-width="80">
|
||||||
:model="queryParams"
|
|
||||||
ref="queryRef"
|
|
||||||
v-show="showSearch"
|
|
||||||
label-width="80"
|
|
||||||
>
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="出库时间" prop="ckTime">
|
<el-form-item label="出库时间" prop="ckTime">
|
||||||
<el-date-picker
|
<el-date-picker v-model="ckTime" type="datetimerange" start-placeholder="开始时间" end-placeholder="结束时间"
|
||||||
v-model="ckTime"
|
format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" />
|
||||||
type="datetimerange"
|
|
||||||
start-placeholder="开始时间"
|
|
||||||
end-placeholder="结束时间"
|
|
||||||
format="YYYY/MM/DD HH:mm:ss"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="10">
|
<el-col :span="10">
|
||||||
<el-form-item label="单据号" prop="billNo">
|
<el-form-item label="单据号" prop="billNo">
|
||||||
<el-input
|
<el-input v-model="queryParams.billNo" placeholder="请输入单据号" clearable @keyup.enter="handleQuery" />
|
||||||
v-model="queryParams.billNo"
|
|
||||||
placeholder="请输入单据号"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="出库类型" prop="operationType">
|
<el-form-item label="出库类型" prop="operationType">
|
||||||
<el-select
|
<el-select v-model="queryParams.operationType" placeholder="请选择出库类型" clearable>
|
||||||
v-model="queryParams.operationType"
|
<el-option v-for="dict in storeTypeList" :key="dict.id" :label="dict.typeName"
|
||||||
placeholder="请选择出库类型"
|
:value="dict.typeCode" />
|
||||||
clearable
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in storeTypeList"
|
|
||||||
:key="dict.id"
|
|
||||||
:label="dict.typeName"
|
|
||||||
:value="dict.typeCode"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery"
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
>搜索</el-button
|
|
||||||
>
|
|
||||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button type="primary" plain icon="Plus" @click="handleAdd"
|
||||||
type="primary"
|
v-hasPermi="['wisdom:bill:add']">新增出库</el-button>
|
||||||
plain
|
|
||||||
icon="Plus"
|
|
||||||
@click="handleAdd"
|
|
||||||
v-hasPermi="['wisdom:bill:add']"
|
|
||||||
>新增出库</el-button
|
|
||||||
>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button type="warning" plain icon="Download" @click="handleExport"
|
||||||
type="warning"
|
v-hasPermi="['wisdom:bill:export']">导出</el-button>
|
||||||
plain
|
|
||||||
icon="Download"
|
|
||||||
@click="handleExport"
|
|
||||||
v-hasPermi="['wisdom:bill:export']"
|
|
||||||
>导出</el-button
|
|
||||||
>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<el-table
|
<el-table v-loading="loading" :data="billList" :row-class-name="tableBillRowClassName" @row-dblclick="billClick"
|
||||||
v-loading="loading"
|
ref="billTableRef" highlight-current-row @row-click="(row) => tableInfoRowClick(row, billTableRef)">
|
||||||
:data="billList"
|
<el-table-column label="单据号" align="center" prop="billNo" width="180" />
|
||||||
:row-class-name="tableBillRowClassName"
|
|
||||||
@row-dblclick="billClick"
|
|
||||||
ref="billTableRef"
|
|
||||||
highlight-current-row
|
|
||||||
@row-click="(row) => tableInfoRowClick(row, billTableRef)"
|
|
||||||
>
|
|
||||||
<el-table-column
|
|
||||||
label="单据号"
|
|
||||||
align="center"
|
|
||||||
prop="billNo"
|
|
||||||
width="180"
|
|
||||||
/>
|
|
||||||
<el-table-column label="库存状态" align="center">
|
<el-table-column label="库存状态" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ getExecStatusName(scope.row.execStatus) }}</span>
|
<span>{{ getExecStatusName(scope.row.execStatus) }}</span>
|
||||||
@@ -109,21 +59,15 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="是否派送" align="center" prop="isDelivery">
|
<el-table-column label="是否派送" align="center" prop="isDelivery">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.isDelivery == '0' || !scope.row.isDelivery"
|
<span v-if="scope.row.isDelivery == '0' || !scope.row.isDelivery">否</span>
|
||||||
>否</span
|
|
||||||
>
|
|
||||||
<span v-else-if="scope.row.isDelivery === '1'">是</span>
|
<span v-else-if="scope.row.isDelivery === '1'">是</span>
|
||||||
<span v-else-if="scope.row.isDelivery === '2'">待配送</span>
|
<span v-else-if="scope.row.isDelivery === '2'">待配送</span>
|
||||||
<span v-else-if="scope.row.isDelivery === '3'">配送中</span>
|
<span v-else-if="scope.row.isDelivery === '3'">配送中</span>
|
||||||
<span v-else-if="scope.row.isDelivery === '4'">配送完成</span>
|
<span v-else-if="scope.row.isDelivery === '4'">配送完成</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column label="出库类型" align="center" prop="operationTypeName" width="160" />
|
||||||
label="出库类型"
|
<el-table-column label="施工队" align="center" prop="teamName" width="200" />
|
||||||
align="center"
|
|
||||||
prop="operationTypeName"
|
|
||||||
width="160"
|
|
||||||
/>
|
|
||||||
<el-table-column label="出库时间" align="center" width="180">
|
<el-table-column label="出库时间" align="center" width="180">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{
|
<span>{{
|
||||||
@@ -132,253 +76,86 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="理货员" align="center" prop="operatorName" />
|
<el-table-column label="理货员" align="center" prop="operatorName" />
|
||||||
<el-table-column
|
|
||||||
label="施工队"
|
<el-table-column label="操作" align="center" width="220" fixed="right">
|
||||||
align="center"
|
|
||||||
prop="teamName"
|
|
||||||
width="200"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="操作"
|
|
||||||
align="center"
|
|
||||||
width="220"
|
|
||||||
fixed="right"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button link type="primary" @click="picDetailFun(scope.row.billNo)">图片</el-button>
|
||||||
link
|
<el-button link type="primary" @click="billClick(scope.row, 'bill')">出库单</el-button>
|
||||||
type="primary"
|
<el-button link type="primary" @click="editData(scope.row)">修改</el-button>
|
||||||
@click="picDetailFun(scope.row.billNo)"
|
|
||||||
>图片</el-button
|
|
||||||
>
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
type="primary"
|
|
||||||
@click="billClick(scope.row, 'bill')"
|
|
||||||
>出库单</el-button
|
|
||||||
>
|
|
||||||
<el-button link type="primary" @click="editData(scope.row)"
|
|
||||||
>修改</el-button
|
|
||||||
>
|
|
||||||
<el-button link type="primary" @click="delData(scope.row)">删除</el-button>
|
<el-button link type="primary" @click="delData(scope.row)">删除</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<pagination
|
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
||||||
v-show="total > 0"
|
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||||
:total="total"
|
|
||||||
v-model:page="queryParams.pageNum"
|
|
||||||
v-model:limit="queryParams.pageSize"
|
|
||||||
@pagination="getList"
|
|
||||||
/>
|
|
||||||
</el-splitter-panel>
|
</el-splitter-panel>
|
||||||
<el-splitter-panel :min="200">
|
<el-splitter-panel :min="200">
|
||||||
<el-row :gutter="10" v-show="outboundList.length > 0" class="mb8">
|
<el-row :gutter="10" v-show="outboundList.length > 0" class="mb8">
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button type="success" plain icon="Printer" @click="handlePrint" v-print="printViewInfo"
|
||||||
type="success"
|
v-hasPermi="['wisdom:bill:print']">打印单据</el-button>
|
||||||
plain
|
|
||||||
icon="Printer"
|
|
||||||
@click="handlePrint"
|
|
||||||
v-print="printViewInfo"
|
|
||||||
v-hasPermi="['wisdom:bill:print']"
|
|
||||||
>打印单据</el-button
|
|
||||||
>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="primary" plain icon="Plus" @click="handleDispatch"
|
<el-button type="primary" plain icon="Plus" @click="handleDispatch">生成调度任务</el-button>
|
||||||
>生成调度任务</el-button
|
|
||||||
>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button type="primary" plain icon="Plus" @click="handleOneClickWarehousing">一键出库</el-button>
|
||||||
type="primary"
|
|
||||||
plain
|
|
||||||
icon="Plus"
|
|
||||||
@click="handleOneClickWarehousing"
|
|
||||||
>一键出库</el-button
|
|
||||||
>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button type="primary" plain icon="Plus" @click="handleOneClickStockDelete">一键撤销</el-button>
|
||||||
type="primary"
|
|
||||||
plain
|
|
||||||
icon="Plus"
|
|
||||||
@click="handleOneClickStockDelete"
|
|
||||||
>一键撤销</el-button
|
|
||||||
>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button
|
<el-button type="primary" plain icon="Delete" @click="handleOneClickStockDel">一键删除</el-button>
|
||||||
type="primary"
|
|
||||||
plain
|
|
||||||
icon="Delete"
|
|
||||||
@click="handleOneClickStockDel"
|
|
||||||
>一键删除</el-button
|
|
||||||
>
|
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-table
|
<el-table v-loading="detailLoading" show-overflow-tooltip border :data="outboundList"
|
||||||
v-loading="detailLoading"
|
@selection-change="selectionChange" ref="infoTableRef" highlight-current-row
|
||||||
show-overflow-tooltip
|
@row-click="(row) => tableInfoRowClick(row, infoTableRef)">
|
||||||
border
|
|
||||||
:data="outboundList"
|
|
||||||
@selection-change="selectionChange"
|
|
||||||
ref="infoTableRef"
|
|
||||||
highlight-current-row
|
|
||||||
@row-click="(row) => tableInfoRowClick(row, infoTableRef)"
|
|
||||||
>
|
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column
|
<el-table-column label="序号" align="center" type="index" width="70" />
|
||||||
label="序号"
|
|
||||||
align="center"
|
|
||||||
type="index"
|
|
||||||
width="70"
|
|
||||||
/>
|
|
||||||
<el-table-column label="库存状态" align="center">
|
<el-table-column label="库存状态" align="center">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ getExecStatusName(scope.row.execStatus) }}</span>
|
<span>{{ getExecStatusName(scope.row.execStatus) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column label="订单编号" align="center" prop="sapNo" width="150" />
|
||||||
label="订单编号"
|
<el-table-column label="项目号" align="center" prop="xmNo" width="150" />
|
||||||
align="center"
|
<el-table-column label="项目描述" align="center" prop="xmMs" width="250" />
|
||||||
prop="sapNo"
|
<el-table-column label="物料号" align="center" prop="wlNo" width="100" />
|
||||||
width="150"
|
<el-table-column label="物料描述" align="center" prop="wlMs" width="250" />
|
||||||
/>
|
<el-table-column label="供应商名称" align="center" prop="gysMc" width="200" />
|
||||||
<el-table-column
|
<el-table-column label="合同单价" align="center" prop="htDj" width="120" />
|
||||||
label="项目号"
|
|
||||||
align="center"
|
|
||||||
prop="xmNo"
|
|
||||||
width="150"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="项目描述"
|
|
||||||
align="center"
|
|
||||||
prop="xmMs"
|
|
||||||
width="250"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="物料号"
|
|
||||||
align="center"
|
|
||||||
prop="wlNo"
|
|
||||||
width="100"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="物料描述"
|
|
||||||
align="center"
|
|
||||||
prop="wlMs"
|
|
||||||
width="250"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="供应商名称"
|
|
||||||
align="center"
|
|
||||||
prop="gysMc"
|
|
||||||
width="200"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="合同单价"
|
|
||||||
align="center"
|
|
||||||
prop="htDj"
|
|
||||||
width="120"
|
|
||||||
/>
|
|
||||||
<el-table-column label="总计" align="center" prop="totalAmount" />
|
<el-table-column label="总计" align="center" prop="totalAmount" />
|
||||||
<el-table-column label="计量单位" align="center" prop="dw" />
|
<el-table-column label="计量单位" align="center" prop="dw" />
|
||||||
<el-table-column
|
<el-table-column label="实际出库数量" align="center" prop="realQty" width="120" />
|
||||||
label="实际出库数量"
|
<el-table-column label="所属仓库" align="center" prop="cangkuName" width="150">
|
||||||
align="center"
|
|
||||||
prop="realQty"
|
|
||||||
width="120"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="所属仓库"
|
|
||||||
align="center"
|
|
||||||
prop="cangkuName"
|
|
||||||
width="150"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{
|
<span>{{
|
||||||
scope.row.parentWarehouseName + "/" + scope.row.warehouseName
|
scope.row.parentWarehouseName + "/" + scope.row.warehouseName
|
||||||
}}</span>
|
}}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column label="备注" align="center" prop="remark" width="200" />
|
||||||
label="备注"
|
<el-table-column label="库位码" align="center" prop="pcode" width="120" />
|
||||||
align="center"
|
|
||||||
prop="remark"
|
|
||||||
width="200"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="库位码"
|
|
||||||
align="center"
|
|
||||||
prop="pcode"
|
|
||||||
width="120"
|
|
||||||
/>
|
|
||||||
<el-table-column label="托盘码" align="center" prop="trayCode" />
|
<el-table-column label="托盘码" align="center" prop="trayCode" />
|
||||||
<el-table-column
|
<el-table-column label="身份码" align="center" prop="entityId" width="200" />
|
||||||
label="身份码"
|
|
||||||
align="center"
|
|
||||||
prop="entityId"
|
|
||||||
width="200"
|
|
||||||
/>
|
|
||||||
<el-table-column label="物资类型" align="center" prop="wlTypeName" />
|
<el-table-column label="物资类型" align="center" prop="wlTypeName" />
|
||||||
<el-table-column
|
<el-table-column label="现场图片" align="center" v-if="isExamine == 1">
|
||||||
label="现场图片"
|
|
||||||
align="center"
|
|
||||||
v-if="isExamine == 1"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-image
|
<el-image :src="scope.row.scenePhotoUrl" style="width: 50px; height: 50px" :zoom-rate="1.2" :max-scale="7"
|
||||||
:src="scope.row.scenePhotoUrl"
|
:min-scale="0.2" :preview-src-list="srcList" show-progress :initial-index="4" :preview-teleported="true"
|
||||||
style="width: 50px; height: 50px"
|
@click="preview(scope.row.scenePhotoUrl)" />
|
||||||
:zoom-rate="1.2"
|
|
||||||
:max-scale="7"
|
|
||||||
:min-scale="0.2"
|
|
||||||
:preview-src-list="srcList"
|
|
||||||
show-progress
|
|
||||||
:initial-index="4"
|
|
||||||
:preview-teleported="true"
|
|
||||||
@click="preview(scope.row.scenePhotoUrl)"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column label="一次封样号" align="center" prop="fycde1" width="150" />
|
||||||
label="一次封样号"
|
<el-table-column label="二次封样号" align="center" prop="fycde2" width="150" />
|
||||||
align="center"
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150">
|
||||||
prop="fycde1"
|
|
||||||
width="150"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="二次封样号"
|
|
||||||
align="center"
|
|
||||||
prop="fycde2"
|
|
||||||
width="150"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="操作"
|
|
||||||
align="center"
|
|
||||||
class-name="small-padding fixed-width"
|
|
||||||
width="150"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
||||||
link
|
v-hasPermi="['wisdom:bill:edit']" v-show="scope.row.execStatus == 0">修改</el-button>
|
||||||
type="primary"
|
<el-button link type="primary" icon="Delete" @click="handleStockDelete(scope.row)"
|
||||||
icon="Edit"
|
v-show="scope.row.execStatus == 1" v-hasPermi="['wisdom:bill:delete']">撤销</el-button>
|
||||||
@click="handleUpdate(scope.row)"
|
|
||||||
v-hasPermi="['wisdom:bill:edit']"
|
|
||||||
>修改</el-button
|
|
||||||
>
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
type="primary"
|
|
||||||
icon="Delete"
|
|
||||||
@click="handleStockDelete(scope.row)"
|
|
||||||
v-show="scope.row.execStatus == 1"
|
|
||||||
v-hasPermi="['wisdom:bill:delete']"
|
|
||||||
>撤销</el-button
|
|
||||||
>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -386,50 +163,27 @@
|
|||||||
</el-splitter>
|
</el-splitter>
|
||||||
|
|
||||||
<!-- 添加或修改库存单据主对话框 -->
|
<!-- 添加或修改库存单据主对话框 -->
|
||||||
<el-dialog
|
<el-dialog :title="title" v-model="open" width="75%" :close-on-click-modal="false" :z-index="4" :draggable="true">
|
||||||
:title="title"
|
|
||||||
v-model="open"
|
|
||||||
width="75%"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
:z-index="4"
|
|
||||||
:draggable="true"
|
|
||||||
>
|
|
||||||
<el-form ref="stockRef" :model="storeData" :rules="rules">
|
<el-form ref="stockRef" :model="storeData" :rules="rules">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="项目号">
|
<el-form-item label="项目号">
|
||||||
<el-input
|
<el-input v-model="outQueryParams.xmNo" placeholder="请输入项目号" clearable />
|
||||||
v-model="outQueryParams.xmNo"
|
|
||||||
placeholder="请输入项目号"
|
|
||||||
clearable
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="订单号">
|
<el-form-item label="订单号">
|
||||||
<el-input
|
<el-input v-model="outQueryParams.sapNo" placeholder="请输入订单号" clearable />
|
||||||
v-model="outQueryParams.sapNo"
|
|
||||||
placeholder="请输入订单号"
|
|
||||||
clearable
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="物料号">
|
<el-form-item label="物料号">
|
||||||
<el-input
|
<el-input v-model="outQueryParams.wlNo" placeholder="请输入物料号" clearable />
|
||||||
v-model="outQueryParams.wlNo"
|
|
||||||
placeholder="请输入物料号"
|
|
||||||
clearable
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="物料描述">
|
<el-form-item label="物料描述">
|
||||||
<el-input
|
<el-input v-model="outQueryParams.wlMs" placeholder="请输入物料描述" clearable />
|
||||||
v-model="outQueryParams.wlMs"
|
|
||||||
placeholder="请输入物料描述"
|
|
||||||
clearable
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -446,33 +200,18 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="物资类型">
|
<el-form-item label="物资类型">
|
||||||
<el-select
|
<el-select v-model="outQueryParams.wlType" placeholder="请选择物资类型" clearable>
|
||||||
v-model="outQueryParams.wlType"
|
<el-option v-for="dict in wzlxList" :key="dict.id" :label="dict.typeName" :value="dict.typeCode" />
|
||||||
placeholder="请选择物资类型"
|
|
||||||
clearable
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in wzlxList"
|
|
||||||
:key="dict.id"
|
|
||||||
:label="dict.typeName"
|
|
||||||
:value="dict.typeCode"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="所属仓库">
|
<el-form-item label="所属仓库">
|
||||||
<el-cascader
|
<el-cascader style="width: 100%" :options="warehouseList" v-model="outQueryParams.cangku" :props="{
|
||||||
style="width: 100%"
|
|
||||||
:options="warehouseList"
|
|
||||||
v-model="outQueryParams.cangku"
|
|
||||||
:props="{
|
|
||||||
children: 'children',
|
children: 'children',
|
||||||
label: 'warehouseName',
|
label: 'warehouseName',
|
||||||
value: 'warehouseCode',
|
value: 'warehouseCode',
|
||||||
}"
|
}" clearable />
|
||||||
clearable
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -495,60 +234,28 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="出库类型" prop="operationType">
|
<el-form-item label="出库类型" prop="operationType">
|
||||||
<el-select
|
<el-select v-model="storeData.operationType" placeholder="请选择出库类型" clearable>
|
||||||
v-model="storeData.operationType"
|
<el-option v-for="dict in storeTypeList" :key="dict.id" :label="dict.typeName" :value="dict.typeCode" />
|
||||||
placeholder="请选择出库类型"
|
|
||||||
clearable
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in storeTypeList"
|
|
||||||
:key="dict.id"
|
|
||||||
:label="dict.typeName"
|
|
||||||
:value="dict.typeCode"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="施工队" prop="teamCode">
|
<el-form-item label="施工队" prop="teamCode">
|
||||||
<el-select
|
<el-select v-model="storeData.teamCode" placeholder="请选择施工队" clearable filterable>
|
||||||
v-model="storeData.teamCode"
|
<el-option v-for="dict in wzTypeList" :key="dict.id" :label="dict.teamName" :value="dict.teamCode" />
|
||||||
placeholder="请选择施工队"
|
|
||||||
clearable
|
|
||||||
filterable
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in wzTypeList"
|
|
||||||
:key="dict.id"
|
|
||||||
:label="dict.teamName"
|
|
||||||
:value="dict.teamCode"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="理货员" prop="operator">
|
<el-form-item label="理货员" prop="operator">
|
||||||
<el-select
|
<el-select v-model="storeData.operator" placeholder="请选择理货员" clearable>
|
||||||
v-model="storeData.operator"
|
<el-option v-for="dict in personList" :key="dict.userId" :label="dict.userName" :value="dict.userId" />
|
||||||
placeholder="请选择理货员"
|
|
||||||
clearable
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in personList"
|
|
||||||
:key="dict.userId"
|
|
||||||
:label="dict.userName"
|
|
||||||
:value="dict.userId"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="是否配送" prop="isDelivery">
|
<el-form-item label="是否配送" prop="isDelivery">
|
||||||
<el-select
|
<el-select v-model="storeData.isDelivery" placeholder="请选择是否配送" clearable>
|
||||||
v-model="storeData.isDelivery"
|
|
||||||
placeholder="请选择是否配送"
|
|
||||||
clearable
|
|
||||||
>
|
|
||||||
<el-option :key="1" label="是" value="1" />
|
<el-option :key="1" label="是" value="1" />
|
||||||
<el-option :key="0" label="否" value="0" />
|
<el-option :key="0" label="否" value="0" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -556,17 +263,8 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="库存状态" prop="execStatus">
|
<el-form-item label="库存状态" prop="execStatus">
|
||||||
<el-select
|
<el-select v-model="storeData.execStatus" placeholder="请选择" clearable>
|
||||||
v-model="storeData.execStatus"
|
<el-option v-for="dict in execStatusList" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
placeholder="请选择"
|
|
||||||
clearable
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in execStatusList"
|
|
||||||
:key="dict.value"
|
|
||||||
:label="dict.label"
|
|
||||||
:value="dict.value"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -574,14 +272,21 @@
|
|||||||
<div class="addOutBoundBox">
|
<div class="addOutBoundBox">
|
||||||
<div style="display: flex;align-items: center;">
|
<div style="display: flex;align-items: center;">
|
||||||
<div class="addOutBound" @click="addOutBoundData">
|
<div class="addOutBound" @click="addOutBoundData">
|
||||||
<el-icon style="margin-right: 10px;" size="20"><FolderAdd /></el-icon>
|
<el-icon style="margin-right: 10px;" size="20">
|
||||||
|
<FolderAdd />
|
||||||
|
</el-icon>
|
||||||
添加至出库
|
添加至出库
|
||||||
</div>
|
</div>
|
||||||
<div @click="viewOutBoundData" style="color: #000;text-decoration: underline;margin-left: 5px;">[已添加{{ outBoundData.length }}条库存]</div>
|
<div @click="viewOutBoundData" style="color: #000;text-decoration: underline;margin-left: 5px;">[已添加{{
|
||||||
<div @click="viewOutBoundData" style="color: red;text-decoration: underline;font-weight: bold;">[凭证重复出库或项目已关闭,请点击查看!]</div>
|
outBoundData.length }}条库存]</div>
|
||||||
|
<div @click="viewOutBoundData" style="color: red;text-decoration: underline;font-weight: bold;">
|
||||||
|
[凭证重复出库或项目已关闭,请点击查看!]</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-show="outBoundData.length > 0 && planList.length === outBoundData.length" @click="deleteOutBoundData" style="display: flex;align-items: center;color: var(--el-color-primary);">
|
<div v-show="outBoundData.length > 0 && planList.length === outBoundData.length" @click="deleteOutBoundData"
|
||||||
<el-icon><delete /></el-icon>
|
style="display: flex;align-items: center;color: var(--el-color-primary);">
|
||||||
|
<el-icon>
|
||||||
|
<delete />
|
||||||
|
</el-icon>
|
||||||
<span>删除</span>
|
<span>删除</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -598,135 +303,44 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row> -->
|
</el-row> -->
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-table
|
<el-table :data="planList" ref="addTableRef" height="400" border show-overflow-tooltip style="width: 100%"
|
||||||
:data="planList"
|
@selection-change="handleSelectionChange">
|
||||||
ref="addTableRef"
|
|
||||||
height="400"
|
|
||||||
border
|
|
||||||
show-overflow-tooltip
|
|
||||||
style="width: 100%"
|
|
||||||
@selection-change="handleSelectionChange"
|
|
||||||
>
|
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column label="序号" type="index" align="center" width="70" />
|
<el-table-column label="序号" type="index" align="center" width="70" />
|
||||||
<el-table-column
|
<el-table-column label="物料号" align="center" prop="wlNo" width="100" />
|
||||||
label="物料号"
|
<el-table-column label="订单号" align="center" prop="sapNo" width="100" />
|
||||||
align="center"
|
<el-table-column label="物料描述" align="center" prop="wlMs" width="200" />
|
||||||
prop="wlNo"
|
<el-table-column label="出库数量" align="center" prop="realQty" width="100">
|
||||||
width="100"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="订单号"
|
|
||||||
align="center"
|
|
||||||
prop="sapNo"
|
|
||||||
width="100"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="物料描述"
|
|
||||||
align="center"
|
|
||||||
prop="wlMs"
|
|
||||||
width="200"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="出库数量"
|
|
||||||
align="center"
|
|
||||||
prop="realQty"
|
|
||||||
width="100"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input
|
<el-input v-model="scope.row.realQty" placeholder="请输入出库数量" />
|
||||||
v-model="scope.row.realQty"
|
|
||||||
placeholder="请输入出库数量"
|
|
||||||
/>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="单价" align="center" prop="htDj" />
|
<el-table-column label="单价" align="center" prop="htDj" />
|
||||||
<el-table-column label="单位" align="center" prop="dw" />
|
<el-table-column label="单位" align="center" prop="dw" />
|
||||||
<el-table-column
|
<el-table-column label="库位" align="center" prop="pcode" width="150"></el-table-column>
|
||||||
label="库位"
|
<el-table-column label="项目定义号" align="center" prop="xmNo" width="150" />
|
||||||
align="center"
|
<el-table-column label="项目名称" align="center" prop="xmMs" width="250" />
|
||||||
prop="pcode"
|
<el-table-column label="供应商" align="center" prop="gysMc" width="200" />
|
||||||
width="150"
|
<el-table-column label="容器码" align="center" prop="trayCode"></el-table-column>
|
||||||
></el-table-column>
|
<el-table-column label="身份码" align="center" prop="entityId" width="200"></el-table-column>
|
||||||
<el-table-column
|
|
||||||
label="项目定义号"
|
|
||||||
align="center"
|
|
||||||
prop="xmNo"
|
|
||||||
width="150"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="项目名称"
|
|
||||||
align="center"
|
|
||||||
prop="xmMs"
|
|
||||||
width="250"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="供应商"
|
|
||||||
align="center"
|
|
||||||
prop="gysMc"
|
|
||||||
width="200"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="容器码"
|
|
||||||
align="center"
|
|
||||||
prop="trayCode"
|
|
||||||
></el-table-column>
|
|
||||||
<el-table-column
|
|
||||||
label="身份码"
|
|
||||||
align="center"
|
|
||||||
prop="entityId"
|
|
||||||
width="200"
|
|
||||||
></el-table-column>
|
|
||||||
<el-table-column label="备注" align="center" width="200">
|
<el-table-column label="备注" align="center" width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-input
|
<el-input v-model="scope.row.remark" placeholder="请输入备注"></el-input>
|
||||||
v-model="scope.row.remark"
|
|
||||||
placeholder="请输入备注"
|
|
||||||
></el-input>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column label="一次封样号" align="center" prop="fycde1" width="150" />
|
||||||
label="一次封样号"
|
<el-table-column label="二次封样号" align="center" prop="fycde2" width="150" />
|
||||||
align="center"
|
<el-table-column label="上传" align="center" width="150" v-if="isExamine == 1">
|
||||||
prop="fycde1"
|
|
||||||
width="150"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="二次封样号"
|
|
||||||
align="center"
|
|
||||||
prop="fycde2"
|
|
||||||
width="150"
|
|
||||||
/>
|
|
||||||
<el-table-column
|
|
||||||
label="上传"
|
|
||||||
align="center"
|
|
||||||
width="150"
|
|
||||||
v-if="isExamine == 1"
|
|
||||||
>
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-upload
|
<el-upload class="upload-demo" :action="actionUrl" :multiple="false" :headers="headers"
|
||||||
class="upload-demo"
|
:on-preview="handlePreview" :on-remove="function (response) {
|
||||||
:action="actionUrl"
|
|
||||||
:multiple="false"
|
|
||||||
:headers="headers"
|
|
||||||
:on-preview="handlePreview"
|
|
||||||
:on-remove="
|
|
||||||
function (response) {
|
|
||||||
return handleRemove(response, scope.row.id);
|
return handleRemove(response, scope.row.id);
|
||||||
}
|
}
|
||||||
"
|
" :on-success="function (response) {
|
||||||
:on-success="
|
|
||||||
function (response) {
|
|
||||||
return handleAvatarSuccess(response, scope.row.id);
|
return handleAvatarSuccess(response, scope.row.id);
|
||||||
}
|
}
|
||||||
"
|
">
|
||||||
>
|
<el-button type="primary" size="small" v-show="!scope.row.photoUrl">选择图片</el-button>
|
||||||
<el-button
|
|
||||||
type="primary"
|
|
||||||
size="small"
|
|
||||||
v-show="!scope.row.photoUrl"
|
|
||||||
>选择图片</el-button
|
|
||||||
>
|
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@@ -739,18 +353,8 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="审批人">
|
<el-form-item label="审批人">
|
||||||
<el-select
|
<el-select v-model="storeData.approverId" clearable filterable placeholder="请选择审批人">
|
||||||
v-model="storeData.approverId"
|
<el-option v-for="dict in personList" :key="dict.userId" :label="dict.userName" :value="dict.userId" />
|
||||||
clearable
|
|
||||||
filterable
|
|
||||||
placeholder="请选择审批人"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in personList"
|
|
||||||
:key="dict.userId"
|
|
||||||
:label="dict.userName"
|
|
||||||
:value="dict.userId"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -766,52 +370,20 @@
|
|||||||
|
|
||||||
<!-- 修改主单据等字段 -->
|
<!-- 修改主单据等字段 -->
|
||||||
<el-dialog title="修改" v-model="openBill" append-to-body width="40%">
|
<el-dialog title="修改" v-model="openBill" append-to-body width="40%">
|
||||||
<el-form
|
<el-form :model="billData" :rules="rules" ref="editRef" label-width="100px">
|
||||||
:model="billData"
|
|
||||||
:rules="rules"
|
|
||||||
ref="editRef"
|
|
||||||
label-width="100px"
|
|
||||||
>
|
|
||||||
<el-form-item label="出库类型" prop="operationType">
|
<el-form-item label="出库类型" prop="operationType">
|
||||||
<el-select
|
<el-select v-model="billData.operationType" placeholder="请选择出库类型" clearable>
|
||||||
v-model="billData.operationType"
|
<el-option v-for="dict in storeTypeList" :key="dict.id" :label="dict.typeName" :value="dict.typeCode" />
|
||||||
placeholder="请选择出库类型"
|
|
||||||
clearable
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in storeTypeList"
|
|
||||||
:key="dict.id"
|
|
||||||
:label="dict.typeName"
|
|
||||||
:value="dict.typeCode"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="施工队" prop="teamCode">
|
<el-form-item label="施工队" prop="teamCode">
|
||||||
<el-select
|
<el-select v-model="billData.teamCode" placeholder="请选择施工队" clearable>
|
||||||
v-model="billData.teamCode"
|
<el-option v-for="dict in wzTypeList" :key="dict.id" :label="dict.teamName" :value="dict.teamCode" />
|
||||||
placeholder="请选择施工队"
|
|
||||||
clearable
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in wzTypeList"
|
|
||||||
:key="dict.id"
|
|
||||||
:label="dict.teamName"
|
|
||||||
:value="dict.teamCode"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="理货员" prop="operator">
|
<el-form-item label="理货员" prop="operator">
|
||||||
<el-select
|
<el-select v-model="billData.operator" placeholder="请选择理货员" clearable>
|
||||||
v-model="billData.operator"
|
<el-option v-for="dict in personList" :key="dict.userId" :label="dict.userName" :value="dict.userId" />
|
||||||
placeholder="请选择理货员"
|
|
||||||
clearable
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in personList"
|
|
||||||
:key="dict.userId"
|
|
||||||
:label="dict.userName"
|
|
||||||
:value="dict.userId"
|
|
||||||
/>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="库存状态" prop="execStatus">
|
<!-- <el-form-item label="库存状态" prop="execStatus">
|
||||||
@@ -829,11 +401,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<el-form-item label="是否配送" prop="isDelivery">
|
<el-form-item label="是否配送" prop="isDelivery">
|
||||||
<el-select
|
<el-select v-model="billData.isDelivery" placeholder="请选择是否配送" clearable>
|
||||||
v-model="billData.isDelivery"
|
|
||||||
placeholder="请选择是否配送"
|
|
||||||
clearable
|
|
||||||
>
|
|
||||||
<el-option :key="1" label="是" value="1" />
|
<el-option :key="1" label="是" value="1" />
|
||||||
<el-option :key="0" label="否" value="0" />
|
<el-option :key="0" label="否" value="0" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@@ -847,13 +415,7 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<!-- 出库单 -->
|
<!-- 出库单 -->
|
||||||
<el-dialog
|
<el-dialog title="出库单" v-model="dialogBill" append-to-body width="80%" :close-on-click-modal="false">
|
||||||
title="出库单"
|
|
||||||
v-model="dialogBill"
|
|
||||||
append-to-body
|
|
||||||
width="80%"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
>
|
|
||||||
<bill :billAllObj="billAllObj" billStatus="ck" />
|
<bill :billAllObj="billAllObj" billStatus="ck" />
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
@@ -872,21 +434,11 @@
|
|||||||
<img w-full :src="dialogImageUrl" alt="Preview Image" />
|
<img w-full :src="dialogImageUrl" alt="Preview Image" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-dialog title="图片详情" v-model="dialogPicDetailVisible">
|
<el-dialog title="图片详情" v-model="dialogPicDetailVisible">
|
||||||
<el-image
|
<el-image style="width: 100px; height: 100px; margin-right: 20px" :src="url" v-for="url in picList" :key="url"
|
||||||
style="width: 100px; height: 100px; margin-right: 20px"
|
:preview-src-list="picList" />
|
||||||
:src="url"
|
|
||||||
v-for="url in picList"
|
|
||||||
:key="url"
|
|
||||||
:preview-src-list="picList"
|
|
||||||
/>
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<el-dialog
|
<el-dialog title="调度任务" v-model="dispatchOpen" width="30%" :close-on-click-modal="false">
|
||||||
title="调度任务"
|
|
||||||
v-model="dispatchOpen"
|
|
||||||
width="30%"
|
|
||||||
:close-on-click-modal="false"
|
|
||||||
>
|
|
||||||
<el-form>
|
<el-form>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col>
|
<el-col>
|
||||||
@@ -908,17 +460,9 @@
|
|||||||
|
|
||||||
<!-- 修改主单据,入库时间等字段 -->
|
<!-- 修改主单据,入库时间等字段 -->
|
||||||
<el-dialog title="修改" v-model="outInfoDialog" append-to-body width="40%">
|
<el-dialog title="修改" v-model="outInfoDialog" append-to-body width="40%">
|
||||||
<el-form
|
<el-form :model="outInfoData" :rules="outInfoRules" ref="outInfoRef" label-width="100px">
|
||||||
:model="outInfoData"
|
|
||||||
:rules="outInfoRules"
|
|
||||||
ref="outInfoRef"
|
|
||||||
label-width="100px"
|
|
||||||
>
|
|
||||||
<el-form-item label="出库数量" prop="realQty">
|
<el-form-item label="出库数量" prop="realQty">
|
||||||
<el-input
|
<el-input v-model="outInfoData.realQty" placeholder="请输入出库数量" />
|
||||||
v-model="outInfoData.realQty"
|
|
||||||
placeholder="请输入出库数量"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="outInfoData.remark" placeholder="请输入备注" />
|
<el-input v-model="outInfoData.remark" placeholder="请输入备注" />
|
||||||
@@ -1374,6 +918,7 @@ const editRef = ref(null);
|
|||||||
function editForm() {
|
function editForm() {
|
||||||
editRef.value.validate((valid) => {
|
editRef.value.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
delete billData.value.execStatus
|
||||||
updateBill(billData.value).then((response) => {
|
updateBill(billData.value).then((response) => {
|
||||||
proxy.$modal.msgSuccess("操作成功");
|
proxy.$modal.msgSuccess("操作成功");
|
||||||
openBill.value = false;
|
openBill.value = false;
|
||||||
@@ -1654,6 +1199,12 @@ function handleDispatch() {
|
|||||||
proxy.$modal.msgError("请勾选数据");
|
proxy.$modal.msgError("请勾选数据");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
let isDiaodu = checkStockList.value.some((item) => item.execStatus == 0);
|
||||||
|
if (isDiaodu) {
|
||||||
|
proxy.$modal.msgWarning("预出库数据不能生成调度任务");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dispatchOpen.value = true;
|
dispatchOpen.value = true;
|
||||||
}
|
}
|
||||||
// 提交调度任务
|
// 提交调度任务
|
||||||
@@ -1665,7 +1216,8 @@ function submitDispatch() {
|
|||||||
//调用生成调度任务接口
|
//调用生成调度任务接口
|
||||||
const data = checkStockList.value.map((item) => ({
|
const data = checkStockList.value.map((item) => ({
|
||||||
sourceName: item.pcode,
|
sourceName: item.pcode,
|
||||||
targetName: "V01-230101",
|
// targetName: "V01-230101",
|
||||||
|
targetName: "V01-010101",
|
||||||
taskTypeName: "下架",
|
taskTypeName: "下架",
|
||||||
taskType: 1,
|
taskType: 1,
|
||||||
mid: item.wlNo,
|
mid: item.wlNo,
|
||||||
@@ -1690,12 +1242,14 @@ function submitDispatch() {
|
|||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.addOutBoundBox {
|
.addOutBoundBox {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
||||||
.addOutBound {
|
.addOutBound {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@@ -60,29 +60,34 @@
|
|||||||
:props="{ children: 'children', label: 'warehouseName', value: 'warehouseCode' }" clearable />
|
:props="{ children: 'children', label: 'warehouseName', value: 'warehouseCode' }" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="场景" prop="scene">
|
||||||
|
<el-select v-model="queryParams.scene" placeholder="请选择场景" clearable>
|
||||||
|
<el-option v-for="dict in sceneTypeList" :key="dict.sceneCode" :label="dict.sceneName" :value="dict.sceneCode" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="供应商名称" prop="gysMc">
|
<el-form-item label="供应商名称" prop="gysMc">
|
||||||
<el-input v-model="queryParams.gysMc" placeholder="请输入供应商名称" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.gysMc" placeholder="请输入供应商名称" clearable @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="16">
|
<el-col :span="6">
|
||||||
<el-form-item label="物料描述" prop="wlMs">
|
<el-form-item label="物料描述" prop="wlMs">
|
||||||
<el-input v-model="queryParams.wlMs" placeholder="请输入物料描述" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.wlMs" placeholder="请输入物料描述" clearable @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="16">
|
<el-col :span="6">
|
||||||
<el-form-item label="备注" prop="remark">
|
|
||||||
<el-input v-model="queryParams.remark" placeholder="请输入备注" clearable @keyup.enter="handleQuery" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="入库时间" prop="optionTime">
|
<el-form-item label="入库时间" prop="optionTime">
|
||||||
<el-date-picker v-model="optionTime" type="datetimerange" start-placeholder="开始时间" end-placeholder="结束时间"
|
<el-date-picker v-model="optionTime" type="datetimerange" start-placeholder="开始时间" end-placeholder="结束时间"
|
||||||
format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" />
|
format="YYYY/MM/DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="6">
|
||||||
|
<el-form-item label="备注" prop="remark">
|
||||||
|
<el-input v-model="queryParams.remark" placeholder="请输入备注" clearable @keyup.enter="handleQuery" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="12" class="searchBtn">
|
<el-col :span="12" class="searchBtn">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
@@ -90,6 +95,7 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
@@ -134,6 +140,7 @@
|
|||||||
<el-table-column label="托盘码" align="center" prop="trayCode" />
|
<el-table-column label="托盘码" align="center" prop="trayCode" />
|
||||||
<el-table-column label="身份码" align="center" prop="entityId" width="150" />
|
<el-table-column label="身份码" align="center" prop="entityId" width="150" />
|
||||||
<el-table-column label="物资类型" align="center" prop="wlTypeName" />
|
<el-table-column label="物资类型" align="center" prop="wlTypeName" />
|
||||||
|
<el-table-column label="场景" align="center" prop="sceneName" width="150" />
|
||||||
<el-table-column label="所属大库" align="center" prop="parentWarehouseName" width="150" />
|
<el-table-column label="所属大库" align="center" prop="parentWarehouseName" width="150" />
|
||||||
<el-table-column label="所属小库" align="center" prop="warehouseName" width="150" />
|
<el-table-column label="所属小库" align="center" prop="warehouseName" width="150" />
|
||||||
<el-table-column label="入库类型" align="center" prop="operationTypeName" width="150" />
|
<el-table-column label="入库类型" align="center" prop="operationTypeName" width="150" />
|
||||||
@@ -334,6 +341,7 @@ import { listStock, getTotal, editStock, printTag } from "@/api/wisdom/
|
|||||||
import { warehousingDict } from "@/api/information/warehousingtype"; //入库类型
|
import { warehousingDict } from "@/api/information/warehousingtype"; //入库类型
|
||||||
import { materialtypeDict } from "@/api/information/materialtype"; //物资类型
|
import { materialtypeDict } from "@/api/information/materialtype"; //物资类型
|
||||||
import { warehouseAll } from "@/api/information/warehouseinfo"; //所属仓库
|
import { warehouseAll } from "@/api/information/warehouseinfo"; //所属仓库
|
||||||
|
import { listScene } from "@/api/information/scene"; //所属仓库
|
||||||
import { personListDict } from "@/api/system/user"; //理货员
|
import { personListDict } from "@/api/system/user"; //理货员
|
||||||
import { getKwAllList } from "@/api/information/pcdedetail"; //库位下拉数据
|
import { getKwAllList } from "@/api/information/pcdedetail"; //库位下拉数据
|
||||||
import { parseTime } from '@/utils/manage'
|
import { parseTime } from '@/utils/manage'
|
||||||
@@ -456,6 +464,14 @@ function materialFun() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
materialFun()
|
materialFun()
|
||||||
|
//场景下拉
|
||||||
|
const sceneTypeList = ref([]);
|
||||||
|
function listSceneFun() {
|
||||||
|
listScene().then(response => {
|
||||||
|
sceneTypeList.value = response.rows
|
||||||
|
})
|
||||||
|
}
|
||||||
|
listSceneFun()
|
||||||
|
|
||||||
//理货员
|
//理货员
|
||||||
const personList = ref([]);
|
const personList = ref([]);
|
||||||
|
|||||||
Reference in New Issue
Block a user