|
|
@ -3,11 +3,11 @@ |
|
|
|
<div class="head-container"> |
|
|
|
<div class="head-search"> |
|
|
|
<!-- 搜索 --> |
|
|
|
<el-select v-model="query.status" clearable size="small" placeholder="盘点状态" class="filter-item" style="width: 120px" @change="crud.toQuery"> |
|
|
|
<el-select v-model="query.stockStatus" clearable size="small" placeholder="盘点状态" class="filter-item" style="width: 120px" @change="crud.toQuery"> |
|
|
|
<i slot="prefix" class="iconfont icon-zhuangtai" /> |
|
|
|
<el-option v-for="item in statusOptions" :key="item.key" :label="item.display_name" :value="item.key" /> |
|
|
|
</el-select> |
|
|
|
<el-select v-model="query.status" clearable size="small" placeholder="盘点类型" class="filter-item" style="width: 120px" @change="crud.toQuery"> |
|
|
|
<el-select v-model="query.stockType" clearable size="small" placeholder="盘点类型" class="filter-item" style="width: 120px" @change="crud.toQuery"> |
|
|
|
<i slot="prefix" class="iconfont icon-zhuangtai" /> |
|
|
|
<el-option v-for="item in TypeOptions" :key="item.key" :label="item.display_name" :value="item.key" /> |
|
|
|
</el-select> |
|
|
@ -21,12 +21,6 @@ |
|
|
|
全量盘点 |
|
|
|
</el-button> |
|
|
|
</template> |
|
|
|
<template v-slot:right> |
|
|
|
<el-button :loading="crud.downloadLoading" size="mini" :disabled="crud.selections.length === 0" @click="doExport(crud.selections)"> |
|
|
|
<i class="iconfont icon-daochu" /> |
|
|
|
导出 |
|
|
|
</el-button> |
|
|
|
</template> |
|
|
|
</crudOperation> |
|
|
|
</div> |
|
|
|
<div class="container-wrap"> |
|
|
@ -38,33 +32,52 @@ |
|
|
|
class="archives-table" |
|
|
|
:data="crud.data" |
|
|
|
style="width: 100%;" |
|
|
|
height="540" |
|
|
|
height="calc(100vh - 329px)" |
|
|
|
@selection-change="crud.selectionChangeHandler" |
|
|
|
@row-click="clickRowHandler" |
|
|
|
@row-dblclick="handleDbClick" |
|
|
|
> |
|
|
|
<el-table-column prop="regionName" label="盘点单号" /> |
|
|
|
<el-table-column prop="regionCode" label="盘点类型" /> |
|
|
|
<el-table-column prop="floorName" label="目标位置" /> |
|
|
|
<el-table-column prop="booksheflCount" label="目标数量" /> |
|
|
|
<el-table-column prop="booksheflCount" label="备注" /> |
|
|
|
<el-table-column prop="createTime" label="盘点开始时间"> |
|
|
|
<el-table-column prop="stockBill" label="盘点单号" /> |
|
|
|
<el-table-column prop="stockType" label="盘点类型"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="scope.row.stockType===1">全量盘点</span> |
|
|
|
<span v-if="scope.row.stockType===2">区域盘点</span> |
|
|
|
<span v-if="scope.row.stockType===3">计划盘点</span> |
|
|
|
<span v-if="scope.row.stockType===4">书架盘点</span> |
|
|
|
<span v-if="scope.row.stockType===5">架位盘点</span> |
|
|
|
<span v-if="scope.row.stockType===6">层位盘点</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="stockRegion" label="目标位置" :show-overflow-tooltip="true" /> |
|
|
|
<el-table-column prop="stockGridNum" label="目标数量"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<div>{{ scope.row.stockGridNum + ' / 层位' }}</div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="stockRemarks" label="备注"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<div>{{ scope.row.createTime | parseTime }}</div> |
|
|
|
<div v-if="scope.row.stockRemarks !== null">{{ scope.row.stockRemarks }}</div> |
|
|
|
<div v-else>-</div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="createTime" label="盘点结束时间"> |
|
|
|
<el-table-column prop="startTime" label="盘点开始时间"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<div>{{ scope.row.createTime | parseTime }}</div> |
|
|
|
<div v-if="scope.row.startTime !== null">{{ scope.row.startTime | parseTime }}</div> |
|
|
|
<div v-else>-</div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column label="盘点状态" align="center" prop="deptsStatus"> |
|
|
|
<!-- slot-scope="scope" --> |
|
|
|
<template> |
|
|
|
<span class="row-state row-warehousing state-active">排队中</span> |
|
|
|
<!-- <span class="row-state row-binding state-active">盘点中</span> |
|
|
|
<span class="row-state row-lending state-active">已终止</span> |
|
|
|
<span class="row-state row-physical state-active">已完成</span> --> |
|
|
|
<el-table-column prop="endTime" label="盘点结束时间"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<div v-if="scope.row.endTime !== null">{{ scope.row.endTime | parseTime }}</div> |
|
|
|
<div v-else>-</div> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="state" label="盘点状态" align="center"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="scope.row.state === 0" class="row-state row-lending state-active">已终止</span> |
|
|
|
<span v-if="scope.row.state === 1" class="row-state row-warehousing state-active">排队中</span> |
|
|
|
<span v-if="scope.row.state === 2" class="row-state row-binding state-active">盘点中</span> |
|
|
|
<span v-if="scope.row.state === 3" class="row-state row-physical state-active">已完成</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
@ -79,16 +92,16 @@ |
|
|
|
<div class="setting-dialog"> |
|
|
|
<el-form ref="form" :inline="true" :model="form" :rules="rules" size="small" label-width="80px"> |
|
|
|
<el-form-item label="盘点单号" prop="taskName"> |
|
|
|
<el-input v-model="form.taskName" /> |
|
|
|
<el-input v-model="form.taskName" disabled /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="盘点类型" prop="taskType"> |
|
|
|
<el-input v-model="form.taskType" /> |
|
|
|
<el-input v-model="form.taskType" disabled /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="目标位置" prop="location"> |
|
|
|
<el-input v-model="form.location" /> |
|
|
|
<el-input v-model="form.location" disabled /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="目标数量" prop="number"> |
|
|
|
<el-input v-model="form.number" /> |
|
|
|
<el-input v-model="form.number" disabled /> |
|
|
|
</el-form-item> |
|
|
|
<el-row> |
|
|
|
<el-form-item label="备注" prop="remark"> |
|
|
@ -112,62 +125,100 @@ |
|
|
|
<li :class="{'active-tab-nav': tabIndex === 0}" @click="changeDetailTab(0)">基础信息</li> |
|
|
|
<li :class="{'active-tab-nav': tabIndex === 1}" @click="changeDetailTab(1)">层位盘点信息</li> |
|
|
|
</ul> |
|
|
|
<el-button v-if="detailInfo.state === 3" style="position: absolute; right: 0; top: -10px;" size="mini" @click="doExport(detailInfo)"> |
|
|
|
<i class="iconfont icon-daochu" /> |
|
|
|
导出 |
|
|
|
</el-button> |
|
|
|
<div v-if="tabIndex===0" class="detail-check"> |
|
|
|
<ul class="book-detail"> |
|
|
|
<li><span>盘点单号:</span>P20241209001</li> |
|
|
|
<li><span>盘点类型:</span>全量盘点</li> |
|
|
|
<li><span>目标位置:</span>全部区域</li> |
|
|
|
<li><span>目标数量:</span>396 / 层位</li> |
|
|
|
<li class="row-li"><span>备注:</span></li> |
|
|
|
<li><span>开始时间:</span>2024-12-09 08:00:00</li> |
|
|
|
<li><span>结束时间:</span>2024-12-09 09:00:00</li> |
|
|
|
<li><span>盘点单号:</span>{{ detailInfo.stockBill }}</li> |
|
|
|
|
|
|
|
<li v-if="detailInfo.stockType===1"><span>盘点类型:</span>全量盘点</li> |
|
|
|
<li v-if="detailInfo.stockType===2"><span>盘点类型:</span>区域盘点</li> |
|
|
|
<li v-if="detailInfo.stockType===3"><span>盘点类型:</span>计划盘点</li> |
|
|
|
<li v-if="detailInfo.stockType===4"><span>盘点类型:</span>书架盘点</li> |
|
|
|
<li v-if="detailInfo.stockType===5"><span>盘点类型:</span>架位盘点</li> |
|
|
|
<li v-if="detailInfo.stockType===6"><span>盘点类型:</span>层位盘点</li> |
|
|
|
|
|
|
|
<li><span>目标位置:</span>{{ detailInfo.stockRegion }}</li> |
|
|
|
<li><span>目标数量:</span>{{ detailInfo.stockGridNum }} / 层位</li> |
|
|
|
|
|
|
|
<li v-if="detailInfo.stockRemarks !== null" class="row-li"><span>备注:</span>{{ detailInfo.stockRemarks }}</li> |
|
|
|
<li v-else class="row-li"><span>备注:</span>-</li> |
|
|
|
|
|
|
|
<li v-if="detailInfo.startTime !== null"><span>开始时间:</span>{{ detailInfo.startTime | parseTime }}</li> |
|
|
|
<li v-else><span>开始时间:</span>-</li> |
|
|
|
|
|
|
|
<li v-if="detailInfo.endTime !== null"><span>结束时间:</span>{{ detailInfo.endTime | parseTime }}</li> |
|
|
|
<li v-else><span>结束时间:</span>-</li> |
|
|
|
<li class="row-li" style="margin-left: 30px;"> |
|
|
|
<i class="row-state soon-state">排队中</i> |
|
|
|
<!-- <i class="row-state end-state">盘点中</i> |
|
|
|
<i class="row-state cancel-state">已终止</i> |
|
|
|
<i class="row-state ing-state">已完成</i> --> |
|
|
|
<i v-if="detailInfo.state === 0" class="row-state cancel-state">已终止</i> |
|
|
|
<i v-if="detailInfo.state === 1" class="row-state soon-state">排队中</i> |
|
|
|
<i v-if="detailInfo.state === 2" class="row-state end-state">盘点中</i> |
|
|
|
<i v-if="detailInfo.state === 3" class="row-state ing-state">已完成</i> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
<div class="detail-other"> |
|
|
|
<ul class="book-detail"> |
|
|
|
<li class="row-li"><span>在架图书:</span>40000 / 册</li> |
|
|
|
<li><span>错架图书:</span>30 / 册</li> |
|
|
|
<li><span>错架率:</span>0.75%</li> |
|
|
|
<li><span>错序图书:</span>5 / 册</li> |
|
|
|
<li><span>错序率:</span>0.01%</li> |
|
|
|
<li class="row-li"><span>在架图书:</span><p><i style=" font-weight: bold;">{{ detailInfo.onShelfNum }}</i> / 册</p></li> |
|
|
|
<li><span>错架图书:</span><p><i style="color:#ED4A41; font-weight: bold;">{{ detailInfo.errorShelfNum }}</i> / 册</p></li> |
|
|
|
<li><span>错架率:</span><p style="color:#ED4A41; font-weight: bold;">{{ detailInfo.errorShelfProba }}</p></li> |
|
|
|
<li><span>错序图书:</span><p><i style="color:#0348f3; font-weight: bold;">{{ detailInfo.errorOrderNum }}</i> / 册</p></li> |
|
|
|
<li><span>错序率:</span><p style="color:#0348f3; font-weight: bold;">{{ detailInfo.errorOrderProba }}</p></li> |
|
|
|
</ul> |
|
|
|
<div> |
|
|
|
图表部分 |
|
|
|
<!-- 图表部分 --> |
|
|
|
<div style="width: 60%; height: 140px;"> |
|
|
|
<taskStockLogEcharts :task-stock-log-data="taskStockLogData" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div v-if="tabIndex===1"> |
|
|
|
<el-table |
|
|
|
ref="table" |
|
|
|
v-loading="gridTableLoading" |
|
|
|
class="archives-table" |
|
|
|
:data="detailTable" |
|
|
|
style="width: 100%;" |
|
|
|
> |
|
|
|
<el-table-column prop="regionCode" label="层位架" /> |
|
|
|
<el-table-column prop="gridName" label="层位架" min-width="180" :show-overflow-tooltip="true" /> |
|
|
|
<el-table-column prop="floorName" label="楼层" /> |
|
|
|
<el-table-column prop="booksheflCount" label="区域" /> |
|
|
|
<el-table-column prop="booksheflCount" label="盘点详情" /> |
|
|
|
<el-table-column prop="booksheflCount" label="进度" /> |
|
|
|
<el-table-column prop="createTime" label="状态"> |
|
|
|
<!-- slot-scope="scope" --> |
|
|
|
<template> |
|
|
|
<span class="row-state row-warehousing state-active">排队中</span> |
|
|
|
<!-- <span class="row-state row-binding state-active">盘点中</span> |
|
|
|
<span class="row-state row-lending state-active">已终止</span> |
|
|
|
<span class="row-state row-physical state-active">已完成</span> --> |
|
|
|
<el-table-column prop="regionName" label="区域" /> |
|
|
|
<el-table-column prop="booksheflCount" label="盘点详情" min-width="280" :show-overflow-tooltip="true"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<ul class="detail-table-info"> |
|
|
|
<li><span>在架:</span><p><i>{{ scope.row.onShelfNum }}</i> / 册</p> </li> |
|
|
|
<li><span>错架:</span><p><i style="color:#ED4A41;">{{ scope.row.errorShelfNum }}</i> / 册</p> </li> |
|
|
|
<li><span>错序:</span><p><i style="color:#0348f3;">{{ scope.row.errorOrderNum }}</i> / 册</p> </li> |
|
|
|
</ul> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="progress" label="进度" min-width="140" /> |
|
|
|
<el-table-column prop="state" label="状态" width="80"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<span v-if="scope.row.state === 0" class="row-state row-lending state-active">已终止</span> |
|
|
|
<span v-if="scope.row.state === 1" class="row-state row-warehousing state-active">排队中</span> |
|
|
|
<span v-if="scope.row.state === 2" class="row-state row-binding state-active">盘点中</span> |
|
|
|
<span v-if="scope.row.state === 3" class="row-state row-physical state-active">已完成</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
<el-pagination |
|
|
|
v-if="detailTable.length !== 0" |
|
|
|
:page-size.sync="detailPage.size" |
|
|
|
:total="detailPage.total" |
|
|
|
:current-page.sync="detailPage.page" |
|
|
|
style="margin-top: 8px;" |
|
|
|
:pager-count="5" |
|
|
|
layout="total, sizes, prev, pager, next" |
|
|
|
@size-change="handleSizeChange" |
|
|
|
@current-change="handleCurrentPage" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
<el-button type="primary" class="end-btn"><i class="iconfont icon-stop" />终止盘点</el-button> |
|
|
|
<!-- 排队中会多一个“删除盘点” 进行中的多一个“终止盘点” --> |
|
|
|
<el-button v-if="detailInfo.state === 1" type="primary" class="end-btn"><i class="iconfont icon-stop" />删除盘点</el-button> |
|
|
|
<el-button v-if="detailInfo.state === 2" type="primary" class="end-btn"><i class="iconfont icon-stop" />终止盘点</el-button> |
|
|
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="detailVisible=false">确定</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -177,21 +228,22 @@ |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import crudRegion from '@/api/area/index' |
|
|
|
import crudStockTaskLog from '@/api/stockTaskLog/index' |
|
|
|
import CRUD, { presenter, header, form, crud } from '@crud/crud' |
|
|
|
import crudOperation from '@crud/CRUD.operation' |
|
|
|
import rrOperation from '@crud/RR.operation' |
|
|
|
import pagination from '@crud/Pagination' |
|
|
|
import taskStockLogEcharts from '@/views/components/echarts/taskStockLog.vue' |
|
|
|
import { mapGetters } from 'vuex' |
|
|
|
// import { exportFile } from '@/utils/index' |
|
|
|
// import qs from 'qs' |
|
|
|
import { parseTime, saveAs, getBlob } from '@/utils/index' |
|
|
|
import qs from 'qs' |
|
|
|
|
|
|
|
const defaultForm = { id: null, taskType: null, taskName: null, location: null, number: null, remark: null } |
|
|
|
export default { |
|
|
|
name: 'CheckLog', |
|
|
|
components: { crudOperation, rrOperation, pagination }, |
|
|
|
components: { crudOperation, rrOperation, pagination, taskStockLogEcharts }, |
|
|
|
cruds() { |
|
|
|
return CRUD({ title: '盘点', url: 'api/libraryRegion/initLibraryRegionList', crudMethod: { ...crudRegion }, sort: [], optShow: { |
|
|
|
return CRUD({ title: '盘点日志', idField: 'billId', url: 'api/stocktask-task/initStockLogList', crudMethod: { ...crudStockTaskLog }, sort: [], optShow: { |
|
|
|
add: false, |
|
|
|
edit: false, |
|
|
|
del: false, |
|
|
@ -204,22 +256,31 @@ export default { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
statusOptions: [ |
|
|
|
{ key: '1', display_name: '排队中' }, |
|
|
|
{ key: '2', display_name: '进行中' }, |
|
|
|
{ key: '3', display_name: '已终止' }, |
|
|
|
{ key: '4', display_name: '已完成' } |
|
|
|
{ key: 0, display_name: '已终止' }, |
|
|
|
{ key: 1, display_name: '排队中' }, |
|
|
|
{ key: 2, display_name: '盘点中' }, |
|
|
|
{ key: 3, display_name: '已完成' } |
|
|
|
], |
|
|
|
TypeOptions: [ |
|
|
|
{ key: '1', display_name: '计划盘点' }, |
|
|
|
{ key: '2', display_name: '全量盘点' }, |
|
|
|
{ key: '3', display_name: '区域盘点' }, |
|
|
|
{ key: '4', display_name: '书架盘点' }, |
|
|
|
{ key: '5', display_name: '架位盘点' }, |
|
|
|
{ key: '6', display_name: '层位盘点' } |
|
|
|
{ key: 1, display_name: '全量盘点' }, |
|
|
|
{ key: 2, display_name: '区域盘点' }, |
|
|
|
{ key: 3, display_name: '计划盘点' }, |
|
|
|
{ key: 4, display_name: '书架盘点' }, |
|
|
|
{ key: 5, display_name: '架位盘点' }, |
|
|
|
{ key: 6, display_name: '层位盘点' } |
|
|
|
], |
|
|
|
tabIndex: 0, |
|
|
|
detailVisible: false, |
|
|
|
detailTable: [{}], |
|
|
|
dbRowData: {}, |
|
|
|
detailInfo: {}, |
|
|
|
taskStockLogData: [], |
|
|
|
gridTableLoading: false, |
|
|
|
detailPage: { |
|
|
|
page: 1, |
|
|
|
size: 10, |
|
|
|
total: 0 |
|
|
|
}, |
|
|
|
detailTable: [], |
|
|
|
permission: { |
|
|
|
add: ['admin', 'checkLog:add'], |
|
|
|
edit: ['admin', 'checkLog:edit'], |
|
|
@ -267,82 +328,94 @@ export default { |
|
|
|
this.$refs.table.clearSelection() |
|
|
|
this.$refs.table.toggleRowSelection(row) |
|
|
|
}, |
|
|
|
toDelete(datas) { |
|
|
|
this.$confirm('此操作将删除当前任务<span>你是否还要继续?</span>', '提示', { |
|
|
|
doExport(data) { |
|
|
|
this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', { |
|
|
|
confirmButtonText: '继续', |
|
|
|
cancelButtonText: '取消', |
|
|
|
type: 'warning', |
|
|
|
dangerouslyUseHTMLString: true |
|
|
|
}).then(() => { |
|
|
|
this.crud.delAllLoading = true |
|
|
|
const ids = [] |
|
|
|
datas.forEach(val => { |
|
|
|
ids.push(val.id) |
|
|
|
const params = { |
|
|
|
'billId': data.id |
|
|
|
} |
|
|
|
const fileName = '盘点单-' + parseTime(new Date()) + '.xlsx' |
|
|
|
getBlob(this.baseApi + '/api/stocktask-task/exportStockBill' + '?' + qs.stringify(params, { indices: false }), function(blob) { |
|
|
|
saveAs(blob, fileName) |
|
|
|
}) |
|
|
|
console.log(ids) |
|
|
|
// crudRegion.del(ids).then(res => { |
|
|
|
// console.log(res) |
|
|
|
// this.$message({ message: res, type: 'success', offset: 8 }) |
|
|
|
// this.crud.delAllLoading = false |
|
|
|
// this.crud.refresh() |
|
|
|
// }).catch(err => { |
|
|
|
// this.crud.delAllLoading = false |
|
|
|
// console.log(err) |
|
|
|
// }) |
|
|
|
}).catch(() => { |
|
|
|
this.crud.delAllLoading = false |
|
|
|
}) |
|
|
|
}, |
|
|
|
// 改变状态 |
|
|
|
changeStatus(data, val) { |
|
|
|
data.id = data.deptsId |
|
|
|
this.$confirm('此操作将禁用 / 启用当前任务' + '<span>你是否还要继续?</span>', '提示', { |
|
|
|
confirmButtonText: '继续', |
|
|
|
cancelButtonText: '取消', |
|
|
|
type: 'warning', |
|
|
|
dangerouslyUseHTMLString: true |
|
|
|
}).then(() => { |
|
|
|
// crudDept.FetchUpdateDeptsStatus(data).then(res => { |
|
|
|
// this.$message({ message: '修改成功', type: 'success', offset: 8 }) |
|
|
|
// this.crud.refresh() |
|
|
|
// }).catch(() => { |
|
|
|
// data.deptsStatus = !data.deptsStatus |
|
|
|
// }) |
|
|
|
handleDbClick(row) { |
|
|
|
this.tabIndex = 0 |
|
|
|
this.detailVisible = true |
|
|
|
this.dbRowData = row |
|
|
|
this.detailTable = [] |
|
|
|
crudStockTaskLog.FetchInitStockLogDetails({ 'billId': row.billId }).then(res => { |
|
|
|
this.detailInfo = res |
|
|
|
|
|
|
|
this.taskStockLogData = [ |
|
|
|
{ value: res.onShelfNum - res.errorShelfNum - res.errorOrderNum, name: '正常在架' }, |
|
|
|
{ value: res.errorShelfNum, name: '错架' }, |
|
|
|
{ value: res.errorOrderNum, name: '错序' } |
|
|
|
] |
|
|
|
}).catch(() => { |
|
|
|
this.$message({ message: '已取消修改', offset: 8 }) |
|
|
|
data.deptsStatus = data.deptsStatus ? 0 : 1 |
|
|
|
}) |
|
|
|
}, |
|
|
|
doExport(data) { |
|
|
|
console.log(data) |
|
|
|
this.crud.downloadLoading = true |
|
|
|
this.$confirm('此操作将导出所选数据' + '<span>你是否还要继续?</span>', '提示', { |
|
|
|
confirmButtonText: '继续', |
|
|
|
cancelButtonText: '取消', |
|
|
|
type: 'warning', |
|
|
|
dangerouslyUseHTMLString: true |
|
|
|
}).then(() => { |
|
|
|
const ids = [] |
|
|
|
data.forEach(val => { |
|
|
|
ids.push(val.deptsId) |
|
|
|
}) |
|
|
|
const params = { |
|
|
|
'deptsIds': ids |
|
|
|
changeDetailTab(index) { |
|
|
|
this.tabIndex = index |
|
|
|
if (index === 1) { |
|
|
|
this.getInitStockTaskDetails() |
|
|
|
} |
|
|
|
}, |
|
|
|
getInitStockTaskDetails() { |
|
|
|
this.gridTableLoading = true |
|
|
|
const params = { |
|
|
|
'billId': this.dbRowData.billId, |
|
|
|
'page': this.detailPage.page - 1, |
|
|
|
'size': this.detailPage.size |
|
|
|
} |
|
|
|
crudStockTaskLog.FetchInitStockTaskDetails(params).then(res => { |
|
|
|
if (res) { |
|
|
|
const progressPromises = res.content.map(item => { |
|
|
|
const paramsProgress = { |
|
|
|
'stockBill': this.dbRowData.stockBill, |
|
|
|
'gridCode': item.gridCode |
|
|
|
} |
|
|
|
return crudStockTaskLog.FetchProgressByStockBillAndGridCode(paramsProgress) |
|
|
|
}) |
|
|
|
|
|
|
|
Promise.all(progressPromises).then(progressResults => { |
|
|
|
this.detailTable = res.content.map((item, index) => { |
|
|
|
item.progress = progressResults[index] |
|
|
|
return item |
|
|
|
}) |
|
|
|
|
|
|
|
this.gridTableLoading = false |
|
|
|
}).catch(error => { |
|
|
|
console.error(error) |
|
|
|
this.gridTableLoading = false |
|
|
|
}) |
|
|
|
|
|
|
|
this.detailPage.total = res.totalElements |
|
|
|
} |
|
|
|
console.log(params) |
|
|
|
// exportFile(this.baseApi + '/api/depts/download?' + qs.stringify(params, { indices: false })) |
|
|
|
// this.crud.downloadLoading = false |
|
|
|
}).catch(() => { |
|
|
|
this.gridTableLoading = false |
|
|
|
}) |
|
|
|
}, |
|
|
|
handleDbClick() { |
|
|
|
this.detailVisible = true |
|
|
|
handleSizeChange(size) { |
|
|
|
this.detailPage.size = size |
|
|
|
this.detailPage.page = 1 |
|
|
|
this.tabIndex = 1 |
|
|
|
this.getInitStockTaskDetails() |
|
|
|
}, |
|
|
|
changeDetailTab(index) { |
|
|
|
this.tabIndex = index |
|
|
|
handleCurrentPage(val) { |
|
|
|
this.detailPage.page = val |
|
|
|
this.tabIndex = 1 |
|
|
|
this.getInitStockTaskDetails() |
|
|
|
}, |
|
|
|
handleCloseDialog() { |
|
|
|
this.detailVisible = false |
|
|
|
this.tabIndex = 0 |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -392,11 +465,31 @@ export default { |
|
|
|
.detail-other{ |
|
|
|
display: flex; |
|
|
|
justify-content: space-between; |
|
|
|
align-items: flex-start; |
|
|
|
border-top: 1px solid #edeff3; |
|
|
|
padding-top: 20px; |
|
|
|
margin-top: 20px; |
|
|
|
.book-detail{ |
|
|
|
width: 60%; |
|
|
|
width: 50%; |
|
|
|
li{ |
|
|
|
display: flex; |
|
|
|
justify-content: flex-start; |
|
|
|
// width: 50%; |
|
|
|
span{ |
|
|
|
display: block; |
|
|
|
width: 100px; |
|
|
|
text-align: right; |
|
|
|
margin-right: 0; |
|
|
|
} |
|
|
|
p{ |
|
|
|
width: 100px; |
|
|
|
text-align: right; |
|
|
|
i{ |
|
|
|
padding: 0; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
::v-deep .dialog-footer{ |
|
|
@ -406,4 +499,27 @@ export default { |
|
|
|
margin: 0 !important; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.detail-table-info{ |
|
|
|
display: flex; |
|
|
|
justify-content: flex-start; |
|
|
|
li{ |
|
|
|
width: calc(100% / 3); |
|
|
|
margin-right: 15px; |
|
|
|
span{ |
|
|
|
display: inline-block; |
|
|
|
width: 40px; |
|
|
|
text-align: right; |
|
|
|
} |
|
|
|
p{ |
|
|
|
display: inline-block; |
|
|
|
text-align: right; |
|
|
|
width: calc(100% - 40px); |
|
|
|
i{ |
|
|
|
font-weight: bold; |
|
|
|
font-style: normal; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
</style> |