Files
JY1.0/src/views/WorkshopProcurement/RequestOutsourcingMaterials/index.vue
liushuai 28177e7cd4 更新
2020-03-09 09:28:04 +08:00

468 lines
18 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">
<div style="width: 100%;overflow:auto">
<div style="white-space: nowrap">
<el-card style="width: 1663px">
<el-col>
<el-input v-model="supplierName0" placeholder="供应商" style="width: 220px" size="small" clearable/>
<el-date-picker
v-model="dateRange"
:picker-options="pickerOptions"
size="small"
type="daterange"
align="center"
style="width: 240px;margin-left: 10px"
value-format="yyyy-MM-dd"
format="yyyy-MM-dd"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"/>
<el-tooltip :open-delay="1000" effect="dark" content="查询外购备料清款信息" placement="top">
<el-button
type="primary"
size="small"
plain
icon="el-icon-search"
style="margin-left: 10px"
@click="pageCurrent1=1;pageSize1=10;total1=0;searchTable1()">查询</el-button>
</el-tooltip>
<el-tooltip :open-delay="1000" effect="dark" content="对选择的请款任务创建请款申请" placement="top">
<el-button class="button111" size="small" icon="el-icon-goods" style="" @click="requestFund">请款</el-button>
</el-tooltip>
<el-tooltip :open-delay="1000" effect="dark" content="对选择的请款任务创建请款申请" placement="top">
<el-button type="success" plain class="el-icon-download" size="small" style="margin: 10px 0 10px 130px" @click="exportExcel">导出</el-button>
</el-tooltip>
</el-col>
</el-card>
<el-card style="margin-left: 0px;width: 1135px;margin-left: 0px;display: inline-block" >
<el-table
v-loading=""
:data="tableData1"
:row-key="getRowKeys"
:expand-row-keys="expands"
:header-cell-style="{fontFamily:'YouYuan',fontSize:'13px',fontWeight:200}"
border
stripe
style="margin-top: 3px;"
height="600px"
size="mini"
show-summary
highlight-current-row
@row-click="searchTable02">
<el-table-column label="供应商" prop="供应商名称" align="center" min-width="180" width="350" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.供应商名称 }}
</template>
</el-table-column>
<el-table-column label="请款时间" align="center" min-width="90" width="90" prop="date">
<template slot-scope="scope">
{{ scope.row.请款时间 | formatTime }}
</template>
</el-table-column>
<el-table-column label="请款人" align="center" min-width="80" width="100">
<template slot-scope="scope">
{{ scope.row.姓名 }}
</template>
</el-table-column>
<el-table-column label="请款金额(元)" align="center" min-width="90" width="90" prop="请款金额">
<template slot-scope="scope">
{{ parseFloat(scope.row.请款金额).toFixed(2) }}
</template>
</el-table-column>
<el-table-column label="审批进程" width="80" align="center">
<template slot-scope="scope">
<span v-if="Number(scope.row.审批情况流水号)===3" type="primary" size="mini">未审批</span>
<span v-if="Number(scope.row.审批情况流水号)===1" type="success" size="mini">已通过</span>
<span v-if="Number(scope.row.审批情况流水号)===2" type="danger" size="mini">未通过</span>
</template>
</el-table-column>
<el-table-column label="未通过原因" width="120" align="center">
<template slot-scope="scope">
{{ scope.row.未通过审批原因 === '通过' ? '—' : scope.row.未通过审批原因 }}
</template>
</el-table-column>
<el-table-column label="付款情况" width="100" align="center">
<template slot-scope="scope">
<span v-if="Number(scope.row.付款情况流水号)===3" type="primary" size="mini">未操作</span>
<span v-if="Number(scope.row.付款情况流水号)===1" type="success" size="mini">已付</span>
<span v-if="Number(scope.row.付款情况流水号)===2" type="danger" size="mini">未付</span>
</template>
</el-table-column>
<el-table-column label="未付款原因" width="100" align="center">
<template slot-scope="scope">
{{ scope.row.未付款原因 === '通过' ? '—' : scope.row.未付款原因 }}
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="80">
<template slot-scope="scope">
<el-tooltip effect="dark" content="取消请款" placement="top">
<div style="display: inline-block">
<el-button :disabled="Number(scope.row.审批情况流水号)!==3" type="text" size="mini" icon="el-icon-delete" style="margin-left: 10px" @click="cancelRequestFund(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-card style="margin-left: 0px;width:524px; margin-left: 1px; display: inline-block;vertical-align: top">
<el-table :data="gridData" :header-cell-style="{fontFamily:'YouYuan',fontSize:'13px',fontWeight:200}" :summary-method="getSummaries" border class="subTableHeader" size="mini" show-summary style="">
<el-table-column width="50" align="center" type="index" label="序号"/>
<el-table-column width="120" align="center" label="发票号">
<template slot-scope="scope">
{{ scope.row.发票号 }}
</template>
</el-table-column>
<el-table-column width="170" align="center" label="供应商" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.供应商名称 }}
</template>
</el-table-column>
<el-table-column align="center" label="到票金额(元)" width="90px" prop="到票金额">
<template slot-scope="scope">
{{ scope.row.开票金额.toFixed(2) }}
</template>
</el-table-column>
<el-table-column label="到票时间" align="center" width="90">
<template slot-scope="scope">
{{ scope.row.开票时间 | formatTime }}
</template>
</el-table-column>
</el-table>
</el-card>
<el-dialog v-el-drag-dialog :visible.sync="dialogVisible2" title="外购备料请款" center style="min-height: 300px" width="800px">
<span>供应商:</span>
<el-select v-model="supplierValue" placeholder="供应商" filterable size="small" clearable @change="pageCurrent1=1;pageSize1=10;total1=0;searchTable01()">
<el-option
v-for="item in supplier"
:key="item.value"
:label="item.label"
:value="item.value"/>
</el-select>
<el-table v-loading="" :data="tableData01" border stripe highlight-current-row style="max-height: 300px;" height="300px" size="mini" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column label="发票号" align="center" min-width="120">
<template slot-scope="scope">
{{ scope.row.发票号 }}
</template>
</el-table-column>
<el-table-column label="供应商" align="center" min-width="250" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.供应商名称 }}
</template>
</el-table-column>
<el-table-column label="到票金额(元)" align="center" min-width="90">
<template slot-scope="scope">
{{ scope.row.开票金额 }}
</template>
</el-table-column>
<el-table-column label="到票时间" align="center" min-width="70">
<template slot-scope="scope">
{{ scope.row.开票时间 | formatTime }}
</template>
</el-table-column>
</el-table>
<span>合计:<el-input v-model="SUM" size="mini" style="width: 80px; margin: 10px 10px 0 10px"/>元</span>
<el-button type="primary" size="small" style="float:right;margin: 10px 10px 0 10px" icon="el-icon-check" @click="submitRequestFund">提交请款审批</el-button>
</el-dialog>
</div>
</div>
</div>
</template>
<script>import { searchRequestFund, searchOfflineContract, searchOfflineContract1, submitRequestFund, searchRequsetFundDetail, cancelRequestFund } from '@/api/WorkshopProcurement/RequestOutsourcingMaterials'
import { mapGetters } from 'vuex'
export default {
name: '', // 离线合同
data() {
return {
check1: 0,
check2: 0,
dateRange: '',
expands: [],
pickerOptions: {
shortcuts: [{
text: '上季度',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(end.getTime() - 3600 * 1000 * 24 * 30 * 3)
picker.$emit('pick', [start, end])
}
}, {
text: '过去半年',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(end.getTime() - 3600 * 1000 * 24 * 366 / 2)
picker.$emit('pick', [start, end])
}
}, {
text: '过去一年',
onClick(picker) {
const end = new Date()
const start = new Date()
start.setTime(end.getTime() - 3600 * 1000 * 24 * 365)
picker.$emit('pick', [start, end])
}
}]
},
offlineContract: '',
supplierName0: '',
supplierValue: '',
supplier: [],
pageCurrent1: 1,
pageSize1: 10,
total1: 0,
tableData1: [],
pageCurrent2: 1,
pageSize2: 10,
total2: 0,
tableData01: [],
dialogVisible2: false,
SUM: 0,
contractGroup: [],
sumGroup: [],
gridData: []
}
},
computed: {
...mapGetters([
'sidebar',
'avatar',
'name',
'id' // 人员编号
])
},
created() {
this.fetchData()
this.searchTable1()
},
methods: {
getSummaries(param) { // 合计
const { columns, data } = param
const sums = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计'
} else if (index === 3) {
const values = data.map(item => Number(parseFloat(item['开票金额'])))
if (!values.every(value => isNaN(value))) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
return prev + curr
} else {
return prev
}
}, 0)
sums[index] = sums[index].toFixed(2) + ' 元'
} else {
sums[index] = 'N/A'
}
}
})
return sums
},
exportExcel() {
this.dateRange ? this.check1 = 1 : (this.check1 = 0, this.dateRange = '')
this.supplierName0 ? this.check2 = 1 : (this.check2 = 0, this.supplierName0 = '')
var param = []
param[0] = ['时间段_check', this.check1]
param[1] = ['开始时间', this.dateRange[0]]
param[2] = ['结束时间', this.dateRange[1]]
param[3] = ['供应商名称_check', this.check2]
param[4] = ['供应商名称', this.supplierName0]
var Data = this.CreateData('2001', '报表_备料管理_请款_查询数据', param)
this.exportExcel_NPOI(Data)
},
// dateFormat(row, column) {
// var date = row[column.property]
// console.log(date)
// if (date === undefined) {
// return ''
// }
// return util.formatDate.format(new Date(date), 'yyyy-MM-dd')
// },
fetchData() {
this.supplier = []
searchOfflineContract().then(response => {
for (let i = 0; i < response.data.length; i++) {
this.supplier.push({
label: response.data[i].供应商名称,
value: response.data[i].供应商流水号
})
}
})
console.log(this.supplier)
},
searchTable1() { // 查询请款表
this.dateRange ? this.check1 = 1 : (this.check1 = 0, this.dateRange = '')
this.supplierName0 ? this.check2 = 1 : (this.check2 = 0, this.supplierName0 = '')
searchRequestFund(this.pageCurrent1, this.pageSize1, this.check1, this.dateRange[0], this.dateRange[1], this.check2, this.supplierName0).then(response => {
this.tableData1 = response.data.rows
this.total1 = response.data.total
})
},
handleSizeChange1(val) {
this.pageSize1 = val
this.pageCurrent1 = 1
this.searchTable1()
},
handleCurrentChange1(val) {
this.pageCurrent1 = val
this.searchTable1()
},
requestFund() { // 请款
// this.searchTable01()
this.dialogVisible2 = true
this.supplierValue = ''
this.fetchData() // 重新获取供应商
this.tableData01 = []
},
searchTable01() { // 查询待请款
this.contractGroup = []
this.supplierValue ? this.check = 1 : this.check = 0
searchOfflineContract1(this.check, this.supplierValue).then(response => {
this.tableData01 = response.data
})
},
handleSelectionChange(val) {
this.SUM = 0
this.contractGroup = []
this.sumGroup = []
for (let i = 0; i < val.length; i++) {
this.SUM += parseFloat(val[i].开票金额)
this.contractGroup.push(val[i].发票流水号)
this.sumGroup.push(val[i].开票金额)
}
},
submitRequestFund() { // 确认请款
if (this.supplierValue && this.contractGroup.length !== 0) {
submitRequestFund(this.contractGroup, this.sumGroup, this.supplierValue, this.SUM, this.id).then(response => {
if (response.data[0].result === '1') {
this.$message.success('请款成功')
this.searchTable1()
this.dialogVisible2 = false
} else { this.$message.error('请款失败') }
})
} else {
this.$message.error('请选择供应商及对应请款合同')
}
},
searchTable02(row) { // 查看详情(请款信息包含的合同)
console.log(row, 1111)
// 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.采购计划请款流水号
// }
// }
searchRequsetFundDetail(row.采购计划请款流水号).then(response => {
this.gridData = response.data
console.log(response.data, 2222)
})
},
getRowKeys(row) {
return row.采购计划请款流水号
},
cancelRequestFund(row) { // 取消请款
this.$confirm('确定取消请款?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
cancelRequestFund(row.采购计划请款流水号).then(response => {
if (response.data[0].result === '1') {
this.$message.success('取消成功')
this.searchTable1()
} 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: 10px 0;
}
.el-tag{
margin: 0
}
.searchForm .el-form-item{
margin-bottom: 5px;
}
</style>
<style lang="scss">
.subTableHeader {
th {
background: #7eaced !important;
color: #FFFFFF;
}
tr.el-table__row td {
background-color: #d8e5f6 !important;
}
tr.el-table__row.el-table__row--striped td {
background: #e9f0f9 !important;
}
}
</style>
<style lang="scss">
.button111{
background:rgb(253,246,236);
border-color: #ff9759;
color: #ff9759;
&:hover{
background: #ff9759;
border-color: #ff9759;
color: white;
}
&:focus{
background: #ff9759;
border-color: #ff9759;
color: white;
}
}
</style>