From b609f47f586d94606d7f9dcc5750780867acebc7 Mon Sep 17 00:00:00 2001 From: dearlin <1261008090@qq.com> Date: Mon, 13 Nov 2023 11:02:18 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=90=E6=82=A3=E8=80=83=E8=AF=84=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/evaluation.vue | 430 +++++++++++++++ .../components/hidden_info.vue | 504 ++++++++++++++++++ .../components/list.vue | 142 +++++ .../branch_hazard_assessment/index.vue | 30 ++ .../configuration_group/components/list.vue | 387 ++++++++++++++ .../configuration_group/index.vue | 22 + .../components/hidden_info.vue | 486 +++++++++++++++++ .../components/hidden_list.vue | 285 ++++++++++ .../components/list.vue | 155 ++++++ .../components/personnel_list.vue | 253 +++++++++ .../components/redemption_records.vue | 127 +++++ .../personnel_evaluation_status/index.vue | 35 ++ .../tongji/components/list.vue | 109 ++++ .../keyproject_evaluation/tongji/index.vue | 32 ++ src/views/keyprojects/hidden/index.vue | 3 +- 15 files changed, 2999 insertions(+), 1 deletion(-) create mode 100644 src/views/keyproject_evaluation/branch_hazard_assessment/components/evaluation.vue create mode 100644 src/views/keyproject_evaluation/branch_hazard_assessment/components/hidden_info.vue create mode 100644 src/views/keyproject_evaluation/branch_hazard_assessment/components/list.vue create mode 100644 src/views/keyproject_evaluation/branch_hazard_assessment/index.vue create mode 100644 src/views/keyproject_evaluation/configuration_group/components/list.vue create mode 100644 src/views/keyproject_evaluation/configuration_group/index.vue create mode 100644 src/views/keyproject_evaluation/personnel_evaluation_status/components/hidden_info.vue create mode 100644 src/views/keyproject_evaluation/personnel_evaluation_status/components/hidden_list.vue create mode 100644 src/views/keyproject_evaluation/personnel_evaluation_status/components/list.vue create mode 100644 src/views/keyproject_evaluation/personnel_evaluation_status/components/personnel_list.vue create mode 100644 src/views/keyproject_evaluation/personnel_evaluation_status/components/redemption_records.vue create mode 100644 src/views/keyproject_evaluation/personnel_evaluation_status/index.vue create mode 100644 src/views/keyproject_evaluation/tongji/components/list.vue create mode 100644 src/views/keyproject_evaluation/tongji/index.vue diff --git a/src/views/keyproject_evaluation/branch_hazard_assessment/components/evaluation.vue b/src/views/keyproject_evaluation/branch_hazard_assessment/components/evaluation.vue new file mode 100644 index 0000000..cbdc512 --- /dev/null +++ b/src/views/keyproject_evaluation/branch_hazard_assessment/components/evaluation.vue @@ -0,0 +1,430 @@ +<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="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 label="操作" width="350px"> + <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> + </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> + <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: '' + }, + 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.getList() + }, + // 获取列表 + getList() { + this.listLoading = true + requestFN( + 'keyProject/hiddenevaluationrecord/hiddenList?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + ...this.searchForm, + START_TIME: this.searchForm.dates && this.searchForm.dates[0], + END_TIME: this.searchForm.dates && this.searchForm.dates[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) => { + }) + } + }) + } + } +} + +</script> + +<style lang="sass" scoped> +</style> diff --git a/src/views/keyproject_evaluation/branch_hazard_assessment/components/hidden_info.vue b/src/views/keyproject_evaluation/branch_hazard_assessment/components/hidden_info.vue new file mode 100644 index 0000000..03ca396 --- /dev/null +++ b/src/views/keyproject_evaluation/branch_hazard_assessment/components/hidden_info.vue @@ -0,0 +1,504 @@ +<template> + <el-dialog :visible="visible" title="隐患查看" @close="goBack"> + <div class="app-container"> + <div class="level-title"> + <h1>隐患信息</h1> + </div> + <div class="mb-20"> + <table class="table-ui"> + <tr> + <td class="tbg">隐患来源</td> + <template v-if="pd.SOURCE=='1'"> + <td colspan="3">隐患快报</td> + </template> + <template v-else-if="pd.SOURCE=='2'"> + <td colspan="3">清单排查</td> + </template> + <template v-else-if="pd.SOURCE=='3'"> + <td colspan="3">清单排查</td> + </template> + <template v-else-if="pd.SOURCE=='4'"> + <td colspan="3">安全环保检查(监管端)</td> + </template> + <template v-else-if="pd.SOURCE=='5'"> + <td colspan="3">安全环保检查(企业端)</td> + </template> + </tr> + <!--<tr> + <td class="tbg">检查内容</td> + <td>{{ pd.CHECK_CONTENT }}</td> + </tr>--> + <tr> + <td class="tbg">隐患描述</td> + <td colspan="3">{{ pd.HIDDENDESCR }}</td> + </tr> + <tr v-if="pd.SOURCE=='2'"> + <td class="tbg">风险点(单元)</td> + <td>{{ pd.RISK_UNIT }}</td> + </tr> + <tr v-if="pd.SOURCE=='2'"> + <td class="tbg">辨识部位</td> + <td>{{ pd.IDENTIFICATION }}</td> + </tr> + <tr v-if="pd.SOURCE=='2'"> + <td class="tbg">存在风险</td> + <td>{{ pd.RISK_DESCR }}</td> + </tr> + <tr v-if="pd.SOURCE=='2'"> + <td class="tbg">风险分级</td> + <td>{{ pd.LEVEL }}</td> + </tr> + <tr v-if="pd.SOURCE=='2'"> + <td class="tbg">检查内容</td> + <td>{{ pd.CHECK_CONTENT }}</td> + </tr> + <tr/><tr> + <td class="tbg">隐患级别</td> + <td colspan="3">{{ pd.HIDDENLEVELNAME }}</td> + </tr> + <tr> + <td class="tbg">隐患类型</td> + <td colspan="3">{{ pd.HIDDENTYPENAME }}</td> + </tr> + <tr> + <td class="tbg">隐患状态</td> + <td colspan="3"> + <template v-if="pd.STATE=='1'"> + 未整改 + </template> + <template v-else-if="pd.STATE=='2'"> + 已整改 + </template> + <template v-else-if="pd.STATE=='3'"> + 已整改 + </template> + <template v-else-if="pd.STATE=='4'"> + 已验收 + </template> + <template v-else-if="pd.STATE=='5'"> + 忽略隐患 + </template> + <template v-else-if="pd.STATE=='6'"> + 重大隐患 + </template> + <template v-else-if="pd.STATE=='7'"> + 待处理的特殊隐患 + </template> + <template v-else-if="pd.STATE=='8'"> + 已处理的特殊隐患 + </template> + <template v-else-if="pd.STATE=='-1'"> + 已超期 + </template> + <template v-else-if="pd.STATE=='-2'"> + 待确认 + </template> + <template v-else-if="pd.STATE=='10'"> + 验收打回 + </template> + </td> + </tr> + <tr> + <td class="tbg">隐患部位</td> + <!-- <td>{{ pd.hregionName }}{{ pd.HIDDENPART }}</td>--> + <td v-if="pd.hregionName" colspan="3">{{ pd.hregionName }}</td> + <td v-else colspan="3">{{ pd.HIDDENPART }}</td> + </tr> + <!--<tr> + <td class="tbg">隐患类型2</td> + <td>{{ pd.HIDDENTYPENAME2 }}</td> + </tr>--> + <tr> + <td class="tbg">隐患上报位置</td> + <td colspan="3">经度:{{ pd.LONGITUDE }} , 纬度:{{ pd.LATITUDE }}</td> + </tr> + <tr> + <td class="tbg">隐患位置描述</td> + <td colspan="3">{{ pd.POSITIONDESC }}</td> + </tr> + <tr> + <td class="tbg">隐患图片</td> + <td ref="hImgs" colspan="3" class="img-select"> + <viewer :images="hImgs"> + <img v-for="item in hImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + <tr> + <td class="tbg">隐患发现人</td> + <td colspan="3">{{ pd.CREATORNAME }}</td> + </tr> + <tr> + <td class="tbg">隐患发现时间</td> + <td colspan="3">{{ pd.DISCOVERYTIME }}</td> + </tr> + <tr> + <td class="tbg">整改类型</td> + <td colspan="3"> + <template v-if="pd.RECTIFICATIONTYPE=='1'"> + 立即整改 + </template> + <template v-else-if="pd.RECTIFICATIONTYPE=='2'"> + 限期整改 + </template> + </td> + </tr> + <tr> + <td class="tbg">整改负责部门</td> + <td colspan="3">{{ pd.editDeptName ?pd.editDeptName :pd.RECTIFICATIONDEPTNAME }}</td> + </tr> + <tr> + <td class="tbg">整改负责人</td> + <td colspan="3">{{ pd.RECTIFICATIONORNAME }}</td> + </tr> + <tr> + <td class="tbg">是否相关方</td> + <td colspan="3">{{ pd.ISRELEVANT=='1'?'是':'否' }}</td> + </tr> + <tr v-if="playerOptions.sources[0].src"> + <td class="tbg">隐患视频</td> + <td colspan="3"> + <span v-if="playerOptions.sources[0].src" style="color: #4395ff;cursor: pointer" @click="dialogVisible = true">隐患视频</span> + </td> + </tr> + <tr v-if="pd.RECTIFICATIONTYPE=='2'"> + <td class="tbg">整改期限</td> + <td colspan="3">{{ pd.RECTIFICATIONDEADLINE }}</td> + </tr> + <tr/> + <!-- <tr>--> + <!-- <td class="tbg">整改完成期限</td>--> + <!-- <td colspan="3">{{ pd.RECTIFICATIONDEADLINE }}</td>--> + <!-- </tr>--> + <!-- <tr>--> + <!-- <td class="tbg">隐患确认人</td>--> + <!-- <td colspan="3">{{ pd.conUserName }}</td>--> + <!-- </tr>--> + <template v-if="repulsecause"> + <tr v-for="item in repulsecause" :key="item.USER_ID"> + <td class="tbg">打回原因</td> + <td>{{ item.REPULSE_CAUSE }}</td> + <td class="tbg">打回时间</td> + <td>{{ item.OPERATTIME }}</td> + </tr> + </template> + </table> + </div> + + <div> + <div class="level-title"> + <h1>确认信息</h1> + </div> + <table class="table-ui"> + <tr> + <td class="tbg">隐患级别</td> + <td >{{ pd.HIDDENLEVELNAME }}</td> + </tr> + <tr> + <td class="tbg">整改负责人</td> + <td >{{ pd.RECTIFICATIONORNAME }}</td> + </tr> + <tr> + <td class="tbg">整改完成期限</td> + <td >{{ pd.RECTIFICATIONDEADLINE }}</td> + </tr> + <tr > + <td class="tbg">隐患确认人</td> + <td>{{ pd.conUserName }}</td> + </tr> + <tr> + <td class="tbg">隐患确认时间</td> + <td colspan="3">{{ pd.CONFIRM_TIME }}</td> + </tr> + </table> + </div> + + <div v-show="pd.STATE>=2 && pd.STATE <16"> + <div class="level-line" /> + <div class="level-title"> + <h1>整改信息</h1> + </div> + <table class="table-ui"> + <tr> + <td class="tbg">整改描述</td> + <td>{{ pd.RECTIFYDESCR }}</td> + </tr> + + <tr> + <td class="tbg">整改部门</td> + <td>{{ pd.RECTIFICATIONDEPTNAME }}</td> + </tr> + <tr> + <td class="tbg">整改人</td> + <td>{{ pd.RECTIFICATIONORNAME }}</td> + </tr> + <tr> + <td class="tbg">整改时间</td> + <td>{{ pd.RECTIFICATIONTIME }}</td> + </tr> + <tr> + <td class="tbg">投入资金</td> + <td>{{ pd.INVESTMENT_FUNDS }}元</td> + </tr> + <tr> + <td class="tbg">整改后图片</td> + <td class="img-select"> + <viewer :images="rImgs"> + <img v-for="item in rImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + <tr> + <td class="tbg">整改方案</td> + <td v-if="pd.HAVESCHEME==0">无</td> + <td v-else-if="pd.HAVESCHEME==1">有</td> + <td v-else/> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">排查日期</td> + <td>{{ hs.SCREENINGDATE }}</td> + </tr> + <!-- <tr v-if="hs && pd.HAVESCHEME==1">--> + <!-- <td class="tbg">隐患清单</td>--> + <!-- <td>{{ hs.LISTNAME }}</td>--> + <!-- </tr>--> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">治理标准要求</td> + <td>{{ hs.GOVERNSTANDARDS }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">治理方法</td> + <td>{{ hs.GOVERNMETHOD }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">经费和物资的落实</td> + <td>{{ hs.EXPENDITURE }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">负责治理人员</td> + <td>{{ hs.PRINCIPAL }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">工时安排</td> + <td>{{ hs.PROGRAMMING }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">时限要求</td> + <td>{{ hs.TIMELIMITFOR }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">工作要求</td> + <td>{{ hs.JOBREQUIREMENT }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">其他事项</td> + <td>{{ hs.OTHERBUSINESS }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">方案图片</td> + <td class="img-select"> + <viewer :images="sImgs"> + <img v-for="item in sImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + </table> + </div> + + <div v-show="pd.STATE ==4 || pd.RECTIFICATIONTYPE=='1'"> + <div class="level-line" /> + <div class="level-title"> + <h1>验收信息</h1> + </div> + <template v-if="pd.RECTIFICATIONTYPE!='1'"> + <table v-for="(data) in checkList" :key="data.value" class="table-ui"> + <tr> + <td class="tbg">验收描述</td> + <td>{{ data.CHECKDESCR }}</td> + </tr> + <tr> + <td class="tbg">是否合格</td> + <td> + <template v-if="data.STATUS=='1'"> + 是 + </template> + <template v-else-if="data.STATUS=='0'"> + 否 + </template> + </td> + </tr> + <tr> + <td class="tbg">验收部门</td> + <td>{{ data.CHECKDEPTNAME }}</td> + </tr> + <tr> + <td class="tbg">验收人</td> + <td>{{ data.CHECKORNAME }}</td> + </tr> + + <tr> + <td class="tbg">验收时间</td> + <td>{{ data.CHECK_TIME }}</td> + </tr> + <tr> + <td class="tbg">验收图片</td> + <td class="img-select"> + <viewer :images="data.cImgs"> + <img v-for="item in data.cImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + </table> + </template> + <template v-if="pd.RECTIFICATIONTYPE=='1'"> + <table class="table-ui"> + <tr> + <td class="tbg">验收人</td> + <td>{{ pd.CHECKORNAME }}</td> + </tr> + </table> + </template> + </div> + <el-dialog :visible.sync="dialogVisible" :append-to-body="true" title="隐患视频"> + <div> + <video-player + ref="videoPlayer" + :playsinline="true" + :options="playerOptions" + style="width: 100%;" + class="video-player vjs-custom-skin"/> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">关 闭</el-button> + </span> + </el-dialog> + </div> + <span slot="footer" class="dialog-footer"> + <el-button plain type="info" @click="goBack">关闭</el-button> + </span> + </el-dialog> +</template> + +<script> +import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包 +import { requestFN } from '@/utils/request' +import waves from '@/directive/waves' // waves directive +import 'video.js/dist/video-js.css' +import { videoPlayer } from 'vue-video-player' +import { create } from 'lodash' +export default { + components: { Pagination, videoPlayer }, + directives: { waves }, + props: { + visible: { + type: Boolean, + default: false, + required: true + }, + id: { + type: String, + default: '', + required: true + } + }, + data() { + return { + config: config, + listLoading: true, + findperson: {}, + chargeperson: {}, + changeperson: {}, + ISCHANGE: '', + ISEXAMINE: '', + examine: {}, + pd: [], + hivideo: [], + hImgs: [], + repulsecause: [], + hImgList: [], + rImgs: [], + cImgs: [], + sImgs: [], + hs: [], + checkList: [], + playerOptions: { + playbackRates: [0.5, 1.0, 1.5, 2.0], // 可选的播放速度 + autoplay: false, // 如果为true,浏览器准备好时开始回放。 + muted: false, // 默认情况下将会消除任何音频。 + loop: false, // 是否视频一结束就重新开始。 + preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持) + language: 'zh-CN', + aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3") + fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。 + sources: [{ + type: 'video/mp4', // 类型 + src: '' // url地址 + }], + poster: '', // 封面地址 + notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。 + controlBar: { + timeDivider: true, // 当前时间和持续时间的分隔符 + durationDisplay: true, // 显示持续时间 + remainingTimeDisplay: false, // 是否显示剩余时间功能 + fullscreenToggle: true // 是否显示全屏按钮 + } + }, + dialogVisible: false + } + }, + created() { + this.getData() + }, + methods: { + download(filePah) { + window.open(this.config.fileUrl + filePah, '_blank') + }, + getData() { + requestFN( + '/hidden/goEdit', + { + HIDDEN_ID: this.id + } + ).then((data) => { + this.pd = data.pd // 参数map + this.hs = data.hs + this.findperson = data.findperson + this.chargeperson = data.chargeperson + this.repulsecause = data.repulsecause + this.ISCHANGE = data.ISCHANGE + this.ISEXAMINE = data.ISEXAMINE + this.examine = data.examine + this.checkList = data.checkList + this.changeperson = data.changeperson + /* if (undefined != data.hImgs && data.hImgs != null && data.hImgs.length > 0) { + const hImgs = data.hImgs + for (let i = 0; i < hImgs.length; i++) { + const src = this.config.fileUrl + hImgs[i].FILEPATH + this.hImgList.push(src) + } + }*/ + this.hImgs = data.hImgs + this.rImgs = data.rImgs + this.cImgs = data.cImgs + this.sImgs = data.sImgs + if (this.playerOptions) this.playerOptions.sources[0].src = config.fileUrl + data.hiddenVideo[0].FILEPATH + this.$nextTick(() => { + if (undefined != data.hImgs && data.hImgs != null && data.hImgs.length > 0) { + const hImgs = data.hImgs + for (let i = 0; i < hImgs.length; i++) { + const src = this.config.fileUrl + hImgs[i].FILEPATH + this.hImgList.push(src) + } + } + }) + }).catch((e) => { + + }) + }, + goBack() { + // this.$parent.activeName = 'Evaluation' + this.$emit('update:visible', false) + } + } +} +</script> diff --git a/src/views/keyproject_evaluation/branch_hazard_assessment/components/list.vue b/src/views/keyproject_evaluation/branch_hazard_assessment/components/list.vue new file mode 100644 index 0000000..b6179ed --- /dev/null +++ b/src/views/keyproject_evaluation/branch_hazard_assessment/components/list.vue @@ -0,0 +1,142 @@ +<template> + <div class="app-container"> + <el-form :model="searchForm" label-width="120px"> + <el-row> + <el-col :span="4"> + <el-form-item label="分公司名称"> + <el-input v-model="searchForm.KEYWORDS" placeholder="请输入关键字"/> + </el-form-item> + </el-col> + <el-col :span="4"> + <el-form-item label="隐患考评组类型"> + <el-select v-model="searchForm.TYPE" style="width: 100%;"> + <el-option value="1" label="安全类"/> + <el-option value="2" label="环保类"/> + </el-select> + </el-form-item> + </el-col> + <el-col :span="4"> + <el-form-item label="考评组成员"> + <el-input v-model="searchForm.USER_NAME" placeholder="请输入关键字"/> + </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 prop="CORP_NAME" label="分公司名称"/> + <el-table-column label="隐患考评组类型"> + <template slot-scope="{row}"> + {{ row.TYPE === 1 ? '安全类' : '环保类' }} + </template> + </el-table-column> + <el-table-column label="重点工程Ai报警奖惩监管端"> + <template slot-scope="{row}"> + {{ row.checked_count3 }} / {{ row.count3 }} + </template> + </el-table-column> + <el-table-column label="重点工程安全环保奖惩监管端"> + <template slot-scope="{row}"> + {{ row.checked_count3 }} / {{ row.count3 }} + </template> + </el-table-column> + <el-table-column label="重点工程安全环保奖惩企业端"> + <template slot-scope="{row}"> + {{ row.checked_count4 }} / {{ row.count4 }} + </template> + </el-table-column> + <el-table-column prop="CHECK_USER" label="考评组成员"/> + <el-table-column label="操作" width="100px"> + <template slot-scope="{row}"> + <el-button type="primary" icon="el-icon-view" @click="fnEvaluation(row)">考评</el-button> + </template> + </el-table-column> + </el-table> + <div class="page-btn-group"> + <div/> + <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/> + </div> + </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' + +export default { + components: { Pagination, Treeselect }, + directives: { waves }, + data() { + return { + total: 0, + varList: [], + KEYWORDS: '', + listQuery: { + page: 1, + limit: 20 + }, + listLoading: false, // 加载状态 + searchForm: { + KEYWORDS: '', + TYPE: '', + USER_NAME: '' + } + } + }, + created() { + this.getList() + }, + methods: { + goKeyReset() { + this.searchForm.KEYWORDS = '' + this.searchForm.TYPE = '' + this.searchForm.USER_NAME = '' + this.getList() + }, + // 获取列表 + getList() { + this.listLoading = true + requestFN( + 'keyProject/hiddenevaluationrecord/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + ...this.searchForm + } + ).then((data) => { + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + }).catch((e) => { + this.listLoading = false + }) + }, + fnEvaluation({ CORPINFO_ID, EVALUATIONCONFIG_ID, TYPE }) { + this.$parent.CORPINFO_ID = CORPINFO_ID + this.$parent.EVALUATIONCONFIG_ID = EVALUATIONCONFIG_ID + this.$parent.TYPE = TYPE + this.$parent.activeName = 'Evaluation' + } + } +} + +</script> + +<style lang="sass" scoped> +</style> diff --git a/src/views/keyproject_evaluation/branch_hazard_assessment/index.vue b/src/views/keyproject_evaluation/branch_hazard_assessment/index.vue new file mode 100644 index 0000000..92425b1 --- /dev/null +++ b/src/views/keyproject_evaluation/branch_hazard_assessment/index.vue @@ -0,0 +1,30 @@ +<template> + <div> + <component :is="activeName" /> + </div> +</template> + +<script> +import List from './components/list' +import Evaluation from './components/evaluation' +import HiddenInfo from './components/hidden_info.vue' +export default { + components: { + List, + Evaluation, + HiddenInfo + }, + data() { + return { + activeName: 'List', + CORPINFO_ID: '', + EVALUATIONCONFIG_ID: '', + HIDDEN_ID: '', + TYPE: '' + } + } +} +</script> + +<style scoped> +</style> diff --git a/src/views/keyproject_evaluation/configuration_group/components/list.vue b/src/views/keyproject_evaluation/configuration_group/components/list.vue new file mode 100644 index 0000000..36d319a --- /dev/null +++ b/src/views/keyproject_evaluation/configuration_group/components/list.vue @@ -0,0 +1,387 @@ +<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.KEYWORDS" placeholder="请输入关键字"/> + </el-form-item> + </el-col> + <el-col :span="4"> + <el-form-item label="考评组状态"> + <el-select v-model="searchForm.TYPE" 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-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 prop="CORP_NAME" label="分公司名称"/> + <el-table-column label="安全类隐患考评组分配状态"> + <template slot-scope="{row}"> + {{ row.TYPES && row.TYPES.indexOf('1') !== -1 ? '已分配' : '未分配' }} + </template> + </el-table-column> + <el-table-column prop="AQ_USERS" label="考评组成员"/> + <el-table-column prop="FIRE_CHECK_TYPE" label="环保类隐患考评组分配状态"> + <template slot-scope="{row}"> + {{ row.TYPES && row.TYPES.indexOf('2') !== -1 ? '已分配' : '未分配' }} + </template> + </el-table-column> + <el-table-column prop="HB_USERS" label="考评组成员"/> + <el-table-column label="操作" width="480px"> + <template slot-scope="{row}"> + <el-button type="primary" icon="el-icon-view" @click="fnViewAssignGroup(row)">查看</el-button> + <el-button type="success" icon="el-icon-tickets" @click="fnAssignGroup(row.CORPINFO_ID,'1')">安全类组分配 + </el-button> + <el-button type="success" icon="el-icon-tickets" @click="fnAssignGroup(row.CORPINFO_ID,'2')">环保类组分配 + </el-button> + <el-button type="info" icon="el-icon-tickets" @click="fnChangeRecord(row.CORPINFO_ID)">变更记录 + </el-button> + </template> + </el-table-column> + </el-table> + <div class="page-btn-group"> + <div/> + <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/> + </div> + <el-dialog + :visible.sync="assignGroupDialog.visible" + :title="assignGroupDialog.type === '1' ? '安全类隐患考评组分配' : '环保类隐患考评组分配'"> + <el-form ref="assignGroupDialogForm" :model="assignGroupDialog.form" label-width="100px"> + <el-form-item label="隐患类型"> + <el-input :value="assignGroupDialog.type === '1' ? '安全类' : '环保类'" disabled/> + </el-form-item> + <el-row v-for="(item,index) in assignGroupDialog.form.other" :key="index"> + <el-col :span="12"> + <el-form-item + :prop="'other.' + index + '.DEPARTMENT_ID'" + :rules="{ + required: true, message: '考评部门不能为空', trigger: 'blur' + }" + label="考评部门"> + <Treeselect + :options="treeData" + :normalizer="normalizer" + v-model="item.DEPARTMENT_ID" + placeholder="请选择考评部门" + no-options-text="暂无数据" + no-children-text="暂无数据" + @select="item.USER_ID = '';getUserList($event,index)" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item + :prop="'other.' + index + '.USER_ID'" + :rules="{ + required: true, message: '考评人员不能为空', trigger: 'blur' + }" + label="考评人员"> + <el-select :value="item.USER_ID" clearable placeholder="请选择" style="width: 100%;" @change="acceptedByChange($event,index)"> + <el-option + v-for="item1 in item.userList" + :key="item1.USER_ID" + :label="item1.NAME" + :value="item1.USER_ID"/> + </el-select> + </el-form-item> + </el-col> + </el-row> + </el-form> + <template slot="footer"> + <el-button @click="fnAssignGroupDialogChangeShow">关闭</el-button> + <el-button type="primary" @click="fnAssignGroupDialogSubmit">确定</el-button> + </template> + </el-dialog> + <el-dialog + :visible.sync="viewAssignGroupDialog.visible" + title="查看"> + <table class="table-ui"> + <tr> + <td class="tbg">隐患类型</td> + <td>安全类</td> + </tr> + <tr> + <td class="tbg">考评组成员</td> + <td>{{ viewAssignGroupDialog.info.AQ_USERS }}</td> + </tr> + <tr> + <td class="tbg">隐患类型</td> + <td>环保类</td> + </tr> + <tr> + <td class="tbg">考评组成员</td> + <td>{{ viewAssignGroupDialog.info.HB_USERS }}</td> + </tr> + </table> + <template slot="footer"> + <el-button @click="viewAssignGroupDialog.visible = false">关闭</el-button> + </template> + </el-dialog> + <el-dialog + :visible.sync="changeRecordDialog.visible" + title="变更记录"> + <table class="table-ui"> + <tr v-for="(item,index) in changeRecordDialog.list" :key="index"> + <td class="tbg">隐患类型</td> + <td>{{ item.TYPE === 1 ? '安全类' : '环保类' }}</td> + <td class="tbg">变更前</td> + <td>{{ item.OLD_USER_NAME }}</td> + <td class="tbg">变更后</td> + <td>{{ item.NEW_USER_NAME }}</td> + </tr> + </table> + <template slot="footer"> + <el-button @click="changeRecordDialog.visible = false">关闭</el-button> + </template> + </el-dialog> + </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 { differenceBy, cloneDeep } from 'lodash' + +export default { + components: { Pagination, Treeselect }, + directives: { waves }, + data() { + return { + total: 0, + varList: [], + treeData: [], + normalizer(node) { + return { + id: node.id, + label: node.name, + children: node.nodes + } + }, + KEYWORDS: '', + listQuery: { + page: 1, + limit: 20 + }, + listLoading: false, // 加载状态 + searchForm: {}, + assignGroupDialog: { + visible: false, + type: '', + CORPINFO_ID: '', + editType: '', + form: { + other: [ + { DEPARTMENT_ID: null, USER_ID: '', userList: [] }, + { DEPARTMENT_ID: null, USER_ID: '', userList: [] }, + { DEPARTMENT_ID: null, USER_ID: '', userList: [] }, + { DEPARTMENT_ID: null, USER_ID: '', userList: [] }, + { DEPARTMENT_ID: null, USER_ID: '', userList: [] } + ] + }, + oldOther: [] + }, + viewAssignGroupDialog: { + visible: false, + info: { + AQ_USERS: '', + HB_USERS: '' + } + }, + changeRecordDialog: { + visible: false, + list: [] + } + } + }, + created() { + this.getList() + this.getTreeData() + }, + methods: { + goKeyReset() { + this.searchForm.KEYWORDS = '' + this.searchForm.TYPE = '' + this.getList() + }, + getUserList(event, index) { // 根据部门获取部门内的人员 + requestFN( + '/user/listAll', + { + DEPARTMENT_ID: event.id, + tm: new Date().getTime() + } + ).then((data) => { + if (this.assignGroupDialog.form.other[index].userList) { + this.assignGroupDialog.form.other[index].userList = data.userList + } else { + this.$set(this.assignGroupDialog.form.other[index], 'userList', data.userList) + } + }).catch((e) => { + }) + }, + acceptedByChange(event, index) { + let flag = false + for (let i = 0; i < this.assignGroupDialog.form.other.length; i++) { + if (this.assignGroupDialog.form.other[i].USER_ID === event) { + flag = true + break + } + } + if (flag) { + this.$message.warning('不能选择重复的考评人') + } else { + this.assignGroupDialog.form.other[index].USER_ID = event + } + }, + // 获得部门树 + getTreeData() { + requestFN( + '/department/listTree', + {} + ).then((data) => { + this.treeData = this.removeEmptyChildren(JSON.parse(data.zTreeNodes)) + }).catch((e) => { + }) + }, + // 获取列表 + getList() { + this.listLoading = true + requestFN( + 'keyProject/evaluationconfig/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + ...this.searchForm + } + ).then((data) => { + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + }).catch((e) => { + this.listLoading = false + }) + }, + fnAssignGroupDialogChangeShow() { + this.assignGroupDialog.visible = !this.assignGroupDialog.visible + }, + fnAssignGroup(CORPINFO_ID, type) { + this.assignGroupDialog.CORPINFO_ID = CORPINFO_ID + this.assignGroupDialog.type = type + this.fnAssignGroupDialogChangeShow() + this.$nextTick(() => { + this.$refs.assignGroupDialogForm.resetFields() + }) + requestFN( + 'keyProject/evaluationconfig/goEdit', + { + CORPINFO_ID, + TYPE: type + } + ).then((data) => { + if (data.result === 'success') { + if (data.varlist.length === 0) { + this.assignGroupDialog.editType = 'add' + } else { + this.assignGroupDialog.editType = 'edit' + this.assignGroupDialog.form.other = cloneDeep(data.varlist) + this.assignGroupDialog.oldOther = cloneDeep(data.varlist) + for (let i = 0; i < data.varlist.length; i++) { + this.getUserList({ id: data.varlist[i].DEPARTMENT_ID }, i) + } + } + } + }).catch((e) => { + }) + }, + fnAssignGroupDialogSubmit() { + this.$refs.assignGroupDialogForm.validate(valid => { + if (valid) { + if (this.assignGroupDialog.editType === 'add') { + requestFN( + 'keyProject/evaluationconfig/add', + { + CORPINFO_ID: this.assignGroupDialog.CORPINFO_ID, + TYPE: this.assignGroupDialog.type, + users: JSON.stringify(this.assignGroupDialog.form.other) + } + ).then((data) => { + if (data.result === 'success') { + this.$message.success('保存成功') + this.fnAssignGroupDialogChangeShow() + this.getList() + } + }).catch((e) => { + }) + } else { + const changeUsers = differenceBy(this.assignGroupDialog.form.other, this.assignGroupDialog.oldOther, 'USER_ID') + console.log(changeUsers) + requestFN( + 'keyProject/evaluationconfig/edit', + { + CORPINFO_ID: this.assignGroupDialog.CORPINFO_ID, + TYPE: this.assignGroupDialog.type, + changeUsers: JSON.stringify(changeUsers) + } + ).then((data) => { + if (data.result === 'success') { + this.$message.success('保存成功') + this.fnAssignGroupDialogChangeShow() + this.getList() + } + }).catch((e) => { + }) + } + } else { + this.$message.warning('请补全必填项') + } + }) + }, + fnViewAssignGroup(row) { + this.viewAssignGroupDialog.info = row + this.viewAssignGroupDialog.visible = true + }, + fnChangeRecord(CORPINFO_ID) { + requestFN( + 'keyProject/evaluationconfig/changeLogs', + { + CORPINFO_ID + } + ).then((data) => { + console.log(data.varlist) + this.changeRecordDialog.list = data.varlist + this.changeRecordDialog.visible = true + }).catch((e) => { + }) + } + } +} + +</script> + +<style lang="sass" scoped> +</style> diff --git a/src/views/keyproject_evaluation/configuration_group/index.vue b/src/views/keyproject_evaluation/configuration_group/index.vue new file mode 100644 index 0000000..4b783ef --- /dev/null +++ b/src/views/keyproject_evaluation/configuration_group/index.vue @@ -0,0 +1,22 @@ +<template> + <div> + <component :is="activeName" /> + </div> +</template> + +<script> +import List from './components/list' +export default { + components: { + List: List + }, + data() { + return { + activeName: 'List' + } + } +} +</script> + +<style scoped> +</style> diff --git a/src/views/keyproject_evaluation/personnel_evaluation_status/components/hidden_info.vue b/src/views/keyproject_evaluation/personnel_evaluation_status/components/hidden_info.vue new file mode 100644 index 0000000..2cbea49 --- /dev/null +++ b/src/views/keyproject_evaluation/personnel_evaluation_status/components/hidden_info.vue @@ -0,0 +1,486 @@ +<template> + <div class="app-container"> + <div class="level-title"> + <h1>隐患信息</h1> + </div> + <div class="mb-20"> + <table class="table-ui"> + <tr> + <td class="tbg">隐患来源</td> + <template v-if="pd.SOURCE=='1'"> + <td colspan="3">隐患快报</td> + </template> + <template v-else-if="pd.SOURCE=='2'"> + <td colspan="3">清单排查</td> + </template> + <template v-else-if="pd.SOURCE=='3'"> + <td colspan="3">清单排查</td> + </template> + <template v-else-if="pd.SOURCE=='4'"> + <td colspan="3">安全环保检查(监管端)</td> + </template> + <template v-else-if="pd.SOURCE=='5'"> + <td colspan="3">安全环保检查(企业端)</td> + </template> + </tr> + <!--<tr> + <td class="tbg">检查内容</td> + <td>{{ pd.CHECK_CONTENT }}</td> + </tr>--> + <tr> + <td class="tbg">隐患描述</td> + <td colspan="3">{{ pd.HIDDENDESCR }}</td> + </tr> + <tr v-if="pd.SOURCE=='2'"> + <td class="tbg">风险点(单元)</td> + <td>{{ pd.RISK_UNIT }}</td> + </tr> + <tr v-if="pd.SOURCE=='2'"> + <td class="tbg">辨识部位</td> + <td>{{ pd.IDENTIFICATION }}</td> + </tr> + <tr v-if="pd.SOURCE=='2'"> + <td class="tbg">存在风险</td> + <td>{{ pd.RISK_DESCR }}</td> + </tr> + <tr v-if="pd.SOURCE=='2'"> + <td class="tbg">风险分级</td> + <td>{{ pd.LEVEL }}</td> + </tr> + <tr v-if="pd.SOURCE=='2'"> + <td class="tbg">检查内容</td> + <td>{{ pd.CHECK_CONTENT }}</td> + </tr> + <tr/><tr> + <td class="tbg">隐患级别</td> + <td colspan="3">{{ pd.HIDDENLEVELNAME }}</td> + </tr> + <tr> + <td class="tbg">隐患类型</td> + <td colspan="3">{{ pd.HIDDENTYPENAME }}</td> + </tr> + <tr> + <td class="tbg">隐患状态</td> + <td colspan="3"> + <template v-if="pd.STATE=='1'"> + 未整改 + </template> + <template v-else-if="pd.STATE=='2'"> + 已整改 + </template> + <template v-else-if="pd.STATE=='3'"> + 已整改 + </template> + <template v-else-if="pd.STATE=='4'"> + 已验收 + </template> + <template v-else-if="pd.STATE=='5'"> + 忽略隐患 + </template> + <template v-else-if="pd.STATE=='6'"> + 重大隐患 + </template> + <template v-else-if="pd.STATE=='7'"> + 待处理的特殊隐患 + </template> + <template v-else-if="pd.STATE=='8'"> + 已处理的特殊隐患 + </template> + <template v-else-if="pd.STATE=='-1'"> + 已超期 + </template> + <template v-else-if="pd.STATE=='-2'"> + 待确认 + </template> + <template v-else-if="pd.STATE=='10'"> + 验收打回 + </template> + </td> + </tr> + <tr> + <td class="tbg">隐患部位</td> + <!-- <td>{{ pd.hregionName }}{{ pd.HIDDENPART }}</td>--> + <td v-if="pd.hregionName" colspan="3">{{ pd.hregionName }}</td> + <td v-else colspan="3">{{ pd.HIDDENPART }}</td> + </tr> + <!--<tr> + <td class="tbg">隐患类型2</td> + <td>{{ pd.HIDDENTYPENAME2 }}</td> + </tr>--> + <tr> + <td class="tbg">隐患上报位置</td> + <td colspan="3">经度:{{ pd.LONGITUDE }} , 纬度:{{ pd.LATITUDE }}</td> + </tr> + <tr> + <td class="tbg">隐患位置描述</td> + <td colspan="3">{{ pd.POSITIONDESC }}</td> + </tr> + <tr> + <td class="tbg">隐患图片</td> + <td ref="hImgs" colspan="3" class="img-select"> + <viewer :images="hImgs"> + <img v-for="item in hImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + <tr> + <td class="tbg">隐患发现人</td> + <td colspan="3">{{ pd.CREATORNAME }}</td> + </tr> + <tr> + <td class="tbg">隐患发现时间</td> + <td colspan="3">{{ pd.DISCOVERYTIME }}</td> + </tr> + <tr> + <td class="tbg">整改类型</td> + <td colspan="3"> + <template v-if="pd.RECTIFICATIONTYPE=='1'"> + 立即整改 + </template> + <template v-else-if="pd.RECTIFICATIONTYPE=='2'"> + 限期整改 + </template> + </td> + </tr> + <tr> + <td class="tbg">整改负责部门</td> + <td colspan="3">{{ pd.editDeptName ?pd.editDeptName :pd.RECTIFICATIONDEPTNAME }}</td> + </tr> + <tr> + <td class="tbg">整改负责人</td> + <td colspan="3">{{ pd.RECTIFICATIONORNAME }}</td> + </tr> + <tr> + <td class="tbg">是否相关方</td> + <td colspan="3">{{ pd.ISRELEVANT=='1'?'是':'否' }}</td> + </tr> + <tr v-if="playerOptions.sources[0].src"> + <td class="tbg">隐患视频</td> + <td colspan="3"> + <span v-if="playerOptions.sources[0].src" style="color: #4395ff;cursor: pointer" @click="dialogVisible = true">隐患视频</span> + </td> + </tr> + <tr v-if="pd.RECTIFICATIONTYPE=='2'"> + <td class="tbg">整改期限</td> + <td colspan="3">{{ pd.RECTIFICATIONDEADLINE }}</td> + </tr> + <tr/> + <!-- <tr>--> + <!-- <td class="tbg">整改完成期限</td>--> + <!-- <td colspan="3">{{ pd.RECTIFICATIONDEADLINE }}</td>--> + <!-- </tr>--> + <!-- <tr>--> + <!-- <td class="tbg">隐患确认人</td>--> + <!-- <td colspan="3">{{ pd.conUserName }}</td>--> + <!-- </tr>--> + <template v-if="repulsecause"> + <tr v-for="item in repulsecause" :key="item.USER_ID"> + <td class="tbg">打回原因</td> + <td>{{ item.REPULSE_CAUSE }}</td> + <td class="tbg">打回时间</td> + <td>{{ item.OPERATTIME }}</td> + </tr> + </template> + </table> + </div> + <div> + <div class="level-title"> + <h1>确认信息</h1> + </div> + <table class="table-ui"> + <tr> + <td class="tbg">隐患级别</td> + <td >{{ pd.HIDDENLEVELNAME }}</td> + </tr> + <tr> + <td class="tbg">整改负责人</td> + <td >{{ pd.RECTIFICATIONORNAME }}</td> + </tr> + <tr> + <td class="tbg">整改完成期限</td> + <td >{{ pd.RECTIFICATIONDEADLINE }}</td> + </tr> + <tr > + <td class="tbg">隐患确认人</td> + <td>{{ pd.conUserName }}</td> + </tr> + <tr> + <td class="tbg">隐患确认时间</td> + <td colspan="3">{{ pd.CONFIRM_TIME }}</td> + </tr> + </table> + <div v-show="pd.STATE>=2 && pd.STATE <16"> + <div class="level-line" /> + <div class="level-title"> + <h1>整改信息</h1> + </div> + <table class="table-ui"> + <tr> + <td class="tbg">整改描述</td> + <td>{{ pd.RECTIFYDESCR }}</td> + </tr> + + <tr> + <td class="tbg">整改部门</td> + <td>{{ pd.RECTIFICATIONDEPTNAME }}</td> + </tr> + <tr> + <td class="tbg">整改人</td> + <td>{{ pd.RECTIFICATIONORNAME }}</td> + </tr> + <tr> + <td class="tbg">整改时间</td> + <td>{{ pd.RECTIFICATIONTIME }}</td> + </tr> + <tr> + <td class="tbg">投入资金</td> + <td>{{ pd.INVESTMENT_FUNDS }}元</td> + </tr> + <tr> + <td class="tbg">整改后图片</td> + <td class="img-select"> + <viewer :images="rImgs"> + <img v-for="item in rImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + <tr> + <td class="tbg">整改方案</td> + <td v-if="pd.HAVESCHEME==0">无</td> + <td v-else-if="pd.HAVESCHEME==1">有</td> + <td v-else/> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">排查日期</td> + <td>{{ hs.SCREENINGDATE }}</td> + </tr> + <!-- <tr v-if="hs && pd.HAVESCHEME==1">--> + <!-- <td class="tbg">隐患清单</td>--> + <!-- <td>{{ hs.LISTNAME }}</td>--> + <!-- </tr>--> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">治理标准要求</td> + <td>{{ hs.GOVERNSTANDARDS }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">治理方法</td> + <td>{{ hs.GOVERNMETHOD }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">经费和物资的落实</td> + <td>{{ hs.EXPENDITURE }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">负责治理人员</td> + <td>{{ hs.PRINCIPAL }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">工时安排</td> + <td>{{ hs.PROGRAMMING }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">时限要求</td> + <td>{{ hs.TIMELIMITFOR }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">工作要求</td> + <td>{{ hs.JOBREQUIREMENT }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">其他事项</td> + <td>{{ hs.OTHERBUSINESS }}</td> + </tr> + <tr v-if="hs && pd.HAVESCHEME==1"> + <td class="tbg">方案图片</td> + <td class="img-select"> + <viewer :images="sImgs"> + <img v-for="item in sImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + </table> + </div> + <div v-show="pd.STATE ==4 || pd.RECTIFICATIONTYPE=='1'"> + <div class="level-line" /> + <div class="level-title"> + <h1>验收信息</h1> + </div> + <template v-if="pd.RECTIFICATIONTYPE!='1'"> + <table v-for="(data) in checkList" :key="data.value" class="table-ui"> + <tr> + <td class="tbg">验收描述</td> + <td>{{ data.CHECKDESCR }}</td> + </tr> + <tr> + <td class="tbg">是否合格</td> + <td> + <template v-if="data.STATUS=='1'"> + 是 + </template> + <template v-else-if="data.STATUS=='0'"> + 否 + </template> + </td> + </tr> + <tr> + <td class="tbg">验收部门</td> + <td>{{ data.CHECKDEPTNAME }}</td> + </tr> + <tr> + <td class="tbg">验收人</td> + <td>{{ data.CHECKORNAME }}</td> + </tr> + + <tr> + <td class="tbg">验收时间</td> + <td>{{ data.CHECK_TIME }}</td> + </tr> + <tr> + <td class="tbg">验收图片</td> + <td class="img-select"> + <viewer :images="data.cImgs"> + <img v-for="item in data.cImgs" :src="config.fileUrl + item.FILEPATH" :key="item.IMGFILES_ID" width="100" height="100"> + </viewer> + </td> + </tr> + </table> + </template> + <template v-if="pd.RECTIFICATIONTYPE=='1'"> + <table class="table-ui"> + <tr> + <td class="tbg">验收人</td> + <td>{{ pd.CHECKORNAME }}</td> + </tr> + </table> + </template> + </div> + </div> + <div class="ui-height" /> + <div class="ui-foot" style="margin-top: 20px"> + <el-button plain type="info" @click="goBack">返 回</el-button> + </div> + <el-dialog :visible.sync="dialogVisible" title="隐患视频"> + <div> + <video-player + ref="videoPlayer" + :playsinline="true" + :options="playerOptions" + style="width: 100%;" + class="video-player vjs-custom-skin"/> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">关 闭</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包 +import { requestFN } from '@/utils/request' +import waves from '@/directive/waves' // waves directive +import 'video.js/dist/video-js.css' +import { videoPlayer } from 'vue-video-player' +export default { + components: { Pagination, videoPlayer }, + directives: { waves }, + data() { + return { + config: config, + listLoading: true, + findperson: {}, + chargeperson: {}, + changeperson: {}, + ISCHANGE: '', + ISEXAMINE: '', + examine: {}, + pd: [], + hivideo: [], + hImgs: [], + repulsecause: [], + hImgList: [], + rImgs: [], + cImgs: [], + sImgs: [], + hs: [], + checkList: [], + playerOptions: { + playbackRates: [0.5, 1.0, 1.5, 2.0], // 可选的播放速度 + autoplay: false, // 如果为true,浏览器准备好时开始回放。 + muted: false, // 默认情况下将会消除任何音频。 + loop: false, // 是否视频一结束就重新开始。 + preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持) + language: 'zh-CN', + aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3") + fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。 + sources: [{ + type: 'video/mp4', // 类型 + src: '' // url地址 + }], + poster: '', // 封面地址 + notSupportedMessage: '此视频暂无法播放,请稍后再试', // 允许覆盖Video.js无法播放媒体源时显示的默认信息。 + controlBar: { + timeDivider: true, // 当前时间和持续时间的分隔符 + durationDisplay: true, // 显示持续时间 + remainingTimeDisplay: false, // 是否显示剩余时间功能 + fullscreenToggle: true // 是否显示全屏按钮 + } + }, + dialogVisible: false + } + }, + async created() { + this.getData() + }, + methods: { + download(filePah) { + window.open(this.config.fileUrl + filePah, '_blank') + }, + getData() { + requestFN( + '/hidden/goEdit', + { + HIDDEN_ID: this.$parent.HIDDEN_ID + } + ).then((data) => { + this.pd = data.pd // 参数map + this.hs = data.hs + this.findperson = data.findperson + this.chargeperson = data.chargeperson + this.repulsecause = data.repulsecause + this.ISCHANGE = data.ISCHANGE + this.ISEXAMINE = data.ISEXAMINE + this.examine = data.examine + this.checkList = data.checkList + this.changeperson = data.changeperson + /* if (undefined != data.hImgs && data.hImgs != null && data.hImgs.length > 0) { + const hImgs = data.hImgs + for (let i = 0; i < hImgs.length; i++) { + const src = this.config.fileUrl + hImgs[i].FILEPATH + this.hImgList.push(src) + } + }*/ + this.hImgs = data.hImgs + this.rImgs = data.rImgs + this.cImgs = data.cImgs + this.sImgs = data.sImgs + if (this.playerOptions) this.playerOptions.sources[0].src = config.fileUrl + data.hiddenVideo[0].FILEPATH + this.$nextTick(() => { + if (undefined != data.hImgs && data.hImgs != null && data.hImgs.length > 0) { + const hImgs = data.hImgs + for (let i = 0; i < hImgs.length; i++) { + const src = this.config.fileUrl + hImgs[i].FILEPATH + this.hImgList.push(src) + } + } + }) + }).catch((e) => { + + }) + }, + goBack() { + this.$parent.activeName = 'HiddenList' + } + } +} +</script> diff --git a/src/views/keyproject_evaluation/personnel_evaluation_status/components/hidden_list.vue b/src/views/keyproject_evaluation/personnel_evaluation_status/components/hidden_list.vue new file mode 100644 index 0000000..2e11935 --- /dev/null +++ b/src/views/keyproject_evaluation/personnel_evaluation_status/components/hidden_list.vue @@ -0,0 +1,285 @@ +<template> + <div class="app-container"> + <el-form :model="searchForm" label-width="100px"> + <el-row> + <el-col :span="8"> + <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="8"> + <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="8"> + <el-form-item label="隐患发现人"> + <el-input v-model="searchForm.KEYWORDS"/> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="8"> + <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="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-col :span="8"> + <el-form-item label-width="10px"> + <el-button v-waves type="primary" icon="el-icon-search" @click="getQuery"> + 搜索 + </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="CREATTIME" 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=='2'"> + {{ row.YQ_CHECKOR_NAME }} + </span> + <span v-else> + {{ row.CHECKOR_NAME }} + </span> + </template> + </el-table-column> + <el-table-column prop="CHECK_USER" label="考评组成员"/> + <el-table-column label="兑换状态"> + <template slot-scope="{row}"> + {{ row.EVALUATIONSCOREEXCHANGE_ID ? '已兑换' : '未兑换' }} + </template> + </el-table-column> + <el-table-column label="操作" width="260px"> + <template slot-scope="{row}"> + <el-button type="primary" icon="el-icon-view" @click="fnDetailsOfHiddenDangers(row.HIDDEN_ID)">查看隐患详情</el-button> + <el-button type="success" icon="el-icon-view" @click="fnAssessmentDetails(row.HIDDEN_ID)">考评详情</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> + <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> + <template slot="footer"> + <el-button @click="evaluationDialog.visible = false">关闭</el-button> + </template> + </el-dialog> + </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' + +export default { + components: { Pagination, Treeselect }, + directives: { waves }, + data() { + return { + total: 0, + varList: [], + treeData: [], + hiddenTypeList: [], + normalizer(node) { + return { + id: node.id, + label: node.name, + children: node.nodes + } + }, + KEYWORDS: '', + listQuery: { + page: 1, + limit: 20 + }, + listLoading: false, // 加载状态 + searchForm: { + KEYWORDS: '', + SOURCE: '', + DEPARTMENT_ID: null, + HIDDENTYPE: null, + dates: [] + }, + evaluationDialog: { + visible: false, + list: [] + } + } + }, + created() { + this.getList() + this.getTreeData() + }, + methods: { + // 搜索 + getQuery() { + this.getList() + }, + goKeyReset() { + this.searchForm.KEYWORDS = '' + this.searchForm.SOURCE = '' + this.searchForm.DEPARTMENT_ID = null + this.searchForm.HIDDENTYPE = null + this.searchForm.dates = [] + this.getList() + }, + // 获得部门树 + 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)) + }) + }, + // 获取列表 + getList() { + this.listLoading = true + requestFN( + '/evaluationscore/exchangeHiddenList?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + ...this.searchForm, + START_TIME: this.searchForm.dates[0] && this.searchForm.dates[0] + ' 00:00:00', + END_TIME: this.searchForm.dates[1] && this.searchForm.dates[1] + ' 23:59:59', + EVALUATIONSCOREEXCHANGE_ID: this.$parent.EVALUATIONSCOREEXCHANGE_ID, + USER_ID: this.$parent.USER_ID, + CORPINFO_ID: this.$parent.CORPINFO_ID + } + ).then((data) => { + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + }).catch((e) => { + this.listLoading = false + }) + }, + fnAssessmentDetails(HIDDEN_ID) { + requestFN( + '/evaluationscore/getHiddenEvaluation', + { + HIDDEN_ID + } + ).then((data) => { + this.evaluationDialog.list = data.varList + this.evaluationDialog.visible = true + }).catch((e) => { + }) + }, + fnDetailsOfHiddenDangers(HIDDEN_ID) { + this.$parent.HIDDEN_ID = HIDDEN_ID + this.$parent.activeName = 'HiddenInfo' + }, + goBack() { + this.$parent.activeName = this.$parent.HiddenListEntrance + } + } +} + +</script> + +<style lang="sass" scoped> +</style> diff --git a/src/views/keyproject_evaluation/personnel_evaluation_status/components/list.vue b/src/views/keyproject_evaluation/personnel_evaluation_status/components/list.vue new file mode 100644 index 0000000..097822a --- /dev/null +++ b/src/views/keyproject_evaluation/personnel_evaluation_status/components/list.vue @@ -0,0 +1,155 @@ +<template> + <div class="app-container"> + <el-form :model="searchForm" label-width="100px"> + <el-row> + <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" placeholder="请输入关键字"/> + </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 prop="CORP_NAME" label="单位名称"/> + <el-table-column label="完成考评隐患数"> + <template slot-scope="{row}"> + {{ row.checked_count1 + row.checked_count2 + row.checked_count3 + row.checked_count4 + row.checked_count5 }} + </template> + </el-table-column> + <el-table-column label="待考评隐患数"> + <template slot-scope="{row}"> + {{ (row.count1 + row.count2 + row.count3 + row.count4 + row.count5) - (row.checked_count1 + row.checked_count2 + row.checked_count3 + row.checked_count4 + row.checked_count5) }} + </template> + </el-table-column> + <el-table-column prop="SCORE_USERS" label="涉及奖励人数"/> + <el-table-column label="奖励兑换情况"> + <template slot-scope="{row}"> + {{ row.USERD_SCORE }} / {{ row.TOTAL_SCORE }} + </template> + </el-table-column> + <el-table-column prop="AQ_USERS" label="安全类隐患考评组成员"/> + <el-table-column prop="HB_USERS" label="环保类隐患考评组成员"/> + <el-table-column label="操作" width="100px"> + <template slot-scope="{row}"> + <el-button type="primary" icon="el-icon-view" @click="fnView(row.CORPINFO_ID)">查看</el-button> + </template> + </el-table-column> + </el-table> + <div class="page-btn-group"> + <div/> + <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/> + </div> + </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' + +export default { + components: { Pagination, Treeselect }, + directives: { waves }, + data() { + return { + total: 0, + varList: [], + treeData: [], + normalizer(node) { + return { + id: node.id, + label: node.name, + children: node.nodes + } + }, + KEYWORDS: '', + listQuery: { + page: 1, + limit: 20 + }, + listLoading: false, // 加载状态 + searchForm: { + KEYWORDS: '', + TYPE: '', + DEPARTMENT_ID: null + } + } + }, + created() { + this.getList() + this.getTreeData() + }, + methods: { + goKeyReset() { + this.searchForm.KEYWORDS = '' + this.searchForm.TYPE = '' + this.searchForm.DEPARTMENT_ID = null + this.getList() + }, + // 获得部门树 + getTreeData() { + requestFN( + '/department/listTree', + {} + ).then((data) => { + this.treeData = this.removeEmptyChildren(JSON.parse(data.zTreeNodes)) + }).catch((e) => { + }) + }, + // 获取列表 + getList() { + this.listLoading = true + requestFN( + '/keyProject/evaluationscore/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + ...this.searchForm + } + ).then((data) => { + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + }).catch((e) => { + this.listLoading = false + }) + }, + fnView(CORPINFO_ID) { + this.$parent.CORPINFO_ID = CORPINFO_ID + this.$parent.activeName = 'PersonnelList' + } + } +} + +</script> + +<style lang="sass" scoped> +</style> diff --git a/src/views/keyproject_evaluation/personnel_evaluation_status/components/personnel_list.vue b/src/views/keyproject_evaluation/personnel_evaluation_status/components/personnel_list.vue new file mode 100644 index 0000000..729e52b --- /dev/null +++ b/src/views/keyproject_evaluation/personnel_evaluation_status/components/personnel_list.vue @@ -0,0 +1,253 @@ +<template> + <div class="app-container"> + <el-form :model="searchForm" label-width="80px"> + <el-row> + <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" placeholder="请输入关键字"/> + </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-col :span="4"> + <el-form-item label-width="10px"> + <el-button v-waves type="primary" icon="el-icon-search" @click="getQuery"> + 搜索 + </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" + ref="multipleTable" + :data="varList" + :row-key="getRowKey" + border + tooltip-effect="dark" + style="width: 100%"> + <el-table-column type="selection" width="55" align="center"/> + <el-table-column type="index" label="序号" width="55" align="center"/> + <el-table-column prop="USERNAME" label="用户名"/> + <el-table-column prop="NAME" label="姓名"/> + <el-table-column prop="DEPTMENT_NAME" label="部门"/> + <el-table-column prop="PORT_NAME" label="岗位"/> + <el-table-column prop="TOTAL_SCORE" label="奖励总得分"/> + <el-table-column prop="USERD_SCORE" label="已兑换分数"/> + <el-table-column label="未兑换奖励数"> + <template slot-scope="{row}"> + {{ row.TOTAL_SCORE - row.USERD_SCORE }} + </template> + </el-table-column> + <el-table-column label="操作" width="240px"> + <template slot-scope="{row}"> + <el-button type="primary" icon="el-icon-view" @click="fnRedemptionRecords(row.USER_ID)">兑换记录</el-button> + <el-button type="success" icon="el-icon-view" @click="fnAssessmentDetails(row.USER_ID)">考评详情</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> + <el-button type="primary" icon="el-icon-check" @click="batchRedemption">批量兑换</el-button> + <el-button type="success" icon="el-icon-folder-checked" @click="redeemAll">全选兑换</el-button> + </div> + <pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/> + </div> + </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' + +export default { + components: { Pagination, Treeselect }, + directives: { waves }, + data() { + return { + total: 0, + varList: [], + treeData: [], + normalizer(node) { + return { + id: node.id, + label: node.name, + children: node.nodes + } + }, + KEYWORDS: '', + listQuery: { + page: 1, + limit: 20 + }, + listLoading: false, // 加载状态 + searchForm: { + KEYWORDS: '', + DEPARTMENT_ID: null, + dates: [] + } + } + }, + created() { + this.getList() + this.getTreeData() + }, + methods: { + getRowKey(row) { + return row.USER_ID + }, + // 搜索 + getQuery() { + this.$refs.multipleTable.clearSelection() + this.getList() + }, + goKeyReset() { + this.searchForm.KEYWORDS = '' + this.searchForm.DEPARTMENT_ID = null + this.searchForm.dates = [] + this.getList() + }, + // 获得部门树 + getTreeData() { + requestFN( + '/corpDepartment/listTreeManageAndCorp', + {} + ).then((data) => { + const treeData = this.listTransTree(JSON.parse(data.zTreeNodes), 'id', 'pId', 'nodes') + for (let i = 0; i < treeData.length; i++) { + if (treeData[i].id === this.$parent.CORPINFO_ID) { + this.treeData = this.removeEmptyChildren([treeData[i]]) + break + } + } + }).catch((e) => { + }) + }, + // 获取列表 + getList() { + this.listLoading = true + requestFN( + '/evaluationscore/userList?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + ...this.searchForm, + START_TIME: this.searchForm.dates[0] && this.searchForm.dates[0] + ' 00:00:00', + END_TIME: this.searchForm.dates[1] && this.searchForm.dates[1] + ' 23:59:59', + CORPINFO_ID: this.$parent.CORPINFO_ID + } + ).then((data) => { + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + }).catch((e) => { + this.listLoading = false + }) + }, + + batchRedemption() { + const _selectData = this.$refs.multipleTable.selection + if (_selectData.length === 0) { + this.$message.warning('请选择需要兑换的人员') + return + } + this.$confirm('确定要兑换吗?', '提示', { + type: 'warning' + }).then(() => { + const user_ids = _selectData.map(item => item.USER_ID).join(',') + requestFN( + '/evaluationscore/exchange', + { + user_ids, + CORPINFO_ID: this.$parent.CORPINFO_ID, + START_TIME: this.searchForm.dates[0] && this.searchForm.dates[0] + ' 00:00:00', + END_TIME: this.searchForm.dates[1] && this.searchForm.dates[1] + ' 23:59:59' + } + ).then((data) => { + if (data.result === 'success') { + this.$message.success('兑换成功') + this.getQuery() + } + }).catch((e) => { + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '已取消兑换' + }) + }) + }, + + redeemAll() { + this.$confirm('确定要兑换所有人得分吗?', '提示', { + type: 'warning' + }).then(() => { + requestFN( + '/evaluationscore/exchange', + { + CORPINFO_ID: this.$parent.CORPINFO_ID, + START_TIME: this.searchForm.dates[0] && this.searchForm.dates[0] + ' 00:00:00', + END_TIME: this.searchForm.dates[1] && this.searchForm.dates[1] + ' 23:59:59' + } + ).then((data) => { + if (data.result === 'success') { + this.$message.success('兑换成功') + this.getQuery() + } + }).catch((e) => { + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '已取消兑换' + }) + }) + }, + fnRedemptionRecords(USER_ID) { + this.$parent.USER_ID = USER_ID + this.$parent.activeName = 'RedemptionRecords' + }, + fnAssessmentDetails(USER_ID) { + this.$parent.USER_ID = USER_ID + this.$parent.EVALUATIONSCOREEXCHANGE_ID = '' + this.$parent.activeName = 'HiddenList' + this.$parent.HiddenListEntrance = 'PersonnelList' + }, + goBack() { + this.$parent.activeName = 'List' + } + } +} + +</script> + +<style lang="sass" scoped> +</style> diff --git a/src/views/keyproject_evaluation/personnel_evaluation_status/components/redemption_records.vue b/src/views/keyproject_evaluation/personnel_evaluation_status/components/redemption_records.vue new file mode 100644 index 0000000..176ca48 --- /dev/null +++ b/src/views/keyproject_evaluation/personnel_evaluation_status/components/redemption_records.vue @@ -0,0 +1,127 @@ +<template> + <div class="app-container"> + <el-form :model="searchForm" label-width="80px"> + <el-row> + <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-col :span="4"> + <el-form-item label-width="10px"> + <el-button v-waves type="primary" icon="el-icon-search" @click="getQuery"> + 搜索 + </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 prop="CREATTIME" label="兑换时间"/> + <el-table-column prop="CREATOR" label="兑换操作人员"/> + <el-table-column prop="SCORE" label="兑换隐患数"/> + <el-table-column prop="SCORE" label="兑换积分"/> + <el-table-column prop="LAST_SCORE" label="剩余积分数"/> + <el-table-column label="操作" width="120px"> + <template slot-scope="{row}"> + <el-button type="primary" icon="el-icon-view" @click="fnDetailsOfHiddenDangers(row.EVALUATIONSCOREEXCHANGE_ID)">隐患详情</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> + </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' + +export default { + components: { Pagination, Treeselect }, + directives: { waves }, + data() { + return { + total: 0, + varList: [], + KEYWORDS: '', + listQuery: { + page: 1, + limit: 20 + }, + listLoading: false, // 加载状态 + searchForm: { + dates: [] + } + } + }, + created() { + this.getList() + }, + methods: { + // 搜索 + getQuery() { + this.getList() + }, + goKeyReset() { + this.searchForm.dates = [] + this.getList() + }, + // 获取列表 + getList() { + this.listLoading = true + requestFN( + '/evaluationscore/exchangeList?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + ...this.searchForm, + START_TIME: this.searchForm.dates[0] && this.searchForm.dates[0] + ' 00:00:00', + END_TIME: this.searchForm.dates[1] && this.searchForm.dates[1] + ' 23:59:59', + USER_ID: this.$parent.USER_ID + } + ).then((data) => { + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + }).catch((e) => { + this.listLoading = false + }) + }, + fnDetailsOfHiddenDangers(EVALUATIONSCOREEXCHANGE_ID) { + this.$parent.EVALUATIONSCOREEXCHANGE_ID = EVALUATIONSCOREEXCHANGE_ID + this.$parent.activeName = 'HiddenList' + this.$parent.HiddenListEntrance = 'RedemptionRecords' + }, + goBack() { + this.$parent.activeName = 'PersonnelList' + } + } +} + +</script> + +<style lang="sass" scoped> +</style> diff --git a/src/views/keyproject_evaluation/personnel_evaluation_status/index.vue b/src/views/keyproject_evaluation/personnel_evaluation_status/index.vue new file mode 100644 index 0000000..c327f3d --- /dev/null +++ b/src/views/keyproject_evaluation/personnel_evaluation_status/index.vue @@ -0,0 +1,35 @@ +<template> + <div> + <component :is="activeName" /> + </div> +</template> + +<script> +import List from './components/list' +import PersonnelList from './components/personnel_list.vue' +import RedemptionRecords from './components/redemption_records.vue' +import HiddenList from './components/hidden_list.vue' +import HiddenInfo from './components/hidden_info.vue' +export default { + components: { + List, + PersonnelList, + RedemptionRecords, + HiddenList, + HiddenInfo + }, + data() { + return { + activeName: 'List', + CORPINFO_ID: '', + USER_ID: '', + EVALUATIONSCOREEXCHANGE_ID: '', + HIDDEN_ID: '', + HiddenListEntrance: '' + } + } +} +</script> + +<style scoped> +</style> diff --git a/src/views/keyproject_evaluation/tongji/components/list.vue b/src/views/keyproject_evaluation/tongji/components/list.vue new file mode 100644 index 0000000..1066986 --- /dev/null +++ b/src/views/keyproject_evaluation/tongji/components/list.vue @@ -0,0 +1,109 @@ +<template> + <div class="app-container"> + <el-table + v-loading="listLoading" + :data="varList" + :span-method="objectSpanMethod" + border + tooltip-effect="dark" + style="width: 100%"> + <el-table-column prop="CORP_NAME" label="分公司名称" > + <template slot-scope="{row}"> + <span class="link-type" @click="fnEvaluation(row)">{{ row.CORP_NAME }}</span> + </template> + </el-table-column> + <el-table-column prop="HIDDENTYPE2" label="隐患考评组类型"/> + <el-table-column prop="hiddenCount" label="发现隐患数"/> + <el-table-column prop="hiddenYanshouCount" label="已验收隐患数"/> + <el-table-column prop="hegeCount" label="已评审合格数"/> + <el-table-column prop="buhegeCount" label="已评审不合格数"/> + <el-table-column label="待评审数量"> + <template slot-scope="{row}"> + <span>{{ row.hiddenYanshouCount - (row.hegeCount+row.buhegeCount) }}</span> + </template> + </el-table-column> + <el-table-column prop="yiduihuan" label="已兑换积分"/> + <el-table-column prop="weiduihuan" label="未兑换积分"/> + </el-table> + </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' + +export default { + components: { Pagination, Treeselect }, + directives: { waves }, + data() { + return { + total: 0, + varList: [], + KEYWORDS: '', + listQuery: { + page: 1, + limit: 20 + }, + listLoading: false, // 加载状态 + searchForm: { + KEYWORDS: '', + TYPE: '', + USER_NAME: '' + } + } + }, + created() { + this.getList() + }, + methods: { + goKeyReset() { + this.searchForm.KEYWORDS = '' + this.searchForm.TYPE = '' + this.searchForm.USER_NAME = '' + this.getList() + }, + // 获取列表 + getList() { + this.listLoading = true + requestFN( + '/keyProject/evaluationTongji/corpInfoTongjiList?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page, + { + ...this.searchForm + } + ).then((data) => { + this.listLoading = false + this.varList = data.varList + this.total = data.page.totalResult + }).catch((e) => { + this.listLoading = false + }) + }, + objectSpanMethod({ row, column, rowIndex, columnIndex }) { + if (columnIndex === 0) { + if (rowIndex % 2 === 0) { + return { + rowspan: 2, + colspan: 1 + } + } else { + return { + rowspan: 0, + colspan: 0 + } + } + } + }, + fnEvaluation(row) { + this.$parent.CORPINFO_ID = row.CORPINFO_ID + this.$parent.activeName = 'PersonnelList' + } + } +} + +</script> + +<style lang="sass" scoped> +</style> diff --git a/src/views/keyproject_evaluation/tongji/index.vue b/src/views/keyproject_evaluation/tongji/index.vue new file mode 100644 index 0000000..79acfd3 --- /dev/null +++ b/src/views/keyproject_evaluation/tongji/index.vue @@ -0,0 +1,32 @@ +<template> + <div> + <component :is="activeName" /> + </div> +</template> + +<script> +import List from './components/list' +import PersonnelList from '../personnel_evaluation_status/components/personnel_list.vue' +import RedemptionRecords from '../personnel_evaluation_status/components/redemption_records.vue' +import HiddenList from '../personnel_evaluation_status/components/hidden_list.vue' +import HiddenInfo from '../personnel_evaluation_status/components/hidden_info.vue' + +export default { + components: { + List, PersonnelList, RedemptionRecords, HiddenList, HiddenInfo + }, + data() { + return { + activeName: 'List', + CORPINFO_ID: '', + USER_ID: '', + EVALUATIONSCOREEXCHANGE_ID: '', + HIDDEN_ID: '', + HiddenListEntrance: '' + } + } +} +</script> + +<style scoped> +</style> diff --git a/src/views/keyprojects/hidden/index.vue b/src/views/keyprojects/hidden/index.vue index c5341aa..957f15e 100644 --- a/src/views/keyprojects/hidden/index.vue +++ b/src/views/keyprojects/hidden/index.vue @@ -1,7 +1,8 @@ <template> <div> <OutSourced v-show="activeName=='OutSourced'" ref="outSourced" active-name="List"/> - <component :is="activeName"/> + <List v-if="activeName=='List'" /> + <Info v-if="activeName=='Info'"/> </div> </template>