Browse Source

完善维修领料--出库、退库

master
yunuo970428 3 months ago
parent
commit
17b4d0cad7
  1. 716
      yxt-as-ui/src/views/maintenanceReceive/index.vue
  2. 910
      yxt-as-ui/src/views/maintenanceReceive/maintenanceOutbound.vue
  3. 722
      yxt-as-ui/src/views/maintenanceReceive/maintenanceReturnBound.vue
  4. 647
      yxt-as-ui/src/views/maintenanceReceive/repairbillInfo.vue

716
yxt-as-ui/src/views/maintenanceReceive/index.vue

@ -1,7 +1,7 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<button-bar ref="btnbar" view-title="维修领料" :btndisabled="btndisabled" @btnhandle="btnHandle" />
<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">
@ -10,48 +10,40 @@
<div v-show="isSearchShow" class="search">
<el-form :inline="true" class="tab-header">
<el-form-item label="维修状态">
<el-select v-model="queryParams.params.repairState" filterable clearable placeholder="请选择"
style="width:100%">
<el-option v-for="item in repairTypeList" :key="item.sid" :label="item.name" :value="item.name" />
<el-select v-model="queryParams.params.repairState" filterable clearable placeholder="请选择" style="width:100%">
<el-option v-for="item in repairTypeList" :key="item.sid" :label="item.name" :value="item.name"/>
</el-select>
</el-form-item>
<el-form-item label="维修单号">
<el-input v-model="queryParams.params.billNo" placeholder="" clearable />
<el-input v-model="queryParams.params.billNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="维修单类型">
<el-select v-model="queryParams.params.billType" filterable clearable placeholder="请选择"
style="width:100%">
<el-option v-for="item in billTypeList" :key="item.dictKey" :label="item.dictValue"
:value="item.dictValue" />
<el-select v-model="queryParams.params.billType" filterable clearable placeholder="请选择" style="width:100%">
<el-option v-for="item in billTypeList" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"/>
</el-select>
</el-form-item>
<el-form-item label="科目">
<el-select v-model="queryParams.params.subject" filterable clearable placeholder="请选择"
style="width:100%">
<el-option v-for="item in subjectList" :key="item.dictKey" :label="item.dictValue"
:value="item.dictValue" />
<el-select v-model="queryParams.params.subject" filterable clearable placeholder="请选择" style="width:100%">
<el-option v-for="item in subjectList" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"/>
</el-select>
</el-form-item>
<el-form-item label="客户名称">
<el-input v-model="queryParams.params.customerName" placeholder="" clearable />
<el-input v-model="queryParams.params.customerName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车牌号">
<el-input v-model="queryParams.params.vehMark" placeholder="" clearable />
<el-input v-model="queryParams.params.vehMark" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车架号">
<el-input v-model="queryParams.params.vinNo" placeholder="" clearable />
<el-input v-model="queryParams.params.vinNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="进厂日期">
<el-date-picker v-model="queryParams.params.createTimeStart" type="date" placeholder="选择日期"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;" />
<el-date-picker v-model="queryParams.params.createTimeEnd" type="date" placeholder="选择日期"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;" />
<el-date-picker v-model="queryParams.params.createTimeStart" type="date" placeholder="选择日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;"/>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="queryParams.params.createTimeEnd" 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.completeState" filterable clearable placeholder="请选择"
style="width:100%">
<el-option v-for="item in completeStateList" :key="item.sid" :label="item.name" :value="item.sid" />
<el-select v-model="queryParams.params.completeState" filterable clearable placeholder="请选择" style="width:100%">
<el-option v-for="item in completeStateList" :key="item.sid" :label="item.name" :value="item.sid"/>
</el-select>
</el-form-item>
@ -69,400 +61,374 @@
<!-- End 项目列表头部 -->
<!-- Start 项目列表 -->
<div class="">
<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="80" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column prop="repairState" label="维修状态" align="center" />
<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="80" label="序号" type="index" :index="indexMethod" align="center"/>
<el-table-column prop="repairState" label="维修状态" align="center"/>
<el-table-column label="维修单编号" width="180" align="center">
<template slot-scope="scope">
<div style="color: #1890FF; text-decoration: underline ;" @click="showResult(scope.row)">
{{ scope.row.billNo }}
</div>
<span class="bluezi" @click="showResult(scope.row)">{{ scope.row.billNo }}</span>
</template>
</el-table-column>
<el-table-column prop="billTypeValue" label="维修单类型" align="center" />
<el-table-column prop="subjectValue" label="科目" align="center" />
<el-table-column prop="isGoOut" label="是否外出" align="center" />
<el-table-column prop="customerName" label="客户名称" align="center" />
<el-table-column prop="mobile" label="联系电话" align="center" />
<el-table-column prop="vehMark" label="车架号" align="center" />
<el-table-column prop="vinNo" label="车牌号" align="center" />
<el-table-column prop="entryTime" width="180" label="进厂日期" align="center" />
<el-table-column prop="billTypeValue" label="维修单类型" align="center"/>
<el-table-column prop="subjectValue" label="科目" align="center"/>
<el-table-column prop="isGoOut" label="是否外出" align="center"/>
<el-table-column prop="customerName" label="客户名称" align="center"/>
<el-table-column prop="mobile" label="联系电话" align="center"/>
<el-table-column prop="vehMark" label="车架号" align="center"/>
<el-table-column prop="vinNo" label="车牌号" align="center"/>
<el-table-column prop="entryTime" width="180" label="进厂日期" align="center"/>
</el-table>
</div>
<!-- End 项目列表 -->
<div class="pages">
<div class="tit" />
<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 查询和其列表部分 -->
<!-- 新增修改部分组件 -->
<divOutInfo v-show="viewState == 2 " ref="divOutInfo" @doback="resetState" @reloadlist="loadList" />
<divReturnInfo v-show="viewState == 3" ref="divReturnInfo" @doback="resetState" @reloadlist="loadList" />
<divConfirmInfo v-show="viewState ==4" ref="divConfirmInfo" @doback="resetState" @reloadlist="loadList" />
<divInfo v-show="viewState == 5" ref="divInfo" @doback="resetState" @reloadlist="loadList" />
<divOutInfo v-show="viewState == 2 " ref="divOutInfo" @doback="resetState" @reloadlist="loadList"/>
<divReturnInfo v-show="viewState == 3" ref="divReturnInfo" @doback="resetState" @reloadlist="loadList"/>
<divConfirmInfo v-show="viewState ==4" ref="divConfirmInfo" @doback="resetState" @reloadlist="loadList"/>
<divInfo v-show="viewState == 5" ref="divInfo" @doback="resetState" @reloadlist="loadList"/>
</div>
</template>
<script>
import req from '@/api/maintenanceReceive/maintenanceReceive.js'
import {
typeValues,
getOrgSidByPath
} from '@/api/Common/dictcommons'
import ButtonBar from '@/components/ButtonBar'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import divOutInfo from './maintenanceOutbound.vue'
import divReturnInfo from './maintenanceReturnBound.vue'
import divConfirmInfo from './maintenanceConfirm.vue'
import divInfo from './repairbillInfo.vue'
import {
getStorage
} from '@/utils/auth'
export default {
components: {
ButtonBar,
Pagination,
pageye,
divOutInfo,
divReturnInfo,
divConfirmInfo,
divInfo
import req from '@/api/maintenanceReceive/maintenanceReceive.js'
import {
typeValues,
getOrgSidByPath
} from '@/api/Common/dictcommons'
import ButtonBar from '@/components/ButtonBar'
import Pagination from '@/components/pagination'
import divOutInfo from './maintenanceOutbound.vue'
import divReturnInfo from './maintenanceReturnBound.vue'
import divConfirmInfo from './maintenanceConfirm.vue'
import divInfo from '../operation/repairbill/repairbillInfo'
import {
getStorage
} from '@/utils/auth'
},
data() {
return {
dialogVisible: false,
btndisabled: false,
viewState: 1, // 1 2 3 4
isSearchShow: false,
searchxianshitit: '显示查询条件',
tableLoading: false,
dataList: [],
btnList: [{
type: 'primary',
size: 'small',
icon: 'plus',
btnKey: 'toOut',
btnLabel: '领料出库'
},
{
type: 'primary',
size: 'small',
icon: 'plus',
btnKey: 'toReturn',
btnLabel: '领料退库'
},
{
type: 'success',
size: 'small',
icon: '',
btnKey: 'doPrint',
btnLabel: '打印领料单'
},
{
type: 'primary',
size: 'small',
icon: 'plus',
btnKey: 'toConfirm',
btnLabel: '商品出库确认'
},
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
queryParams: {
current: 1,
size: 10,
total: 0,
params: {
'repairState': '',
'billNo': '',
'billType': '',
'subject': '',
'customerName': '',
'vehMark': '',
'vinNo': '',
'createTimeStart': '',
'createTimeEnd': '',
'completeState': '0'
}
export default {
components: {
ButtonBar,
Pagination,
divOutInfo,
divReturnInfo,
divConfirmInfo,
divInfo
},
data() {
return {
dialogVisible: false,
btndisabled: false,
viewState: 1, // 1 2 3 4
isSearchShow: false,
searchxianshitit: '显示查询条件',
tableLoading: false,
dataList: [],
btnList: [
{
type: 'primary',
size: 'small',
icon: 'plus',
btnKey: 'toOut',
btnLabel: '领料出库'
},
{
type: 'primary',
size: 'small',
icon: 'plus',
btnKey: 'toReturn',
btnLabel: '领料退库'
},
{
type: 'success',
size: 'small',
icon: '',
btnKey: 'doPrint',
btnLabel: '打印领料单'
},
{
type: 'primary',
size: 'small',
icon: 'plus',
btnKey: 'toConfirm',
btnLabel: '商品出库确认'
},
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
queryParams: {
current: 1,
size: 10,
total: 0,
params: {
'repairState': '',
'billNo': '',
'billType': '',
'subject': '',
'customerName': '',
'vehMark': '',
'vinNo': '',
'createTimeStart': '',
'createTimeEnd': '',
'completeState': '0'
}
},
sids: [],
selectionList: [],
repairTypeList: [{
name: '维修中',
sid: '1'
},
{
name: '维修完成',
sid: '2'
}
],
completeStateList: [{
name: '未完成',
sid: '0'
},
{
name: '已完成',
sid: '1'
}
],
billTypeList: [],
subjectList: [],
createOrgSid: "",
useOrgSid: ""
}
sids: [],
selectionList: [],
repairTypeList: [
{
name: '维修中',
sid: '1'
},
{
name: '维修完成',
sid: '2'
}
],
completeStateList: [
{
name: '未完成',
sid: '0'
},
{
name: '已完成',
sid: '1'
}
],
billTypeList: [],
subjectList: [],
createOrgSid: '',
useOrgSid: ''
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
created() {
this.loadList()
this.init()
},
methods: {
init() {
typeValues({ type: 'billType' }).then((res) => {
if (res.success) {
this.billTypeList = res.data
}
})
typeValues({ type: 'as_servicesubject' }).then((resp) => {
if (resp.success) {
this.subjectList = resp.data
}
})
getOrgSidByPath({ orgPath: window.sessionStorage.getItem('defaultOrgPath') }).then((res) => {
if (res.success) {
this.createOrgSid = res.data
this.useOrgSid = res.data
}
})
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
selectionLineChangeHandle(val) {
this.selectionList = val
const aa = []
val.forEach(element => {
aa.push(element.billSid)
})
this.sids = aa
},
created() {
this.loadList()
this.init()
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
methods: {
init() {
typeValues({
type: 'billType'
}).then((res) => {
if (res.success) {
this.billTypeList = res.data
}
btnHandle(btnKey) {
switch (btnKey) {
case 'toOut':
this.toOut()
break
case 'toReturn':
this.toReturn()
break
case 'doPrint':
this.doPrint()
break
case 'toConfirm':
this.toConfirm()
break
case 'doClose':
this.doClose()
break
default:
break
}
},
toOut() {
// this.viewState = 2
if (this.sids.length === 1) {
this.viewState = 2
this.$refs['divOutInfo'].showAdd(this.sids[0])
} else {
this.$message({
showClose: true,
type: 'warning',
message: '请选择一条记录进行操作'
})
typeValues({
type: 'as_servicesubject'
}).then((resp) => {
if (resp.success) {
this.subjectList = resp.data
}
}
},
toReturn() {
if (this.sids.length === 1) {
this.viewState = 3
this.$refs['divReturnInfo'].showAdd(this.sids[0])
} else {
this.$message({
showClose: true,
type: 'warning',
message: '请选择一条记录进行操作'
})
getOrgSidByPath({
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
}
},
doPrint() {
if (this.sids.length === 1) {
var info = {
sid: this.sids[0], // sid
createOrgSid: this.createOrgSid,
useOrgSid: this.useOrgSid,
userSid: window.sessionStorage.getItem('userSid')
}
req.printSettlement(info).then((res) => {
if (res.success) {
this.createOrgSid = res.data
this.useOrgSid = res.data
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data +
'&outFileName=' + '领料单', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '领料单.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
}
})
},
selectionLineChangeHandle(val) {
console.log('val', val)
this.selectionList = val
const aa = []
val.forEach(element => {
aa.push(element.billSid)
} else {
this.$message({
showClose: true,
type: 'warning',
message: '请选择一条记录进行操作'
})
this.sids = aa
},
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
switch (btnKey) {
case 'toOut':
this.toOut()
break
case 'toReturn':
this.toReturn()
break
case 'doPrint':
this.doPrint()
break
case 'toConfirm':
this.toConfirm()
break
case 'doClose':
this.doClose()
break
default:
break
}
},
toOut() {
// this.$refs['divOutInfo'].showAdd('236195bd-2c76-4e39-aacb-e6ed89b4ca3d')
// this.viewState = 2
if (this.sids.length == 1) {
this.viewState = 2
this.$refs['divOutInfo'].showAdd(this.sids[0])
} else {
this.$message({
showClose: true,
type: 'warning',
message: '请选择一条记录进行操作'
})
}
},
toReturn() {
// this.$refs['divReturnInfo'].showAdd('4e2b2a7d-d86c-415f-aa69-65e311a73c50')
// this.viewState = 3
if (this.sids.length == 1) {
this.viewState = 3
this.$refs['divReturnInfo'].showAdd(this.sids[0])
}
},
toConfirm() {
if (this.sids.length === 1) {
if (this.selectionList[0].repairState == '维修完成') {
this.viewState = 4
this.$refs['divConfirmInfo'].showAdd(this.sids[0])
} else {
this.$message({
showClose: true,
type: 'warning',
message: '请选择一条记录进行操作'
message: '只能选择维修完成的工单'
})
}
},
doPrint() {
if (this.sids.length == 1) {
var info = {
sid: this.sids[0], // sid
createOrgSid: this.createOrgSid,
useOrgSid: this.useOrgSid,
userSid: window.sessionStorage.getItem('userSid'),
}
req.printSettlement(info).then((res) => {
if (res.success) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + res.data +
'&outFileName=' + '领料单', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '领料单.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
}
})
} else {
this.$message({
showClose: true,
type: 'warning',
message: '请选择一条记录进行操作'
})
}
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
},
loadList() {
this.tableLoading = true
this.queryParams.params.userSid = window.sessionStorage.getItem('userSid')
this.queryParams.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.queryParams.params.menuUrl = this.$route.path
req.listPage(this.queryParams).then((resp) => {
this.tableLoading = false
if (resp.success) {
const data = resp.data
this.queryParams.total = data.total
this.dataList = data.records
} else {
this.$message({
showClose: true,
type: 'warning',
message: '请选择一条记录进行操作'
})
// resp.code
this.dataList = []
this.queryParams.total = 0
}
},
toConfirm() {
// this.viewState = 4
// this.$refs['divConfirmInfo'].showAdd('4e2b2a7d-d86c-415f-aa69-65e311a73c50')
if (this.sids.length === 1) {
if (this.selectionList[0].repairState == '维修完成') {
this.viewState = 4
this.$refs['divConfirmInfo'].showAdd(this.sids[0])
} else {
this.$message({
showClose: true,
type: 'warning',
message: '只能选择维修完成的工单'
})
}
} else {
this.$message({
showClose: true,
type: 'warning',
message: '请选择一条记录进行操作'
})
}
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
},
loadList() {
this.tableLoading = true
this.queryParams.params.userSid = window.sessionStorage.getItem('userSid')
this.queryParams.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.queryParams.params.menuUrl = this.$route.path
req.listPage(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
})
},
}).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: {
'repairState': '',
'billNo': '',
'billType': '',
'subject': '',
'customerName': '',
'vehMark': '',
'vinNo': '',
'createTimeStart': '',
'createTimeEnd': '',
'completeState': '0'
}
//
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: {
'repairState': '',
'billNo': '',
'billType': '',
'subject': '',
'customerName': '',
'vehMark': '',
'vinNo': '',
'createTimeStart': '',
'createTimeEnd': '',
'completeState': '0'
}
this.loadList()
},
resetState() {
this.viewState = 1
},
showResult(row) {
this.viewState = 5
this.$refs['divInfo'].showInfo(row.billSid)
}
this.loadList()
},
resetState() {
this.viewState = 1
},
showResult(row) {
this.viewState = 5
this.$refs['divInfo'].showInfo({ sid: row.billSid })
}
}
}
</script>
<style scoped>
</style>

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

File diff suppressed because it is too large

722
yxt-as-ui/src/views/maintenanceReceive/maintenanceReturnBound.vue

@ -1,582 +1,440 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<!-- 标题 -->
<div>新增维修退库</div>
<!-- start 添加修改按钮 -->
<div>
<!-- <el-button type="primary" size="small" @click="seleMaintenance">选择维修工单</el-button> -->
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate">入库</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
<!-- end 添加修改按钮 -->
<!-- end 详情按钮 -->
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<!-- <div class="title">
<div>基础信息</div>
</div> -->
<el-row class="first_row">
<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>
<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"><span class="must">*</span> 申请部门</div>
<el-form-item prop="deptName">
<span class="addinputw addinputInfo">{{ formobj.deptName }}</span>
<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 prop="createByName">
<el-form-item><span class="addinputw addinputInfo">{{ formobj.createTime }}</span></el-form-item>
</el-form-item>
<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"><span class="must">*</span> 退料人</div>
<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-option v-for="item in receivePerList" :key="item.sid" :label="item.name" :value="item.sid" />
<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-select>
</el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">备注</div>
<el-form-item>
<el-input v-model="formobj.remarks" placeholder="备注" class="addinputw addinputInfo" clearable />
<el-input v-model="formobj.remarks" placeholder="备注" class="addinputw addinputInfo" clearable/>
</el-form-item>
</el-col>
</el-row>
<div class="title titleOne">
<div class="title">
<div>维修工单</div>
</div>
<el-row>
<el-col :span="8">
<div class="span-sty">维修工单编号</div>
<el-form-item>
<span class="addinputw addinputInfo">{{ formobj.sourceBillNo }}</span>
<span class="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="addinputInfo">{{ formobj.billDate }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">服务顾问</div>
<el-form-item>
<el-form-item><span class="addinputw addinputInfo">{{ formobj.waitorName }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.waitorName }}</span></el-form-item>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">工单类型</div>
<el-form-item>
<span class="addinputw addinputInfo">{{ formobj.billType }}</span>
<span class="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="addinputInfo">{{ formobj.subject }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">是否外出</div>
<el-form-item>
<el-radio-group v-model="formobj.isGoOut" class="addinputw addinputInfo" :disabled="true">
<el-radio-group v-model="formobj.isGoOut" class="addinputInfo" :disabled="true">
<el-radio :label="'1'"></el-radio>
<el-radio :label="'2'"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">客户名称</div>
<el-form-item>
<span class="addinputw addinputInfo">{{ formobj.customerName }}</span>
<span class="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="addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span>
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<div class="span-sty">客户单位</div>
<el-form-item>
<el-form-item><span class="addinputw addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
</el-form-item>
</el-col> -->
</el-row>
<div class="title titleOne">
<div>服务项目</div>
</div>
<div class="title">服务项目</div>
<el-table v-loading="listLoading" :data="formobj.sitemVoList" border>
<!-- <el-table-column type="selection" align="center" width="50"/> -->
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center" />
<el-table-column label="服务项目" prop="serviceItem" align="center" />
<el-table-column label="工种" prop="serviceType" align="center" />
<!-- <el-table-column label="科目" prop="subject" align="center" /> -->
<el-table-column label="维修技师" prop="repairerName" align="center" />
<el-table-column label="工时提成" prop="examineHourPrice" align="center" />
<el-table-column label="工时单价" prop="hourPrice" align="center" />
<el-table-column label="工时数量" prop="hours" align="center" />
<el-table-column label="销售价" prop="price" align="center" />
<el-table-column label="折扣" prop="discount" align="center" />
<el-table-column label="优惠" prop="discountAmount" align="center" />
<el-table-column label="销售金额" prop="amount" align="center" />
<el-table-column label="备注" prop="remarks" align="center" />
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="服务项目" prop="serviceItem" align="center"/>
<el-table-column label="工种" prop="serviceType" align="center"/>
<el-table-column label="维修技师" prop="repairerName" align="center"/>
<el-table-column label="工时提成" prop="examineHourPrice" align="center"/>
<el-table-column label="工时单价" prop="hourPrice" align="center"/>
<el-table-column label="工时数量" prop="hours" align="center"/>
<el-table-column label="销售价" prop="price" align="center"/>
<el-table-column label="折扣" prop="discount" align="center"/>
<el-table-column label="优惠" prop="discountAmount" align="center"/>
<el-table-column label="销售金额" prop="amount" align="center"/>
<el-table-column label="备注" prop="remarks" align="center"/>
</el-table>
<div class="title titleOne">
<div>商品列表</div>
<el-button type="primary" size="mini" class="btntopblueline" @click="returnAll()">全退</el-button>
</div>
<el-table v-loading="listLoading" :data="formobj.detailList" border>
<!-- <el-table-column type="selection" align="center" width="50"/> -->
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center" />
<el-table-column label="维修项目" prop="serviceItem" align="center" />
<el-table-column label="商品ID" prop="goodsID" width="120" align="center" />
<el-table-column label="商品名称" prop="goodsSpuName" align="center" />
<el-table-column label="商品编码" prop="goodsSkuCode" align="center" />
<el-table-column label="规格" prop="goodsSkuOwnSpec" align="center" />
<el-table-column label="单位" prop="unit" align="center" />
<!-- <el-table-column label="仓库" prop="warehouseName" align="center" />
<el-table-column label="库位" prop="warehouseRackCode" align="center" />
-->
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="维修项目" prop="serviceItem" align="center"/>
<el-table-column label="商品ID" prop="goodsID" width="120" align="center"/>
<el-table-column label="商品名称" prop="goodsSpuName" align="center"/>
<el-table-column label="商品图号" prop="goodsSkuCode" align="center"/>
<el-table-column label="规格" prop="goodsSkuOwnSpec" align="center"/>
<el-table-column label="单位" prop="unit" align="center"/>
<el-table-column label="仓库" align="center" width="180">
<template slot-scope="scope">
<el-select v-model="scope.row.warehouseName" placeholder="请选择" clearable
@change="selectWarehouseName(scope.row,$event)">
<el-option v-for="(item,i) in warehouseList" :key="i" :label="item.warehouseName" :value="item.sid" />
<el-select v-model="scope.row.warehouseName" placeholder="请选择" clearable @change="selectWarehouseName(scope.row,$event)">
<el-option v-for="(item,i) in warehouseList" :key="i" :label="item.warehouseName" :value="item.sid"/>
</el-select>
</template>
</el-table-column>
<el-table-column label="库位" align="center" width="180">
<template slot-scope="scope">
<el-select v-model="scope.row.warehouseRackCode" :disabled="scope.row.warehouseName==''" clearable
placeholder="请选择" @focus="getWarehouseAreaList(scope.row.warehouseSid)"
@change="selectWarehouseAreaCode(scope.row,$event)">
<el-option v-for="(item,i) in warehouseRackList" :key="i" :label="item.areaCode" :value="item.sid" />
<el-select v-model="scope.row.warehouseRackCode" :disabled="scope.row.warehouseName==''" clearable placeholder="请选择" @focus="getWarehouseAreaList(scope.row.warehouseSid)" @change="selectWarehouseAreaCode(scope.row,$event)">
<el-option v-for="(item,i) in warehouseRackList" :key="i" :label="item.areaCode" :value="item.sid"/>
</el-select>
</template>
</el-table-column>
<el-table-column label="单价" prop="price" align="center" />
<el-table-column label="已出数量" prop="outboundCount" align="center" />
<el-table-column label="单价" prop="price" align="center"/>
<el-table-column label="已出数量" prop="outboundCount" align="center"/>
<el-table-column label="退库数量" align="center" width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.count" clearable placeholder=""
oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"
@input="commodityComputeYHAndXSJE(scope.row,$event)" />
<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="returnAmount" align="center" />
<el-table-column label="退库金额" prop="returnAmount" align="center"/>
<el-table-column label="备注" align="center" width="220">
<template slot-scope="scope">
<el-input v-model="scope.row.remarks" clearable placeholder="" />
<el-input v-model="scope.row.remarks" clearable placeholder=""/>
</template>
</el-table-column>
<el-table-column label="领料人" prop="receivePer" width="120" align="center" />
<el-table-column label="接收时间" prop="receiveTimes" width="120" align="center" />
<el-table-column label="领料人" prop="receivePer" width="120" align="center"/>
<el-table-column label="接收时间" prop="receiveTimes" width="120" align="center"/>
</el-table>
</el-form>
</div>
</div>
<!-- 选择维修单 -->
<chooseproducts v-show="viewState == 2" ref="divSp" @backData="backData" @doback="resetState" />
<chooseproducts v-show="viewState == 2" ref="divSp" @backData="backData" @doback="resetState"/>
</div>
</template>
<script>
import req from '@/api/maintenanceReceive/maintenanceReceive.js'
import req2 from '@/api/storage/allocation.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: [],
warehouseList: [],
warehouseRackList: [],
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 req2 from '@/api/storage/allocation.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: [],
warehouseList: [],
warehouseRackList: [],
rules: {
warehouseManager: [{ required: true, message: '请选择退料人', trigger: 'change' }]
}
}
},
methods: {
initData() {
selAllByOrgSidPath({ orgSidPath: window.sessionStorage.getItem('defaultOrgPath') }).then((res) => {
if (res.success) {
this.receivePerList = res.data
}
})
},
created() {},
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.getWarehouseList()
this.initData()
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
var params = {
sid: sid
showAdd(sid) {
this.getWarehouseList()
this.initData()
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
var params = {
sid: sid
}
req.initBill(params).then(resp => {
if (resp.success) {
this.formobj = resp.data
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
}
})
} else {
// resp.code
}
req.initBill(params)
.then(resp => {
if (resp.success) {
console.log('>>>>>>>>>initBill', resp)
this.formobj = resp.data
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
}
})
} else {
// resp.code
})
},
backData(value) {
this.viewState = 1
//
var params = {
sid: value
}
req.initBill(params).then(resp => {
if (resp.success) {
this.formobj = resp.data
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
}
})
.catch(() => {})
},
backData(value) {
this.viewState = 1
//
var params = {
sid: value
} else {
// resp.code
}
req.initBill(params)
.then(resp => {
})
},
resetState() {
this.viewState = 1
},
seleMaintenance() {
this.viewState = 2
const aa = []
this.$refs['divSp'].showData(aa, this.formobj.createOrgSid)
},
saveOrUpdate() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
req.saveQuitBill(this.formobj).then(resp => {
if (resp.success) {
console.log('>>>>>>>>>initBill', resp)
this.formobj = resp.data
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.$message({
showClose: true,
type: 'success',
message: resp.msg
})
this.handleReturn('true')
} 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)
this.$refs['form_obj'].validate((valid) => {
if (valid) {
req.saveQuitBill(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': [
]
}
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
},
getWarehouseList() {
console.log('getWarehouseList>>>>>>>>>>>>>')
var parpams = {
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}
console.log('getWarehouseList', parpams)
req2.getWarehouses(parpams).then((res) => {
if (res.success) {
this.warehouseList = res.data
console.log('aaaaaa', this.warehouseList)
}
})
},
getWarehouseAreaList(sid) {
var query = {
ckSid: sid
})
},
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)
this.formobj.warehouseManagerSid = choose[0].sid
this.formobj.warehouseManager = choose[0].name
},
getWarehouseList() {
var parpams = {
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}
req2.getWarehouses(parpams).then((res) => {
if (res.success) {
this.warehouseList = res.data
}
req2.getWarehouseareas(query).then((res) => {
if (res.success) {
this.warehouseRackList = res.data
console.log('bbbbb', this.warehouseRackList)
}
})
},
selectWarehouseName(row, val) {
console.log('selectWarehouseName', row)
console.log('selectWarehouseName', val)
const choose = this.warehouseList.filter((item) => item.sid == val)
console.log('>>>>>>>>>selectWarehouseName', choose)
row.warehouseName = choose[0].warehouseName
row.warehouseSid = choose[0].sid
row.warehouseRackCode = ''
row.warehouseRackSid = ''
},
selectWarehouseAreaCode(row, val) {
console.log('selectWarehouseAreaCode', val)
const choose = this.warehouseRackList.filter((item) => item.sid == val)
console.log('>>>>>>>>>selectWarehouseAreaCode', choose)
row.warehouseRackCode = choose[0].areaCode
row.warehouseRackSid = choose[0].sid
},
returnAll() {
for (var i = 0; i < this.formobj.detailList.length; i++) {
var item = this.formobj.detailList[i]
item.count = item.outboundCount
})
},
getWarehouseAreaList(sid) {
var query = {
ckSid: sid
}
req2.getWarehouseareas(query).then((res) => {
if (res.success) {
this.warehouseRackList = res.data
}
},
commodityComputeYHAndXSJE(row, val) {
console.log("aaa", row)
console.log("aaa", val)
row.returnAmount = (Number(row.count) * Number(row.price)).toFixed(2)
})
},
selectWarehouseName(row, val) {
const choose = this.warehouseList.filter((item) => item.sid === val)
row.warehouseName = choose[0].warehouseName
row.warehouseSid = choose[0].sid
row.warehouseRackCode = ''
row.warehouseRackSid = ''
},
selectWarehouseAreaCode(row, val) {
const choose = this.warehouseRackList.filter((item) => item.sid === val)
row.warehouseRackCode = choose[0].areaCode
row.warehouseRackSid = choose[0].sid
},
returnAll() {
for (var i = 0; i < this.formobj.detailList.length; i++) {
var item = this.formobj.detailList[i]
item.count = item.outboundCount
}
},
commodityComputeYHAndXSJE(row, val) {
if (parseFloat(row.count) > parseFloat(row.outboundCount)) {
row.count = row.outboundCount
}
row.returnAmount = (Number(row.count) * Number(row.price)).toFixed(2)
}
}
}
</script>
<style scoped>
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
.must {
color: #f00;
}
.must {
color: #f00;
}
.span-sty {
width: 130px !important;
}
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
.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;
}
.first_row {
border-top: 1px solid #E0E3EB;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.el-radio /deep/ .el-radio__label {
.el-radio /deep/ .el-radio__label {
font-size: 14px !important;
font-size: 14px !important;
}
}
</style>

647
yxt-as-ui/src/views/maintenanceReceive/repairbillInfo.vue

@ -1,647 +0,0 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<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.createDate }}</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.billType }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">科目</div>
<el-form-item><span class="addinputInfo">{{ formobj.subject }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">索赔厂家</div>
<el-form-item><span class="addinputInfo">{{ formobj.claimManufacturer }}</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.isGoOut == '1' ? '是' : '否' }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">进厂时间</div>
<el-form-item><span class="addinputInfo">{{ formobj.entryTime }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">预计完工</div>
<el-form-item><span class="addinputInfo">{{ formobj.estimatedFinishTime }}</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.waitorName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">班组</div>
<el-form-item><span class="addinputInfo">{{ formobj.groupName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">主修人</div>
<el-form-item><span class="addinputInfo">{{ formobj.mainRepairers }}</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.printRemarks }}</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-col :span="8">
<div class="span-sty">特殊标注</div>
<el-form-item><span
class="addinputInfo"
>{{ formobj.isSpecialSign == '1' ? '有' : '否' }}</span></el-form-item>
</el-col>
</el-row>
<el-collapse v-model="activeNames">
<el-collapse-item title="客户信息" name="1">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">客户</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">联系电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.mobile }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">客户来源</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerSource }}</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.vehMark }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车架号</div>
<el-form-item><span class="addinputInfo">{{ formobj.vinNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车型</div>
<el-form-item><span class="addinputInfo">{{ formobj.vehModel }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">行驶里程(Km)</div>
<el-form-item><span class="addinputInfo">{{ formobj.mileage }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">油量(L)</div>
<el-form-item><span class="addinputInfo">{{ formobj.oil }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">当前里程(Km)</div>
<el-form-item><span class="addinputInfo">{{ formobj.currentMileage }}</span></el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="对接人信息" name="2">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">对接人姓名</div>
<el-form-item><span class="addinputInfo">{{ formobj.dockingPeople }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">对接人电话</div>
<el-form-item><span class="addinputInfo">{{ formobj.dockingPhone }}</span></el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="保险信息" name="3">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">责任划分</div>
<el-form-item><span
class="addinputInfo"
>{{ formobj.insuranceVo.responsibility }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">责任比例</div>
<el-form-item><span
class="addinputInfo"
>{{ formobj.insuranceVo.responsibilityRatio }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">是否存在人伤</div>
<el-form-item><span
class="addinputInfo"
>{{ formobj.insuranceVo.isPersonInjuries == '1' ? '是' : formobj.insuranceVo.isPersonInjuries == '0' ? '否' : '' }}</span></el-form-item>
</el-col>
</el-row>
<el-table
:key="insuranceKey"
:data="formobj.insuranceVo.insuranceList"
:index="index"
border
style="width: 100%"
>
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="useInsurer" label="使用保险方" align="center" min-width="150" />
<el-table-column prop="insuranceType" label="使用险种" align="center" min-width="150" />
<el-table-column prop="insuranceCompany" label="保险公司" align="center" min-width="150" />
<el-table-column prop="claimBillNo" label="报案号" align="center" min-width="180" />
<el-table-column prop="investigator" label="勘察员及电话" align="center" min-width="220" />
<el-table-column prop="lossAdjuster" label="定损员及电话" align="center" min-width="220" />
</el-table>
</el-collapse-item>
<el-collapse-item title="发票信息" name="4">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">是否开发票</div>
<el-form-item><span
class="addinputInfo"
>{{ formobj.invoiceVo.isInvoicing == '1' ? '是' : formobj.invoiceVo.isInvoicing == '0' ? '否' : '' }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">发票类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.invoiceVo.invoiceType }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">开票单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.invoiceVo.invoiceCompany }}</span></el-form-item>
</el-col>
</el-row>
</el-collapse-item>
</el-collapse>
<div class="title">服务项目</div>
<el-table :key="serviceKey" :data="formobj.sitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="serviceItem" label="服务项目" align="center" width="200" />
<el-table-column prop="serviceType" label="工种" align="center" width="150" />
<el-table-column prop="repairerName" label="维修人" width="200" align="center" />
<el-table-column prop="examineHourPrice" label="工时提成" align="center" width="100" />
<el-table-column prop="hourPrice" label="工时单价" align="center" width="150" />
<el-table-column prop="hours" label="工时数" align="center" width="100" />
<el-table-column prop="price" label="销售价" align="center" width="150" />
<el-table-column prop="discount" label="折扣" align="center" width="100" />
<el-table-column prop="discountAmount" label="优惠" align="center" width="150" />
<el-table-column prop="amount" label="金额" align="center" width="150" />
<el-table-column prop="remarks" label="备注" align="center" min-width="300" />
</el-table>
<div class="title">商品</div>
<el-row>
<el-col :span="24">
<div class="span-sty span-sty-one" style="width: 300px;!important;">前台登记时对商品要求备注</div>
<el-form-item><span class="addinputInfo-one">{{ formobj.registerRemarks }}</span></el-form-item>
</el-col>
</el-row>
<el-table :key="tableKey" :data="formobj.goodsDetailsVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="goodsSpuName" label="商品名称" width="100" align="center" />
<el-table-column prop="goodsSkuCode" label="图号" width="100" align="center" />
<el-table-column prop="goodsSkuOwnSpec" label="规格" width="100" align="center" />
<el-table-column prop="unit" label="单位" width="100" align="center" />
<el-table-column prop="warehouseName" label="仓库" width="100" align="center" />
<el-table-column prop="warehouseRackCode" label="库位" width="100" align="center" />
<el-table-column prop="price" label="销售价" align="center" width="150" />
<el-table-column prop="count" label="数量" width="100" align="center" />
<el-table-column prop="discount" label="折扣" align="center" width="100" />
<el-table-column prop="discountAmount" label="优惠" width="100" align="center" />
<el-table-column prop="amount" label="金额" width="100" align="center" />
<el-table-column prop="remarks" label="备注" align="center" min-width="300" />
</el-table>
<div class="title">附加项目</div>
<el-row>
<el-col :span="8">
<div class="span-sty">外出费()</div>
<el-form-item><span class="addinputInfo">{{ formobj.outAmount }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.outRemarks }}</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.subsidyAmount }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.subsidyRemarks }}</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.rescueAmount }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.rescueRemarks }}</span></el-form-item>
</el-col>
<el-col :span="8">
<span />
</el-col>
</el-row>
<el-table :key="subjoinKey" :data="formobj.aitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="aitemName" label="其它附加项目" align="center" width="200" />
<el-table-column prop="price" label="销售价" align="center" width="150" />
<el-table-column prop="remarks" label="备注" align="center" min-width="200" />
</el-table>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">应收合计</div>
<el-form-item><span class="addinputInfo">{{ ysTotal }} = 工时费{{ gsfTotal }} + 材料费{{ clfTotal }} +
附加费{{ fjfTotal }} + 税额0</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">实收合计</div>
<el-form-item><span class="addinputInfo">{{ ssTotal }} = 应收合计{{ ysTotal }} -
优惠{{ yhTotal }}</span></el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
<!-- <workslrsettlementAdd v-show="viewState == 2" ref="divFJS" @doback="resetState" /> -->
</div>
</template>
<script>
import req from '@/api/operation/repairbill'
// import workslrsettlementAdd from '../workslrsettlement/workslrsettlementAdd'
export default {
name: 'RepairBillInfo',
components: {
// workslrsettlementAdd
},
data() {
return {
viewTitle: '',
viewState: 1,
activeNames: '1',
tableKey: 0,
index: 0,
// service
serviceKey: 1,
// subjoin
subjoinKey: 2,
// insuranceKey
insuranceKey: 3,
formobj: {
sid: '',
registerRemarks: '',
billNo: '',
createByName: '',
deptName: '',
createDate: '',
billTypeKey: '',
billType: '',
subjectSid: '',
subject: '',
claimManufacturerSid: '',
claimManufacturer: '',
isGoOut: '',
estimatedFinishTime: '',
entryTime: '',
nodeName: '',
waitorName: '',
waitorSid: '',
groupSid: '',
groupName: '',
mainRepairers: '',
printRemarks: '',
remarks: '',
isSpecialSign: '',
discountAmount: '',
coupon: '',
scoreDeduct: '',
nodeTime: '',
outDoorState: '',
outDoorTime: '',
customerSid: '',
customerName: '',
mobile: '',
customerOrg: '',
customerSource: '',
memberCardSid: '',
memberCarNumber: '',
vehMark: '',
vinNo: '',
vehModel: '',
mileage: '',
oil: '',
currentMileage: '',
dockingPeopleSid: '',
dockingPeople: '',
dockingPhone: '',
invoiceVo: {
isInvoicing: '',
invoiceType: '',
invoiceTypeKey: '',
invoiceCompanySid: '',
invoiceCompany: ''
},
insuranceVo: {
responsibility: '',
responsibilityKey: '',
isPersonInjuries: '',
responsibilityRatioKey: '',
responsibilityRatio: '',
insuranceList: []
},
sitemVos: [],
aitemVos: [],
goodsDetailsVos: [],
createBySid: '',
operatorSid: '',
nodeCode: '',
settleVo: {
payerNo: '',
payerName: '',
receivableAmount: '',
depositdeductAmount: '',
settleKey: '',
settleValue: '',
settleAmount: '',
otherSettleKey: '',
otherSettleValue: '',
debts: '',
settleTime: '',
otherSettleAmount: ''
},
showReSettleBtn: true,
hourAmount: '',
otherAmount: '',
goodsAmount: '',
addAmount: '',
taxAmount: '',
outAmount: '',
subsidyAmount: '',
rescueAmount: '',
actualAmount: '',
receivableAmount: '',
subsidyRemarks: '',
rescueRemarks: '',
outRemarks: '',
fileName: '',
operator: '',
useOrgSid: '',
createOrgSid: ''
},
rules: {}
}
},
computed: {
// =
gsfTotal() {
let gsf = '0'
if (this.formobj.sitemVos.length > 0) {
this.formobj.sitemVos.forEach((e) => {
if (e.serviceItem !== '') {
gsf = Math.round((parseFloat(gsf) + parseFloat(e.price !== '' ? e.price : '0')) * 100) / 100
}
})
}
return gsf
},
// = *
clfTotal() {
let clf = '0'
if (this.formobj.goodsDetailsVos.length > 0) {
this.formobj.goodsDetailsVos.forEach((e) => {
if (e.goodsSpuName !== '') {
clf = Math.round((parseFloat(clf) + (parseFloat(e.price !== '' ? e.price : '0') * parseFloat(e
.count !== '' ? e.count : '0'))) * 100) / 100
}
})
}
return clf
},
// == + + +
fjfTotal() {
let fjf = '0'
fjf = parseFloat(this.formobj.outAmount !== '' ? this.formobj.outAmount : '0') + parseFloat(this.formobj
.subsidyAmount !== '' ? this.formobj.subsidyAmount : '0') + parseFloat(this.formobj.rescueAmount !== ''
? this.formobj.rescueAmount : '0')
if (this.formobj.aitemVos.length > 0) {
this.formobj.aitemVos.forEach((e) => {
if (e.aitemName !== '') {
fjf = Math.round((parseFloat(fjf) + parseFloat(e.price !== '' ? e.price : '0')) * 100) / 100
}
})
}
return fjf
},
// = + + +
ysTotal() {
let ys = '0'
ys = Math.round((parseFloat(ys) + parseFloat(this.gsfTotal) + parseFloat(this.clfTotal) + parseFloat(this
.fjfTotal)) * 100) / 100
return ys
},
// = +
yhTotal() {
let yh = '0'
if (this.formobj.sitemVos.length > 0) {
this.formobj.sitemVos.forEach((e) => {
if (e.serviceItem !== '') {
yh = Math.round((parseFloat(yh) + parseFloat(e.discountAmount !== '' ? e.discountAmount : '0')) *
100) / 100
}
})
}
if (this.formobj.goodsDetailsVos.length > 0) {
this.formobj.goodsDetailsVos.forEach((e) => {
if (e.goodsSpuName !== '') {
yh = Math.round((parseFloat(yh) + parseFloat(e.discountAmount !== '' ? e.discountAmount : '0')) *
100) / 100
}
})
}
return yh
},
// = -
ssTotal() {
let ysje = '0'
ysje = Math.round((parseFloat(ysje) + parseFloat(this.ysTotal) - parseFloat(this.yhTotal)) * 100) / 100
return ysje
}
},
methods: {
showInfo(sid) {
this.viewTitle = '维修单详情'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.fetchBySid(sid).then((res) => {
if (res.success) {
this.formobj = res.data
if (this.formobj.sitemVos.length > 0) {
this.formobj.sitemVos.forEach((e) => {
if (e.staffNameList.length > 0) {
e.repairerName = e.staffNameList.join(',')
}
})
}
}
})
},
resetState() {
this.viewState = 1
},
negativeSettlement() {
this.viewState = 2
this.$refs['divFJS'].showAdd(this.formobj.sid)
},
handleReturn() {
this.formobj = {
sid: '',
registerRemarks: '',
billNo: '',
createByName: '',
deptName: '',
createDate: '',
billTypeKey: '',
billType: '',
subjectSid: '',
subject: '',
claimManufacturerSid: '',
claimManufacturer: '',
isGoOut: '',
estimatedFinishTime: '',
entryTime: '',
nodeName: '',
waitorName: '',
waitorSid: '',
groupSid: '',
groupName: '',
mainRepairers: '',
printRemarks: '',
remarks: '',
isSpecialSign: '',
discountAmount: '',
coupon: '',
scoreDeduct: '',
nodeTime: '',
outDoorState: '',
outDoorTime: '',
customerSid: '',
customerName: '',
mobile: '',
customerOrg: '',
customerSource: '',
memberCardSid: '',
memberCarNumber: '',
vehMark: '',
vinNo: '',
vehModel: '',
mileage: '',
oil: '',
currentMileage: '',
dockingPeopleSid: '',
dockingPeople: '',
dockingPhone: '',
invoiceVo: {
isInvoicing: '',
invoiceType: '',
invoiceTypeKey: '',
invoiceCompanySid: '',
invoiceCompany: ''
},
insuranceVo: {
responsibility: '',
responsibilityKey: '',
isPersonInjuries: '',
responsibilityRatioKey: '',
responsibilityRatio: '',
insuranceList: []
},
sitemVos: [],
aitemVos: [],
goodsDetailsVos: [],
createBySid: '',
operatorSid: '',
nodeCode: '',
settleVo: {
payerNo: '',
payerName: '',
receivableAmount: '',
depositdeductAmount: '',
settleKey: '',
settleValue: '',
settleAmount: '',
otherSettleKey: '',
otherSettleValue: '',
debts: '',
settleTime: '',
otherSettleAmount: ''
},
showReSettleBtn: true,
hourAmount: '',
otherAmount: '',
goodsAmount: '',
addAmount: '',
taxAmount: '',
outAmount: '',
subsidyAmount: '',
rescueAmount: '',
actualAmount: '',
receivableAmount: '',
subsidyRemarks: '',
rescueRemarks: '',
outRemarks: '',
fileName: '',
operator: '',
useOrgSid: '',
createOrgSid: ''
}
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
.span-sty-one {
width: 180px !important;
}
.addinputInfo-one {
margin-left: 170px !important;
}
</style>
Loading…
Cancel
Save