You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

346 lines
11 KiB

<template>
<div class="app-container">
<div class="filter-container">
<el-form>
<el-form-item>
<el-input v-model="listQuery.baojianbianhao" placeholder="报检编号" clearable style="width: 200px" @keyup.enter.native="handleFilter" />
<el-select v-show="this.$store.getters.clientType !== 'Enterprise'" v-model="listQuery.zzdwId" placeholder="受检单位" filterable clearable @keyup.enter.native="handleFilter">
<el-option v-for="item in zzdwList" :key="item.id" :label="item.zhizaodanwei" :value="item.id" />
</el-select>
<el-input v-model="listQuery.chanpinbianhao" placeholder="产品编号" clearable style="width: 200px" @keyup.enter.native="handleFilter" />
<el-button type="primary" icon="el-icon-search" @click="handleFilter">
查询
</el-button>
<br>
</el-form-item>
</el-form>
</div>
<el-table
ref="list"
:data="list"
:row-class-name="tableRowClassName"
fit
highlight-current-row
border
stripe
height="600px"
width="100%"
@row-click="onRowClick"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="40" />
<el-table-column align="center" type="index" width="50" label="序号" />
<el-table-column align="center" prop="baojianbianhao" label="报检编号" />
<el-table-column align="center" prop="shiyongdanwei" label="受检单位" />
<el-table-column :formatter="formatter.getChineseName" align="center" prop="createBy" label="检验员" />
<el-table-column align="center" prop="createTime" label="日期" :formatter="formatterCreateTime" />
<el-table-column align="center" width="140" fixed="right" label="打印状态">
<template slot-scope="scope">
<el-tag v-if="scope.row.printStatus" type="success">
已打印
</el-tag>
<el-tag v-else type="danger">
未打印
</el-tag>
</template>
</el-table-column>
<el-table-column align="center" width="120" fixed="right" label="操作">
<template slot-scope="scope">
<el-button type="primary" icon="el-icon-search" title="详情" @click="showDetailsInit(scope.row.id)">
详情
</el-button>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page-num.sync="listQuery.pageNum" :page-row.sync="listQuery.pageRow" @pagination="getList" />
<el-dialog title="收费单详情列表" width="70%" :visible.sync="sfdListVisible" @close="sfdListVisible = false">
<el-form>
<el-form-item>
编号:
<el-input v-model="sfd.shoufeidanhao" disabled clearable type="small" style="width: 120px" />
受检单位:
<el-select v-model="sfd.zzdwId" disabled clearable type="small" style="width: 250px">
<el-option v-for="item in zzdwList" :key="item.id" :label="item.zhizaodanwei" :value="item.id" />
</el-select>
检验员:
<el-select v-model="sfd.createBy" disabled type="small" style="width: 120px;">
<el-option v-for="item in inspectors" :key="item.id" :label="item.nickname" :value="item.id" />
</el-select>
日期:
<el-date-picker v-model="sfd.createTime" type="date" disabled style="width: 140px" />
<el-button type="success" icon="el-icon-printer" @click="printSfdDetails">
打印收费通知单
</el-button>
</el-form-item>
</el-form>
<el-table
ref="tableDetailsList"
:data="tableDetailsList"
border
fit
highlight-current-row
style="margin-top: 5px;"
stripe
:summary-method="getSummaries"
show-summary
@row-click="onSfdClick"
@selection-change="handleSelectionChangeDetails"
>
<el-table-column type="selection" width="60" />
<el-table-column type="index" label="序号" width="50" />
<el-table-column align="center" label="检验证书编号" prop="baogaobianhao" min-width="140" />
<el-table-column align="center" label="产品编号" prop="chanpinbianhao" min-width="140" />
<el-table-column align="center" label="受检设备(产品)型号 " prop="guigexinghao" min-width="140" />
<el-table-column align="center" label="检验项目(或产品出厂价格) " prop="zaojia" min-width="80" />
<el-table-column align="center" label="应收检验费金额" prop="yingjiaojine" min-width="80" />
<el-table-column align="center" label="是否办结 " prop="flowstatus" min-width="80">
<template slot-scope="scope">
<el-tag v-if="scope.row.flowstatus === 4 && (!scope.row.restartstatuslevel || scope.row.restartstatuslevel === 0)" type="success">
已办结
</el-tag>
<el-tag v-else type="danger">
未办结
</el-tag>
</template>
</el-table-column>
<el-table-column align="center" label="缴费状态 " prop="jfState" min-width="80">
<template slot-scope="scope">
<el-tag v-if="scope.row.jfState" type="success">
已交费
</el-tag>
<el-tag v-else type="danger">
未交费
</el-tag>
</template>
</el-table-column>
<el-table-column align="center" width="80" label="附件" fixed="right">
<template slot-scope="scope">
<el-button type="info" size="small" circle icon="el-icon-info" title="编辑相关鉴证" @click="showVerification(scope.row.id)" />
</template>
</el-table-column>
</el-table>
</el-dialog>
<el-dialog title="查看相关鉴证" :modal-append-to-body="false" :visible.sync="dialogEnclosureVisible">
<enclosure :relation-id.sync="currentRenwuId" :if-liaison.sync="ifLiaison" :view-button.sync="viewButton" />
</el-dialog>
</div>
</template>
<script>
import Enclosure from '@/views/common/Enclosure'
import Pagination from '@/components/Pagination'
import qs from 'qs'
export default {
name: 'ContainerChargeNotice',
components: { Pagination, Enclosure },
data() {
return {
list: [], // 收费通知单列表
zzdwList: [], // 制造单位列表
listQuery: {
pageNum: 1, // 页码
pageRow: 20, // 每页条数
jianyanleibie: 'ZJ',
shebeizhongleidaima: '2000',
printStatus: false
},
tableDetailsList: [], // 收费通知单详情列表
total: 0,
isPrint: true,
sfd: {},
sfdListVisible: false,
selection: [],
selectionDetails: [],
dialogEnclosureVisible: false,
currentRenwuId: '',
viewButton: false,
ifLiaison: false,
departmentId: this.$store.getters.departmentId,
inspectors: [] // 检验员
}
},
created() {
this.getZzdwList()
this.getList()
this.getInspectorsList()
},
methods: {
/**
* 打印收费通知单
*/
printSfdDetails() {
if (this.selectionDetails.length === 0) {
this.$message({
type: 'info',
message: '请选择收费通知项!'
})
return false
}
let ifConduct = true
const pks = []
this.selectionDetails.forEach(item => {
if (!(item.flowstatus === 4 && (!item.restartstatuslevel || item.restartstatuslevel === 0))) {
ifConduct = false
this.$message({
type: 'info',
message: '收费通知项存在未办结设备!'
})
return false
}
pks.push(item.id)
})
if (ifConduct) {
// 组织数据
this.apibjd({
url: '/sfd/getSfdPrintDataBySfdId',
method: 'get',
params: { sfdId: this.sfd.id, pks: pks },
paramsSerializer: function(params) {
return qs.stringify(params, { indices: false })
}
}).then(data => {
this.preview({
url: '/print/generatePdfListing',
method: 'post',
data: {
info: data.info,
paramList: data.paramList,
viewType: 'SFD'
}
}).then(data => {
data = data.replace(/\\/g, '/')
window.open(data)
})
})
}
},
/**
* 获得检验员
*/
getInspectorsList() {
this.api({
url: '/user/getInspector',
method: 'get',
params: { departmentId: this.departmentId }
}).then(data => {
this.inspectors = data
})
},
/**
* 指定列求和
*/
getSummaries(param) {
const { columns, data } = param
const sums = []
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计'
return
}
const values = data.map(item => Number(item[column.property]))
if (column.property === 'yingjiaojine') {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr)
if (!isNaN(value)) {
return this.common.accAdd(prev, curr)
} else {
return prev
}
}, 0)
sums[index]
}
})
return sums
},
/**
* 显示相关鉴证文件窗口
* @param renwuId
*/
showVerification(renwuId) {
this.dialogEnclosureVisible = true
this.currentRenwuId = renwuId
},
/**
* 获得收费通知单详情列表
*/
showDetailsInit(sfdId) {
this.apibjd({
url: '/sfd/getSfdById',
method: 'get',
params: { sfdId: sfdId }
}).then(data => {
this.sfd = data.sfd
this.sfd.zzdwId = this.sfd.zzdwId + ''
this.sfd.createBy = parseInt(this.sfd.createBy)
this.tableDetailsList = data.ysjlSfdList
this.sfdListVisible = true
})
},
/**
* 查询
*/
handleFilter() {
// 查询事件
this.listQuery.pageNum = 1
this.getList()
},
/**
* 收费通知单列表
*/
getList() {
this.apibjd({
url: '/sfd/listPage',
method: 'get',
params: this.listQuery
}).then(data => {
this.list = data.list
this.total = data.total
})
},
/**
* 获得制造单位
*/
getZzdwList() {
const queryZzdw = {
creatingState: true,
inspectorIfEmpty: false
}
const username = this.$store.getters.username
if (username && username !== 'admin') {
queryZzdw.zhuchangjianyanrenyuan = this.$store.getters.userId
}
this.api({
url: '/dwxx/getAll',
method: 'get',
params: queryZzdw
}).then(data => {
this.zzdwList = data
})
},
tableRowClassName({ row, rowIndex }) {
row.index = rowIndex
},
// 表格单击选中行
onRowClick(row) {
this.$refs.list.toggleRowSelection(row)
},
handleSelectionChange(val) {
this.selection = val
},
handleSelectionChangeDetails(val) {
this.selectionDetails = val
},
onSfdClick(row) {
this.$refs.tableDetailsList.toggleRowSelection(row)
},
/**
* 列格式化创建日期
*/
formatterCreateTime(row, column, cellValue) {
if (cellValue) {
const arry = cellValue.split(' ')
return arry[0]
}
}
}
}
</script>