Browse Source

盘点/数据总览

master
xuhuajiao 6 months ago
parent
commit
e82e77b52e
  1. 2
      src/api/stockTask/index.js
  2. 51
      src/api/stockTaskLog/index.js
  3. 19
      src/assets/styles/manage.scss
  4. 17
      src/components/Crud/crud.js
  5. 38
      src/views/components/canvasPreview.vue
  6. 6
      src/views/components/mark.vue
  7. 16
      src/views/visualCheck/checkManage/bookshelfSearch/index.vue
  8. 111
      src/views/visualCheck/checkManage/checkLog/index.vue
  9. 19
      src/views/visualCheck/checkManage/checkPlan/index.vue
  10. 30
      src/views/visualCheck/checkManage/dataScreening/girdList.vue
  11. 32
      src/views/visualCheck/checkManage/dataScreening/index.vue
  12. 23
      src/views/visualCheck/checkManage/dataScreening/regionsList.vue
  13. 30
      src/views/visualCheck/checkManage/dataScreening/shelfList.vue
  14. 4
      src/views/visualCheck/venueDevice/area/index.vue
  15. 2
      src/views/visualCheck/venueDevice/floor/index.vue

2
src/api/stockTask/index.js

@ -19,7 +19,7 @@ export function edit(data) {
export function del(ids) {
return request({
url: '',
url: 'api/stocktask-task/delStockTask',
method: 'post',
data: ids
})

51
src/api/stockTaskLog/index.js

@ -17,13 +17,23 @@ import qs from 'qs'
// })
// }
// export function del(ids) {
// return request({
// url: '',
// method: 'post',
// data: ids
// })
// }
// 盘点单删除
export function del(data) {
return request({
url: '/api/stocktask-task/delStockBill',
method: 'post',
data: data
})
}
// 终止盘点单
export function FetchStopStockBill(data) {
return request({
url: '/api/stocktask-task/stopStockBill',
method: 'post',
data: data
})
}
// 盘点日志列表
export function FetchInitStockLogList(params) {
@ -57,4 +67,29 @@ export function FetchProgressByStockBillAndGridCode(params) {
})
}
export default { FetchInitStockLogList, FetchInitStockLogDetails, FetchProgressByStockBillAndGridCode, FetchInitStockTaskDetails }
// 获取最新的盘点单号
export function FetchNewBillNo(params) {
return request({
url: 'api/stocktask-task/getNewBillNo' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
})
}
// 获取目标最新层架位数量
export function FetchStockGirdNum(params) {
return request({
url: 'api/stocktask-task/getStockGirdNum' + '?' + qs.stringify(params, { indices: false }),
method: 'get'
})
}
// 手动创建盘点任务
export function add(data) {
return request({
url: 'api/stocktask-task/createBill',
method: 'post',
data: data
})
}
export default { del, FetchStopStockBill, FetchInitStockLogList, FetchInitStockLogDetails, FetchProgressByStockBillAndGridCode, FetchInitStockTaskDetails, FetchNewBillNo, FetchStockGirdNum, add }

19
src/assets/styles/manage.scss

@ -30,6 +30,25 @@
}
}
.dataScreening-header{
h4{
flex: none;
}
.bookshelf-area{
display: flex;
justify-content: flex-start;
flex: 1;
padding: 4px 30px;
a{
display: block;
}
span{
display: block;
padding: 0 6px;
}
}
}
.venue-content{
display: flex;
justify-content: space-between;

17
src/components/Crud/crud.js

@ -114,6 +114,9 @@ function CRUD(options) {
addSuccessNotify() {
crud.notify(crud.msg.add, CRUD.NOTIFICATION_TYPE.SUCCESS)
},
addErrorNotify(message) {
crud.notify(message, CRUD.NOTIFICATION_TYPE.ERROR)
},
editSuccessNotify() {
crud.notify(crud.msg.edit, CRUD.NOTIFICATION_TYPE.SUCCESS)
},
@ -273,11 +276,17 @@ function CRUD(options) {
crud.crudMethod.add(crud.form).then((res) => {
crud.status.add = CRUD.STATUS.NORMAL
crud.resetForm()
crud.addSuccessNotify()
if (res && res !== 'SUCCESS' && res !== '保存成功') {
callVmHook(crud, CRUD.HOOK.afterSubmit, res)
if (res) {
if (res !== 'SUCCESS' && res !== '保存成功' && res.code !== 500) {
crud.addSuccessNotify()
callVmHook(crud, CRUD.HOOK.afterSubmit, res)
} else {
crud.addErrorNotify(res.message)
callVmHook(crud, CRUD.HOOK.afterAddError)
}
} else {
callVmHook(crud, CRUD.HOOK.afterSubmit)
crud.addErrorNotify(res.message)
callVmHook(crud, CRUD.HOOK.afterAddError)
}
crud.toQuery()
}).catch(() => {

38
src/views/components/canvasPreview.vue

@ -69,16 +69,15 @@ export default {
handler(newVal, oldVal) {
// newVal null undefined
if (!newVal) {
console.log('newVal is null or undefined')
console.log('newVal-null')
return
}
},
deep: true
},
imageUrl(newVal, oldVal) {
if (newVal !== oldVal) {
console.log('imageUrl')
console.log('imageUrl', newVal)
}
}
},
@ -91,9 +90,9 @@ export default {
// }
},
methods: {
initCanvasPreview(drawinfo) {
initCanvasPreview(drawinfo, tabIndex) {
if (!this.currentMarkData) {
console.error('currentMarkData is null or undefined')
console.error('currentMarkData-null')
return
}
@ -106,7 +105,7 @@ export default {
this.$nextTick(() => {
this.canvasPreview.selectionColor = 'rgba(0,0,0,0.05)'
this.loadDrawPreview(drawinfo)
this.loadDrawPreview(drawinfo, tabIndex)
this.canvasPreview.on('mouse:wheel', this.mouse)
})
},
@ -122,11 +121,12 @@ export default {
this.canvasPreview.zoomToPoint(zoomPoint, zoom)
},
//
loadDrawPreview(drawinfo) {
loadDrawPreview(drawinfo, tabIndex) {
const self = this
const pointGroup = drawinfo.pointInfo
const imgInfo = drawinfo.imgInfo
imgInfo.src = self.imageUrl
//
fabric.util.enlivenObjects([imgInfo], objects => {
objects.forEach(o => {
@ -177,9 +177,9 @@ export default {
floorName: e.target.floorName
}
if (self.pagePreview === 'floor') {
self.handleToRegions(toReigonsData)
self.handleToRegions(toReigonsData, tabIndex)
} else if (self.pagePreview === 'region') {
self.handleToShelfs(toReigonsData)
self.handleToShelfs(toReigonsData, tabIndex)
}
} else {
lastClickTime = currentTime
@ -229,7 +229,6 @@ export default {
document.getElementById('tooltip').style.left = rectLeft + 'px'
document.getElementById('tooltip').style.top = rectTop + 'px'
document.getElementById('tooltip').style.display = 'block'
self.canvasPreview.renderAll()
})
@ -240,16 +239,29 @@ export default {
})
}
})
//
const centerX = self.canvasPreview.width / 2
const centerY = self.canvasPreview.height / 2
const centerPoint = new fabric.Point(centerX, centerY)
//
self.canvasPreview.zoomToPoint(centerPoint, 0.8)
self.canvasPreview.renderAll()
setTimeout(() => {
self.$parent.prewLoading = false
}, 500)
})
self.canvasPreview.renderAll()
},
handleToRegions(data) {
handleToRegions(data, tabIndex) {
this.$router.push({ path: '/dataScreening/regions' })
localStorage.setItem('dataScreenFloor', JSON.stringify(data))
localStorage.setItem('dataScreenFloorTableIndex', tabIndex)
},
handleToShelfs(data) {
handleToShelfs(data, tabIndex) {
this.$router.push({ path: '/dataScreening/shelf' })
localStorage.setItem('dataScreenRegion', JSON.stringify(data))
localStorage.setItem('dataScreenRegionTableIndex', tabIndex)
}
}
}

6
src/views/components/mark.vue

@ -134,9 +134,9 @@ export default {
this.canvas.clear()
this.canvas.dispose()
this.drawinfo = newVal.signPoint ? JSON.parse(newVal.signPoint) : null
this.$nextTick(() => {
this.$refs.markRefs.initCanvas()
})
// this.$nextTick(() => {
// this.$refs.markRefs.initCanvas()
// })
}
}

16
src/views/visualCheck/checkManage/bookshelfSearch/index.vue

@ -105,10 +105,10 @@
</div>
<div class="position-right">
<h5>书架图</h5>
<div class="shelf-top">
<div class="shelf-top" :style="rowStyle">
<p v-for="(item,index) in reversedRackNum" :key="index" :style="{width: `calc(${'100%/' + rackNum} - 4px )`}"><span>{{ item + '架' }}</span></p>
</div>
<ul class="data-shelf-row">
<ul class="data-shelf-row" :style="rowStyle">
<li
v-for="(cell,i) in booShelfGrid"
:key="i"
@ -177,7 +177,7 @@ export default {
drawWidth: 2, //
booShelfGrid: [],
rackNum: 0,
cellIndex: 12
cellIndex: 0
}
},
computed: {
@ -189,8 +189,12 @@ export default {
// const h = '100%/' + this.layerNum
// const w = '100%/' + this.rackNum
const h = '38px'
const w = '100%/' + this.rackNum
return { width: `calc(${w} )`, height: `calc(${h})` }
const w = '146px'
return { width: `calc(${w})`, height: `calc(${h})` }
},
rowStyle: function() {
const w = 146 * this.rackNum + 'px'
return { width: `calc(${w})` }
},
reversedRackNum() {
if (this.booShelfGrid && this.booShelfGrid.length > 0) {
@ -673,7 +677,7 @@ export default {
top: 0;
left: 6px;
content: '';
width: 100%;
width: 98%;
height: 100%;
background-color: rgba(255,0,0,.3);
}

111
src/views/visualCheck/checkManage/checkLog/index.vue

@ -91,21 +91,21 @@
<span class="dialog-left-bottom" />
<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" disabled />
<el-form-item label="盘点单号" prop="stockBill">
<el-input v-model="form.stockBill" disabled />
</el-form-item>
<el-form-item label="盘点类型" prop="taskType">
<el-input v-model="form.taskType" disabled />
<el-form-item label="盘点类型" prop="stockTypeName">
<el-input v-model="form.stockTypeName" disabled />
</el-form-item>
<el-form-item label="目标位置" prop="location">
<el-input v-model="form.location" disabled />
<el-form-item label="目标位置" prop="stockRegion">
<el-input v-model="form.stockRegion" disabled />
</el-form-item>
<el-form-item label="目标数量" prop="number">
<el-input v-model="form.number" disabled />
<el-form-item label="目标数量" prop="stockGridNumName">
<el-input v-model="form.stockGridNumName" disabled />
</el-form-item>
<el-row>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" style="width: 572px;" :rows="4" />
<el-form-item label="备注" prop="stockRemarks">
<el-input v-model="form.stockRemarks" type="textarea" style="width: 572px;" :rows="4" />
</el-form-item>
</el-row>
</el-form>
@ -217,8 +217,8 @@
</div>
<div slot="footer" class="dialog-footer">
<!-- 排队中会多一个删除盘点 进行中的多一个终止盘点 -->
<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 v-if="detailInfo.state === 1" :loading="crud.delAllLoading" type="primary" class="end-btn" @click="toDelete"><i class="iconfont icon-stop" />删除盘点</el-button>
<el-button v-if="detailInfo.state === 2" type="primary" class="end-btn" @click="toStopStockBill"><i class="iconfont icon-stop" />终止盘点</el-button>
<el-button :loading="crud.status.cu === 2" type="primary" @click="detailVisible=false">确定</el-button>
</div>
</div>
@ -238,7 +238,7 @@ import { mapGetters } from 'vuex'
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 }
const defaultForm = { stockTypeName: '全量盘点', stockType: 1, stockBill: null, stockRegion: '全部区域', stockGridNum: null, stockGridNumName: null, stockRemarks: null, regionId: null, shelfId: null, gridShelf: null, gridId: null }
export default {
name: 'CheckLog',
components: { crudOperation, rrOperation, pagination, taskStockLogEcharts },
@ -287,16 +287,16 @@ export default {
del: ['admin', 'checkLog:del']
},
rules: {
taskName: [
stockBill: [
{ required: true, message: '请输入盘点单号', trigger: 'blur' }
],
taskType: [
stockTypeName: [
{ required: true, message: '请输入盘点类型', trigger: 'blur' }
],
location: [
stockRegion: [
{ required: true, message: '请输入目标位置', trigger: 'blur' }
],
number: [
stockGridNumName: [
{ required: true, message: '请输入目标数量', trigger: 'blur' }
]
}
@ -313,16 +313,34 @@ export default {
},
[CRUD.HOOK.afterRefresh](crud) {
},
//
//
[CRUD.HOOK.beforeToAdd]() {
}, //
if (this.crud.form.stockType === 1) {
this.crud.form.stockTypeName = '全量盘点'
}
Promise.all([
crudStockTaskLog.FetchNewBillNo(),
crudStockTaskLog.FetchStockGirdNum()
]).then(([newBillNoRes, stockGridNumRes]) => {
this.crud.form.stockBill = newBillNoRes
this.crud.form.stockGridNumName = stockGridNumRes + ' / 层位'
this.crud.form.stockGridNum = stockGridNumRes
}).catch(error => {
console.error(error)
})
},
//
[CRUD.HOOK.beforeToEdit](crud, form) {
},
[CRUD.HOOK.beforeValidateCU](crud, form) {
},
//
[CRUD.HOOK.afterValidateCU](crud) {
return false
console.log(crud.form)
delete crud.form.stockGridNumName
delete crud.form.stockTypeName
return true
},
clickRowHandler(row) {
this.$refs.table.clearSelection()
@ -416,6 +434,59 @@ export default {
handleCloseDialog() {
this.detailVisible = false
this.tabIndex = 0
},
toDelete() {
this.$confirm('此操作将删除当前盘点单任务<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
this.crud.delAllLoading = true
const params = {
'id': this.dbRowData.billId
}
console.log(params)
crudStockTaskLog.del(params).then(res => {
console.log(res)
if (res && res.code !== 500) {
this.$message({ message: '当前盘点单任务删除成功', type: 'success', offset: 8 })
this.crud.refresh()
} else {
this.$message({ message: res.message, type: 'error', offset: 8 })
}
this.crud.delAllLoading = false
}).catch(err => {
this.crud.delAllLoading = false
console.log(err)
})
}).catch(() => {
this.crud.delAllLoading = false
})
},
toStopStockBill() {
this.$confirm('此操作将终止当前盘点单任务<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
const params = {
'id': this.dbRowData.billId
}
crudStockTaskLog.FetchStopStockBill(params).then(res => {
console.log(res)
if (res && res.code !== 500) {
this.$message({ message: '当前盘点单任务终止成功', type: 'success', offset: 8 })
this.crud.refresh()
} else {
this.$message({ message: res.message, type: 'error', offset: 8 })
}
}).catch(err => {
console.log(err)
})
}).catch(() => {
})
}
}
}

19
src/views/visualCheck/checkManage/checkPlan/index.vue

@ -599,16 +599,15 @@ export default {
datas.forEach(val => {
ids.push(val.id)
})
console.log(ids)
// crudStocktask.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)
// })
crudStocktask.del(ids).then(res => {
console.log(res)
this.$message({ message: '盘点任务删除成功', 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
})

30
src/views/visualCheck/checkManage/dataScreening/girdList.vue

@ -1,8 +1,21 @@
<template>
<div class="app-container">
<div class="venue-header">
<div class="venue-header dataScreening-header">
<h4 @click="handleToGrids"><i class="iconfont icon-shuju" />架位总览</h4>
<span class="bookshelf-area">{{ floorName }} - {{ regionName }} - {{ gridRow +'排' }}</span>
<div class="bookshelf-area">
<!-- <span class="bookshelf-area">{{ floorName }} - {{ regionName }} - {{ gridRow +'排' }}</span> -->
<router-link :to="{ path: '/check/check/dataScreening', query: {floorTabIndex: floorTabIndex }}">
{{ floorName }}
</router-link>
<span>-</span>
<router-link :to="{ path: '/dataScreening/regions', query: {regionTabIndex: regionTabIndex }}">
{{ regionName }}
</router-link>
<span>-</span>
<router-link :to="{ path: '/dataScreening/shelf', query: {tabIndex: tabIndex }}">
{{ gridRow +'排' }}
</router-link>
</div>
<p><i class="iconfont icon-gongsi" />{{ user.fonds.fondsName }}</p>
</div>
<div class="venue-content">
@ -235,6 +248,8 @@ export default {
tabdialogIndex: 0,
listLoading: false,
tabIndex: 0,
floorTabIndex: 0,
regionTabIndex: 0,
floorName: null,
regionName: null,
gridRow: null,
@ -297,11 +312,18 @@ export default {
}
},
async created() {
if (localStorage.getItem('dataScreenFloorTableIndex')) {
this.floorTabIndex = localStorage.getItem('dataScreenFloorTableIndex')
}
if (localStorage.getItem('dataScreenRegionTableIndex')) {
this.regionTabIndex = localStorage.getItem('dataScreenRegionTableIndex')
}
if (localStorage.getItem('dataScreenShelf')) {
const dataScreenShelf = JSON.parse(localStorage.getItem('dataScreenShelf'))
this.floorName = dataScreenShelf.floorName
this.regionName = dataScreenShelf.regionName
this.gridRow = dataScreenShelf.gridRow
// /
this.tabListData = dataScreenShelf.rowType === 1
? dataScreenShelf.toward === 1
@ -309,8 +331,8 @@ export default {
: [{ name: 'B面' }]
: [{ name: 'A面' }, { name: 'B面' }]
this.tabIndex = dataScreenShelf.toward - 1
FetchBookShelfDetails({ 'shelfId': dataScreenShelf.shelfId }).then(res => {
this
this.layerNum = res.shelfFloor
this.rackNum = res.shelfShelf
this.bookShelfDetails = res
@ -492,7 +514,7 @@ export default {
console.log('this.popoverPosition ', this.popoverPosition)
},
hidePopover() {
// this.popoverIndex = null
this.popoverIndex = null
// popover
// this.popoverVisible.forEach((isVisible, index) => {
// if (isVisible) {

32
src/views/visualCheck/checkManage/dataScreening/index.vue

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<div class="venue-header">
<h4 @click="handleToRegions"><i class="iconfont icon-shuju" />数据总览</h4>
<h4><i class="iconfont icon-shuju" />数据总览</h4>
<p><i class="iconfont icon-gongsi" />{{ user.fonds.fondsName }}</p>
</div>
<div class="venue-content">
@ -34,7 +34,7 @@
<p>书架4</p>
<p>摄像头12</p>
</div>
<CanvasPreview ref="previewRefs" page-preview="floor" :current-mark-data="currentMarkData" :image-url="imageUrl" />
<CanvasPreview ref="previewRefs" v-loading="prewLoading" page-preview="floor" :current-mark-data="currentMarkData" :image-url="imageUrl" />
</div>
</div>
<div class="venue-right">
@ -125,6 +125,7 @@ export default {
data() {
const _this = this
return {
prewLoading: false,
floorOptions: [],
tabIndex: 0,
defaultImg: defaultImg,
@ -184,6 +185,13 @@ export default {
},
[CRUD.HOOK.afterRefresh](crud) {
this.floorOptions = crud.data
if (this.$route.query.floorTabIndex) {
this.tabIndex = this.$route.query.floorTabIndex
} else {
this.tabIndex = 0
}
this.changeActiveTab(this.tabIndex)
},
//
@ -191,6 +199,7 @@ export default {
return true
},
changeActiveTab(index) {
this.prewLoading = true
if (this.$refs.previewRefs.canvasPreview.lowerCanvasEl) {
this.$refs.previewRefs.canvasPreview.clear()
this.$refs.previewRefs.canvasPreview.dispose()
@ -211,6 +220,7 @@ export default {
if (this.allCoverData.length !== 0) {
this.currentMarkData = this.allCoverData[0]
console.log('this.currentMarkData', this.currentMarkData)
const parsedSignPoints = this.allCoverData.map(item => {
const signPoint = JSON.parse(item.signPoint)
return {
@ -227,20 +237,18 @@ export default {
pointInfo: parsedSignPoints,
imgInfo: imgInfo
}
console.log('result', result)
this.$nextTick(() => {
console.log('this.$refs.previewRefs', this.$refs.previewRefs)
this.$refs.previewRefs.initCanvasPreview(result)
this.$refs.previewRefs.initCanvasPreview(result, this.tabIndex)
})
} else {
this.currentMarkData = {}
setTimeout(() => {
this.prewLoading = false
}, 500)
}
}).catch(() => {
})
},
handleToRegions() {
this.$router.push({ path: '/dataScreening/regions', query: { }})
},
handleSlidClickFun(index) {
this.rightDataIndex = null
this.handleSlideToFun(index)
@ -256,10 +264,13 @@ export default {
<style lang="scss" scoped>
.container-right{
min-height: calc(100vh - 232px) !important;
// height: calc(100% - 20px) !important;
// overflow: hidden;
}
.venue-content{
position: relative;
overflow: hidden;
background-color: #fff;
}
.crud-opts{
position: absolute;
@ -269,6 +280,8 @@ export default {
.venue-left{
flex: 1;
margin-right: 0 !important;
height: calc(100vh - 192px);
overflow: hidden;
.venue-preview{
height: 633px !important;
}
@ -277,6 +290,7 @@ export default {
display: flex;
flex-direction: column;
width: 400px;
height: calc(100vh - 192px);
padding: 50px 10px 20px 10px !important;
.lib-right-item{
position: relative;

23
src/views/visualCheck/checkManage/dataScreening/regionsList.vue

@ -1,8 +1,13 @@
<template>
<div class="app-container">
<div class="venue-header">
<div class="venue-header dataScreening-header">
<h4 @click="handleToShelfs"><i class="iconfont icon-shuju" />区域总览</h4>
<span class="bookshelf-area">{{ floorName }} </span>
<div class="bookshelf-area">
<!-- <span class="bookshelf-area">{{ floorName }} </span> -->
<router-link :to="{ path: '/check/check/dataScreening', query: {floorTabIndex: floorTabIndex }}">
{{ floorName }}
</router-link>
</div>
<p><i class="iconfont icon-gongsi" />{{ user.fonds.fondsName }}</p>
</div>
<div class="venue-content">
@ -123,6 +128,7 @@ export default {
floorName: null,
currentRegionId: null,
tabIndex: 0,
floorTabIndex: 0,
defaultImg: defaultImg,
imageUrl: defaultImg,
imageRegionUrl: defaultImg,
@ -185,9 +191,18 @@ export default {
this.currentRegionId = data.id
},
[CRUD.HOOK.afterRefresh](crud) {
if (localStorage.getItem('dataScreenFloorTableIndex')) {
this.floorTabIndex = localStorage.getItem('dataScreenFloorTableIndex')
}
this.regionOptions = crud.data
const item = this.regionOptions.find(element => element.id === this.currentRegionId)
const index = item ? this.regionOptions.indexOf(item) : -1
let index
if (this.$route.query.regionTabIndex) {
index = this.$route.query.regionTabIndex
} else {
index = item ? this.regionOptions.indexOf(item) : -1
}
this.floorName = this.regionOptions[index].floorName
this.tabIndex = index
this.changeActiveTab(index)
@ -232,7 +247,7 @@ export default {
imgInfo: imgInfo
}
this.$nextTick(() => {
this.$refs.previewRefs.initCanvasPreview(result)
this.$refs.previewRefs.initCanvasPreview(result, this.tabIndex)
})
} else {
this.currentMarkData = {}

30
src/views/visualCheck/checkManage/dataScreening/shelfList.vue

@ -2,7 +2,16 @@
<div class="app-container">
<div class="venue-header dataScreening-header">
<h4 @click="handleToGrids"><i class="iconfont icon-shuju" />书架总览</h4>
<span class="bookshelf-area">{{ floorName }} - {{ regionName }}</span>
<div class="bookshelf-area">
<!-- <span> {{ floorName }} - {{ regionName }}</span> -->
<router-link :to="{ path: '/check/check/dataScreening', query: {floorTabIndex: floorTabIndex }}">
{{ floorName }}
</router-link>
<span>-</span>
<router-link :to="{ path: '/dataScreening/regions', query: {regionTabIndex: regionTabIndex }}">
{{ regionName }}
</router-link>
</div>
<p><i class="iconfont icon-gongsi" />{{ user.fonds.fondsName }}</p>
</div>
<div class="venue-content">
@ -165,6 +174,8 @@ export default {
return {
listLoading: false,
tabIndex: 0,
floorTabIndex: 0,
regionTabIndex: 0,
floorName: null,
regionName: null,
rowType: null,
@ -253,8 +264,6 @@ export default {
},
reversedRackNum() {
if (this.booShelfGrid && this.booShelfGrid.length > 0) {
console.log('ddd')
console.log('this.booShelfGrid[0].gridShelf', this.booShelfGrid[0].gridShelf)
if (this.booShelfGrid[0].gridShelf === '07') {
return Array.from({ length: this.rackNum }, (_, i) => this.rackNum - i).map(x => x.toString())
} else {
@ -267,6 +276,12 @@ export default {
}
},
async created() {
if (localStorage.getItem('dataScreenFloorTableIndex')) {
this.floorTabIndex = localStorage.getItem('dataScreenFloorTableIndex')
}
if (localStorage.getItem('dataScreenRegionTableIndex')) {
this.regionTabIndex = localStorage.getItem('dataScreenRegionTableIndex')
}
if (localStorage.getItem('dataScreenRegion')) {
const dataScreenRegion = JSON.parse(localStorage.getItem('dataScreenRegion'))
this.floorName = dataScreenRegion.floorName
@ -279,12 +294,18 @@ export default {
: [{ name: 'B面' }]
: [{ name: 'A面' }, { name: 'B面' }]
this.tabIndex = this.$route.query.tabIndex ? this.$route.query.tabIndex : 0
FetchBookShelfDetails({ 'shelfId': dataScreenRegion.id }).then(res => {
this
this.layerNum = res.shelfFloor
this.rackNum = res.shelfShelf
this.bookShelfDetails = res
this.getInitShelfGridByShelfId(this.bookShelfDetails.toward)
if (this.$route.query.tabIndex) {
this.getInitShelfGridByShelfId(this.$route.query.tabIndex + 1)
} else {
this.getInitShelfGridByShelfId(this.bookShelfDetails.toward)
}
}).catch(() => {
})
}
@ -437,6 +458,7 @@ export default {
handleToGrids(data) {
this.$router.push({ path: '/dataScreening/gird' })
localStorage.setItem('dataScreenShelf', JSON.stringify(data))
localStorage.setItem('dataScreenShelfTableIndex', this.tabIndex)
},
showPopover(index) {
this.popoverIndex = index

4
src/views/visualCheck/venueDevice/area/index.vue

@ -111,7 +111,7 @@
<el-form-item label="描述信息" prop="regionDescription">
<el-input v-model="form.regionDescription" placeholder="请输入" type="textarea" rows="3" style="width: 580px;" />
</el-form-item>
<UploadCover :label-name="labelName" :form="form" @childCover="handleCover" />
<UploadCover ref="uploadCoverRefs" :label-name="labelName" :form="form" @childCover="handleCover" />
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
@ -262,8 +262,10 @@ export default {
this.imageRegionUrl = this.defaultImg
}
},
//
[CRUD.HOOK.afterValidateCU](crud) {
this.$refs.uploadCoverRefs.fileNames = ''
return true
},
//

2
src/views/visualCheck/venueDevice/floor/index.vue

@ -187,7 +187,7 @@ export default {
return true
},
handleCover(value) {
console.log(value)
console.log('value', value)
this.crud.form.floorMap = value
},
clickRowHandler(row) {

Loading…
Cancel
Save