Commit 3028bd87 authored by 罗林杰's avatar 罗林杰

增加盘点功能

parent 5d4df410
import request from '@/utils/request'
import Qs from 'qs'
// import da from "element-ui/src/locale/lang/da";
/**
* 1. 列表查询
* 2. 查询详细信息
* 3. 新增
* 4. 修改
* 5. 逻辑删除
* 6. 导出
*
*/
// 1. 查询仪器管理列表
export function listInsStrumentInfo(query) {
return request({
url: '/insstrumentinfo/list', method: 'get', params: query
})
}
// 2. 查询仪器管理详细信息
export function getInsStrumentInfo(businessId) {
return request({
url: '/insstrumentinfo/detail/' + businessId, method: 'get'
})
}
// 3. 新增仪器管理
export function addInsStrumentInfo(data) {
return request({
url: '/insstrumentinfo/add', method: 'post', data: data, headers: { 'content-type': 'application/json' }
})
}
// 4. 修改仪器管理
export function updateInsStrumentInfo(data) {
const businessId = data.businessId
return request({
url: '/insstrumentinfo/update/' + businessId, method: 'put', data, headers: { 'content-type': 'application/json' }
})
}
// 5. 逻辑删除仪器管理
export function delInsStrumentInfo(businessId) {
return request({
url: '/insstrumentinfo/deleteLogical/' + businessId, method: 'delete'
})
}
// 6. 导出仪器管理
export function exportInsStrumentInfo(query) {
return request({
url: '/insstrumentinfo/export', method: 'get', params: query, responseType: 'blob'
})
}
// 7. 获取echarts图表数据
export function getEchartsData(query) {
return request({
url: '/insstrumentinfo/echarts/pie', method: 'get', params: query
})
}
// 审批驳回操作
export function rejectStrumentInfo(data, status) {
data = Qs.stringify(data)
return request({
url: '/insstrumentinfo/batch/' + status, method: 'put', data
})
}
// 审批通过操作
export function approveStrumentInfo(data, status) {
data = Qs.stringify(data)
return request({
url: '/insstrumentinfo/batch/' + status, method: 'put', data
})
}
// 添加备份数据
export function insertBackup(data) {
data = Qs.stringify(data)
return request({
url: '/insstrumentinfo/addBackup', method: 'post', data: data
})
}
// 校验数据库是否存在相同的管理编号
export function isExistsSameInsCode(insCode, businessId) {
return request({
url: '/insstrumentinfo/isExists/' + insCode + '?businessId=' + businessId, method: 'get'
})
}
// 返回最新的管理编号
export function generateInsCode(insCode) {
return request({
url: '/insstrumentinfo/generate/' + insCode, method: 'get'
})
}
// 获取各设备待审批数量
export function getAllAssetNum() {
return request({
url: '/insstrumentinfo/getAssetNum', method: 'get'
})
}
export function getHistoryInfo(query) {
return request({
url: '/insstrumentinfo/history', method: 'get', params: query
})
}
export function addInstrumentFile(data) {
data = Qs.stringify(data)
return request({
url: '/insstrumentinfo/addInstrumentFile', method: 'post', data: data
})
}
export function updateInstrumentFile(data) {
data = Qs.stringify(data)
return request({
url: '/insstrumentinfo/updateInstrumentFile', method: 'post', data: data
})
}
export function uploadImages(query) {
return request({
url: '/insstrumentinfo/uploadImages', params: query, responseType: 'blob'
})
}
export function getStatistics() {
return request({
url: '/insstrumentinfo/getStatistics', method: 'get'
})
}
export function getPendingStats() {
return request({
url: '/insstrumentinfo/getPendingStats', method: 'get'
})
}
// 查询总列表
export function findAll(query) {
return request({
url: '/insstrumentinfo/listAll',
method: 'get',
params: query
})
}
// 查询仪器管理总列表
export function getInsNameList(query) {
return request({
url: '/insstrumentinfo/getInsNameList',
method: 'get',
params: query
})
}
// 查询用户列表
export function getUserList(query) {
return request({
url: '/insstrumentinfo/listUser',
method: 'get',
params: query
})
}
export function addInventoryPd(data) {
return request({
url: '/insstrumentinfo/addInventoryPd', method: 'post', data: data, headers: { 'content-type': 'application/json' }
})
}
export function listInventoryPd(query) {
return request({
url: '/insstrumentinfo/findInventoryPd', method: 'get', params: query
})
}
export function getInventoryPdDetail(query) {
return request({
url: '/insstrumentinfo/findInventoryPdDetail', method: 'get', params: query
})
}
export function delInventoryPd(query) {
return request({
url: '/insstrumentinfo/deleteInventoryPd', method: 'get', params: query
})
}
......@@ -94,6 +94,27 @@ export const constantRoutes = [
meta: { title: '欢迎', icon: 'dashboard' }
},
// {
// path: '/inventory/detail',
// component: () => import('@/views/inventory/detail.vue'),
// name: 'detail',
// hidden: true,
// meta: { title: '盘点', icon: 'dashboard' }
// },
{
path: '/inventorys',
component: Layout,
hidden: true,
children: [
{
path: '/inventorys/detail',
component: () => import('@/views/inventory/detail.vue'),
name: 'detail',
hidden: true,
meta: { title: '盘点', icon: 'dashboard' }
}
]
}
// {
// path: '/dict',
// component: Layout,
// hidden: true,
......
......@@ -43,6 +43,10 @@ const deviceField = {
{ dictLabel: '3' },
{ dictLabel: '6' },
{ dictLabel: '12' }
],
statusList: [
{ dictValue: '0', dictLabel: '进行中' },
{ dictValue: '1', dictLabel: '已完成' }
]
}
export default deviceField
<template>
<div class="app-container">
<div>
<el-row :gutter="20" type="flex" justify="center">
<el-col :span="12">
<el-button class="submitBtn" type="primary" :loading="isStarting" @click="startInventory">
<span>开始盘点</span>
</el-button>
</el-col>
<el-col :span="6">
<el-button class="submitBtn" type="primary" :loading="isEnding" @click="endInventory">
<span>结束盘点</span>
</el-button>
</el-col>
</el-row>
<!-- 新增统计数据展示 -->
<div class="padding">
<el-row style="margin-top: 20px;">
<el-col :span="24">
<div class="statistics">
<p>待盘: {{ this.pendingCount }}</p>
</div>
</el-col>
<el-col :span="24">
<div class="statistics">
<p>已盘:{{ this.completedCount }}</p>
</div>
</el-col>
</el-row>
</div>
<div slot="footer" class="dialog-footer">
<div class="padding">
<el-button class="submitBtn" type="primary" @click="handleInfo">
<span>查看盘点</span>
</el-button>
</div>
</div>
</div>
<!-- 设备详情对话框-->
<el-dialog
title="盘点详情"
:close-on-click-modal="true"
:visible.sync="infoOpen"
width="1700px"
append-to-body
@close="infoWinCancel"
>
<el-table :row-style="rowStyle" border :data="detailList" max-height="450">
<el-table-column type="index" label="序号" fixed="left" width="75" align="center" />
<el-table-column label="管理编号" width="140" prop="insCode" :show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.insCode || '-' }}
</template>
</el-table-column>
<el-table-column label="仪器名称" prop="insName" width="140" :show-overflow-tooltip="true">
<template slot-scope="scope">
{{ scope.row.insName || '-' }}
</template>
</el-table-column>
</el-table>
<pagination
v-show="detailTotal>0"
:total="detailTotal"
:page.sync="detailQueryParams.page"
:limit.sync="detailQueryParams.rows"
layout="total, prev, pager, next"
@pagination="getInventoryPdDetail(id)"
/>
</el-dialog>
</div>
</template>
<script>
import { getInventoryPdDetail } from '@/api/instrument/instrument'
import commonField from '@/utils/commonField'
import deviceField from '@/utils/device/deviceField'
export default {
name: 'Instrument',
data() {
return {
// 遮罩层
loading: true,
// 总条数
total: 0,
// 仪器管理表格数据
insStrumentInfoList: [],
// 详细表格数据
detailList: [],
// 弹出层标题
title: '',
// 是否显示弹出层
open: false,
// 是否显示详情弹出层
infoOpen: false,
// 盘点弹出层标题
inventoryTitle: '',
inventoryOpen: false,
// 管理字典
insManageList: {},
completedCount:0,
pendingCount:0,
// 类型字典
insTypeList: {},
// 日期范围
dateRange: [],
id: '',
// 查询参数
queryParams: {
page: 1,
rows: 10,
pdCode: undefined,
userName: undefined
},
detailTotal: 0,
detailQueryParams: {
page: 1,
rows: 10,
pdId: undefined,
insCode: undefined
},
// 表单参数
form: {},
// 表单校验
fileFakeList: [],
fileList: [],
dialogImageUrl: '',
dialogVisible: false
}
},
computed: {
themeType() {
return localStorage.getItem('theme')
},
commonField() {
return commonField
},
deviceField() {
return deviceField
}
},
created() {
this.id = this.$route.query.businessId;
this.getInventoryPdDetail(this.id)
},
methods: {
// 详情窗口关闭
infoWinCancel() {
this.infoOpen = false
},
/** 详情按钮操作 */
handleInfo() {
this.infoOpen = true
},
getInventoryPdDetail(id) {
this.detailQueryParams.pdId = id
getInventoryPdDetail(this.detailQueryParams).then(response => {
this.detailList = response.rows
this.detailTotal = response.total
this.detailQueryParams.page = response.pageNu
this.detailQueryParams.rows = response.pageSize
this.countStatus()
})
},
endInventory(){
this.$confirm('确定结束盘点吗?', '结束盘点', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$router.back()
})
},
countStatus() {
this.completedCount = this.detailList.filter(item => item.pdStatus === '0').length;
this.pendingCount = this.detailList.filter(item => item.pdStatus === '1').length;
},
// 根据状态控制当前行的颜色
changeColor({ row, rowIndex }) {
if (row.pdStatus === '1') {
return {
background: 'orange'
}
}
},
// 结合有效期和悬停的样式
rowStyle({ row, rowIndex }) {
const style = this.changeColor({ row, rowIndex })
return Object.assign({}, style)
}
}
}
</script>
<style lang="scss" scoped>
.app-container {
font-size: 18px;
padding: 0;
.placeholder {
height: 1.3vh;
background-color: #F4F4F4;
margin-bottom: 10px
}
}
.table-operate-column {
display: flex;
align-items: center;
}
.table-operate-column .upload-btn-box {
margin-left: auto;
width: 30px;
margin-right: 3px;
}
.table-operate-column .info-btn-box {
margin-right: auto;
width: 30px;
margin-left: 3px;
}
.padding {
padding-left: 50px; /* 设置左边的间距 */
padding-top: 50px;
}
</style>
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment