Files
JY1.0/src/views/WorkshopProcurement/OutsourcingMaterialsInvoice/index.vue
liushuai 61413afd91 更新
2019-10-09 19:08:24 +08:00

549 lines
19 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="app-container">
<el-card>
<span>发票号:</span>
<el-input v-model="invoiceNum" placeholder="发票号" size="small" style="margin: 3px 0;width: 130px" clearable/>
<span style="margin-left: 10px">供应商:</span>
<el-input v-model="supplierName0" placeholder="供应商" size="small" style="width:130px" clearable/>
<el-tooltip :open-delay="1200" effect="dark" content="查询外购备料发票信息" placement="top">
<el-button
type="success"
size="small"
icon="el-icon-search"
style="margin-left: 10px"
@click="total1=0;pageCurrent1=1;pageSize1=10;searchTable1()">查询</el-button>
</el-tooltip>
<el-button
type="primary"
size="small"
icon="el-icon-circle-plus-outline"
style="margin-left: 10px"
@click="addTable1()">新增发票</el-button>
</el-card>
<el-card>
<el-table
:data="tableData1"
:row-key="getRowKeys"
:expand-row-keys="expands"
size="mini"
style="margin-top: 3px"
height="550px"
stripe
border
highlight-current-row
@expand-change="searchTable02">
<el-table-column type="expand" label="详情">
<template slot-scope="scope">
<el-table :data="gridData" class="subTableHeader" show-summary stripe border size="mini" style="width: 40%">
<el-table-column width="50" align="center" type="index" label="序号"/>
<el-table-column min-width="150" align="center" label="供应商">
<template slot-scope="scope">
{{ scope.row.供应商名称 }}
</template>
</el-table-column>
<el-table-column min-width="100" align="center" label="到货日期">
<template slot-scope="scope">
{{ scope.row.日期.split(' ')[0] }}
</template>
</el-table-column>
<el-table-column label="金额" align="center" prop="到货金额">
<template slot-scope="scope">
{{ scope.row.到货金额 }}
</template>
</el-table-column>
<el-table-column min-width="100" align="center" label="备注">
<template slot-scope="scope">
{{ scope.row.备注 }}
</template>
</el-table-column>
<el-table-column min-width="100" align="center" label="操作">
<template slot-scope="scope">
<el-tooltip effect="dark" content="取消关联" placement="top">
<div style="display: inline-block">
<el-button
type="text"
size="mini"
icon="el-icon-delete"
@click="deleteTable10(scope.row)"/>
</div>
</el-tooltip>
</template>
</el-table-column>
</el-table>
</template>
</el-table-column>
<el-table-column align="center" label="发票号" min-width="120px">
<template slot-scope="scope">
{{ scope.row.发票号 }}
</template>
</el-table-column>
<el-table-column align="center" label="开票时间" min-width="100px">
<template slot-scope="scope">
{{ scope.row.开票时间 }}
</template>
</el-table-column>
<el-table-column align="center" label="开票金额" min-width="100px">
<template slot-scope="scope">
{{ scope.row.开票金额 }}
</template>
</el-table-column>
<el-table-column align="center" label="供应商" min-width="200px" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.供应商名称 }}
</template>
</el-table-column>
<el-table-column align="center" label="备注" >
<template slot-scope="scope">
{{ scope.row.备注 }}
</template>
</el-table-column>
<el-table-column align="center" label="操作" fixed="right" width="200px">
<template slot-scope="scope">
<el-tooltip effect="dark" content="关联到货单" placement="top">
<div style="display: inline-block">
<el-button
type="text"
size="mini"
icon="el-icon-share"
@click="aboutArrival(scope.row)">关联到货单</el-button>
</div>
</el-tooltip>
<el-tooltip effect="dark" content="编辑" placement="top">
<div style="display: inline-block">
<el-button
type="text"
size="mini"
icon="el-icon-edit-outline"
style="margin-left: 20px"
@click="editTable1(scope.row)"/>
</div>
</el-tooltip>
<el-tooltip effect="dark" content="删除" placement="top">
<div style="display: inline-block">
<el-button
type="text"
size="mini"
icon="el-icon-delete"
style="margin-left: 20px"
@click="deleteTable1(scope.row)"/>
</div>
</el-tooltip>
</template>
</el-table-column>
</el-table>
<div class="block" style="margin-top: 10px;">
<el-pagination
:current-page="pageCurrent1"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize1"
:total="total1"
style="display:inline-block;width:50%"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange1"
@current-change="handleCurrentChange1"/>
</div>
</el-card>
<el-dialog v-el-drag-dialog :title="title1" :visible.sync="dialogVisible1" center style="min-height: 300px" width="400px">
<el-form ref="form1" :model="form1" :rules="rules1" label-width="110px">
<el-form-item label="供应商" prop="supplierNameValue">
<el-select v-model="form1.supplierNameValue" placeholder="供应商" size="small" filterable>
<el-option
v-for="item in supplierNames"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
</el-form-item>
<el-form-item label="发票号" prop="money">
<el-input v-model="form1.Number" size="small" placeholder="发票号"/>
</el-form-item>
<el-form-item label="开票时间" prop="invoiceTime">
<el-date-picker v-model="form1.invoiceTime" size="small" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="选择日期"/>
</el-form-item>
<el-form-item label="开票金额" prop="money">
<el-input v-model="form1.money" size="small" placeholder="开票金额"/>
</el-form-item>
<el-form-item label="备注" prop="remark">
<el-input v-model="form1.remark" size="small"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="small" @click="dialogVisible1 = false">取消</el-button>
<el-button v-show="title1==='新增备料发票'" size="small" type="primary" @click="submitAdd1('form1')">确定</el-button>
<el-button v-show="title1==='编辑备料发票'" size="small" type="primary" @click="submitEdit1('form1')">确定</el-button>
</div>
</el-dialog>
<el-dialog v-el-drag-dialog :visible.sync="dialogVisible" title="关联到货单" center style="min-height: 200px" width="45%">
<div>
<span style="margin-left: 10px">时间段:</span>
<el-date-picker
v-model="dateRange"
size="small"
type="daterange"
align="center"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
range-separator=""
style="width:260px"
start-placeholder="开始日期"
end-placeholder="结束日期"/>
<el-tooltip :open-delay="1200" effect="dark" content="查询到货单" placement="top">
<el-button type="success" size="small" icon="el-icon-search" style="margin-left: 10px" @click="pageCurrent4=1;pageSize4=10;total4=0;searchTable4()">查询</el-button>
</el-tooltip>
</div>
<el-table v-loading="" :data="tableData4" border stripe style="max-height: 460px;" height="230px" size="mini" highlight-current-row @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="供应商" align="center">
<template slot-scope="scope">
{{ scope.row.供应商名称 }}
</template>
</el-table-column>
<el-table-column label="到货日期" align="center">
<template slot-scope="scope">
{{ scope.row.日期.split(' ')[0] }}
</template>
</el-table-column>
<el-table-column label="金额" align="center">
<template slot-scope="scope">
{{ scope.row.到货金额 }}
</template>
</el-table-column>
<el-table-column label="备注" align="center" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.备注 }}
</template>
</el-table-column>
</el-table>
<div class="block">
<el-pagination
:current-page="pageCurrent4"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize4"
:total="total4"
style="display:inline-block;width:50%"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange4"
@current-change="handleCurrentChange4"/>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" size="small" icon="el-icon-download" style="margin-left: 10px" @click="addMateriel">选入到货单</el-button>
</div>
</el-dialog>
</div>
</template>
<script>import { searchInvoice, addInvoice, editInvoice, deleteInvoice, searchSupplier, searchInvoiceDetail, searchArriveOrder, addMateriel, deleteInvoiceMX } from '@/api/WorkshopProcurement/OutsourcingMaterialsInvoice'
import { mapGetters } from 'vuex'
export default {
name: '', // 发票交接单
data() {
return {
contractNumValue: '',
supplierName0: '',
contractNums: [],
invoiceNum: '',
invoiceTime: '',
Name: '',
arrest: [],
pageCurrent1: 1,
pageSize1: 10,
total1: 0,
pageCurrent4: 1,
pageSize4: 10,
total4: 0,
tableData1: [],
tableData01: [],
tableData4: [],
dateRange: '',
gridData: [],
check1: 0,
check2: 0,
check3: 0,
check4: 0,
check5: 0,
发票流水号: '',
到货单流水号组: [],
supplierNames: [],
dialogVisible: false,
dialogVisible1: false,
title1: '',
expands: [],
form1: {
supplierNameValue: '',
Number: '',
invoiceNumValue: '',
invoiceTime: '',
money: '',
remark: ''
},
rules1: {
supplierNameValue: [{ required: true, message: '请选择供应商' }]
}
}
},
computed: {
...mapGetters([
'sidebar',
'avatar',
'name',
'id' // 人员编号
])
},
created() {
this.fetchData()
},
methods: {
fetchData() {
searchSupplier(0, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0, '', 0, '').then(response => {
for (let i = 0; i < response.data.length; i++) {
this.supplierNames.push({
label: response.data[i].供应商名称,
value: response.data[i].供应商流水号
})
}
})
},
searchTable1() {
this.invoiceNum ? this.check1 = 1 : this.check1 = 0
this.supplierName0 ? this.check2 = 1 : this.check2 = 0
searchInvoice(this.pageCurrent1, this.pageSize1, this.check1, this.invoiceNum, this.check2, this.supplierName0).then(response => {
for (let j = 0; j < response.data.rows.length; j++) {
response.data.rows[j].开票金额 = parseInt(response.data.rows[j].开票金额 * 100) / 100
if (response.data.rows[j].开票时间 !== null) {
response.data.rows[j].开票时间 = response.data.rows[j].开票时间.substring(0, response.data.rows[j].开票时间.indexOf(' '))
}
if (response.data.rows[j].开票时间 === '1900/1/1') {
response.data.rows[j].开票时间 = ''
}
}
this.tableData1 = response.data.rows
this.total1 = response.data.total
})
},
handleSizeChange1(val) {
this.pageCurrent1 = 1
this.pageSize1 = val
this.searchTable1()
},
handleCurrentChange1(val) {
this.pageCurrent1 = val
this.searchTable1()
},
// 查询到货单
searchTable4() {
console.log(this.Name)
this.Name ? this.check = 1 : this.check = 0
this.dateRange ? this.check1 = 1 : (this.check1 = 0, this.dateRange = '')
searchArriveOrder(this.check, this.Name, this.check1, this.dateRange[0], this.dateRange[1], this.pageCurrent4, this.pageSize4).then(response => {
this.tableData4 = response.data.rows
this.total4 = response.data.total
})
},
handleSizeChange4(val) { // 采购单列表分页
this.pageSize4 = val
this.pageCurrent4 = 1
this.searchTable4()
},
handleCurrentChange4(val) { // 采购单列表分页
this.pageCurrent4 = val
this.searchTable4()
},
searchTable02(row) { // 查看详情(发票包含的合同)
if (this.a === 1) {
this.expands.push(row.发票流水号)
this.b = row.发票流水号
this.a = 0
} else {
if (this.b === row.发票流水号) {
this.expands = []
this.a = 1
} else {
this.expands = []
this.expands.push(row.发票流水号)
this.a = 0
this.b = row.发票流水号
}
}
this.发票流水号 = row.发票流水号
searchInvoiceDetail(this.发票流水号).then(response => {
this.gridData = response.data
})
},
getRowKeys(row) {
return row.发票流水号
},
addTable1() {
if (this.$refs['form1'] !== undefined) {
this.$refs['form1'].resetFields()
}
this.title1 = '新增备料发票'
this.dialogVisible1 = true
console.log(this.supplierNames)
this.form1.supplierNameValue = ''
this.form1.Number = ''
this.form1.invoiceTime = ''
this.form1.money = ''
this.form1.remark = ''
},
submitAdd1(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
addInvoice(this.form1.invoiceTime, this.form1.money, this.form1.Number, this.form1.remark, this.form1.supplierNameValue).then(response => {
if (response.data[0].result === '1') {
this.$message.success('增加成功')
this.dialogVisible1 = false
this.searchTable1()
} else { this.$message.error('增加失败') }
})
} else {
console.log('error submit!!')
return false
}
})
},
editTable1(row) {
if (this.$refs['form1'] !== undefined) {
this.$refs['form1'].resetFields()
}
this.title1 = '编辑备料发票'
this.dialogVisible1 = true
this.form1.invoiceNumValue = row.发票流水号
this.form1.invoiceTime = row.开票时间
this.form1.money = row.开票金额
this.form1.Number = row.发票号
this.form1.remark = row.备注
this.form1.supplierNameValue = row.供应商
if (row.开票时间 === '1900/1/1') {
this.form1.invoiceTime = null
}
},
submitEdit1(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
console.log(this.form1.remark)
editInvoice(this.form1.invoiceNumValue, this.form1.invoiceTime, this.form1.money, this.form1.Number, this.form1.remark, this.form1.supplierNameValue).then(response => {
if (response.data[0].result === '1') {
this.$message.success('编辑成功')
this.dialogVisible1 = false
this.searchTable1()
} else { this.$message.error('编辑失败') }
})
} else {
console.log('error submit!!')
return false
}
})
},
deleteTable1(row) {
console.log(row)
this.$confirm('确认删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteInvoice(row.发票流水号).then(response => {
console.log(response.data)
if (response.data[0].result === '1') {
this.$message.success('删除成功')
this.searchTable1()
} else { this.$message.error('删除失败') }
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消操作'
})
})
},
aboutArrival(row) {
this.Name = row.供应商
this.发票流水号 = row.发票流水号
this.dialogVisible = true
this.searchTable4()
},
handleSelectionChange(val) {
this.arrest = val
},
// 选入
addMateriel() {
if (this.arrest.length === 0) {
this.$message.warning('请勾选需要关联的到货单')
} else {
this.到货单流水号组 = []
this.arrest.map(v => {
this.到货单流水号组.push(v.到货单流水号)
})
addMateriel(this.发票流水号, this.到货单流水号组).then(response => {
if (response.data[0].result === '1') {
this.$message.success('关联成功')
this.dialogVisible = false
this.tableData4 = []
} else { this.$message.error('关联失败') }
})
}
},
deleteTable10(row) {
this.$confirm('确认删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
deleteInvoiceMX(row.发票明细流水号, row.到货单流水号).then(response => {
console.log(response.data)
if (response.data[0].result === '1') {
this.$message.success('取消成功')
searchInvoiceDetail(this.发票流水号).then(response => {
this.gridData = response.data
})
} else { this.$message.error('取消失败') }
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消操作'
})
})
}
}
}
</script>
<style scoped>
.el-card{
/*margin-bottom: 15px;*/
}
.el-date-editor{
width:150px;
}
.el-select{
width:200px
}
.el-input{
width:200px
}
span{margin: 1px 0px;
}
.searchForm .el-form-item{
margin-top: 1px;
margin-bottom: 1px;
}
</style>
<style lang="scss">
.subTableHeader {
th {
background: #8ff4ea !important;
color: black;
}
tr.el-table__row td {
background-color: #d8e5f6 !important;
}
tr.el-table__row.el-table__row--striped td {
background: #e9f0f9 !important;
}
}
</style>