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.
451 lines
16 KiB
451 lines
16 KiB
<template>
|
|
<div class="app-container">
|
|
<div class="filter-container">
|
|
<sticky style="margin-bottom: 10px;">
|
|
<div class="sub-navbar">
|
|
<el-button :disabled="!$refs.list || !$refs.list.selection.length" type="success" @click="batchSend">
|
|
<svg-icon icon-class="send" /> 批量发送
|
|
</el-button>
|
|
<el-button :disabled="!$refs.list || !$refs.list.selection.length" type="primary" @click="batchBohui">
|
|
<svg-icon icon-class="reject" /> 批量驳回
|
|
</el-button>
|
|
</div>
|
|
</sticky>
|
|
<el-form>
|
|
<el-form-item>
|
|
<el-input v-model="listQuery.baogaobianhao" placeholder="报告编号" clearable style="width: 200px" @keyup.enter.native="handleFilter" />
|
|
<el-input v-model="listQuery.zhizaodanwei" placeholder="制造单位" clearable style="width: 200px" @keyup.enter.native="handleFilter" />
|
|
<el-button size="small" type="primary" icon="el-icon-search" @click="handleFilter">
|
|
查询
|
|
</el-button>
|
|
<span class="radio-group-label">当前环节:</span>
|
|
<el-radio-group v-model="listQuery.flowstatus" @change="handleFilter">
|
|
<el-radio :label="1">
|
|
新建
|
|
</el-radio>
|
|
<el-radio :label="2">
|
|
审核
|
|
</el-radio>
|
|
<el-radio :label="3">
|
|
审批
|
|
</el-radio>
|
|
<el-radio :label="4">
|
|
办结
|
|
</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-form>
|
|
<el-table
|
|
ref="list"
|
|
:data="list"
|
|
fit
|
|
highlight-current-row
|
|
border
|
|
stripe
|
|
size="mini"
|
|
height="600px"
|
|
width="100%"
|
|
@row-click="onRowClick"
|
|
>
|
|
<el-table-column type="selection" width="40" />
|
|
<el-table-column align="center" type="index" width="50" label="序号" />
|
|
<el-table-column align="center" prop="baogaobianhao" label="报告编号" />
|
|
<el-table-column align="center" prop="zhizaodanwei" label="制造单位" />
|
|
<el-table-column :formatter="formatter.getChineseName" align="center" prop="jianyanrenyuan" label="检验人员" />
|
|
<el-table-column align="center" prop="jianyanriqi" label="检验日期" />
|
|
<el-table-column :formatter="formatter.getChineseName" align="center" prop="shenheren" label="审核人员" />
|
|
<el-table-column align="center" prop="shenheriqi" label="审核日期" />
|
|
<el-table-column :formatter="formatter.getChineseName" align="center" prop="shenpiren" label="审批人员" />
|
|
<el-table-column align="center" prop="shenpiriqi" label="审批日期" />
|
|
<el-table-column align="center" prop="flowstatus" label="状态">
|
|
<template slot-scope="scope">
|
|
<el-tag v-if="scope.row.flowstatus === 1" type="info">
|
|
新建
|
|
</el-tag>
|
|
<el-tag v-else-if="scope.row.flowstatus === 2" type="info">
|
|
待审核
|
|
</el-tag>
|
|
<el-tag v-else-if="scope.row.flowstatus === 3" type="info">
|
|
待审批
|
|
</el-tag>
|
|
<el-tag v-else-if="scope.row.flowstatus === 4" type="info">
|
|
已办结
|
|
</el-tag>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column align="center" prop="access" label="操作">
|
|
<template slot-scope="scope">
|
|
<el-button title="编辑" size="mini" type="primary" icon="el-icon-edit" circle @click="edit(scope.row)" />
|
|
<el-button title="查看驳回意见" size="mini" icon="el-icon-message" circle @click="viewAllRejection(scope.row.ysjlId)" />
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<pagination v-show="total>0" :total="total" :page-num.sync="listQuery.pageNum" :page-row.sync="listQuery.pageSize" @pagination="getList" />
|
|
<el-dialog title="核价" :visible.sync="dialogFormVisible" @close="closeDialog">
|
|
<el-form ref="chargeTaskYsjl" :model="chargeTaskYsjl" :rules="rules" label-width="100px">
|
|
<!-- <el-row :gutter="10">
|
|
<el-col :span="11">
|
|
<el-form-item label="产品名称" prop="shebeimingcheng">
|
|
<el-input v-model="chargeTaskYsjl.shebeimingcheng" disabled />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="11">
|
|
<el-form-item label="产品型号" prop="guigexinghao">
|
|
<el-input v-model="chargeTaskYsjl.guigexinghao" disabled />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="10">
|
|
<el-col :span="11">
|
|
<el-form-item label="产品图号" prop="chanpintuhao">
|
|
<el-input v-model="chargeTaskYsjl.chanpintuhao" disabled />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="11">
|
|
<el-form-item label="产品编号" prop="chanpinbianhao">
|
|
<el-input v-model="chargeTaskYsjl.chanpinbianhao" disabled />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="10">
|
|
<el-col :span="11">
|
|
<el-form-item label="合同编号" prop="hetongbianhao">
|
|
<el-input v-model="chargeTaskYsjl.hetongbianhao" disabled />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="11">
|
|
<el-form-item label="造价" prop="zaojia">
|
|
<el-input v-model="chargeTaskYsjl.zaojia" @input="beforeHejia" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="10">
|
|
<el-col :span="11">
|
|
<el-form-item label="比例" prop="bili">
|
|
<el-select v-model="chargeTaskYsjl.bili" allow-create clearable filterable default-first-option style="width: 100%;" @change="beforeHejia">
|
|
<el-option v-for="item in biliOptions" :key="item" :label="item" :value="item" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="11">
|
|
<el-form-item label="检验核定" prop="jianyanheding">
|
|
<el-input v-model="chargeTaskYsjl.jianyanheding" disabled />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>-->
|
|
<el-row :gutter="10">
|
|
<el-col :span="11">
|
|
<el-form-item label="造价" prop="zaojia">
|
|
<el-input v-model="chargeTaskYsjl.zaojia" :disabled="isDisabledHejia" @input="beforeHejia" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="11">
|
|
<el-form-item label="比例" prop="bili">
|
|
<el-select v-model="chargeTaskYsjl.bili" allow-create clearable filterable default-first-option style="width: 100%;" :disabled="isDisabledHejia" @change="beforeHejia">
|
|
<el-option v-for="item in biliOptions" :key="item" :label="item" :value="item" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row :gutter="10">
|
|
<el-col :span="11">
|
|
<el-form-item label="检验核定" prop="jianyanheding">
|
|
<el-input v-model="chargeTaskYsjl.jianyanheding" disabled />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<span slot="footer" class="dialog-footer">
|
|
<el-button @click="closeDialog">取 消</el-button>
|
|
<el-button v-if="!isDisabledHejia" type="primary" @click="hejia">确 定</el-button>
|
|
</span>
|
|
</el-dialog>
|
|
<el-dialog title="下一环节处理人" :visible.sync="dialogFormVisibleFlow" @close="closeDialogFlow">
|
|
<el-table ref="flowUserList" :data="flowUserList" border fit highlight-current-row @row-click="onRowClickFlow">
|
|
<el-table-column type="selection" width="40" />
|
|
<el-table-column type="index" align="center" label="序号" width="60" />
|
|
<el-table-column align="center" label="处理人" prop="nickname" min-width="40" />
|
|
</el-table>
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button @click="closeDialogFlow">
|
|
取 消
|
|
</el-button>
|
|
<el-button type="success" @click="confirmSend">
|
|
确认
|
|
</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
<el-dialog title="查看驳回原因" :modal-append-to-body="false" :visible.sync="dialogRejectionVisible">
|
|
<el-table :data="rejectionLogList" stripe>
|
|
<el-table-column :formatter="formatter.getChineseName" prop="createBy" label="执行" width="70" show-overflow-tooltip />
|
|
<el-table-column prop="createTime" label="时间" width="150" />
|
|
<el-table-column prop="infoNotes" label="原因" />
|
|
</el-table>
|
|
</el-dialog>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import Sticky from '@/components/Sticky'
|
|
import Pagination from '@/components/Pagination'
|
|
import qs from 'qs'
|
|
|
|
export default {
|
|
name: 'TODOChargeTask',
|
|
components: { Sticky, Pagination },
|
|
data() {
|
|
return {
|
|
list: [],
|
|
listQuery: {
|
|
pageNum: 1, // 页码
|
|
pageSize: 20, // 每页条数
|
|
renlingren: this.$store.getters.userId,
|
|
flowstatus: 1
|
|
},
|
|
total: 0,
|
|
dialogFormVisible: false,
|
|
chargeTaskYsjl: {},
|
|
biliOptions: ['0.4', '0.5', '0.6', '0.7', '0.8', '0.9', '1'],
|
|
rules: {
|
|
zaojia: [
|
|
{ required: true, message: '请输入造价', trigger: 'input' }
|
|
],
|
|
bili: [
|
|
{ required: true, message: '请输入比例', trigger: 'input' }
|
|
],
|
|
jianyanheding: [
|
|
{ required: true, message: '请输入检验核定', trigger: 'input' }
|
|
]
|
|
},
|
|
dialogFormVisibleFlow: false,
|
|
flowUserList: [],
|
|
dialogRejectionVisible: false,
|
|
rejectionLogList: [],
|
|
isDisabledHejia: false
|
|
}
|
|
},
|
|
watch: {
|
|
'chargeTaskYsjl.flowstatus': function(val) {
|
|
this.isDisabledHejia = val === 4
|
|
}
|
|
},
|
|
created() {
|
|
this.getList()
|
|
},
|
|
methods: {
|
|
/**
|
|
* 获得办结报告列表信息
|
|
*/
|
|
getList() {
|
|
this.api({
|
|
url: '/chargeTask/getTasks',
|
|
method: 'get',
|
|
params: this.listQuery
|
|
}).then(data => {
|
|
this.list = data.list
|
|
this.total = data.total
|
|
})
|
|
},
|
|
handleFilter() {
|
|
this.listQuery.pageNum = 1
|
|
this.listQuery.pageSize = 20
|
|
this.getList()
|
|
},
|
|
onRowClick(row) {
|
|
this.$refs.list.toggleRowSelection(row)
|
|
},
|
|
edit(row) {
|
|
this.chargeTaskYsjl = row
|
|
this.beforeHejia()
|
|
this.dialogFormVisible = true
|
|
},
|
|
closeDialog() {
|
|
this.$refs.chargeTaskYsjl.resetFields()
|
|
this.dialogFormVisible = false
|
|
},
|
|
/**
|
|
* 核价前
|
|
*/
|
|
beforeHejia() {
|
|
// 锅炉制造费用四舍五入到个位
|
|
this.chargeTaskYsjl.jianyanheding = Math.round((!this.chargeTaskYsjl.zaojia || !this.chargeTaskYsjl.bili) ? 0 : this.common.accMul(this.chargeTaskYsjl.zaojia, this.chargeTaskYsjl.bili / 100))
|
|
},
|
|
/**
|
|
* 核价
|
|
*/
|
|
hejia() {
|
|
this.$refs.chargeTaskYsjl.validate((valid) => {
|
|
if (!valid) {
|
|
return
|
|
}
|
|
this.api({
|
|
url: '/ysjl/modifyJyhd',
|
|
method: 'post',
|
|
data: {
|
|
ysjlId: this.chargeTaskYsjl.ysjlId,
|
|
renwuId: this.chargeTaskYsjl.renwuId,
|
|
zaojia: this.chargeTaskYsjl.zaojia,
|
|
bili: this.chargeTaskYsjl.bili,
|
|
jianyanheding: this.chargeTaskYsjl.jianyanheding
|
|
}
|
|
}).then(_ => {
|
|
this.dialogFormVisible = false
|
|
this.$message.success('操作成功!')
|
|
this.getList()
|
|
})
|
|
})
|
|
},
|
|
/**
|
|
* 批量发送
|
|
*/
|
|
batchSend() {
|
|
if (this.isNotEqualsLink()) {
|
|
return
|
|
}
|
|
const ids = this.$refs.list.selection.map(row => row.ysjlId)
|
|
const sfd = this.$refs.list.selection[0]
|
|
if (sfd.flowstatus === 3) {
|
|
this.send(ids, sfd)
|
|
return
|
|
} else if (sfd.flowstatus === 4) {
|
|
this.$message.warning('当前环节的收费信息不允许操作!')
|
|
return
|
|
}
|
|
this.api({
|
|
url: '/flow/getUserSfd',
|
|
methods: 'get',
|
|
params: {
|
|
ids: ids,
|
|
flowstatus: sfd.flowstatus,
|
|
bglx: 5,
|
|
shebeizhongleidaima: '1000'
|
|
},
|
|
paramsSerializer: function(params) {
|
|
return qs.stringify(params, { indices: false })
|
|
}
|
|
}).then(data => {
|
|
if (!data) {
|
|
this.$message.warning('部分收费信息的状态已改变,请刷新列表后重新发送下一环节!')
|
|
return
|
|
}
|
|
this.flowUserList = data
|
|
this.dialogFormVisibleFlow = true
|
|
})
|
|
},
|
|
/**
|
|
* 批量驳回
|
|
*/
|
|
batchBohui() {
|
|
if (this.isNotEqualsLink()) {
|
|
return
|
|
}
|
|
// 2. 判断是否是存在申请环节的数据
|
|
const isNotEquals = this.$refs.list.selection.filter(row => row.flowstatus === 7).length
|
|
if (isNotEquals) {
|
|
this.$message.warning('只能操作审核、审批环节的收费单!')
|
|
return
|
|
}
|
|
// 3. 输入驳回原因,并驳回
|
|
this.$prompt('请输入驳回原因', '提示', {
|
|
confirmButtonText: '确定',
|
|
inputType: 'textarea',
|
|
cancelButtonText: '取消',
|
|
inputPattern: /.{1,}/,
|
|
inputErrorMessage: '请输入驳回原因!'
|
|
}).then(({ value }) => {
|
|
this.api({
|
|
url: '/chargeTask/bohui',
|
|
method: 'post',
|
|
data: {
|
|
ids: this.$refs.list.selection.map(row => row.ysjlId),
|
|
currentLink: this.$refs.list.selection[0].flowstatus,
|
|
reason: value
|
|
},
|
|
paramsSerializer: function(params) {
|
|
return qs.stringify(params, { indices: false })
|
|
}
|
|
}).then(_ => {
|
|
this.$message.success('操作成功!')
|
|
this.getList()
|
|
})
|
|
})
|
|
},
|
|
/**
|
|
* 判断所有选中数据是否是同一环节
|
|
*/
|
|
isNotEqualsLink() {
|
|
if (this.$refs.list.selection[0].flowstatus === 11) {
|
|
this.$message.warning('只能操作非办结环节的收费单!')
|
|
return true
|
|
}
|
|
const isNotEquals = this.$refs.list.selection.filter(row => row.flowstatus !== this.$refs.list.selection[0].flowstatus).length
|
|
if (isNotEquals) {
|
|
this.$message.warning('只能操作相同环节的收费单!')
|
|
}
|
|
return isNotEquals
|
|
},
|
|
onRowClickFlow(row) {
|
|
this.$refs.flowUserList.toggleRowSelection(row)
|
|
},
|
|
closeDialogFlow() {
|
|
this.flowUserList.length = 0
|
|
this.dialogFormVisibleFlow = false
|
|
},
|
|
confirmSend() {
|
|
if (!this.$refs.flowUserList.selection.length) {
|
|
this.$message.warning('请选择下一环节处理人!')
|
|
return false
|
|
}
|
|
const ids = this.$refs.list.selection.map(row => row.ysjlId)
|
|
const sfd = this.$refs.list.selection[0]
|
|
this.send(ids, sfd)
|
|
},
|
|
/**
|
|
* 发送下一环节
|
|
*
|
|
* @param ids 收费主键数组
|
|
* @param sfd 收费信息
|
|
*/
|
|
send(ids, sfd) {
|
|
this.api({
|
|
url: '/chargeTask/send',
|
|
method: 'post',
|
|
data: {
|
|
ids: ids,
|
|
currentLink: sfd.flowstatus,
|
|
renlingren: sfd.flowstatus === 3 ? sfd.jianyanrenyuan : this.$refs.flowUserList.selection[0].userId
|
|
},
|
|
paramsSerializer: function(params) {
|
|
return qs.stringify(params, { indices: false })
|
|
}
|
|
}).then(_ => {
|
|
this.closeDialogFlow()
|
|
this.$message.success('操作成功!')
|
|
this.getList()
|
|
})
|
|
},
|
|
/**
|
|
* 查看驳回原因
|
|
* @param id 收费主键
|
|
*/
|
|
viewAllRejection(id) {
|
|
this.api({
|
|
url: '/chargeTask/getLogs',
|
|
method: 'get',
|
|
params: {
|
|
taskId: id,
|
|
infoType: -2
|
|
}
|
|
}).then(data => {
|
|
this.rejectionLogList = data
|
|
this.dialogRejectionVisible = true
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
|
|
</style>
|
|
|