Browse Source

完善盘点

zhanglei
guoxing 11 months ago
parent
commit
f8695b1b67
  1. 10
      yxt-as-ui/src/api/Common/dictcommons.js
  2. 126
      yxt-as-ui/src/api/storage/stocktaking.js
  3. 9
      yxt-as-ui/src/utils/axios.js
  4. 20
      yxt-as-ui/src/utils/request.js
  5. 776
      yxt-as-ui/src/views/maintenanceReceive/maintenanceOutbound.vue
  6. 330
      yxt-as-ui/src/views/storage/stocktaking/index.vue
  7. 367
      yxt-as-ui/src/views/storage/stocktaking/stocktakingEditReport.vue
  8. 278
      yxt-as-ui/src/views/storage/stocktaking/stocktakingInfo.vue
  9. 263
      yxt-as-ui/src/views/storage/stocktaking/stocktakingRackCodeDetail.vue
  10. 272
      yxt-as-ui/src/views/storage/stocktaking/stocktakingRackCodeList.vue
  11. 221
      yxt-as-ui/src/views/storage/stocktaking/stocktakingReportDetail.vue

10
yxt-as-ui/src/api/Common/dictcommons.js

@ -69,6 +69,16 @@ export function selectOrgList(data) {
})
}
// 根据当前登录用户的全路径查询财务部门下的所有人
export function selFianceByOrgSidPath(data) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/portal/v1/sysstafforg/selFianceByOrgSidPath',
method: 'post',
params: data
})
}
// 当前用户创建申请时判断该用户是否有该菜单的操作权限
export function selectHaveMessage(data) {
return request({

126
yxt-as-ui/src/api/storage/stocktaking.js

@ -2,50 +2,154 @@ import request from '@/utils/request'
export default {
// 生成盘点点
createBill: function(data) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/wms/v1/wmsinventorycheckbill/createBill',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
});
},
// 查询分页列表
listPage: function(params) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/wms/v1/wmsinventorycheckbill/listPage',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
headers: {
'Content-Type': 'application/json'
}
})
},
// 新增、保存
save: function(data) {
// 生成盘点报告
billCreateReport: function(data) {
return request({
url: '/wms/v1/wmsinventorycheckbill/save',
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/wms/v1/wmsinventorycheckbill/billCreateReport',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
headers: {
'Content-Type': 'application/json'
}
});
},
// 初始化
// 盘点单详情
billDetail: function(params) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/wms/v1/wmsinventorycheckbill/billDetail',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
// 盘库列表
billStocktak: function(params) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/wms/v1/wmsinventorycheckbill/billStocktak',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
// 库位盘点明细列表
billRackCodeDetail: function(params) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/wms/v1/wmsinventorycheckbill/billRackCodeDetail',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
// 初始化盘库报告
init: function(data) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/wms/v1/wmsinventorycheckbill/fetchDetailsBySid/' + data,
method: 'get'
});
},
// 查询所有商品
// 保存盘点报告
saveReport: function(data) {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/wms/v1/wmsinventorycheckbill/saveReport',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
});
},
// 查询所有商品
getWarehousesGoods: function(params) {
return request({
url: '/wms/apiadmin/inventory/wmsinventory/invenGoodsListPage',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
headers: {
'Content-Type': 'application/json'
}
})
},
// 盘点
inven: function(params) {
submitReport: function(params) {
return request({
url: '/wms/v1/wmsinventorycheckbill/inven',
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/wms/v1/wmsinventorycheckbill/submitReport',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
headers: {
'Content-Type': 'application/json'
}
})
},
downloadExcel: function() {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/wms/v1/wmsinventorycheckbill/downloadExcel',
method: 'post',
responseType: 'blob', // 表明返回服务器返回的数据类型
headers: {
'Content-Type': 'application/json'
}
})
},
downloadPDF: function() {
return request({
// baseURL: "http://127.0.0.1:4523/m1/4061550-0-default",
url: '/wms/v1/wmsinventorycheckbill/downloadPdf',
method: 'post',
responseType: 'blob', // 表明返回服务器返回的数据类型
headers: {
'Content-Type': 'application/json'
}
})
},
}

9
yxt-as-ui/src/utils/axios.js

@ -1,7 +1,12 @@
import axios from 'axios'
import router from '@/router'
import { Message } from 'element-ui'
import { removeToken, getToken } from '@/utils/auth'
import {
Message
} from 'element-ui'
import {
removeToken,
getToken
} from '@/utils/auth'
// 统一请求路径前缀
const base = process.env.VUE_APP_BASE_API
// 超时设定

20
yxt-as-ui/src/utils/request.js

@ -1,14 +1,22 @@
import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import {
MessageBox,
Message
} from 'element-ui'
import store from '@/store'
import { getToken, getStorage } from '@/utils/auth'
import {
getToken,
getStorage
} from '@/utils/auth'
// create an axios instance
console.log(process.env.VUE_APP_URL)
const service = axios.create({
baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
// timeout: 5000 // request timeout
headers:{'Content-Type':'application/x-www-form-urlencoded;'}
headers: {
'Content-Type': 'application/x-www-form-urlencoded;'
}
})
// request interceptor
@ -36,9 +44,9 @@ service.interceptors.response.use(
response => {
const res = response.data
if(res.type !=undefined){
return res
}
if (res.type != undefined) {
return res
}
// if the custom code is not 20000, it is judged as an error.
if (res.code != 200) {
if (res.msg == "请重新登录") {

776
yxt-as-ui/src/views/maintenanceReceive/maintenanceOutbound.vue

@ -26,14 +26,14 @@
<el-col :span="8">
<div class="span-sty"><span class="must">*</span> 操作人</div>
<el-form-item prop="createByName">
<span class="addinputw addinputInfo">{{formobj.createByName}}</span>
<span class="addinputw addinputInfo">{{ formobj.createByName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="must">*</span> 操作部门</div>
<el-form-item prop="deptName">
<span class="addinputw addinputInfo">{{formobj.deptName}}</span>
<span class="addinputw addinputInfo">{{ formobj.deptName }}</span>
</el-form-item>
</el-col>
@ -51,8 +51,13 @@
<el-col :span="8">
<div class="span-sty"><span class="must">*</span> 领料人</div>
<el-form-item prop="warehouseManager">
<el-select v-model="formobj.warehouseManager" filterable clearable placeholder="请选择"
class="addinputw addinputInfo" @change="receivePerSelect">
<el-select
v-model="formobj.warehouseManager"
filterable
clearable
placeholder="请选择"
class="addinputw addinputInfo"
@change="receivePerSelect">
<el-option v-for="item in receivePerList" :key="item.sid" :label="item.name" :value="item.sid">
</el-option>
</el-select>
@ -77,14 +82,14 @@
<el-col :span="8">
<div class="span-sty">维修工单编号</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.sourceBillNo}}</span>
<span class="addinputw addinputInfo">{{ formobj.sourceBillNo }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">单据日期</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.billDate}}</span>
<span class="addinputw addinputInfo">{{ formobj.billDate }}</span>
</el-form-item>
</el-col>
@ -101,21 +106,21 @@
<el-col :span="8">
<div class="span-sty">工单类型</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.billType}}</span>
<span class="addinputw addinputInfo">{{ formobj.billType }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">科目</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.subject}}</span>
<span class="addinputw addinputInfo">{{ formobj.subject }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">是否外出</div>
<el-form-item>
<el-radio-group class="addinputw addinputInfo" :disabled="true" v-model="formobj.isGoOut">
<el-radio-group v-model="formobj.isGoOut" class="addinputw addinputInfo" :disabled="true">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
@ -128,14 +133,14 @@
<el-col :span="8">
<div class="span-sty">客户名称</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.customerName}}</span>
<span class="addinputw addinputInfo">{{ formobj.customerName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车牌号/车架号</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.vehMark}}/{{formobj.vinNo}}</span>
<span class="addinputw addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span>
</el-form-item>
</el-col>
@ -178,8 +183,12 @@
<el-row>
<el-col :span="24">
<div class="span-sty span-sty-one" style="width: 300px;!important;">前台登记时对商品要求备注</div>
<el-form-item><el-input class="addinputInfo-one" style="width: 70%" v-model="formobj.registerRemarks"
clearable placeholder="" /></el-form-item>
<el-form-item><el-input
v-model="formobj.registerRemarks"
class="addinputInfo-one"
style="width: 70%"
clearable
placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-table v-loading="listLoading" :data="formobj.detailList" border>
@ -197,7 +206,10 @@
<template slot-scope="scope">
<el-popover placement="right" width="800" trigger="click">
<div>
<el-table :data="commodityData" v-loading="commodityLoading" highlight-current-row
<el-table
v-loading="commodityLoading"
:data="commodityData"
highlight-current-row
@current-change="commodityCurrentChange($event, scope.row)">
<el-table-column fixed prop="goodsSpuName" label="商品名称" width="180" align="center" />
<el-table-column fixed prop="goodsSkuCode" label="商品图号" width="100" align="center" />
@ -211,15 +223,23 @@
<el-table-column prop="goodsSkuOwnSpec" label="规格" width="100" align="center" />
</el-table>
<pagination v-show="commodityData.length > 0" :total="commodityQuery.total"
:page.sync="commodityQuery.current" :limit.sync="commodityQuery.size" class="total pager"
<pagination
v-show="commodityData.length > 0"
:total="commodityQuery.total"
:page.sync="commodityQuery.current"
:limit.sync="commodityQuery.size"
class="total pager"
@pagination="commodityInput(scope.row)" />
<!-- <el-pagination :page.sync="commodityQuery.current" :page-size="commodityQuery.size"
layout="total, pager" :total="commodityQuery.total" /> -->
</div>
<el-input slot="reference" v-model="scope.row.goodsSpuName" @input="commodityInput(scope.row)"
clearable placeholder="商品名称" />
<el-input
slot="reference"
v-model="scope.row.goodsSpuName"
clearable
placeholder="商品名称"
@input="commodityInput(scope.row)" />
</el-popover>
</template>
</el-table-column>
@ -233,8 +253,12 @@
<el-table-column label="库存数量" prop="inventoryNum" width="120" align="center" />
<el-table-column label="出库数量" align="center" width="120">
<template slot-scope="scope">
<el-input @input="commodityComputeYHAndXSJE(scope.row,$event)" v-model="scope.row.count" clearable
placeholder="" oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" />
<el-input
v-model="scope.row.count"
clearable
placeholder=""
oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"
@input="commodityComputeYHAndXSJE(scope.row,$event)" />
</template>
</el-table-column>
<el-table-column label="金额" prop="amount" align="center" />
@ -257,399 +281,385 @@
</template>
<script>
import req from '@/api/maintenanceReceive/maintenanceReceive.js'
import chooseproducts from './relation/chooseproducts'
import {
getOrgSidByPath,
selAllByOrgSidPath
} from '@/api/Common/dictcommons'
import {
getCurrentDate
} from '@/utils/index.js'
export default {
components: {
chooseproducts,
},
data() {
return {
viewState: 1,
listLoading: false,
submitdisabled: false,
formobj: {
"sid": "",
"createBySid": window.sessionStorage.getItem('userSid'),
"createByName": window.sessionStorage.getItem('name'),
"sourceBillSid": "",
"warehouseManagerSid": "",
"warehouseManager": "",
"useOrgSid": "",
"createOrgSid": "",
"deptSid": window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1),
"deptName": window.sessionStorage.getItem('defaultOrgPathName').substring(window
.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1),
"createTime": getCurrentDate(),
"remarks": "",
"sourceBillNo": "",
"waitorName": "",
"billDate": "",
"billType": "",
"subject": "",
"customerName": "",
"vehMark": "",
"vinNo": "",
"customerOrg": "",
"sitemVoList": [
],
"detailList": [
]
},
receivePerList: [],
// commodity
commodityLoading: false,
commodityQuery: {
current: 1,
size: 10,
total: 0,
params: {
name: '',
useOrgSid: '',
}
},
commodityData: [],
rules: {
createByName: [{
required: true,
message: '制单人不能为空',
trigger: 'blur'
}],
deptName: [{
required: true,
message: '制单部门不能为空',
trigger: 'blur'
}],
createTime: [{
required: true,
message: '制单日期不能为空',
trigger: 'blur'
}],
warehouseManager: [{
required: true,
message: '请选择领料人',
trigger: 'change'
}],
import req from '@/api/maintenanceReceive/maintenanceReceive.js'
import chooseproducts from './relation/chooseproducts'
import {
getOrgSidByPath,
selAllByOrgSidPath
} from '@/api/Common/dictcommons'
import {
getCurrentDate
} from '@/utils/index.js'
export default {
components: {
chooseproducts
},
data() {
return {
viewState: 1,
listLoading: false,
submitdisabled: false,
formobj: {
"sid": "",
"createBySid": window.sessionStorage.getItem('userSid'),
"createByName": window.sessionStorage.getItem('name'),
"sourceBillSid": "",
"warehouseManagerSid": "",
"warehouseManager": "",
"useOrgSid": "",
"createOrgSid": "",
"deptSid": window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1),
"deptName": window.sessionStorage.getItem('defaultOrgPathName').substring(window
.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1),
"createTime": getCurrentDate(),
"remarks": "",
"sourceBillNo": "",
"waitorName": "",
"billDate": "",
"billType": "",
"subject": "",
"customerName": "",
"vehMark": "",
"vinNo": "",
"customerOrg": "",
"sitemVoList": [
],
"detailList": [
]
},
receivePerList: [],
// commodity
commodityLoading: false,
commodityQuery: {
current: 1,
size: 10,
total: 0,
params: {
name: '',
useOrgSid: ''
}
}
},
created() {
},
commodityData: [],
rules: {
createByName: [{
required: true,
message: '制单人不能为空',
trigger: 'blur'
}],
deptName: [{
required: true,
message: '制单部门不能为空',
trigger: 'blur'
}],
createTime: [{
required: true,
message: '制单日期不能为空',
trigger: 'blur'
}],
warehouseManager: [{
required: true,
message: '请选择领料人',
trigger: 'change'
}]
}
}
},
created() {
},
methods: {
initData() {
selAllByOrgSidPath({
orgSidPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
if (res.success) {
this.receivePerList = res.data
console.log("aaaaaa", this.receivePerList)
}
})
},
methods: {
initData() {
selAllByOrgSidPath({
orgSidPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
if (res.success) {
this.receivePerList = res.data
console.log("aaaaaa", this.receivePerList);
showAdd(sid) {
this.initData()
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
const params = {
sid: sid
}
req.initBill(params)
.then(resp => {
if (resp.success) {
console.log('>>>>>>>>>initBill', resp)
this.formobj = resp.data
this.formobj.detailList = []
this.formobj.deptName = window.sessionStorage.getItem('defaultOrgPathName').substring(window
.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1)
this.formobj.deptSid = window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1)
this.formobj.createBySid = window.sessionStorage.getItem('userSid')
this.formobj.createByName = window.sessionStorage.getItem('name')
this.formobj.createTime = getCurrentDate()
getOrgSidByPath({
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
if (res.success) {
this.formobj.createOrgSid = res.data
this.formobj.useOrgSid = res.data
// this.commodityQuery.params.useOrgSid = res.data
}
})
} else {
// resp.code
}
})
.catch(() => {})
},
backData(value) {
this.viewState = 1
//
const params = {
sid: value
}
req.initBill(params)
.then(resp => {
if (resp.success) {
console.log('>>>>>>>>>initBill', resp)
this.formobj = resp.data
this.formobj.detailList = []
this.formobj.deptName = window.sessionStorage.getItem('defaultOrgPathName').substring(window
.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1)
this.formobj.deptSid = window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1)
this.formobj.createBySid = window.sessionStorage.getItem('userSid')
this.formobj.createByName = window.sessionStorage.getItem('name')
this.formobj.createTime = getCurrentDate()
getOrgSidByPath({
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
if (res.success) {
this.formobj.createOrgSid = res.data
this.formobj.useOrgSid = res.data
// this.commodityQuery.params.useOrgSid = res.data
}
})
} else {
// resp.code
}
})
.catch(() => {})
},
resetState() {
this.viewState = 1
},
seleMaintenance() {
this.viewState = 2
const aa = []
this.$refs['divSp'].showData(aa, this.formobj.createOrgSid)
},
},
saveOrUpdate() {
console.log('>>>>>>>>>saveOrUpdate', this.formobj)
showAdd(sid) {
this.initData()
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
if (this.formobj.detailList.length == 0) {
this.$message({
showClose: true,
type: 'warning',
message: "商品不能为空"
})
return
}
var params = {
sid: sid
}
req.initBill(params)
.then(resp => {
if (resp.success) {
console.log('>>>>>>>>>initBill', resp)
this.formobj = resp.data
this.formobj.detailList = []
this.formobj.deptName = window.sessionStorage.getItem('defaultOrgPathName').substring(window
.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1)
this.formobj.deptSid = window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1)
this.formobj.createBySid = window.sessionStorage.getItem('userSid')
this.formobj.createByName = window.sessionStorage.getItem('name')
this.formobj.createTime = getCurrentDate()
getOrgSidByPath({
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
if (res.success) {
this.formobj.createOrgSid = res.data
this.formobj.useOrgSid = res.data
// this.commodityQuery.params.useOrgSid = res.data
}
})
} else {
// resp.code
}
})
.catch(() => {})
for (let i = 0; i < this.formobj.detailList.length; i++) {
const item = this.formobj.detailList[i]
},
backData(value) {
this.viewState = 1
//
var params = {
sid: value
}
req.initBill(params)
.then(resp => {
if (resp.success) {
console.log('>>>>>>>>>initBill', resp)
this.formobj = resp.data
this.formobj.detailList = []
this.formobj.deptName = window.sessionStorage.getItem('defaultOrgPathName').substring(window
.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1)
this.formobj.deptSid = window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1)
this.formobj.createBySid = window.sessionStorage.getItem('userSid')
this.formobj.createByName = window.sessionStorage.getItem('name')
this.formobj.createTime = getCurrentDate()
getOrgSidByPath({
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
if (res.success) {
this.formobj.createOrgSid = res.data
this.formobj.useOrgSid = res.data
// this.commodityQuery.params.useOrgSid = res.data
}
})
} else {
// resp.code
}
if (item.goodSpuSid == '') {
this.$message({
showClose: true,
type: 'warning',
message: "请添加商品"
})
.catch(() => {})
},
resetState() {
this.viewState = 1
},
seleMaintenance() {
this.viewState = 2
const aa = []
this.$refs['divSp'].showData(aa, this.formobj.createOrgSid)
},
saveOrUpdate() {
console.log('>>>>>>>>>saveOrUpdate', this.formobj)
return
}
if (this.formobj.detailList.length == 0) {
if (Number(item.count) == 0) {
this.$message({
showClose: true,
type: 'warning',
message: "商品不能为空"
message: "商品出库数量不能0"
})
return
}
}
for (var i = 0; i < this.formobj.detailList.length; i++) {
var item = this.formobj.detailList[i]
if (item.goodSpuSid == '') {
this.$message({
showClose: true,
type: 'warning',
message: "请添加商品"
})
return
}
if (Number(item.count) == 0) {
this.$message({
showClose: true,
type: 'warning',
message: "商品出库数量不能0"
this.$refs['form_obj'].validate((valid) => {
if (valid) {
req.saveOutBill(this.formobj)
.then(resp => {
if (resp.success) {
this.$message({
showClose: true,
type: 'success',
message: resp.msg
})
this.handleReturn('true')
} else {
// resp.code
}
})
return
}
}
this.$refs['form_obj'].validate((valid) => {
if (valid) {
req.saveOutBill(this.formobj)
.then(resp => {
if (resp.success) {
this.$message({
showClose: true,
type: 'success',
message: resp.msg
})
this.handleReturn('true')
} else {
// resp.code
}
})
.catch(() => {})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
"sid": "",
"createBySid": window.sessionStorage.getItem('userSid'),
"createByName": window.sessionStorage.getItem('name'),
"sourceBillSid": "",
"warehouseManagerSid": "",
"warehouseManager": "",
"useOrgSid": "",
"createOrgSid": "",
"deptSid": window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem(
'defaultOrgPath').lastIndexOf('/') + 1),
"deptName": window.sessionStorage.getItem('defaultOrgPathName').substring(window.sessionStorage.getItem(
'defaultOrgPathName').lastIndexOf('/') + 1),
"createTime": getCurrentDate(),
"remarks": "",
"sourceBillNo": "",
"waitorName": "",
"billDate": "",
"billType": "",
"subject": "",
"customerName": "",
"vehMark": "",
"vinNo": "",
"customerOrg": "",
"sitemVoList": [
],
"detailList": [
]
.catch(() => {})
}
this.submitdisabled = false
this.$emit('doback')
},
indexMethod(index) {
return index + 1
},
receivePerSelect(val) {
const choose = this.receivePerList.filter((item) => item.sid == val)
console.log('>>>>>>>>>receivePerSelect', choose)
this.formobj.warehouseManagerSid = choose[0].sid
this.formobj.warehouseManager = choose[0].name
},
commodityInput(row) {
console.log("commodityInput》》》》", row)
this.commodityQuery.params.name = row.goodsSpuName
this.commodityQuery.params.busrepairBillsid = row.sourceBillSid
this.commodityQuery.params.useOrgSid = window.sessionStorage.getItem('defaultOrgPath').substring(window
.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1)
this.commodityLoading = true
req.getGoodsListPage(this.commodityQuery).then((response) => {
if (response.success) {
this.commodityLoading = false
this.commodityData = response.data.records
this.commodityQuery.total = response.data.total
} else {
this.serviceLoading = false
this.commodityData = []
this.commodityQuery.total = 0
}
})
},
commodityCurrentChange(value, row) {
console.log("commodityCurrentChange》》》》", value)
console.log("commodityCurrentChange》》》》", row)
row.inventorySid = value.inventorySid
row.goodsID = value.goodsID
row.goodSpuSid = value.goodSpuSid
row.goodsSpuName = value.goodsSpuName
row.goodsSkuSid = value.goodsSkuSid
row.goodsSkuTitle = value.goodsSkuTitle
row.goodsSkuCode = value.goodsSkuCode
row.goodsSkuOwnSpec = value.goodsSkuOwnSpec
row.unit = value.unit
row.warehouseSid = value.warehouseSid
row.warehouseName = value.warehouseName
row.warehouseRackSid = value.warehouseRackSid
row.warehouseRackCode = value.warehouseRackCode
row.outboundCount = value.outboundCount //
row.inventoryNum = value.count //
row.count = 0 //
row.amount = 0.00
row.price = value.price
row.remarks = ''
document.body.click()
},
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
"sid": "",
"createBySid": window.sessionStorage.getItem('userSid'),
"createByName": window.sessionStorage.getItem('name'),
"sourceBillSid": "",
"warehouseManagerSid": "",
"warehouseManager": "",
"useOrgSid": "",
"createOrgSid": "",
"deptSid": window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem(
'defaultOrgPath').lastIndexOf('/') + 1),
"deptName": window.sessionStorage.getItem('defaultOrgPathName').substring(window.sessionStorage.getItem(
'defaultOrgPathName').lastIndexOf('/') + 1),
"createTime": getCurrentDate(),
"remarks": "",
"sourceBillNo": "",
"waitorName": "",
"billDate": "",
"billType": "",
"subject": "",
"customerName": "",
"vehMark": "",
"vinNo": "",
"customerOrg": "",
"sitemVoList": [
],
"detailList": [
]
}
this.submitdisabled = false
this.$emit('doback')
},
indexMethod(index) {
return index + 1
},
receivePerSelect(val) {
const choose = this.receivePerList.filter((item) => item.sid == val)
console.log('>>>>>>>>>receivePerSelect', choose)
this.formobj.warehouseManagerSid = choose[0].sid
this.formobj.warehouseManager = choose[0].name
},
addGoods(row) {
var goods = {
"sourceBillNo": this.formobj.sourceBillNo,
"sourceBillSid": this.formobj.sourceBillSid,
"sitemSid": row.serviceItemSid,
'serviceItem': row.serviceItem,
"inventorySid": "",
"goodsID": "",
"goodSpuSid": "",
"goodsSpuName": "",
"goodsSkuSid": "",
"goodsSkuTitle": "",
"goodsSkuCode": "",
"goodsSkuOwnSpec": "",
"currentCount": "",
"unit": "",
"warehouseSid": "",
"warehouseName": "",
"warehouseRackSid": "",
"warehouseRackCode": "",
"count": 0,
"price": '',
'amount': 0.00,
"outboundCount": 0,
"remarks": ""
commodityInput(row) {
console.log("commodityInput》》》》", row)
this.commodityQuery.params.name = row.goodsSpuName
this.commodityQuery.params.busrepairBillsid = row.sourceBillSid
this.commodityQuery.params.useOrgSid = window.sessionStorage.getItem('defaultOrgPath').substring(window
.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1)
this.commodityLoading = true
req.getGoodsListPage(this.commodityQuery).then((response) => {
if (response.success) {
this.commodityLoading = false
this.commodityData = response.data.records
this.commodityQuery.total = response.data.total
} else {
this.serviceLoading = false
this.commodityData = []
this.commodityQuery.total = 0
}
})
},
commodityCurrentChange(value, row) {
console.log("commodityCurrentChange》》》》", value)
console.log("commodityCurrentChange》》》》", row)
row.inventorySid = value.inventorySid
row.goodsID = value.goodsID
row.goodSpuSid = value.goodSpuSid
row.goodsSpuName = value.goodsSpuName
row.goodsSkuSid = value.goodsSkuSid
row.goodsSkuTitle = value.goodsSkuTitle
row.goodsSkuCode = value.goodsSkuCode
row.goodsSkuOwnSpec = value.goodsSkuOwnSpec
row.unit = value.unit
row.warehouseSid = value.warehouseSid
row.warehouseName = value.warehouseName
row.warehouseRackSid = value.warehouseRackSid
row.warehouseRackCode = value.warehouseRackCode
row.outboundCount = value.outboundCount //
row.inventoryNum = value.count //
row.count = 0 //
row.amount = 0.00
row.price = value.price
row.remarks = ''
document.body.click()
},
this.formobj.detailList.push(goods)
},
deleteGoods(row) {
const index = this.formobj.detailList.findIndex((item) => item.goodSpuSid == row.goodSpuSid)
console.log('>>>>>>>>>receivePerSelect', index)
this.formobj.detailList.splice(index, 1)
},
commodityComputeYHAndXSJE(row, val) {
console.log("aaa", row);
console.log("aaa", val);
addGoods(row) {
const goods = {
"sourceBillNo": this.formobj.sourceBillNo,
"sourceBillSid": this.formobj.sourceBillSid,
"sitemSid": row.serviceItemSid,
'serviceItem': row.serviceItem,
"inventorySid": "",
"goodsID": "",
"goodSpuSid": "",
"goodsSpuName": "",
"goodsSkuSid": "",
"goodsSkuTitle": "",
"goodsSkuCode": "",
"goodsSkuOwnSpec": "",
"currentCount": "",
"unit": "",
"warehouseSid": "",
"warehouseName": "",
"warehouseRackSid": "",
"warehouseRackCode": "",
"count": 0,
"price": '',
'amount': 0.00,
"outboundCount": 0,
"remarks": ""
}
row.amount = (Number(row.count) * Number(row.price)).toFixed(2)
},
this.formobj.detailList.push(goods)
},
deleteGoods(row) {
const index = this.formobj.detailList.findIndex((item) => item.goodSpuSid == row.goodSpuSid)
console.log('>>>>>>>>>receivePerSelect', index)
this.formobj.detailList.splice(index, 1)
},
commodityComputeYHAndXSJE(row, val) {
console.log("aaa", row)
console.log("aaa", val)
row.amount = (Number(row.count) * Number(row.price)).toFixed(2)
}
}
}
</script>
<style scoped>
/deep/ .el-form-item__error {

330
yxt-as-ui/src/views/storage/stocktaking/index.vue

@ -10,42 +10,28 @@
<div v-show="isSearchShow" class="search">
<el-form :inline="true" class="tab-header">
<el-form-item label="部门名称">
<el-input v-model="queryParams.params.goodsSpuName" placeholder="" clearable />
<el-input v-model="queryParams.params.deptNmae" placeholder="" clearable />
</el-form-item>
<el-form-item label="盘点编号">
<el-input v-model="queryParams.params.goodsSpuName" placeholder="" clearable />
<el-input v-model="queryParams.params.billNo" placeholder="" clearable />
</el-form-item>
<el-form-item label="生成日期">
<el-date-picker
v-model="queryParams.params.createDateStart"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
style="width: 200px;"
@change="selectTime1"
/>
<el-date-picker v-model="queryParams.params.createStartTime" type="date" placeholder="选择日期"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;" />
<el-date-picker
v-model="queryParams.params.createDateEnd"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
style="width: 200px;"
@change="selectTime2"
/>
<el-date-picker v-model="queryParams.params.createEndTime" type="date" placeholder="选择日期"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;" />
</el-form-item>
<el-form-item label="盘库状态">
<el-select v-model="queryParams.params.reviewStatus" placeholder="请选择">
<el-select v-model="queryParams.params.stocktakType" placeholder="请选择">
<el-option v-for="item in stocktakTypeList" :key="item" :label="item.name" :value="item.name" />
</el-select>
</el-form-item>
<el-form-item label="盘点人">
<el-input v-model="queryParams.params.goodsSpuName" placeholder="" clearable />
<el-input v-model="queryParams.params.createByName" placeholder="" clearable />
</el-form-item>
<el-form-item label="监盘人">
<el-input v-model="queryParams.params.goodsSpuName" placeholder="" clearable />
<el-input v-model="queryParams.params.finance" placeholder="" clearable />
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
@ -61,106 +47,101 @@
<!-- End 项目列表头部 -->
<!-- Start 项目列表 -->
<div class="">
<el-table
v-loading="tableLoading"
:data="dataList"
border
style="width: 100%"
@selection-change="selectionLineChangeHandle"
>
<el-table v-loading="tableLoading" :data="dataList" border style="width: 100%"
@selection-change="selectionLineChangeHandle">
<el-table-column fixed width="50" type="selection" align="center" />
<el-table-column fixed width="60" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column fixed label="操作" align="center" width="220">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="toRelevancy(scope.row)">查看</el-button>
<el-button type="primary" size="mini" @click="toRelevancy(scope.row)">办理</el-button>
<el-button type="primary" size="mini" @click="toRelevancy(scope.row)">盘库报告</el-button>
<el-button type="primary" size="mini" @click="toDetail(scope.row)">查看</el-button>
<el-button type="primary" size="mini" v-show="scope.row.isReport=='1'"
@click="toEdit(scope.row)">办理</el-button>
<el-button type="primary" size="mini" v-show="scope.row.isReport=='1'"
@click="toReport(scope.row)">盘库报告</el-button>
</template>
</el-table-column>
<el-table-column prop="billNo" label="流程状态" width="120" align="center" />
<el-table-column prop="billNo" label="部门" width="120" align="center" />
<el-table-column prop="nodeState" label="流程状态" width="120" align="center" />
<el-table-column prop="deptName" label="部门" width="120" align="center" />
<el-table-column prop="billNo" label="盘点编号" width="120" align="center" />
<el-table-column prop="createDate" label="生成日期" width="120" align="center" />
<el-table-column prop="createByName" label="盘点人" width="120" align="center" />
<el-table-column prop="checkStateName" label="监盘人" width="120" align="center" />
<el-table-column prop="completeDate" label="盘库状态" width="120" align="center" />
<el-table-column prop="finances" label="监盘人" width="120" align="center" />
<el-table-column prop="stocktakType" label="盘库状态" width="120" align="center" />
<el-table-column label="应盘" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
<el-table-column prop="ypNum" label="数量" align="center" width="100" />
<el-table-column prop="ypMoney" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="实盘" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
<el-table-column prop="spNum" label="数量" align="center" width="100" />
<el-table-column prop="spMoney" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="未盘" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
<el-table-column prop="wpNum" label="数量" align="center" width="100" />
<el-table-column prop="wpMoney" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="盘盈" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
<el-table-column prop="pyNum" label="数量" align="center" width="100" />
<el-table-column prop="pyMoney" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="盘亏" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
<el-table-column prop="pkNum" label="数量" align="center" width="100" />
<el-table-column prop="pkMoney" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="盘损" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
<el-table-column prop="psNum" label="数量" align="center" width="100" />
<el-table-column prop="psMoney" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column prop="lossAmount" label="备注" align="center" width="200" />
<el-table-column prop="remarks" label="备注" align="center" width="200" />
</el-table>
</div>
<!-- End 项目列表 -->
<div class="pages">
<div class="tit" />
<!-- 翻页 -->
<pagination
v-show="dataList.length > 0"
:total="queryParams.total"
:page.sync="queryParams.current"
:limit.sync="queryParams.size"
class="pagination"
@pagination="loadList"
/>
<pagination v-show="dataList.length > 0" :total="queryParams.total" :page.sync="queryParams.current"
:limit.sync="queryParams.size" class="pagination" @pagination="loadList" />
</div>
</div>
</div>
<!-- End 查询和其列表部分 -->
<!-- 新增修改部分组件 -->
<divAdd v-show="viewState == 2 || viewState == 3" ref="divadd" @doback="resetState" @reloadlist="loadList" />
<!-- 盘库 -->
<stocktakingRackCodeList v-show="viewState == 2 " ref="divstocktak" @doback="resetState" @reloadlist="loadList" />
<!-- 办理 -->
<stocktakingEditReport v-show="viewState == 3 " ref="divedit" @doback="resetState" @reloadlist="loadList" />
<!-- 盘库报告 -->
<stocktakingReportDetail v-show="viewState == 4 " ref="divreport" @doback="resetState" @reloadlist="loadList" />
<!--查看详情 -->
<stocktakingInfo v-show="viewState == 5" ref="divinfo" @doback="resetState" />
<el-dialog title="新建盘点单" :visible.sync="dialogVisible" :before-close="handleClose">
<el-form ref="dataForm" class="formaddcopy02" style="margin-top: -40px;" :model="formobj">
<el-form ref="form_obj" class="formaddcopy02" :rules="rules" style="margin-top: -40px;" :model="formobj">
<el-row class="first_row">
<el-col :span="6">
<div class="span-sty">盘点人</div>
<el-form-item> <span class="addinputInfo addinputw">审核结果</span></el-form-item>
<el-form-item> <span class="addinputInfo addinputw">{{formobj.createByName}}</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">生成日期</div>
<el-form-item> <span class="addinputInfo addinputw">审核结果</span></el-form-item>
<el-form-item> <span class="addinputInfo addinputw">{{formobj.createDate}}</span></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">监盘人</div>
<el-form-item><el-select
v-model="queryParams.params.reviewStatus"
placeholder="请选择"
class="addinputInfo addinputw"
>
<el-option v-for="item in stocktakTypeList" :key="item" :label="item.name" :value="item.name" />
</el-select></el-form-item>
<div class="span-sty"><span class="must">*</span> 监盘人</div>
<el-form-item prop="financeSid">
<!-- <el-select v-model="formobj.financeNmae" placeholder="请选择" class="addinputInfo addinputw">
<el-option v-for="item in financeList" :key="item" :label="item.name" :value="item.sid" />
</el-select> -->
<el-select v-model="formobj.financeSid" placeholder="请选择" class="addinputInfo addinputw" filterable
multiple @change="selectFinance">
<el-option v-for="item in financeList" :key="item" :label="item.name" :value="item.sid"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><el-input
v-model="formobj.remarks"
placeholder="请填写"
class="addinputInfo addinputw"
clearable
/>
<el-form-item><el-input v-model="formobj.remarks" placeholder="请填写" class="addinputInfo addinputw"
clearable />
</el-form-item>
</el-col>
</el-row>
@ -181,13 +162,28 @@
import ButtonBar from '@/components/ButtonBar'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import divAdd from './stocktakingAdd.vue'
import stocktakingAdd from './stocktakingAdd.vue'
import stocktakingInfo from './stocktakingInfo.vue'
import stocktakingRackCodeList from './stocktakingRackCodeList.vue'
import stocktakingEditReport from './stocktakingEditReport.vue'
import stocktakingReportDetail from './stocktakingReportDetail.vue'
import {
getCurrentDate
} from '@/utils/index.js'
import {
selFianceByOrgSidPath
} from '@/api/Common/dictcommons'
export default {
components: {
ButtonBar,
Pagination,
pageye,
divAdd
stocktakingAdd,
stocktakingInfo,
stocktakingRackCodeList,
stocktakingEditReport,
stocktakingReportDetail
},
data() {
return {
@ -209,14 +205,14 @@
type: 'primary',
size: 'small',
icon: 'edit',
btnKey: 'toEdit',
btnKey: 'toShowBill',
btnLabel: '盘库'
},
{
type: 'primary',
size: 'small',
icon: 'edit',
btnKey: 'toEdit',
btnKey: 'toStocktak',
btnLabel: '生成盘库报告'
},
{
@ -232,8 +228,13 @@
size: 10,
total: 0,
params: {
'createDateStart': '',
'createDateEnd': ''
"deptNmae": "",
"billNo": "",
"createStartTime": "",
"createEndTime": "",
"stocktakType": "",
"createByName": "",
"finance": ""
}
},
sids: [],
@ -247,22 +248,87 @@
name: '已完成'
}
],
formobj: {}
formobj: {
createByName: window.sessionStorage.getItem('name'),
createBySid: window.sessionStorage.getItem('userSid'),
createDate: getCurrentDate(),
financeSid: [],
finances: [],
remarks: ""
},
financeList: [],
rules: {
financeSid: [{
required: true,
message: '监盘人不能为空',
trigger: 'change'
}],
}
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
created() {
// this.loadList()
this.loadList()
selFianceByOrgSidPath({
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
if (res.success) {
this.financeList = res.data
}
})
},
methods: {
selectFinance(val) {
console.log('>>>>>>>>>selectFinance', val)
const choose = this.financeList.filter((item) => val.includes(item.sid))
console.log('>>>>>>>>>selectFinance', choose)
this.formobj.finances = []
for (var i = 0; i < choose.length; i++) {
this.formobj.finances.push({
name: choose[i].name,
sid: choose[i].sid
})
}
},
handleClose() {
this.dialogVisible = false
},
saveExamine() {
this.dialogVisible = false
console.log('>>>>>>>>>saveExamine', this.formobj)
this.$refs['form_obj'].validate((valid) => {
if (valid) {
req.createBill(this.formobj).then((resp) => {
if (resp.success) {
this.$message({
type: 'success',
message: '操作成功',
showClose: true
})
this.dialogVisible = false
this.formobj = {
createByName: window.sessionStorage.getItem('name'),
createBySid: window.sessionStorage.getItem('userSid'),
createDate: getCurrentDate(),
financeSid: [],
finances: [],
remarks: ""
}
this.loadList()
}
}).catch(() => {})
}
})
},
//
@ -279,8 +345,11 @@
case 'toAdd':
this.toAdd()
break
case 'toEdit':
this.toEdit()
case 'toShowBill':
this.toShowBill()
break
case 'toStocktak':
this.toStocktak()
break
case 'doClose':
this.doClose()
@ -305,6 +374,17 @@
}).catch(() => {
this.tableLoading = false
})
// this.$http({
// method: "post",
// url: "http://127.0.0.1:4523/mock/430173/user/list",
// params: this.queryParams,
// }).then((resp) => {
// const data = resp.data
// this.queryParams.total = data.total
// this.dataList = data.records
// });
},
//
@ -323,8 +403,13 @@
size: 10,
total: 0,
params: {
'createDateStart': '',
'createDateEnd': ''
"deptNmae": "",
"billNo": "",
"createStartTime": "",
"createEndTime": "",
"stocktakType": "",
"createByName": "",
"finance": ""
}
}
this.loadList()
@ -333,14 +418,29 @@
// this.viewState = 2
// this.$refs['divadd'].showAdd()
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.dialogVisible = true
},
selectionLineChangeHandle(val) {
console.log('val', val)
this.selectionList = val
const aa = []
val.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
toEdit() {
toDetail(row) {
console.log('toDetail', row)
this.viewState = 5
this.$refs['divinfo'].loadList(row.sid)
},
toShowBill() {
if (this.selectionList.length != 1) {
this.$message({
type: 'warning',
@ -350,28 +450,58 @@
return
}
if (this.selectionList[0].checkState == 2) {
this.viewState = 2
this.$refs['divstocktak'].loadList(this.selectionList[0].sid)
},
toStocktak() {
if (this.selectionList.length == 0) {
this.$message({
type: 'warning',
message: '此记录已完成,不可重复编辑。',
message: '请选择一条数据。',
showClose: true
})
return
}
for (var i = this.selectionList.length - 1; i >= 0; i--) {
if (this.selectionList[i].isReport == '1') {
this.$message({
type: 'warning',
message: '所选记录已生成报告,不可重复生成。',
showClose: true
})
return
}
}
req.billCreateReport(this.sids).then((resp) => {
if (resp.success) {
this.$message({
type: 'success',
message: '操作成功',
showClose: true
})
this.loadList()
}
}).catch(() => {})
},
toEdit(row) {
this.viewState = 3
this.$refs['divadd'].showEdit(this.selectionList[0])
this.$refs['divedit'].showEdit(row.sid)
},
toReport(row) {
this.viewState = 4
this.$refs['divreport'].showDetail(row.sid)
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
},
toRelevancy(row) {
this.viewState = 3
this.$refs['divadd'].showEdit(row)
},
resetState() {
this.viewState = 1
}

367
yxt-as-ui/src/views/storage/stocktaking/stocktakingEditReport.vue

@ -0,0 +1,367 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>编辑盘库报告</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="submit()">提交</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="downLoadPDF()">下载pdf</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" class="formaddcopy02">
<el-row class="first_row">
<el-col :span="8">
<div class="span-sty">发起人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">发起部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.deptName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">发起日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createTime }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">盘点人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">监盘人</div>
<el-form-item><span class="addinputInfo">{{ formobj.finances }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">备注</div>
<el-form-item><el-input v-model="formobj.remarks" placeholder="" class="addinputw addinputInfo"
clearable /></el-form-item>
</el-col>
</el-row>
<div class="title titleOne">
<div>总体盘点情况</div>
<el-button type="primary" size="mini" class="btntopblueline" @click="downLoadDetail()">明细下载</el-button>
</div>
<div style="display: flex;flex-direction: row;align-items: center;
border: 1px solid #E0E3EB;line-height: 30px;padding: 5px 10px;">
<div style="flex: 1;">
<span> 应盘数量:</span>
<span> {{formobj.ypNum}}</span>
</div>
<div style="flex: 1;">
<span> 应盘金额:</span>
<span> {{formobj.ypMoney}}</span>
</div>
<div style="flex: 1;">
<span> 实盘数量:</span>
<span> {{formobj.spNum}}</span>
</div>
<div style="flex: 1;">
<span> 实盘金额:</span>
<span> {{formobj.spMoney}}</span>
</div>
<div style="flex: 1;">
<span> 盘盈数量:</span>
<span> {{formobj.pyNum}}</span>
</div>
<div style="flex: 1;">
<span> 盘盈金额:</span>
<span> {{formobj.pyMoney}}</span>
</div>
<div style="flex: 1;">
<span> 盘亏数量:</span>
<span> {{formobj.pkNum}}</span>
</div>
<div style="flex: 1;">
<span> 盘亏金额:</span>
<span> {{formobj.pkMoney}}</span>
</div>
<div style="flex: 1;">
<span> 盘损数量:</span>
<span> {{formobj.psNum}}</span>
</div>
<div style="flex: 1;">
<span> 盘损金额:</span>
<span> {{formobj.psMoney}}</span>
</div>
</div>
<div class="title titleOne">
<div>仓库盘点情况</div>
</div>
<el-table :data="formobj.warehouseStocktakList" :index="index" border style="width: 100%;">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="warehouseName" label="仓库" width="200" align="center" />
<el-table-column prop="ypNum" label="应盘" align="center" />
<el-table-column prop="ypMoney" label="应盘金额" align="center" />
<el-table-column prop="spNum" label="实盘" align="center" />
<el-table-column prop="spMoney" label="实盘金额" align="center" />
<el-table-column prop="pyNum" label="盘盈" align="center" />
<el-table-column prop="pyMoney" label="盘盈金额" align="center" />
<el-table-column prop="pkNum" label="盘亏" align="center" />
<el-table-column prop="pkMoney" label="盘亏金额" align="center" />
<el-table-column prop="psNum" label="盘损" align="center" />
<el-table-column prop="psMoney" label="盘损金额" align="center" />
</el-table>
<div class="title titleOne">
<div>库区盘点情况</div>
</div>
<el-table :data="formobj.arehouseAreaeStocktakList" :index="index" border style="width: 100%;">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="warehouseAreaeName" label="仓库-库区" width="200" align="center" />
<el-table-column prop="ypNum" label="应盘" align="center" />
<el-table-column prop="ypMoney" label="应盘金额" align="center" />
<el-table-column prop="spNum" label="实盘" align="center" />
<el-table-column prop="spMoney" label="实盘金额" align="center" />
<el-table-column prop="pyNum" label="盘盈" align="center" />
<el-table-column prop="pyMoney" label="盘盈金额" align="center" />
<el-table-column prop="pkNum" label="盘亏" align="center" />
<el-table-column prop="pkMoney" label="盘亏金额" align="center" />
<el-table-column prop="psNum" label="盘损" align="center" />
<el-table-column prop="psMoney" label="盘损金额" align="center" />
</el-table>
</el-form>
</div>
</div>
</div>
</template>
<script>
import req from '@/api/storage/stocktaking.js'
import {
getCurrentDate
} from '@/utils/index.js'
import {
getOrgSidByPath,
} from '@/api/Common/dictcommons'
export default {
data() {
return {
viewState: 1,
submitdisabled: false,
index: 0,
formobj: {
"createByName": window.sessionStorage.getItem('name'),
"createBySid": window.sessionStorage.getItem('userSid'),
"deptName": window.sessionStorage.getItem('defaultOrgPathName').substring(window
.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1),
"deptSid": window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1),
"createTime": getCurrentDate(),
"createName": "",
"finances": "",
"remarks": "",
"ypNum": "",
"ypMoney": "",
"spNum": "",
"spMoney": "",
"pyNum": "",
"pyMoney": "",
"pkNum": "",
"pkMoney": "",
"psNum": "",
"psMoney": "",
"warehouseStocktakList": [],
"arehouseAreaeStocktakList": [],
"useOrgSid": '',
"createOrgSid": '',
},
}
},
created() {
},
methods: {
init() {
getOrgSidByPath({
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
if (res.success) {
this.formobj.createOrgSid = res.data
this.formobj.useOrgSid = res.data
}
})
},
showEdit(row) {
req.init(row.sid).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.createByName = window.sessionStorage.getItem('name')
this.formobj.createBySid = window.sessionStorage.getItem('userSid')
this.formobj.deptName = window.sessionStorage.getItem('defaultOrgPathName').substring(window
.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1)
this.formobj.deptSid = window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1)
this.formobj.createTime = getCurrentDate()
this.init()
}
})
},
saveOrUpdate() {
this.submitdisabled = true
req.saveReport(this.formobj).then((res) => {
if (res.success) {
this.$message({
showClose: true,
type: 'success',
message: '保存成功'
})
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
},
submit() {
req.submitReport(this.formobj).then((res) => {
if (res.success) {
this.$message({
showClose: true,
type: 'success',
message: '操作成功'
})
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {}
this.submitdisabled = false
this.$emit('doback')
},
downLoadPDF() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.downloadPDF().then((resp) => {
loading.close()
const blob = new Blob([resp], {
type: 'application/vnd.ms-excel'
})
const fileName = '盘库报告' + '.pdf'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'nonde'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
loading.close()
})
},
downLoadDetail() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.downloadExcel().then((resp) => {
loading.close()
const blob = new Blob([resp], {
type: 'application/vnd.ms-excel'
})
const fileName = '总体盘库明细' + '.xls'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'nonde'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
loading.close()
})
}
}
}
</script>
<style scoped>
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
.must {
color: #f00;
}
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
.first_row {
border-top: 1px solid #E0E3EB;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .el-radio-group {
display: inline;
line-height: 1px;
vertical-align: middle;
}
</style>

278
yxt-as-ui/src/views/storage/stocktaking/stocktakingInfo.vue

@ -0,0 +1,278 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<button-bar ref="btnbar" view-title="商品盘点明细" :btndisabled="btndisabled" @btnhandle="btnHandle" />
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">
{{ searchxianshitit }}
</el-button>
<div v-show="isSearchShow" class="search">
<el-form :inline="true" class="tab-header">
<el-form-item label="仓库">
<el-input v-model="queryParams.params.warehouseName" placeholder="" clearable />
</el-form-item>
<el-form-item label="库区">
<el-input v-model="queryParams.params.warehouseAreaeName" placeholder="" clearable />
</el-form-item>
<el-form-item label="库位">
<el-input v-model="queryParams.params.warehouseRackName" placeholder="" clearable />
</el-form-item>
<el-form-item label="商品ID">
<el-input v-model="queryParams.params.goodsId" placeholder="" clearable />
</el-form-item>
<el-form-item label="商品名称">
<el-input v-model="queryParams.params.goodsName" placeholder="" clearable />
</el-form-item>
<el-form-item label="商品图号">
<el-input v-model="queryParams.params.goodsCode" placeholder="" clearable />
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" size="small" icon="el-icon-search" @click="dosearch">查询</el-button>
<el-button type="primary" size="small" icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</div>
</div>
</div>
<!-- Start 项目列表头部 -->
<div class="listtop">
<div class="tit">商品盘点记录</div>
</div>
<!-- End 项目列表头部 -->
<!-- Start 项目列表 -->
<div class="">
<el-table v-loading="tableLoading" :data="dataList" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column prop="goodsID" label="商品ID" width="120" align="center" />
<el-table-column prop="goodsName" label="商品名称" width="120" align="center" />
<el-table-column prop="goodsCode" label="图号" width="120" align="center" />
<el-table-column prop="warehouseName" label="仓库" width="120" align="center" />
<el-table-column prop="warehouseAreaeName" label="库区" width="120" align="center" />
<el-table-column prop="warehouseRackName" label="库位" width="120" align="center" />
<el-table-column prop="unit" label="单位" width="120" align="center" />
<el-table-column prop="price" label="单价" width="120" align="center" />
<el-table-column prop="inventoryNum" label="库存数量" width="120" align="center" />
<el-table-column prop="inventoryMoeny" label="库存金额" width="120" align="center" />
<el-table-column prop="spNum" label="实盘数量" width="120" align="center" />
<el-table-column prop="spMoney" label="实盘金额" width="120" align="center" />
<el-table-column prop="state" label="状态" width="120" align="center" />
<el-table-column prop="ykNum" label="亏盈数" width="120" align="center" />
<el-table-column prop="psNum" label="盘损数量" width="120" align="center" />
<el-table-column prop="psMoney" label="盘损金额" width="120" align="center" />
<el-table-column prop="remarks" label="备注" align="center" width="200" />
<el-table-column label="附件" align="center">
<template slot-scope="scope">
<div style="color: #1890FF; text-decoration: underline ;" @click="showImage(scope.row.fillPaths)">
查看
</div>
</template>
</el-table-column>
</el-table>
</div>
<!-- End 项目列表 -->
<div class="pages">
<div class="tit" />
<!-- 翻页 -->
<pagination v-show="dataList.length > 0" :total="queryParams.total" :page.sync="queryParams.current"
:limit.sync="queryParams.size" class="pagination" @pagination="loadList" />
</div>
</div>
</div>
<el-dialog title="附件" :visible.sync="dialogVisible" :before-close="handleClose">
<el-form ref="dataForm1" class="formadd" style="margin-top: -30px;">
<el-row class="first_row">
<el-col :span="24" class="trightb">
<el-image style="width: 120px;height: 120px; margin: 10px; background: #f0f;"
v-for="(item,index) in fileList" :src="item.url" :preview-src-list="[item]">
</el-image>
</el-col>
</el-row>
</el-form>
</el-dialog>
</div>
</template>
<script>
import req from '@/api/storage/stocktaking.js'
import ButtonBar from '@/components/ButtonBar'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
export default {
components: {
ButtonBar,
Pagination,
pageye,
},
data() {
return {
dialogVisible: false,
btndisabled: false,
viewState: 1, // 1 2 3 4
isSearchShow: false,
searchxianshitit: '显示查询条件',
tableLoading: false,
dataList: [],
btnList: [{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}],
queryParams: {
current: 1,
size: 10,
total: 0,
params: {
"sid": "",
"warehouseName": "",
"warehouseAreaeName": "",
"warehouseRackName": "",
"goodsId": "",
"goodsName": "",
"goodsCode": ""
}
},
billSid: "",
fileList: []
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
created() {
},
methods: {
showImage(paths) {
this.fileList = paths
this.dialogVisible = true
},
handleClose() {
this.dialogVisible = false
},
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
switch (btnKey) {
case 'doClose':
this.close()
break
default:
break
}
},
loadList(sid) {
this.tableLoading = true
this.billSid = sid
this.queryParams.params.sid = sid
req.billDetail(this.queryParams).then((resp) => {
this.tableLoading = false
if (resp.success) {
const data = resp.data
this.queryParams.total = data.total
this.dataList = data.records
} else {
// resp.code
this.dataList = []
this.queryParams.total = 0
}
}).catch(() => {
this.tableLoading = false
})
},
//
indexMethod(index) {
var pagestart = (this.queryParams.current - 1) * this.queryParams.size
var pageindex = index + 1 + pagestart
return pageindex
},
dosearch() {
this.queryParams.current = 1
this.loadList()
},
resetQuery() {
this.queryParams = {
current: 1,
size: 10,
total: 0,
params: {
"sid": this.billSid,
"warehouseName": "",
"warehouseAreaeName": "",
"warehouseRackName": "",
"goodsId": "",
"goodsName": "",
"goodsCode": ""
}
}
this.loadList()
},
close() {
this.$emit('doback')
},
}
}
</script>
<style scoped>
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
.must {
color: #f00;
}
.span-sty {
width: 90px !important;
}
.addinputInfo {
margin-left: 80px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 80px !important;
width: calc(100% - 70px);
}
.first_row {
border-top: 1px solid #E0E3EB;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
/deep/ .el-form-item__error {
margin-left: 180px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .el-radio-group {
display: inline;
line-height: 1px;
vertical-align: middle;
}
</style>

263
yxt-as-ui/src/views/storage/stocktaking/stocktakingRackCodeDetail.vue

@ -0,0 +1,263 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<button-bar ref="btnbar" view-title="库位商品盘点明细" :btndisabled="btndisabled" @btnhandle="btnHandle" />
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">
{{ searchxianshitit }}
</el-button>
<div v-show="isSearchShow" class="search">
<el-form :inline="true" class="tab-header">
<el-form-item label="商品ID">
<el-input v-model="queryParams.params.goodsId" placeholder="" clearable />
</el-form-item>
<el-form-item label="商品名称">
<el-input v-model="queryParams.params.goodsName" placeholder="" clearable />
</el-form-item>
<el-form-item label="商品图号">
<el-input v-model="queryParams.params.goodsCode" placeholder="" clearable />
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" size="small" icon="el-icon-search" @click="dosearch">查询</el-button>
<el-button type="primary" size="small" icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</div>
</div>
</div>
<!-- Start 项目列表头部 -->
<div class="listtop">
<div class="tit">商品盘点记录</div>
</div>
<!-- End 项目列表头部 -->
<!-- Start 项目列表 -->
<div class="">
<el-table v-loading="tableLoading" :data="dataList" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column prop="goodsID" label="商品ID" width="120" align="center" />
<el-table-column prop="goodsName" label="商品名称" width="120" align="center" />
<el-table-column prop="goodsCode" label="图号" width="120" align="center" />
<el-table-column prop="warehouseName" label="仓库" width="120" align="center" />
<el-table-column prop="warehouseAreaeName" label="库区" width="120" align="center" />
<el-table-column prop="warehouseRackName" label="库位" width="120" align="center" />
<el-table-column prop="unit" label="单位" width="120" align="center" />
<el-table-column prop="price" label="单价" width="120" align="center" />
<el-table-column prop="inventoryNum" label="库存数量" width="120" align="center" />
<el-table-column prop="inventoryMoeny" label="库存金额" width="120" align="center" />
<el-table-column prop="spNum" label="实盘数量" width="120" align="center" />
<el-table-column prop="spMoney" label="实盘金额" width="120" align="center" />
<el-table-column prop="state" label="状态" width="120" align="center" />
<el-table-column prop="ykNum" label="亏盈数" width="120" align="center" />
<el-table-column prop="psNum" label="盘损数量" width="120" align="center" />
<el-table-column prop="psMoney" label="盘损金额" width="120" align="center" />
<el-table-column prop="remarks" label="备注" align="center" width="200" />
<el-table-column label="附件" align="center">
<template slot-scope="scope">
<div style="color: #1890FF; text-decoration: underline ;" @click="showImage(scope.row.fillPaths)">
查看
</div>
</template>
</el-table-column>
</el-table>
</div>
<!-- End 项目列表 -->
<div class="pages">
<div class="tit" />
<!-- 翻页 -->
<pagination v-show="dataList.length > 0" :total="queryParams.total" :page.sync="queryParams.current"
:limit.sync="queryParams.size" class="pagination" @pagination="loadList" />
</div>
</div>
</div>
<el-dialog title="附件" :visible.sync="dialogVisible" :before-close="handleClose">
<el-form ref="dataForm1" class="formadd" style="margin-top: -30px;">
<el-row class="first_row">
<el-col :span="24" class="trightb">
<el-image style="width: 120px;height: 120px; margin: 10px; background: #f0f;"
v-for="(item,index) in fileList" :src="item.url" :preview-src-list="[item]">
</el-image>
</el-col>
</el-row>
</el-form>
</el-dialog>
</div>
</template>
<script>
import req from '@/api/storage/stocktaking.js'
import ButtonBar from '@/components/ButtonBar'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
export default {
components: {
ButtonBar,
Pagination,
pageye,
},
data() {
return {
dialogVisible: false,
btndisabled: false,
viewState: 1, // 1 2 3 4
isSearchShow: false,
searchxianshitit: '显示查询条件',
tableLoading: false,
dataList: [],
btnList: [{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}],
queryParams: {
current: 1,
size: 10,
total: 0,
params: {
"sid": "",
"goodsId": "",
"goodsName": "",
"goodsCode": ""
}
},
billSid: "",
fileList: []
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
created() {
},
methods: {
showImage(paths) {
this.fileList = paths
this.dialogVisible = true
},
handleClose() {
this.dialogVisible = false
},
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
switch (btnKey) {
case 'doClose':
this.close()
break
default:
break
}
},
loadList(sid) {
this.tableLoading = true
this.billSid = sid
this.queryParams.params.sid = sid
req.billRackCodeDetail(this.queryParams).then((resp) => {
this.tableLoading = false
if (resp.success) {
const data = resp.data
this.queryParams.total = data.total
this.dataList = data.records
} else {
// resp.code
this.dataList = []
this.queryParams.total = 0
}
}).catch(() => {
this.tableLoading = false
})
},
//
indexMethod(index) {
var pagestart = (this.queryParams.current - 1) * this.queryParams.size
var pageindex = index + 1 + pagestart
return pageindex
},
dosearch() {
this.queryParams.current = 1
this.loadList()
},
resetQuery() {
this.queryParams = {
current: 1,
size: 10,
total: 0,
params: {
"sid": this.billSid,
"goodsId": "",
"goodsName": "",
"goodsCode": ""
}
}
this.loadList()
},
close() {
this.$emit('doback')
},
}
}
</script>
<style scoped>
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
.must {
color: #f00;
}
.span-sty {
width: 90px !important;
}
.addinputInfo {
margin-left: 80px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 80px !important;
width: calc(100% - 70px);
}
.first_row {
border-top: 1px solid #E0E3EB;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
/deep/ .el-form-item__error {
margin-left: 180px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .el-radio-group {
display: inline;
line-height: 1px;
vertical-align: middle;
}
</style>

272
yxt-as-ui/src/views/storage/stocktaking/stocktakingRackCodeList.vue

@ -0,0 +1,272 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<button-bar ref="btnbar" view-title="盘库明细" :btndisabled="btndisabled" @btnhandle="btnHandle" />
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">
{{ searchxianshitit }}
</el-button>
<div v-show="isSearchShow" class="search">
<el-form :inline="true" class="tab-header">
<el-form-item label="仓库">
<el-select v-model="queryParams.params.warehouseName" placeholder="请选择仓库">
<el-option v-for="item in warehouseList" :key="item.sid" :label="item.warehouseName"
:value="item.sid" />
</el-select>
</el-form-item>
<el-form-item label="库区">
<el-select v-model="queryParams.params.warehouseAreaeName" placeholder="请选择所属库位">
<el-option v-for="item in warehouseAreaList" :key="item.sid" :label="item.areaName"
:value="item.sid" />
</el-select>
</el-form-item>
<el-form-item label="库位">
<el-select v-model="queryParams.params.warehouseRackName" placeholder="请选择">
<el-option v-for="item in warehouseRackList" :key="item.sid" :label="item.areaCode"
:value="item.sid">
</el-option>
</el-select>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" size="small" icon="el-icon-search" @click="dosearch">查询</el-button>
<el-button type="primary" size="small" icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</div>
</div>
</div>
<!-- Start 项目列表头部 -->
<div class="listtop">
<div class="tit">库位盘点列表</div>
</div>
<!-- End 项目列表头部 -->
<!-- Start 项目列表 -->
<div class="">
<el-table v-loading="tableLoading" :data="dataList" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column fixed label="操作" align="center" width="100">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="toDetail(scope.row)">查看</el-button>
</template>
</el-table-column>
<el-table-column prop="warehouseName" label="仓库" width="120" align="center" />
<el-table-column prop="warehouseAreaeName" label="库区" width="120" align="center" />
<el-table-column prop="warehouseRackName" label="库位" width="120" align="center" />
<el-table-column label="应盘" align="center">
<el-table-column prop="ypNum" label="数量" align="center" width="100" />
<el-table-column prop="ypMoney" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="实盘" align="center">
<el-table-column prop="spNum" label="数量" align="center" width="100" />
<el-table-column prop="spMoney" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="未盘" align="center">
<el-table-column prop="wpNum" label="数量" align="center" width="100" />
<el-table-column prop="wpMoney" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="盘盈" align="center">
<el-table-column prop="pyNum" label="数量" align="center" width="100" />
<el-table-column prop="pyMoney" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="盘亏" align="center">
<el-table-column prop="pkNum" label="数量" align="center" width="100" />
<el-table-column prop="pkMoney" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="盘损" align="center">
<el-table-column prop="psNum" label="数量" align="center" width="100" />
<el-table-column prop="psMoney" label="金额" align="center" width="100" />
</el-table-column>
</el-table>
</div>
<!-- End 项目列表 -->
<div class="pages">
<div class="tit" />
<!-- 翻页 -->
<pagination v-show="dataList.length > 0" :total="queryParams.total" :page.sync="queryParams.current"
:limit.sync="queryParams.size" class="pagination" @pagination="loadList" />
</div>
</div>
</div>
<!-- 查看库位明细 -->
<stocktakingRackCodeDetail v-show="viewState == 2" ref="divSp" @doback="resetState" />
</div>
</template>
<script>
import req from '@/api/storage/stocktaking.js'
import ButtonBar from '@/components/ButtonBar'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import stocktakingRackCodeDetail from './stocktakingRackCodeDetail.vue'
export default {
components: {
ButtonBar,
Pagination,
pageye,
stocktakingRackCodeDetail
},
data() {
return {
dialogVisible: false,
btndisabled: false,
viewState: 1, // 1 2 3 4
isSearchShow: false,
searchxianshitit: '显示查询条件',
tableLoading: false,
dataList: [],
btnList: [{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}],
queryParams: {
current: 1,
size: 10,
total: 0,
params: {
"sid": "",
"warehouseName": "",
"warehouseAreaeName": "",
"warehouseRackName": "",
}
},
billSid: "",
warehouseList: [],
warehouseAreaList: [],
warehouseRackList: []
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
created() {
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
switch (btnKey) {
case 'doClose':
this.close()
break
default:
break
}
},
loadList(sid) {
this.tableLoading = true
this.billSid = sid
this.queryParams.params.sid = sid
req.billStocktak(this.queryParams).then((resp) => {
this.tableLoading = false
if (resp.success) {
const data = resp.data
this.queryParams.total = data.total
this.dataList = data.records
} else {
// resp.code
this.dataList = []
this.queryParams.total = 0
}
}).catch(() => {
this.tableLoading = false
})
},
//
indexMethod(index) {
var pagestart = (this.queryParams.current - 1) * this.queryParams.size
var pageindex = index + 1 + pagestart
return pageindex
},
dosearch() {
this.queryParams.current = 1
this.loadList()
},
resetQuery() {
this.queryParams = {
current: 1,
size: 10,
total: 0,
params: {
"sid": this.billSid,
"warehouseName": "",
"warehouseAreaeName": "",
"warehouseRackName": "",
}
}
this.loadList()
},
toDetail(row) {
this.viewState = 2
this.$refs['divSp'].loadList(row.sid)
},
close() {
this.$emit('doback')
},
resetState() {
this.viewState = 1
}
}
}
</script>
<style scoped>
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
.must {
color: #f00;
}
.span-sty {
width: 90px !important;
}
.addinputInfo {
margin-left: 80px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 80px !important;
width: calc(100% - 70px);
}
.first_row {
border-top: 1px solid #E0E3EB;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
/deep/ .el-form-item__error {
margin-left: 180px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .el-radio-group {
display: inline;
line-height: 1px;
vertical-align: middle;
}
</style>

221
yxt-as-ui/src/views/storage/stocktaking/stocktakingReportDetail.vue

@ -0,0 +1,221 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>盘库报告</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="settle()">下载pdf</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" class="formaddcopy02">
<el-row class="first_row">
<el-col :span="8">
<div class="span-sty">发起人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">发起部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.deptName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">发起日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createTime }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">盘点人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">监盘人</div>
<el-form-item><span class="addinputInfo">{{ formobj.finances }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
</el-row>
<div class="title titleOne">
<div>总体盘点情况</div>
<el-button type="primary" size="mini" class="btntopblueline" @click="seleMaintenance()">明细下载</el-button>
</div>
<div style="display: flex;flex-direction: row;align-items: center;
border: 1px solid #E0E3EB;line-height: 30px;padding: 5px 10px;">
<div style="flex: 1;">
<span> 应盘数量:</span>
<span> {{formobj.ypNum}}</span>
</div>
<div style="flex: 1;">
<span> 应盘金额:</span>
<span> {{formobj.ypMoney}}</span>
</div>
<div style="flex: 1;">
<span> 实盘数量:</span>
<span> {{formobj.spNum}}</span>
</div>
<div style="flex: 1;">
<span> 实盘金额:</span>
<span> {{formobj.spMoney}}</span>
</div>
<div style="flex: 1;">
<span> 盘盈数量:</span>
<span> {{formobj.pyNum}}</span>
</div>
<div style="flex: 1;">
<span> 盘盈金额:</span>
<span> {{formobj.pyMoney}}</span>
</div>
<div style="flex: 1;">
<span> 盘亏数量:</span>
<span> {{formobj.pkNum}}</span>
</div>
<div style="flex: 1;">
<span> 盘亏金额:</span>
<span> {{formobj.pkMoney}}</span>
</div>
<div style="flex: 1;">
<span> 盘损数量:</span>
<span> {{formobj.psNum}}</span>
</div>
<div style="flex: 1;">
<span> 盘损金额:</span>
<span> {{formobj.psMoney}}</span>
</div>
</div>
<div class="title titleOne">
<div>仓库盘点情况</div>
</div>
<el-table :data="formobj.warehouseStocktakList" :index="index" border style="width: 100%;">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="warehouseName" label="仓库" align="center" />
<el-table-column prop="ypNum" label="应盘" align="center" />
<el-table-column prop="ypMoney" label="应盘金额" width="70" align="center" />
<el-table-column prop="spNum" label="实盘" width="150" align="center" />
<el-table-column prop="spMoney" label="实盘金额" align="center" />
<el-table-column prop="pyNum" label="盘盈" align="center" />
<el-table-column prop="pyMoney" label="盘盈金额" align="center" />
<el-table-column prop="pkNum" label="盘亏" align="center" width="100" />
<el-table-column prop="pkMoney" label="盘亏金额" align="center" width="100" />
<el-table-column prop="psNum" label="盘损" align="center" width="100" />
<el-table-column prop="psMoney" label="盘损金额" align="center" width="100" />
</el-table>
<div class="title titleOne">
<div>库区盘点情况</div>
</div>
<el-table :data="formobj.arehouseAreaeStocktakList" :index="index" border style="width: 100%;">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="warehouseAreaeName" label="仓库-库区" align="center" />
<el-table-column prop="ypNum" label="应盘" align="center" />
<el-table-column prop="ypMoney" label="应盘金额" width="70" align="center" />
<el-table-column prop="spNum" label="实盘" width="150" align="center" />
<el-table-column prop="spMoney" label="实盘金额" align="center" />
<el-table-column prop="pyNum" label="盘盈" align="center" />
<el-table-column prop="pyMoney" label="盘盈金额" align="center" />
<el-table-column prop="pkNum" label="盘亏" align="center" width="100" />
<el-table-column prop="pkMoney" label="盘亏金额" align="center" width="100" />
<el-table-column prop="psNum" label="盘损" align="center" width="100" />
<el-table-column prop="psMoney" label="盘损金额" align="center" width="100" />
</el-table>
</el-form>
</div>
</div>
</div>
</template>
<script>
import req from '@/api/storage/stocktaking.js'
export default {
data() {
return {
viewState: 1,
submitdisabled: false,
index: 0,
formobj: {},
}
},
created() {
},
methods: {
showDetail(sid) {
req.init(sid).then((res) => {
if (res.success) {
this.formobj = res.data
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {}
this.submitdisabled = false
this.$emit('doback')
}
}
}
</script>
<style scoped>
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
.must {
color: #f00;
}
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
.first_row {
border-top: 1px solid #E0E3EB;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .el-radio-group {
display: inline;
line-height: 1px;
vertical-align: middle;
}
</style>
Loading…
Cancel
Save