You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
330 lines
11 KiB
330 lines
11 KiB
<template>
|
|
<div class="app-container">
|
|
<div class="head-container" style="padding:0 0 20px 0">
|
|
<div>
|
|
<el-button size="mini" class="iconfont icon-xinzengpandian-fanbai" @click="handleAdd">新增</el-button>
|
|
<el-button
|
|
icon="el-icon-delete"
|
|
size="mini"
|
|
style="margin:0 0 0 10px"
|
|
:disabled="!(selections.length) "
|
|
@click="handleDel"
|
|
>删除</el-button>
|
|
<el-button size="mini" icon="el-icon-tickets" :disabled="!(selections.length===1 && selections[0].checkState === 1) " @click="handleCalc">结算</el-button>
|
|
<el-button :loading="btnLoading" size="mini" :disabled="!(selections.length ===1)" icon="el-icon-download" @click="handleExport">导出</el-button>
|
|
<el-select v-model="stateVal" class="filter-item" style="width: 90px;height:30px;margin:0 10px 0 10px" @change="crud.toQuery">
|
|
<el-option v-for="item in stateOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
</el-select>
|
|
<el-input
|
|
v-model="keyWord"
|
|
size="small"
|
|
clearable
|
|
placeholder="请输入关键词"
|
|
style="width: 300px;margin-right:10px"
|
|
class="input-prepend filter-item"
|
|
@keyup.enter.native="crud.toQuery"
|
|
>
|
|
<el-select slot="prepend" v-model="cateSearch" style="width: 100px;">
|
|
<el-option
|
|
v-for="item in cateSearchOptions"
|
|
:key="item.value"
|
|
:label="item.label"
|
|
:value="item.value"
|
|
/>
|
|
</el-select>
|
|
</el-input>
|
|
<rrOperation />
|
|
</div>
|
|
<div>
|
|
<el-button size="mini" icon="el-icon-brush" @click="handleClear">清空缓存</el-button>
|
|
</div>
|
|
<!-- <crudOperation :permission="permission" /> -->
|
|
</div>
|
|
<div class="container-wrap" style="min-height: calc(100vh - 242px)">
|
|
<span class="right-top-line" />
|
|
<span class="left-bottom-line" />
|
|
<!--表格渲染-->
|
|
<el-table
|
|
ref="table"
|
|
:data="crud.data"
|
|
:cell-class-name="cell"
|
|
style="min-width: 100%"
|
|
height="calc(100vh - 315px)"
|
|
@selection-change="selectionChangeHandler"
|
|
@row-click="clickRowHandler"
|
|
@row-dblclick="handleDbClick"
|
|
>
|
|
<el-table-column type="selection" width="55" />
|
|
<el-table-column type="index" align="center" label="序号" width="55" />
|
|
<el-table-column prop="id" align="center" label="盘点单号" min-width="100" />
|
|
<el-table-column prop="region" align="center" label="包含位置" min-width="140" />
|
|
<el-table-column prop="checkState" align="center" label="盘点状态" min-width="60">
|
|
<template slot-scope="scope">
|
|
<!-- 已执行 / 待执行/执行中 -->
|
|
<span class="clear">{{ scope.row.checkState | checkState }}</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="correct" align="center" label="在库档案" min-width="60" />
|
|
<el-table-column prop="checked" align="center" label="已盘档案" min-width="60" />
|
|
<el-table-column prop="abnormal" align="center" label="异常档案" min-width="60" />
|
|
<el-table-column prop="noCheck" align="center" label="未盘档案" min-width="60" />
|
|
<el-table-column prop="borrowed" align="center" label="已借档案" min-width="60" />
|
|
<el-table-column prop="dislocation" align="center" label="错位档案" min-width="60" />
|
|
<el-table-column prop="others" align="center" label="多余档案" min-width="60" />
|
|
<el-table-column prop="create_time" align="center" label="创建时间" min-width="100">
|
|
<template slot-scope="scope">
|
|
<div>{{ scope.row.create_time | parseTime }}</div>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<!--分页组件-->
|
|
<pagination />
|
|
</div>
|
|
<!-- 删除模态框 -->
|
|
<el-dialog title="确认删除" :visible.sync="deleteVisible" :before-close="handleClose">
|
|
<span class="dialog-right-top" />
|
|
<span class="dialog-left-bottom" />
|
|
<div class="setting-dialog">
|
|
<div class="dialog-delt">
|
|
<p><span style="font-size:16px">确定删除当前盘点任务?</span></p>
|
|
<p class="delt-tip"><span>提示:确定删除后,该数据将无法找回!</span></p>
|
|
</div>
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button type="primary" @click.native="handleDelConfirm">确定</el-button>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
<!-- 新增模态框 -->
|
|
<addCheck ref="addCheckDom" />
|
|
<!-- 盘点详情 -->
|
|
<checkDetail ref="checkDetailDom" />
|
|
<!-- 结算 -->
|
|
<CalcSteps ref="calcDom" />
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import rrOperation from '@crud/RR.operation'
|
|
import CRUD, { presenter } from '@crud/crud'
|
|
import pagination from '@crud/Pagination'
|
|
import addCheck from './module/addCheck.vue'
|
|
import checkDetail from './module/checkDetail.vue'
|
|
import { getArrange, getArrangeDetailes, checkDel, settlement, arrangeClean } from '@/api/archivesManage/archivesCheck'
|
|
import { exportFile } from '@/utils/index'
|
|
import qs from 'qs'
|
|
import { mapGetters } from 'vuex'
|
|
import CalcSteps from './module/calcSteps.vue'
|
|
|
|
export default {
|
|
name: 'ArchivesCheck',
|
|
components: { pagination, rrOperation, addCheck, checkDetail, CalcSteps },
|
|
filters: {
|
|
checkState(val) {
|
|
switch (val) {
|
|
case 0:
|
|
return '待执行'
|
|
case 1:
|
|
return '执行中'
|
|
case 2:
|
|
return '已执行'
|
|
}
|
|
}
|
|
},
|
|
mixins: [presenter()],
|
|
cruds() {
|
|
return CRUD({
|
|
url: 'api/arrange/initArrangeList',
|
|
// url: 'api/case/initCaseList',
|
|
// crudMethod: caseCrudMethod,
|
|
title: '档案盒',
|
|
optShow: {
|
|
add: false,
|
|
edit: false,
|
|
del: false,
|
|
download: false,
|
|
group: false
|
|
}
|
|
})
|
|
},
|
|
// dicts: ['job_status'],
|
|
data() {
|
|
return {
|
|
btnLoading: false,
|
|
// tableData: [],
|
|
selections: [],
|
|
keyWord: '',
|
|
stateVal: -1,
|
|
stateOptions: [
|
|
{ value: -1, label: '全部' },
|
|
{ value: 0, label: '待执行' },
|
|
{ value: 1, label: '执行中' },
|
|
{ value: 2, label: '已执行' }
|
|
],
|
|
cateSearch: 'region',
|
|
cateSearchOptions: [
|
|
{ value: 'region', label: '区域' },
|
|
{ value: 'id', label: '盘点单号' }
|
|
],
|
|
deleteVisible: false
|
|
}
|
|
},
|
|
computed: {
|
|
...mapGetters([
|
|
'baseApi'
|
|
])
|
|
},
|
|
methods: {
|
|
// 获取数据前的处理
|
|
[CRUD.HOOK.beforeRefresh]() {
|
|
this.crud.downloadLoading = true
|
|
this.crud.query.checkState = null
|
|
this.crud.query.id = null
|
|
this.crud.query.region = null
|
|
if (this.stateVal > -1) {
|
|
this.crud.query.checkState = this.stateVal
|
|
}
|
|
// todo
|
|
if (this.cateSearch === 'region') {
|
|
this.crud.query.region = this.keyWord
|
|
} else {
|
|
this.crud.query.id = this.keyWord
|
|
console.log(this.crud.query.id)
|
|
// this.crud.data = this.crud.data.filter(item => item.id.includes(this.keyWord))
|
|
console.log(this.crud.data)
|
|
}
|
|
this.crud.downloadLoading = false
|
|
},
|
|
// 删除
|
|
handleDel() {
|
|
const bool = this.selections.every(item => item.checkState === 0)
|
|
if (bool) {
|
|
this.deleteVisible = true
|
|
} else {
|
|
this.$message({
|
|
message: '只能删除待执行的档案',
|
|
type: 'warning'
|
|
})
|
|
}
|
|
},
|
|
handleDelConfirm() {
|
|
const ids = this.selections.map(item => { return item.id })
|
|
checkDel(ids).then(res => {
|
|
if (res) {
|
|
this.crud.refresh()
|
|
this.$message({
|
|
message: '删除成功',
|
|
type: 'success'
|
|
})
|
|
this.deleteVisible = false
|
|
} else {
|
|
this.$message.error('删除失败')
|
|
}
|
|
})
|
|
},
|
|
// 结算
|
|
handleCalc() {
|
|
const calcDom = this.$refs.calcDom
|
|
calcDom.calcVisible = true
|
|
calcDom.stepActive = 2
|
|
const params = {
|
|
'orderId': this.selections[0].id
|
|
}
|
|
settlement(params).then(res => {
|
|
if (res) {
|
|
calcDom.stepActive = 3
|
|
calcDom.res = 1
|
|
calcDom.source = this.source
|
|
// calcDom.calcVisible = false
|
|
this.crud.refresh()
|
|
} else {
|
|
calcDom.stepActive = 3
|
|
calcDom.res = 0
|
|
}
|
|
})
|
|
},
|
|
// 清空缓存
|
|
handleClear() {
|
|
arrangeClean().then(res => {
|
|
// this.crud.refresh()
|
|
this.$message({
|
|
message: '清空成功',
|
|
type: 'success'
|
|
})
|
|
})
|
|
},
|
|
// 新增盘点
|
|
handleAdd() {
|
|
this.$refs.addCheckDom.addFormVisible = true
|
|
},
|
|
handleClose() {
|
|
this.deleteVisible = false
|
|
},
|
|
cell({ row, columnIndex }) {
|
|
if (row.checkState === 2 && columnIndex === 4) {
|
|
return 'have-clear'
|
|
} else if (row.checkState === 0 && columnIndex === 4) {
|
|
return 'fail-clear'
|
|
} else if (row.checkState === 1 && columnIndex === 4) {
|
|
return 'no-clear'
|
|
}
|
|
},
|
|
selectionChangeHandler(val) {
|
|
this.selections = val
|
|
},
|
|
clickRowHandler(row) {
|
|
this.$refs.table.toggleRowSelection(row)
|
|
},
|
|
// 双击详情
|
|
handleDbClick(row) {
|
|
const checkDetailDom = this.$refs.checkDetailDom
|
|
const params = {
|
|
orderNo: row.id
|
|
}
|
|
getArrange(params).then(res => {
|
|
checkDetailDom.rowData.push(res)
|
|
})
|
|
getArrangeDetailes(params).then(res => {
|
|
checkDetailDom.tableData = res.content
|
|
})
|
|
checkDetailDom.detailVisible = true
|
|
},
|
|
// 导出
|
|
handleExport() {
|
|
this.btnLoading = true
|
|
const id = this.selections[0].id
|
|
const params = {
|
|
'orderNo': id
|
|
}
|
|
exportFile(this.baseApi + '/api/arrange/exportArrange?' + qs.stringify(params, { indices: false }))
|
|
this.btnLoading = false
|
|
}
|
|
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
@import '~@/assets/styles/lend-manage.scss';
|
|
@import "~@/assets/styles/archives-manage.scss";
|
|
|
|
.head-container {
|
|
color: #fff;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
::v-deep .el-dialog__footer {
|
|
background-color: #031435;
|
|
}
|
|
|
|
.el-dialog .dialog-footer {
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
.svg-style{
|
|
margin-right: 5px;
|
|
}
|
|
::v-deep .input-prepend .el-input__inner{
|
|
padding-left: 94px;
|
|
}
|
|
</style>
|