qa-regulatory-gwj-vue/src/views/evaluation/branch_hazard_assessment/components/evaluation.vue

492 lines
17 KiB
Vue

<template>
<div class="app-container">
<el-form :model="searchForm" label-width="100px">
<el-row>
<el-col :span="4">
<el-form-item label="隐患描述">
<el-input v-model="searchForm.hiddendescr" placeholder="请输入关键字"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="隐患来源">
<el-select v-model="searchForm.SOURCE" style="width: 100%;">
<el-option value="1" label="隐患快报"/>
<el-option value="2" label="清单排查"/>
<!-- <el-option value="3" label="清单排查"/>-->
<el-option value="4" label="安全环保检查(监管端)"/>
<el-option value="5" label="安全环保检查(企业端)"/>
<el-option value="6" label="消防点检"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="发现部门">
<Treeselect
:options="treeData"
:normalizer="normalizer"
v-model="searchForm.DEPARTMENT_ID"
placeholder="请选择发现部门"
no-options-text="暂无数据"
no-children-text="暂无数据"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="隐患发现人 ">
<el-input v-model="searchForm.KEYWORDS"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="隐患发现时间">
<el-date-picker
v-model="searchForm.dates"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 100%;"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<el-form-item label="考评状态">
<el-select v-model="searchForm.STATE" style="width: 100%;">
<el-option value="1" label="是"/>
<el-option value="2" label="否"/>
<el-option value="3" label="考评合格"/>
<el-option value="4" label="考评不合格"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="隐患类型">
<Treeselect
:options="hiddenTypeList"
:normalizer="normalizer"
v-model="searchForm.HIDDENTYPE"
placeholder="请选择隐患类型"
no-options-text="暂无数据"
no-children-text="暂无数据"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="本人是否考评">
<el-select v-model="searchForm.userIs" clearable style="width: 100%;">
<el-option value="1" label="是"/>
<el-option value="2" label="否"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" v-if="searchForm.userIs == '1'">
<el-form-item label="本人考评时间">
<el-date-picker
v-model="searchForm.userIsDate"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button v-waves type="primary" icon="el-icon-search" @click="getList">
</el-button>
<el-button v-waves type="success" icon="el-icon-refresh" native-type="reset" @click="goKeyReset">
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-table
v-loading="listLoading"
:data="varList"
border
tooltip-effect="dark"
style="width: 100%">
<el-table-column type="index" label="序号" width="55" align="center"/>
<el-table-column label="隐患来源">
<template slot-scope="{row}">
<span v-if="row.SOURCE=='1'">
隐患快报
</span>
<span v-else-if="row.SOURCE=='2'">
清单排查
</span>
<span v-else-if="row.SOURCE=='3'">
清单排查
</span>
<span v-else-if="row.SOURCE=='4'">
安全环保检查(监管端)
</span>
<span v-else-if="row.SOURCE=='5'">
安全环保检查(企业端)
</span>
<span v-else-if="row.SOURCE=='6'">
消防点检
</span>
</template>
</el-table-column>
<el-table-column prop="HIDDENDESCR" label="隐患描述"/>
<el-table-column prop="DISCOVERYTIME" label="隐患发现时间"/>
<el-table-column prop="CREATOR_NAME" label="隐患发现人"/>
<el-table-column label="隐患状态">已验收</el-table-column>
<el-table-column prop="CHECKOR_NAME" label="隐患验收人">
<template slot-scope="{row}">
<span v-if="row.RECTIFICATIONTYPE=='1'">
--
</span>
<span v-else>
{{ row.CHECKOR_NAME }}
</span>
</template>
</el-table-column>
<el-table-column prop="CHECK_USER" label="已考评组成员"/>
<el-table-column prop="UN_CHECK_USER" label="待考评组成员"/>
<el-table-column prop="PASS_STATUS" label="考评结果">
<template slot-scope="{row}">
<template v-if="row.CHECK_COUNT !== 5">
<span>考核未完成</span>
</template>
<template v-else>
<template v-if="row.PASS_COUNT > 2">
<span>考核合格</span>
</template>
<template v-else>
<span>考核不合格</span>
</template>
</template>
</template>
</el-table-column>
<el-table-column prop="userIsTime" label="本人考评时间" v-if="searchForm.userIsDate != undefined && searchForm.userIsDate != '' && searchForm.userIsDate[0]">
<template slot-scope="{row}">
<template>
<span>{{ row.userIsTime }}</span>
</template>
</template>
</el-table-column>
<el-table-column label="操作" width="400px">
<template slot-scope="{row}">
<el-button type="info" icon="el-icon-view" @click="fnViewHidden(row.HIDDEN_ID)">查看隐患详情</el-button>
<el-button type="primary" icon="el-icon-view" @click="fnEvaluation(row.HIDDEN_ID,row.SOURCE, row.CREATOR,'view')">考评详情</el-button>
<el-button
v-if="isEvaluationShowButton(row.UN_CHECK_USER_ID)"
type="success"
icon="el-icon-view"
@click="fnEvaluation(row.HIDDEN_ID,row.SOURCE, row.CREATOR,'edit')">考评
</el-button>
<el-button
v-if="USER_ID=='1'"
type="danger"
icon="el-icon-view"
@click="fnDelvaluation(row)">重置考评
</el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<el-button icon="el-icon-arrow-left" @click="goBack">返回</el-button>
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/>
</div>
<el-dialog :visible.sync="evaluationDialog.visible" title="考评">
<table class="table-ui">
<template v-for="item in evaluationDialog.list">
<tr :key="item.CONFIG_USER_ID">
<td class="tbg">考评人员</td>
<td>{{ item.USER_NAME }}</td>
<td class="tbg">考评时间</td>
<td>{{ item.CREATTIME ? item.CREATTIME : "暂未考评" }}</td>
<td class="tbg">是否符合</td>
<td>
<span v-if="item.RESULT === 1">符合</span>
<span v-if="item.RESULT === 2">不符合</span>
<span v-if="!item.RESULT">未考评</span>
</td>
</tr>
<tr v-if="item.RESULT === 2" :key="item.CONFIG_USER_ID">
<td class="tbg">不符合原因</td>
<td colspan="3">{{ item.DESCR }}</td>
</tr>
</template>
</table>
<el-form
v-if="evaluationDialog.type === 'edit'"
ref="evaluationDialogForm"
:model="evaluationDialog.form"
:rules="evaluationDialog.rules"
label-width="100px"
class="mt-20">
<el-form-item label="考评人员">
<el-input v-model="evaluationDialog.form.USER_NAME" disabled/>
</el-form-item>
<el-form-item label="是否符合" prop="RESULT">
<el-select v-model="evaluationDialog.form.RESULT" style="width: 100%;">
<el-option value="1" label="符合"/>
<el-option value="2" label="不符合"/>
</el-select>
</el-form-item>
<el-form-item v-if="evaluationDialog.form.RESULT === '2'" label="不符合原因" prop="DESCR">
<el-input v-model="evaluationDialog.form.DESCR" type="textarea" autosize/>
</el-form-item>
</el-form>
<template slot="footer">
<el-button @click="fnEvaluationDialogChangeShow">关闭</el-button>
<el-button v-if="evaluationDialog.type === 'edit'" type="primary" @click="fnEvaluationDialogSubmit"></el-button>
</template>
</el-dialog>
<hidden-info v-if="visible" :visible.sync="visible" :id="HIDDEN_ID"/>
</div>
</template>
<script>
import Pagination from '@/components/Pagination'
import { requestFN } from '@/utils/request'
import waves from '@/directive/waves'
import Treeselect from '@riophae/vue-treeselect'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
import hiddenInfo from './hidden_info.vue'
export default {
components: { Pagination, Treeselect, hiddenInfo },
directives: { waves },
data() {
return {
total: 0,
varList: [],
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID,
listQuery: {
page: 1,
limit: 20
},
normalizer(node) {
return {
id: node.id,
label: node.name,
children: node.nodes
}
},
treeData: [],
hiddenTypeList: [],
listLoading: false, // 加载状态
searchForm: {
KEYWORDS: '',
SOURCE: '',
HIDDENTYPE: null,
dates: [],
DEPARTMENT_ID: null,
STATE: '',
hiddendescr: '',
userIs: '',
userIsDate : []
},
evaluationDialog: {
visible: false,
type: '',
HIDDEN_ID: '',
SOURCE: '',
CREATOR: '',
form: {
EVALUATIONCONFIGINFO_ID: '',
USER_NAME: '',
DESCR: '',
RESULT: ''
},
rules: {
RESULT: [{ required: true, message: '请选择是否符合', trigger: 'change' }],
DESCR: [{ required: true, message: '请输入不符合原因', trigger: 'blur' }]
},
list: []
},
visible: false,
HIDDEN_ID: ''
}
},
created() {
this.getList()
this.getTreeData()
},
methods: {
// 获得部门树
getTreeData() {
requestFN(
'/corpDepartment/listTreeManageAndCorp',
{}
).then((data) => {
const treeData = this.listTransTree(JSON.parse(data.zTreeNodes), 'id', 'pId', 'nodes')
this.treeData = this.removeEmptyChildren(treeData)
}).catch((e) => {
})
requestFN(
'/dictionaries/listSelectTree',
{
DICTIONARIES_ID: '3babc15144444bdc8d763d0af2bdfff6'
}
).then((data) => {
this.hiddenTypeList = this.removeEmptyChildren(JSON.parse(data.zTreeNodes))
})
},
goKeyReset() {
this.searchForm.KEYWORDS = ''
this.searchForm.SOURCE = ''
this.searchForm.HIDDENTYPE = null
this.searchForm.dates = []
this.searchForm.DEPARTMENT_ID = null
this.searchForm.STATE = ''
this.searchForm.hiddendescr = ''
this.searchForm.userIs = ''
this.searchForm.userIsDate = ''
this.getList()
},
// 获取列表
getList() {
this.listLoading = true
requestFN(
'/hiddenevaluationrecord/hiddenList?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
...this.searchForm,
START_TIME: this.searchForm.dates && this.searchForm.dates[0],
END_TIME: this.searchForm.dates && this.searchForm.dates[1],
USER_IS_START_TIME: this.searchForm.userIsDate && this.searchForm.userIsDate[0],
USER_IS_END_TIME: this.searchForm.userIsDate && this.searchForm.userIsDate[1],
CORPINFO_ID: this.$parent.CORPINFO_ID,
EVALUATIONCONFIG_ID: this.$parent.EVALUATIONCONFIG_ID,
TYPE: this.$parent.TYPE
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
}).catch((e) => {
this.listLoading = false
})
},
isEvaluationShowButton(UN_CHECK_USER_ID) {
if (!UN_CHECK_USER_ID) return false
else {
return UN_CHECK_USER_ID.split(',').indexOf(this.USER_ID) !== -1
}
},
goBack() {
this.$parent.activeName = 'List'
},
fnViewHidden(HIDDEN_ID) {
this.visible = true
this.HIDDEN_ID = HIDDEN_ID
// this.$parent.HIDDEN_ID = HIDDEN_ID
// this.$parent.activeName = 'HiddenInfo'
},
fnEvaluationDialogChangeShow() {
this.evaluationDialog.visible = !this.evaluationDialog.visible
},
fnEvaluation(HIDDEN_ID, SOURCE, CREATOR, type) {
this.evaluationDialog.HIDDEN_ID = HIDDEN_ID
this.evaluationDialog.SOURCE = SOURCE
this.evaluationDialog.CREATOR = CREATOR
this.evaluationDialog.type = type
this.evaluationDialog.list = []
this.fnEvaluationDialogChangeShow()
if (type === 'edit') {
this.$nextTick(() => {
this.$refs.evaluationDialogForm.resetFields()
})
}
requestFN(
'/hiddenevaluationrecord/goEdit',
{
HIDDEN_ID,
EVALUATIONCONFIG_ID: this.$parent.EVALUATIONCONFIG_ID
}
).then((data) => {
const list = []
for (let i = 0; i < data.varList.length; i++) {
if (type === 'edit') {
if (data.varList[i].CONFIG_USER_ID !== this.USER_ID) {
list.push(data.varList[i])
} else {
this.evaluationDialog.form.EVALUATIONCONFIGINFO_ID = data.varList[i].CONFIG_EVALUATIONCONFIGINFO_ID
this.evaluationDialog.form.USER_NAME = data.varList[i].USER_NAME
this.evaluationDialog.form.DESCR = ''
this.evaluationDialog.form.RESULT = ''
}
} else {
list.push(data.varList[i])
}
}
this.evaluationDialog.list = list
}).catch((e) => {
})
},
fnEvaluationDialogSubmit() {
this.$refs.evaluationDialogForm.validate((valid) => {
if (valid) {
requestFN(
'/hiddenevaluationrecord/add',
{
CORPINFO_ID: this.$parent.CORPINFO_ID,
HIDDENTYPE: this.$parent.TYPE,
EVALUATIONCONFIG_ID: this.$parent.EVALUATIONCONFIG_ID,
SOURCE: this.evaluationDialog.SOURCE,
USER_ID: this.evaluationDialog.CREATOR,
HIDDEN_ID: this.evaluationDialog.HIDDEN_ID,
...this.evaluationDialog.form
}
).then((data) => {
if (data.result === 'success') {
this.$message.success('保存成功')
this.fnEvaluationDialogChangeShow()
this.getList()
}
}).catch((e) => {
})
}
})
},
fnDelvaluation(row) {
this.$confirm('确定要重置选中的评审记录吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN(
'/hiddenevaluationrecord/deleteEvaluation',
{
HIDDEN_ID: row.HIDDEN_ID,
USER_ID: row.CREATOR
}
).then((data) => {
this.listLoading = false
if (data.result === 'success') {
this.$message.success('删除成功')
this.getList()
} else {
this.$message({
message: data.message,
type: 'error'
})
}
}).catch((e) => {
})
}).catch(() => {
})
}
}
}
</script>
<style lang="sass" scoped>
</style>