Merge branch '1222-八项作业地图迁移修改' into 新动火作业1128

main
limingyu 2023-12-25 14:44:15 +08:00
commit e155e67558
48 changed files with 3131 additions and 508 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,220 @@
<template>
<div>
<div class="app-container">
<el-page-header content="查看详情" @back="goBack"/>
<table class="table-ui mt-20">
<tr>
<td class="tbg">隐患照片</td>
<td v-viewer>
<img v-for="(item,index) in pd.hiddenImgs" :key="index" :src="config.fileUrl + item.FILEPATH" alt="" style="width: 100px;height: 100px;margin-left: 10px;">
</td>
</tr>
<tr v-if="pd.hiddenVideos && pd.hiddenVideos.length !== 0 && pd.hiddenVideos[0].FILEPATH">
<td class="tbg">隐患视频</td>
<td>
<el-button icon="el-icon-video-camera" circle @click="goViewVideo(config.fileUrl + pd.hiddenVideos[0].FILEPATH)"/>
</td>
</tr>
<tr>
<td class="tbg">隐患描述</td>
<td>{{ pd.HIDDENDESCR }}</td>
</tr>
<tr>
<td class="tbg">隐患部位</td>
<td>{{ pd.HIDDENPART }}</td>
</tr>
<tr>
<td class="tbg">隐患级别</td>
<td>{{ pd.HIDDENLEVEL_NAME }}</td>
</tr>
<tr>
<td class="tbg">隐患类型</td>
<td>{{ pd.HIDDENTYPE_NAME }}</td>
</tr>
<tr>
<td class="tbg">隐患处置</td>
<td>限期整改</td>
</tr>
<tr>
<td class="tbg">整改期限</td>
<td>{{ pd.RECTIFICATIONDEADLINE }}</td>
</tr>
<tr>
<td class="tbg">整改部门</td>
<td>{{ pd.RECTIFICATIONDEPT_NAME }}</td>
</tr>
<tr>
<td class="tbg">整改人</td>
<td>{{ pd.RECTIFICATIONOR_NAME }}</td>
</tr>
<tr>
<td class="tbg">整改时间</td>
<td>{{ pd.RECTIFICATIONTIME }}</td>
</tr>
<tr>
<td class="tbg">整改照片</td>
<td v-viewer>
<img v-for="(item,index) in pd.zgImgs" :key="index" :src="config.fileUrl + item.FILEPATH" alt="" style="width: 100px;height: 100px;margin-left: 10px;">
</td>
</tr>
<tr v-if="pd.STATE === '4'">
<td class="tbg">验收时间</td>
<td>{{ pd.CHECKTIME }}</td>
</tr>
<tr v-if="pd.STATE === '4'">
<td class="tbg">验收图片</td>
<td v-viewer>
<img v-for="(item,index) in pd.ysImgs" :key="index" :src="config.fileUrl + item.FILEPATH" alt="" style="width: 100px;height: 100px;margin-left: 10px;">
</td>
</tr>
<tr v-if="pd.STATE === '4'">
<td class="tbg">是否进行罚款</td>
<td colspan="3">{{ pd.ISPUNISH === '1' ? '是' : '否' }}</td>
</tr>
</table>
<div v-if="projectEntity && projectEntity.KEYPROJECTPUNISH_ID">
<div style="font-weight: bold;margin-top: 20px">
罚款详情
</div>
<div>
<table class="table-ui mt-20">
<tr>
<td class="tbg">处罚原因</td>
<td>{{ projectEntity.REASON }}</td>
</tr>
<tr>
<td class="tbg">处罚金额</td>
<td>{{ projectEntity.AMOUT }}</td>
</tr>
<tr>
<td class="tbg">被处罚单位</td>
<td>{{ projectEntity.UNITS_NAME }}</td>
</tr>
<tr>
<td class="tbg">被处罚人</td>
<td>{{ projectEntity.PERSON_NAME }}</td>
</tr>
<tr>
<td class="tbg">下发人</td>
<td>{{ projectEntity.CREATOR_NAME }}</td>
</tr>
<tr>
<td class="tbg">下发处罚时间</td>
<td>{{ projectEntity.DATE }}</td>
</tr>
<tr v-if="projectEntity.HANDLED === '1'">
<td class="tbg">罚款缴纳单</td>
<td v-viewer>
<img :src="config.fileUrl + projectEntity.HANDLE_IMG" alt="" style="width: 100px;height: 100px;">
</td>
</tr>
<tr>
<td class="tbg">处罚处理人</td>
<td>{{ projectEntity.PERSON_NAME }}</td>
</tr>
<tr v-if="projectEntity.HANDLED === '1'">
<td class="tbg">处罚处理时间</td>
<td colspan="3">{{ projectEntity.HANLDE_TIME }}</td>
</tr>
<div class="ui-height" />
<div class="ui-foot">
<el-button icon="el-icon-arrow-left" @click="goBack"> </el-button>
</div>
</table>
</div>
</div>
</div>
<el-dialog :visible.sync="dialogViewVideo" title="视频" width="800px" @close="closePlay">
<div>
<video-player
ref="hdVideoPlayer"
:playsinline="true"
:options="playerOptions"
class="video-player vjs-custom-skin"/>
</div>
</el-dialog>
<div class="ui-height" />
<div class="ui-foot">
<el-button icon="el-icon-arrow-left" @click="goBack"> </el-button>
</div>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import { videoPlayer } from 'vue-video-player'
import 'video.js/dist/video-js.css'
export default {
components: { videoPlayer },
props: {
activeName: {
type: String,
default: ''
}
},
data() {
return {
config,
pd: {},
projectEntity: {},
dialogViewVideo: false,
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, // trueVideo.js player
sources: [{
type: 'video/mp4', //
src: '' // url
}],
poster: '', //
notSupportedMessage: '此视频暂无法播放,请稍后再试', // Video.js
controlBar: {
timeDivider: true, //
durationDisplay: true, //
remainingTimeDisplay: true, //
fullscreenToggle: true //
}
}
}
},
created() {
this.getData()
},
methods: {
getData() {
requestFN(
'/keyprojectcheck/findHidden',
{
HIDDEN_ID: this.$parent.HIDDEN_ID
}
).then((data) => {
this.pd = data.pd
this.projectEntity = data.pd.punishForm
})
},
goViewVideo(FILEPATH) {
this.playerOptions.sources[0].src = FILEPATH
this.dialogViewVideo = true
},
closePlay() {
this.$refs.hdVideoPlayer.player.pause()
},
goBack() {
if (this.activeName) {
this.$parent.activeName = this.activeName
} else {
this.$parent.activeName = 'List'
}
this.$parent.HIDDEN_ID = ''
}
}
}
</script>
<style scoped></style>

View File

@ -40,14 +40,14 @@
>
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="CORP_NAME" label="公司名称" show-overflow-tooltip />
<el-table-column prop="STARTTIME" label="属地" show-overflow-tooltip>
<!-- <el-table-column prop="STARTTIME" label="属地" show-overflow-tooltip>
<template slot-scope="{row}"/>
<template slot-scope="{row}">
<span v-if="row.CORPINFO_ID !='1'">
{{ row.prvinceName }} -- {{ row.cityName }} -- {{ row.countryName }}
{{ row.prvinceName }} &#45;&#45; {{ row.cityName }} &#45;&#45; {{ row.countryName }}
</span>
<span v-else>
河北省 -- 秦皇岛市 -- 海港区
河北省 &#45;&#45; 秦皇岛市 &#45;&#45; 海港区
</span>
</template>
</el-table-column>
@ -60,8 +60,10 @@
交通运输仓储和邮政业
</span>
</template>
</el-table-column>
</el-table-column>-->
<el-table-column prop="OUTSOURCED_COUNT" label="重点工程创建数量" />
<el-table-column prop="STATE_COUNT" label="开工数量" />
<el-table-column prop="END_COUNT" label="结束数量" />
<el-table-column v-if="otherShow" prop="CHECK_COUNT" label="检查次数" />
<el-table-column v-if="otherShow" prop="HIDDEN_COUNT" label="发现隐患数量" />
<el-table-column v-if="otherShow" prop="PUNISH_COUNT" label="违约处罚次数" />

View File

@ -1,6 +1,9 @@
<template>
<div>
<component :is="activeName" />
<List v-show="activeName=='List'"/>
<Evaluation v-if="activeName=='Evaluation'"/>
<HiddenInfo v-if="activeName=='HiddenInfo'"/>
<!-- <component :is="activeName" />-->
</div>
</template>

View File

@ -0,0 +1,418 @@
<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="Ai报警"/>
<!-- <el-option value="3" label="清单排查"/>-->
<el-option value="4" label="安全环保检查(监管端)"/>
<el-option value="5" 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"
:disable-branch-nodes="true"
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'">
Ai报警
</span>
<span v-else-if="row.SOURCE=='4'">
安全环保检查(监管端)
</span>
<span v-else-if="row.SOURCE=='5'">
安全环保检查(企业端)
</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="CREATOR_NAME" label="隐患验收人">
<template slot-scope="{row}">
<span v-if="row.RECTIFICATIONTYPE=='1'">
--
</span>
<span v-else>
{{ row.CREATOR_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>
</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: [],
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 + '&currentPage=' + 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 = 'KeyProjectHidden'
},
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(
'keyProject/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(
'keyProject/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>

View File

@ -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_count1 }} / {{ row.count1 }}
</template>
</el-table-column>
<el-table-column label="重点工程安全环保奖惩监管端">
<template slot-scope="{row}">
{{ row.checked_count2 }} / {{ row.count2 }}
</template>
</el-table-column>
<el-table-column label="重点工程安全环保奖惩企业端">
<template slot-scope="{row}">
{{ row.checked_count3 }} / {{ row.count3 }}
</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 + '&currentPage=' + 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>

View File

@ -0,0 +1,34 @@
<template>
<div>
<List v-show="activeName=='List'"/>
<Evaluation v-if="activeName=='Evaluation'"/>
<KeyProjectHidden v-if="activeName=='KeyProjectHidden'" active-name="Evaluation"/>
</div>
</template>
<script>
import List from './components/list'
import Evaluation from './components/evaluation'
// import HiddenInfo from './components/hidden_info.vue'
import KeyProjectHidden from '@/components/KeyProjectHidden/index'
export default {
components: {
List,
Evaluation,
KeyProjectHidden
},
data() {
return {
activeName: 'List',
CORPINFO_ID: '',
EVALUATIONCONFIG_ID: '',
HIDDEN_ID: '',
TYPE: ''
}
}
}
</script>
<style scoped>
</style>

View File

@ -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 + '&currentPage=' + 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>

View File

@ -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>

View File

@ -0,0 +1,283 @@
<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="Ai报警"/>
<!-- <el-option value="3" label="清单排查"/>-->
<el-option value="4" label="安全环保检查(监管端)"/>
<el-option value="5" 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"
:disable-branch-nodes="true"
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'">
Ai报警
</span>
<span v-else-if="row.SOURCE=='4'">
安全环保检查(监管端)
</span>
<span v-else-if="row.SOURCE=='5'">
安全环保检查(企业端)
</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="CREATOR_NAME" label="隐患验收人">
<template slot-scope="{row}">
<!-- <span v-if="row.RECTIFICATIONTYPE=='2'">-->
<!-- {{ row.YQ_CHECKOR_NAME }}-->
<!-- </span>-->
<!-- <span v-else>-->
<!-- {{ row.CHECKOR_NAME }}-->
<!-- </span>-->
<span>
{{ row.CREATOR_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(
'keyProject/evaluationscore/exchangeHiddenList?showCount=' + this.listQuery.limit + '&currentPage=' + 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
console.log(data.varList)
if (data.varList) {
this.varList = data.varList
}else {
this.varList = []
}
this.total = data.page.totalResult
}).catch((e) => {
this.listLoading = false
})
},
fnAssessmentDetails(HIDDEN_ID) {
requestFN(
'keyProject/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 = 'KeyProjectHidden'
},
goBack() {
this.$parent.activeName = this.$parent.HiddenListEntrance
}
}
}
</script>
<style lang="sass" scoped>
</style>

View File

@ -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 }}
</template>
</el-table-column>
<el-table-column label="待考评隐患数">
<template slot-scope="{row}">
{{ (row.count1 + row.count2 + row.count3 ) - (row.checked_count1 + row.checked_count2 + row.checked_count3 ) }}
</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 + '&currentPage=' + 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>

View File

@ -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(
'keyProject/evaluationscore/userList?showCount=' + this.listQuery.limit + '&currentPage=' + 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(
'keyProject/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(
'keyProject/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>

View File

@ -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(
'keyProject/evaluationscore/exchangeList?showCount=' + this.listQuery.limit + '&currentPage=' + 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>

View File

@ -0,0 +1,40 @@
<template>
<div>
<List v-if="activeName == 'List'" />
<RedemptionRecords v-if="activeName == 'RedemptionRecords'"/>
<PersonnelList v-if="activeName == 'PersonnelList'" />
<KeyProjectHidden v-if="activeName == 'KeyProjectHidden'" active-name="HiddenList"/>
<HiddenList v-if="activeName == 'HiddenList'" />
</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 KeyProjectHidden from '@/components/KeyProjectHidden/index'
export default {
components: {
List,
PersonnelList,
KeyProjectHidden,
RedemptionRecords,
HiddenList
},
data() {
return {
activeName: 'List',
CORPINFO_ID: '',
USER_ID: '',
EVALUATIONSCOREEXCHANGE_ID: '',
HIDDEN_ID: '',
HiddenListEntrance: ''
}
}
}
</script>
<style scoped>
</style>

View File

@ -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 + '&currentPage=' + 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>

View File

@ -0,0 +1,36 @@
<template>
<div>
<List v-if="activeName =='List'" />
<PersonnelList v-if="activeName =='PersonnelList'" />
<RedemptionRecords v-if="activeName =='RedemptionRecords'" />
<HiddenList v-if="activeName =='HiddenList'" />
<KeyProjectHidden v-if="activeName =='KeyProjectHidden'" active-name="HiddenList"/>
</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 KeyProjectHidden from '@/components/KeyProjectHidden/index'
export default {
components: {
List, PersonnelList, RedemptionRecords, HiddenList, KeyProjectHidden
},
data() {
return {
activeName: 'List',
CORPINFO_ID: '',
USER_ID: '',
EVALUATIONSCOREEXCHANGE_ID: '',
HIDDEN_ID: '',
HiddenListEntrance: ''
}
}
}
</script>
<style scoped>
</style>

View File

@ -1,6 +1,6 @@
<template>
<div>
<OutSourced v-if="activeName=='OutSourced'" ref="outSourced" active-name="List"/>
<OutSourced v-if="activeName=='OutSourced'" ref="outSourced" :other-show="true" active-name="List"/>
<List v-if="activeName=='List'" />
<Info v-if="activeName=='Info'" />
<recordList v-if="activeName=='recordList'"/>

View File

@ -1,21 +1,22 @@
<template>
<div>
<OutSourced v-show="activeName=='OutSourced'" ref="outSourced" active-name="List"/>
<OutSourced v-show="activeName=='OutSourced'" ref="outSourced" :other-show="true" active-name="List"/>
<List v-if="activeName=='List'" />
<Info v-if="activeName=='Info'"/>
<KeyProjectHidden v-if="activeName=='Info'"/>
</div>
</template>
<script>
import List from './components/list'
import Info from './components/info'
// import Info from './components/info'
import OutSourced from '@/components/OutSourced/index'
import KeyProjectHidden from '@/components/KeyProjectHidden/index'
export default {
components: {
List: List,
OutSourced: OutSourced,
Info: Info
KeyProjectHidden: KeyProjectHidden
},
data() {
return {

View File

@ -1,6 +1,6 @@
<template>
<div>
<OutSourced v-show="activeName=='OutSourced'" ref="outSourced" active-name="List"/>
<OutSourced v-show="activeName=='OutSourced'" ref="outSourced" :other-show="true" active-name="List"/>
<List v-if="activeName=='List'" ref="list" />
<Info v-if="activeName=='Info'" />
<recordList v-if="activeName=='recordList'" />

View File

@ -80,7 +80,7 @@
<el-row>
<el-col :span="8">
<el-form-item label="施工相关方:" prop="UNITS_ID">
<el-select v-model="form.UNITS_ID" placeholder="请选择施工相关方" style="width: 100%;" @change="getUnitUser">
<el-select v-model="form.UNITS_ID" filterable placeholder="请选择施工相关方" style="width: 100%;" @change="getUnitUser">
<el-option
v-for="item in unitsList"
:key="item.UNITS_ID"
@ -194,7 +194,7 @@
<el-row>
<el-col :span="8">
<el-form-item label="状态:" prop="STATE">
<el-select v-model="form.STATE" style="width: 100%;">
<el-select v-model="form.STATE" disabled style="width: 100%;">
<el-option v-for="item in stateList" :key="item.ID" :label="item.NAME" :value="item.ID" />
</el-select>
</el-form-item>
@ -571,9 +571,11 @@ export default {
// { ID: '0', NAME: '' },
// { ID: '1', NAME: '' },
// { ID: '2', NAME: '' }
{ ID: '0', NAME: '未开工' },
{ ID: '1', NAME: '进行中' },
{ ID: '2', NAME: '已结束' }
{ ID: '2', NAME: '已结束' },
{ ID: '-1', NAME: '开工申请中' },
{ ID: '-2', NAME: '结束申请中' }
],
unitsUserList: [],
normalizer(node) {
@ -606,17 +608,17 @@ export default {
immediate: false
},
'form.ENDTIME': {
handler: function() {
// eslint-disable-next-line no-unused-vars
var time = formatDate(new Date(), 'YYYY-MM-DD')
if (this.form.ENDTIME > time) {
this.form.STATE = '1'
} else {
this.form.STATE = '2'
}
}
},
//'form.ENDTIME': {
// handler: function() {
// // eslint-disable-next-line no-unused-vars
// var time = formatDate(new Date(), 'YYYY-MM-DD')
// if (this.form.ENDTIME > time) {
// this.form.STATE = '1'
// } else {
// this.form.STATE = '2'
// }
// }
//},
TRAINING_TIME: function(newData, oldData) {
if (!newData) {
this.TRAINING_TIME = ['', '']
@ -635,6 +637,8 @@ export default {
this.dialogType = 'edit'
this.form.OUTSOURCED_ID = this.$parent.OUTSOURCED_ID
this.getData()
} else {
this.form.STATE = '0'
}
},
methods: {

View File

@ -47,24 +47,26 @@
<td class="tbg">计划工期结束时间</td>
<td>{{ pd.ENDTIME }}</td>-->
</tr>
<tr>
<td class="tbg">合同号</td>
<td colspan="3">{{ pd.CONTRACT_NUM }}</td>
</tr>
<tr>
<!-- <td class="tbg">合同起止时间</td>
<td>{{ pd.CONTRACT_STIME }} {{ pd.CONTRACT_ETIME }}</td>-->
<td class="tbg">施工相关方</td>
<td colspan="3">{{ pd.UNITS_NAME }}</td>
</tr>
<tr>
<td class="tbg">合同号</td>
<td>{{ pd.CONTRACT_NUM }}</td>
<td class="tbg">监理单位名称</td>
<td>{{ pd.MANAGE_CORPS_NAME }}</td>
</tr>
<tr>
<td class="tbg">相关方单位工程负责人</td>
<td>{{ pd.UNITS_PIC_NAME }}</td>
<td class="tbg">相关方单位负责人手机</td>
<td>{{ pd.UNITS_PHONE }}</td>
</tr>
<tr>
<td class="tbg">监理单位名称</td>
<td colspan="3">{{ pd.MANAGE_CORPS_NAME }}</td>
</tr>
<!-- <tr v-if="pd.UNITS_APTITUDEPATH">
<td class="tbg">相关方单位资质</td>
<td colspan="2">{{ pd.UNITS_APTITUDE }}</td>
@ -97,10 +99,19 @@
<td >{{ pd.APPLICANT }}</td>-->
<td class="tbg">状态</td>
<td>
<span v-if="pd.STATE == 0"></span>
<span v-if="pd.STATE == 1"></span>
<span v-if="pd.STATE == 2"></span>
<span v-if="pd.STATE == -1"></span>
<span v-if="pd.STATE == -2"></span>
</td>
</tr>
<tr>
<td class="tbg">重点工程定位</td>
<td v-if="pd.WORK_LATITUDE && pd.WORK_LONGITUDE" colspan="2">{{ pd.WORK_LONGITUDE }}{{ pd.WORK_LATITUDE }}</td>
<td v-else colspan="2">未定位</td>
<td><el-button type="success" @click="handleMap(pd)"></el-button></td>
</tr>
<tr v-for="(item, index) in file9" :key="index">
<td class="tbg">安全管理协议{{ index + 1 }}</td>
<td colspan="2">{{ item.FILE_NAME }}</td>
@ -133,12 +144,26 @@
<div class="ui-foot">
<el-button icon="el-icon-arrow-left" @click="goBack"> </el-button>
</div>
<el-dialog :visible.sync="dialogFormMap" title="定位" width="1050px" class="dy-dialog">
<div id="map" />
<div slot="footer" class="dialog-footer">
<span>经度</span>
<el-input v-model="form.LONGITUDE" style="width: 200px" placeholder="请输入内容" disabled />
<span>纬度</span>
<el-input v-model="form.LATITUDE" style="width: 200px" placeholder="请输入内容" disabled />
<el-button @click="dialogFormMap = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import TiandiMap from '../../../../components/TianMap/TiandiMap'
export default {
components: { TiandiMap },
data() {
return {
pd: {
@ -186,7 +211,9 @@ export default {
OATTACHMENTSPATH: '', //
file: '', //
APPLICANT: '', //
STATE: ''//
STATE: '', //
WORK_LATITUDE: '', //
WORK_LONGITUDE: '' //
},
punishThePerson: [],
treeData: [],
@ -196,6 +223,14 @@ export default {
value: 'id',
children: 'nodes',
label: 'name'
},
//
map: null,
marker: null,
dialogFormMap: false,
form: {
LONGITUDE: '',
LATITUDE: ''
}
}
},
@ -223,6 +258,11 @@ export default {
created() {
this.getData()
},
beforeDestroy() {
this.map && this.map.removeEventListener('click', this.MapClick)
console.log('定时器关闭')
clearInterval(this.timer)
},
methods: {
handleTreeSelected(checkedIds, checkedData) {
this.DEPTIDS = checkedIds.join(',')
@ -280,6 +320,78 @@ export default {
goBack() {
this.$parent.activeName = 'List'
this.$parent.OUTSOURCED_ID = ''
},
/**
* 初始化天地图对象
*/
initTDT() {
return new Promise((resolve, reject) => {
if (window.T) {
console.log('天地图初始化成功...')
resolve(window.T)
reject('error')
}
}).then(T => {
window.T = T
})
},
/**
* 初始化地图
* @param {*} lng 经度
* @param {*} lat 纬度
* @param {*} zoom 缩放比例(1~18)
*/
initMap(lng, lat, zoom) {
this.initTDT().then((T) => {
const imageURL = 'http://t0.tianditu.gov.cn/img_w/wmts?' + 'SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles' + '&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=e8a16137fd226a62a23cc7ba5c9c78ce'
//
this.lay = new window.T.TileLayer(imageURL, { minZoom: 1, maxZoom: 18 })
//
this.map = new window.T.Map('map')
this.initCenter(lng, lat, zoom)
})
},
initCenter(lng, lat, zoom) {
//
if (!this.form.LONGITUDE && !this.form.LATITUDE) {
this.map.centerAndZoom(new window.T.LngLat(119.58, 39.94), zoom)
this.marker && this.map.removeOverLay(this.marker)
} else {
this.map.centerAndZoom(new window.T.LngLat(lng, lat), zoom)
this.marker && this.map.removeOverLay(this.marker)
this.form.LONGITUDE = lng
this.form.LATITUDE = lat
this.marker = new window.T.Marker(new window.T.LngLat(lng, lat))
//
this.map.addOverLay(this.marker)
}
//
this.map.setMapType(window.TMAP_HYBRID_MAP)
//
this.map.enableScrollWheelZoom()
//
this.map.enableInertia()
//
this.map.addEventListener('click', this.MapClick)
},
MapClick(event) {
this.marker && this.map.removeOverLay(this.marker)
this.form.LONGITUDE = event.lnglat.getLng()
this.form.LATITUDE = event.lnglat.getLat()
this.marker = new window.T.Marker(new window.T.LngLat(event.lnglat.getLng(), event.lnglat.getLat()))
//
this.map.addOverLay(this.marker)
},
handleMap(row) {
this.form.LATITUDE = ''
this.form.LONGITUDE = ''
this.dialogFormMap = true
this.form.LATITUDE = this.pd.WORK_LATITUDE
this.form.LONGITUDE = this.pd.WORK_LONGITUDE
this.$nextTick(() => {
if (!this.map) this.initMap(this.form.LONGITUDE, this.form.LATITUDE, 16)
else this.initCenter(this.form.LONGITUDE, this.form.LATITUDE, 16)
})
}
}
}
@ -289,5 +401,8 @@ export default {
.tbg{width:180px;
/*text-align: left;*/
}
#map{
width: 1000px;
height: 500px;
}
</style>

View File

@ -32,7 +32,7 @@
<el-row>
<el-col :span="8">
<el-form-item label="施工相关方">
<el-select v-model="UNITS_ID" placeholder="请选择施工相关方" style="width: 100%">
<el-select v-model="UNITS_ID" filterable placeholder="请选择施工相关方" style="width: 100%">
<el-option
v-for="item in unitsList"
:key="item.UNITS_ID"
@ -137,15 +137,27 @@
</el-table-column>
<el-table-column prop="STATE" label="状态" width="100" >
<template slot-scope="{row}">
<span v-if="row.STATE == 0"></span>
<span v-if="row.STATE == 1"></span>
<span v-if="row.STATE == 2"></span>
<span v-if="row.STATE == -1"></span>
<span v-if="row.STATE == -2"></span>
</template>
</el-table-column>
<el-table-column prop="OUTSOURCED_CREATOR_NAME" label="创建人" show-overflow-tooltip />
<el-table-column label="视频数量" show-overflow-tooltip>
<template slot-scope="{row}">
<span v-if="row.VIDEO_COUNT != 0">
<a style="color: #1e9fff;text-decoration:underline" @click="clickVideoDetail(row.OUTSOURCED_ID)">{{ row.VIDEO_COUNT }}</a>
</span>
<span v-else>{{ row.VIDEO_COUNT }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="400">
<template slot-scope="{row}">
<el-button type="success" icon="el-icon-view" size="mini" @click="goDetail(row.OUTSOURCED_ID)"></el-button>
<el-button type="success" icon="el-icon-view" size="mini" @click="handleJie(row.OUTSOURCED_ID)"></el-button>
<el-button v-if="row.CREATOR==userInfoUserId && row.STATE==-1" type="success" icon="el-icon-view" size="mini" @click="handleState(row.OUTSOURCED_ID)"></el-button>
<el-button v-if="row.CREATOR==userInfoUserId && row.STATE==-2" type="success" icon="el-icon-view" size="mini" @click="handleJie(row.OUTSOURCED_ID)"></el-button>
<el-button v-show="edit" v-if="0 === row.IS_CORP_TYPE" type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.OUTSOURCED_ID)"></el-button>
<el-button v-show="del" v-if="0 === row.IS_CORP_TYPE" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.OUTSOURCED_ID)"></el-button>
</template>
@ -183,6 +195,8 @@ export default {
directives: { waves },
data() {
return {
CORPINFO_ID: '',
userInfoUserId: JSON.parse(sessionStorage.getItem('user')).USER_ID,
qrcodeStr: '',
listLoading: true,
add: false,
@ -238,8 +252,11 @@ export default {
dialogFormEdit: false,
dialogType: 'add',
stateList: [
{ ID: '0', NAME: '未开工' },
{ ID: '1', NAME: '进行中' },
{ ID: '2', NAME: '已结束' }
{ ID: '2', NAME: '已结束' },
{ ID: '-1', NAME: '开工申请中' },
{ ID: '-2', NAME: '结束申请中' }
]
}
},
@ -252,6 +269,7 @@ export default {
}
},
created() {
this.CORPINFO_ID = this.$parent.CORPINFO_ID,
this.getList()
this.getUnitsList()
this.getCorpList()
@ -299,7 +317,7 @@ export default {
CONTRACT_STIME: this.CONTRACTTIME[0],
CONTRACT_ETIME: this.CONTRACTTIME[1],
STATE: this.STATE,
CORPINFO_ID: this.$parent.CORPINFO_ID,
CORPINFO_ID: this.CORPINFO_ID,
INVOLVING_CORP: this.INVOLVING_CORP,
DEPARTMENT_ID: this.DEPARTMENT_ID,
COMPETENT_DEPT_ID: this.COMPETENT_DEPT_ID,
@ -326,6 +344,10 @@ export default {
this.$parent.OUTSOURCED_ID = ID
this.$parent.activeName = 'Info'
},
clickVideoDetail(ID) {
this.$parent.OUTSOURCED_ID = ID,
this.$parent.activeName = 'videoList'
},
//
handleEdit(ID) {
this.$parent.activeName = 'Edit'
@ -351,6 +373,35 @@ export default {
// }
// })
// },
handleState(id) {
this.$confirm('确定要开工吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN(
'/outsourced/updateState',
{
OUTSOURCED_ID: id,
OPERATOR: this.userInfoUserId, //
STATE: '1'
}
).then((data) => {
this.$message({
message: '已开工',
type: 'success'
})
this.listLoading = false
this.varList = []
this.listQuery.page = 1
this.getList()
}).catch((e) => {
this.listLoading = false
})
}).catch(() => {
})
},
handleJie(id) {
this.$confirm('确定要结束吗?', {
confirmButtonText: '确定',
@ -359,23 +410,18 @@ export default {
}).then(() => {
this.listLoading = true
requestFN(
'/outsourced/jie',
'/outsourced/updateState',
{
OUTSOURCED_ID: id
OUTSOURCED_ID: id,
OPERATOR: this.userInfoUserId, //
STATE: '2'
}
).then((data) => {
if (data.code == '500') {
this.listLoading = false
this.$message({
message: data.message,
type: 'error'
})
return
}
this.$message({
message: '已结束',
type: 'success'
})
this.listLoading = false
this.varList = []
this.listQuery.page = 1
this.getList()
@ -443,12 +489,21 @@ export default {
})
},
selectDeptOption() {
var url = ''
if (this.CORPINFO_ID == '1') {
url = '/department/listTree'
} else {
url = '/department/listTreeCorpInfo'
}
//
return new Promise((resolve) => {
requestFN(
'/corpDepartment/listTreeManageAndCorp1',
url,
{
CORPINFO_ID: this.CORPINFO_ID
}
).then((data) => {
this.treeDeptOptions = this.listTransTree(JSON.parse(data.zTreeNodes), 'id', 'pId', 'nodes')
// this.treeDeptOptions = this.listTransTree(JSON.parse(data.zTreeNodes), 'id', 'pId', 'nodes')
this.treeDataInspectDept = this.listTransTree(JSON.parse(data.zTreeNodes), 'id', 'pId', 'nodes')
resolve()
}).catch((e) => {

View File

@ -1,9 +1,10 @@
<template>
<div>
<OutSourced v-show="activeName=='OutSourced'" ref="outSourced" active-name="List"/>
<List v-show="activeName=='List'" ref="list" />
<OutSourced v-show="activeName=='OutSourced'" ref="outSourced" :other-show="true" active-name="List"/>
<List v-if="activeName=='List'" ref="list" />
<Edit v-if="activeName=='Edit'" />
<Info v-if="activeName=='Info'" />
<videoList v-if="activeName=='videoList'" />
</div>
</template>
@ -12,24 +13,25 @@ import List from './components/list'
import Edit from './components/edit'
import Info from './components/info'
import OutSourced from '@/components/OutSourced/index'
import videoList from '@/views/keyprojects/videomanager/components/video-list'
export default {
components: {
List: List,
Edit: Edit,
OutSourced: OutSourced,
Info: Info
Info: Info,
videoList: videoList
},
data() {
return {
activeName: 'OutSourced'
activeName: 'OutSourced',
OUTSOURCED_ID: '',
CORPINFO_ID: ''
}
},
watch: {
activeName(val) {
if (val == 'List') {
this.$refs.list.getQuery()
}
if (val == 'OutSourced') {
this.$refs.outSourced.getQuery()
}

View File

@ -1,7 +1,7 @@
<template>
<div>
<OutSourced v-show="activeName=='OutSourced'" ref="outSourced" active-name="List"/>
<List v-show="activeName=='List'" ref="list" />
<OutSourced v-show="activeName=='OutSourced'" ref="outSourced" :other-show="true" active-name="List"/>
<List v-if="activeName=='List'" ref="list" />
<List2 v-if="activeName=='List2'" />
<Info v-if="activeName=='Info'" />
<hidden-info v-if="activeName==='HiddenInfo'"/>
@ -32,8 +32,8 @@ export default {
},
watch: {
activeName(val) {
if (val == 'List') {
this.$refs.list.getList()
if (val == 'OutSourced') {
this.$refs.outSourced.getQuery()
}
}
}

View File

@ -49,7 +49,7 @@
<el-row>
<el-col :span="8">
<el-form-item label="施工相关方">
<el-select v-model="UNITS_ID" placeholder="请选择施工相关方" style="width: 100%">
<el-select v-model="UNITS_ID" filterable placeholder="请选择施工相关方" style="width: 100%">
<el-option
v-for="item in unitsList"
:key="item.UNITS_ID"
@ -148,8 +148,11 @@
<el-table-column prop="VIDEO_COUNT" label="视频个数" />
<el-table-column prop="STATE" label="状态">
<template slot-scope="{row}">
<span v-if="row.STATE == 1"></span>
<span v-if="row.STATE == -1"></span>
<span v-if="row.STATE == -2"></span>
<span v-if="row.STATE == 0"></span>
<span v-if="row.STATE == 2"></span>
<span v-if="row.STATE == 1"></span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="100">
@ -174,6 +177,7 @@ export default {
directives: { waves },
data() {
return {
CORPINFO_ID: '',
listLoading: true,
listQuery: {
page: 1,
@ -188,6 +192,9 @@ export default {
STATE: '',
CONTRACTTIME: ['', ''], //
stateList: [
{ ID: '-1', NAME: '开工申请中' },
{ ID: '-2', NAME: '结束申请中' },
{ ID: '0', NAME: '未开工' },
{ ID: '1', NAME: '进行中' },
{ ID: '2', NAME: '已结束' }
],
@ -212,6 +219,7 @@ export default {
}
},
created() {
this.CORPINFO_ID = this.$parent.CORPINFO_ID
this.getList()
this.getUnitsList()
this.getCorpList()
@ -240,12 +248,21 @@ export default {
})
},
selectDeptOption() {
var url = ''
if (this.CORPINFO_ID == '1') {
url = '/department/listTree'
} else {
url = '/department/listTreeCorpInfo'
}
//
return new Promise((resolve) => {
requestFN(
'/corpDepartment/listTreeManageAndCorp1',
url,
{
CORPINFO_ID: this.CORPINFO_ID
}
).then((data) => {
this.treeDeptOptions = this.listTransTree(JSON.parse(data.zTreeNodes), 'id', 'pId', 'nodes')
// this.treeDeptOptions = this.listTransTree(JSON.parse(data.zTreeNodes), 'id', 'pId', 'nodes')
this.treeDataInspectDept = this.listTransTree(JSON.parse(data.zTreeNodes), 'id', 'pId', 'nodes')
resolve()
}).catch((e) => {
@ -305,7 +322,7 @@ export default {
COMPETENT_DEPT_ID: this.COMPETENT_DEPT_ID,
GROUP_UNIT: this.GROUP_UNIT,
CORP_NAME: this.CORP_NAME,
CORPINFO_ID: this.$parent.CORPINFO_ID
CORPINFO_ID: this.CORPINFO_ID
}
).then((data) => {
this.listLoading = false

View File

@ -1,7 +1,7 @@
<template>
<div>
<OutSourced v-if="activeName=='OutSourced'" ref="outSourced" :other-show="true" active-name="List"/>
<List v-show="activeName=='List'" ref="list" />
<List v-if="activeName=='List'" ref="list" />
<videoList v-if="activeName=='videoList'" />
<!-- <component :is="activeName"/>-->
</div>
@ -23,7 +23,15 @@ export default {
return {
activeName: 'OutSourced',
UNITS_ID: '',
OUTSOURCED_ID: ''
OUTSOURCED_ID: '',
CORPINFO_ID: ''
}
},
watch: {
activeName(val) {
if (val == 'OutSourced') {
this.$refs.outSourced.getQuery()
}
}
}
}

View File

@ -39,10 +39,10 @@
<div class="td">隐患数量</div>
</div>
<div v-for="(item,index) in block3List" :key="index" class="tr">
<div class="td">{{ item.name }}</div>
<div class="td">{{ item.num }}</div>
<div class="td">{{ item.check }}</div>
<div class="td">{{ item.count }}</div>
<div class="td">{{ item.CORP_NAME }}</div>
<div class="td">{{ item.OUTSOURCED_COUNT }}</div>
<div class="td">{{ item.CHECK_COUNT }}</div>
<div class="td">{{ item.HIDDEN_COUNT }}</div>
</div>
</div>
</div>
@ -53,12 +53,27 @@
<script>
import layoutTitle from './title.vue'
import CountTo from 'vue-count-to'
import { requestFN } from '@/utils/request'
export default {
components: {
CountTo,
layoutTitle
},
props: {
corpInfoId: {
type: String,
default: ''
},
area: {
type: String,
default: ''
},
gangkou: {
type: String,
default: ''
}
},
data() {
return {
block1OptionsList: [
@ -100,16 +115,50 @@ export default {
block3OptionsIndex: 0,
block3List: [
{
name: '-',
num: '-',
check: '-',
count: '-'
CORP_NAME: '-',
OUTSOURCED_COUNT: '-',
CHECK_COUNT: '-',
HIDDEN_COUNT: '-'
}
]
}
},
mounted() {
this.getCount()
this.initgetTable()
},
methods: {
getCount() {
requestFN(
'/map/keyProject/findFormCount',
{
CORPINFO_ID: this.corpInfoId,
AREA: this.area,
GANGKOU: this.gangkou
}
).then((data) => {
//
this.block1OptionsList[0].count = data.pd.STATE_COUNT
this.block1OptionsList[1].count = data.pd.VIDEO_COUNT
this.block1OptionsList[2].count = data.pd.CHECK_COUNT
this.block1OptionsList[3].count = data.pd.HIDDEN_COUNT
//
this.block2OptionsList[0].count = data.pd.PUNISH_COUNT
this.block2OptionsList[1].count = data.pd.AMOUT_SUM
})
},
initgetTable() {
requestFN(
'/map/keyProject/list?showCount=10&currentPage=1',
{
CORPINFO_ID: this.corpInfoId,
AREA: this.area,
GANGKOU: this.gangkou
}
).then((data) => {
this.block3List = data.varList
})
}
}
}
</script>
@ -267,7 +316,6 @@ export default {
}
}
.block3 {
margin-top: 10px;
width: 410px;

View File

@ -45,10 +45,10 @@
<td colspan="8">
<div>盲板位置图可另附图及编号</div>
<div style="display: flex;justify-content: space-between;margin-top: 20px;">
<img v-viewer :src="config.cfdfileUrl + info.BOARD_PATH" alt="" width="100" height="100">
<img v-viewer :src="config.fileUrl + info.BOARD_PATH" alt="" width="100" height="100">
<div>
编制人
<img v-viewer :src="config.cfdfileUrl + info.APPLY_USER_SIGNER_PATH" alt="" width="100" height="100">
<img v-viewer :src="config.fileUrl + info.APPLY_USER_SIGNER_PATH" alt="" width="100" height="100">
{{ info.APPLY_USER_SIGNER_TIME }}
</div>
</div>
@ -63,7 +63,7 @@
<td v-if="info.GUARDIAN_USER_SIGNER_PATH" colspan="5">
<div style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.cfdfileUrl + info.GUARDIAN_USER_SIGNER_PATH" alt="" width="100" height="100">
<img v-viewer :src="config.fileUrl + info.GUARDIAN_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ info.GUARDIAN_USER_SIGNER_TIME }}</span>
</div>
</td>
@ -117,20 +117,20 @@
</td>
</tr>
<tr>
<td class="bbg-transparent">安全交底</td>
<td colspan="3">
<td v-if="info.CONFESS_USER_SIGNER_PATH" class="bbg-transparent"></td>
<td v-if="info.CONFESS_USER_SIGNER_PATH" colspan="3">
<div v-if="info.CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.cfdfileUrl + info.CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<img v-viewer :src="config.fileUrl + info.CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ info.CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
<td class="bbg-transparent">接受交底</td>
<td colspan="3">
<div v-if="info.ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<td v-if="imgList.length>0" class="bbg-transparent"></td>
<td v-if="imgList.length>0" colspan="3">
<div v-if="imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.cfdfileUrl + info.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ info.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
<img v-viewer :src="config.fileUrl + imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ imgList[0].ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
@ -146,7 +146,7 @@
<div>
签字
<span class="print-approval-img">
<img v-if="info.CONSTRUCTION_USER_SIGNER_PATH" :src="config.cfdfileUrl+info.CONSTRUCTION_USER_SIGNER_PATH">
<img v-if="info.CONSTRUCTION_USER_SIGNER_PATH" :src="config.fileUrl+info.CONSTRUCTION_USER_SIGNER_PATH">
</span>
</div>
<div style="float: right">
@ -166,7 +166,7 @@
<div>
签字
<span class="print-approval-img">
<img v-if="info.LEADER_USER_SIGNER_PATH" :src="config.cfdfileUrl+info.LEADER_USER_SIGNER_PATH">
<img v-if="info.LEADER_USER_SIGNER_PATH" :src="config.fileUrl+info.LEADER_USER_SIGNER_PATH">
</span>
</div>
<div style="float: right">
@ -208,6 +208,7 @@ export default {
info: {},
ImgList: [],
measuresList: [],
imgList: []
}
},
created() {
@ -223,7 +224,7 @@ export default {
},
getData() {
requestFN(
'/map/Eight/getByIdCfdD',
'/map/Eight/getByIdOrder',
{
id: this.id,
TYPE: this.type,
@ -232,7 +233,11 @@ export default {
).then((data) => {
this.info = { ...data.pd, ...data.Info }
this.ImgList = data.ImgList
this.imgList = data.imgList
this.measuresList = data.measuresList
this.info.APPLY_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.info.CONSTRUCTION_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
this.info.LEADER_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
}).catch((e) => {
})
}

View File

@ -114,7 +114,6 @@
</td>
</tr>
<tr>
<td class="bbg-transparent">安全交底人</td>
<td colspan="5">
@ -126,12 +125,12 @@
</td>
</tr>
<tr>
<td class="bbg-transparent">接受交底</td>
<td colspan="5">
<div v-if="info.ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<td v-if="imgList.length>0" class="bbg-transparent"></td>
<td v-if="imgList.length>0" colspan="5">
<div v-if="imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + info.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ info.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
<img v-viewer :src="config.fileUrl + imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ imgList[0].ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
@ -247,7 +246,8 @@ export default {
config: config,
info: {},
ImgList: [],
measuresList: []
measuresList: [],
imgList: []
}
},
created() {
@ -273,6 +273,22 @@ export default {
this.info = { ...data.pd, ...data.Info }
this.ImgList = data.ImgList
this.measuresList = data.measuresList
this.imgList = data.imgList
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 0) {
this.info.APPLY_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
}
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 1) {
this.info.CONSTRUCTION_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
}
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 2) {
this.info.PRODUCTION_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
}
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 3) {
this.info.SAFETY_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[3]
}
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 4) {
this.info.LEADER_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[4]
}
}).catch((e) => {
})
}

View File

@ -8,9 +8,9 @@
<tr>
<td class="bbg-transparent">申请单位</td>
<td >{{ info.APPLY_DEPARTMENT_NAME }}</td>
<td class="bbg-transparent">作业单位</td>
<td class="bbg-transparent">作业单位</td>
<td >{{ info.CONSTRUCTION_DEPARTMENT_NAME }}</td>
<td class="bbg-transparent">作业负责人</td>
<td class="bbg-transparent">作业负责人</td>
<td >{{ info.CONSTRUCTION_USER_NAME }}</td>
</tr>
<tr class="bgst-transparent">
@ -113,12 +113,12 @@
</td>
</tr>
<tr>
<td class="bbg-transparent">接受交底</td>
<td colspan="5">
<div v-if="info.ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<td v-if="imgList.length>0" class="bbg-transparent"></td>
<td v-if="imgList.length>0" colspan="5">
<div v-if="imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + info.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ info.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
<img v-viewer :src="config.fileUrl + imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ imgList[0].ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
@ -235,7 +235,8 @@ export default {
config: config,
info: {},
ImgList: [],
measuresList: []
measuresList: [],
imgList: []
}
},
created() {
@ -258,9 +259,26 @@ export default {
GANGKOU: this.gangkou
}
).then((data) => {
debugger
this.info = { ...data.pd, ...data.Info }
this.ImgList = data.ImgList
this.measuresList = data.measuresList
this.imgList = data.imgList
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 0) {
this.info.APPLY_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
}
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 1) {
this.info.CONSTRUCTION_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
}
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 2) {
this.info.PRODUCTION_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
}
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 3) {
this.info.SAFETY_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[3]
}
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 4) {
this.info.LEADER_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[4]
}
}).catch((e) => {
})
}

View File

@ -58,7 +58,7 @@
<td class="bbg-transparent">风险辨识结果</td>
<td colspan="5">{{ pd.RISK_IDENTIFICATION }}</td>
</tr>
<tr>
<tr v-if="gasList">
<td class="bbg-transparent" colspan="6">可燃气体分析运行的生产装置罐区和具有火灾爆炸危险场所</td>
</tr>
<template v-for="(item,index) in gasList">
@ -246,6 +246,9 @@ export default {
this.measuresList = data.measuresList // map
this.gasList = data.gasList // map
this.otherProtectiveMeasures = this.validStr(this.pd.OTHER_PROTECTIVE_MEASURES.replace(/;_;/g, '')) ? this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;') : []
this.info.CONFIRM_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.info.AUDIT_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
this.info.APPROVE_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
}).catch((e) => {
this.listLoading = false
})

View File

@ -57,7 +57,7 @@
<td class="bbg-transparent">风险辨识结果</td>
<td colspan="5">{{ info.RISK_IDENTIFICATION }}</td>
</tr>
<tr>
<tr v-if="gasList.length>0">
<td class="bbg-transparent" colspan="6">可燃气体分析运行的生产装置罐区和具有火灾爆炸危险场所</td>
</tr>
<template v-for="(item,index) in gasList">
@ -79,7 +79,7 @@
<td colspan="5">{{ formatDate(info.WORK_START_DATE,'YYYY年MM月DD日HH时mm分') }} {{ formatDate(info.WORK_END_DATE,'YYYY年MM月DD日HH时mm分') }}</td>
</tr>
<tr>
<tr v-if="measuresList.length>0">
<td colspan="6">
<table class="table-vi">
<tr class="bbg-transparent">
@ -120,9 +120,7 @@
</td>
</tr>
<tr>
<tr v-if="info.CONFESS_USER_SIGNER_TIME">
<td class="bbg-transparent">安全交底人</td>
<td colspan="10">
<div v-if="info.CONFESS_USER_SIGNER_PATH" style="text-align: right">
@ -132,17 +130,17 @@
</div>
</td>
</tr>
<tr>
<tr v-if="imgList.length>0">
<td class="bbg-transparent">接受交底人</td>
<td colspan="10">
<div v-if="info.ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<div v-if="imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + info.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ info.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
<img v-viewer :src="config.fileUrl + imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ imgList[0].ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<tr v-if="info.CONFIRM_USER_SIGNER_TIME">
<td colspan="6">
<div>作业负责人意见{{ info.CONFIRM_CONTENT }}</div>
<div style="text-align: right">
@ -152,7 +150,7 @@
</div>
</td>
</tr>
<tr>
<tr v-if="info.AUDIT_USER_SIGNER_TIME">
<td colspan="6">
<div>用电单位意见{{ info.AUDIT_CONTENT }}</div>
<div style="text-align: right">
@ -162,7 +160,7 @@
</div>
</td>
</tr>
<tr>
<tr v-if="info.APPROVE_USER_SIGNER_TIME">
<td colspan="6">
<div>配送电单位意见{{ info.APPROVE_CONTENT }}</div>
<div style="text-align: right">
@ -209,6 +207,7 @@ export default {
},
measuresList: [],
gasList: [],
imgList: [],
otherProtectiveMeasures: []
}
},
@ -235,23 +234,11 @@ export default {
this.info = data.pd
this.measuresList = data.measuresList
this.gasList = data.gasList
this.imgList = data.imgList
this.otherProtectiveMeasures = this.validStr(this.info.OTHER_PROTECTIVE_MEASURES.replace(/;_;/g, '')) ? this.info.OTHER_PROTECTIVE_MEASURES.split(';_;') : []
console.info(this.otherProtectiveMeasures)
if (!this.info.WORK_OPERATOR_ID) {
this.$set(this.info, 'WORK_OPERATOR_ID', [])
} else {
this.info.WORK_OPERATOR_ID = this.info.WORK_OPERATOR_ID.split(',')
}
if (!this.info.WORK_USER) {
this.$set(this.info, 'WORK_USER', [])
} else {
this.info.WORK_OPERATOR_NAME = this.info.WORK_USER.split(',')
}
if (!this.info.CARD_NO) {
this.$set(this.info, 'CARD_NO', [])
} else {
this.info.WORK_OPERATOR_NUMBER = this.info.CARD_NO.split(',')
}
this.info.CONFIRM_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.info.AUDIT_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
this.info.APPROVE_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
})
}
}

View File

@ -113,18 +113,18 @@
</div>
</td>
</tr>
<tr>
<tr v-if="imgList.length>0">
<td class="bbg-transparent">接受交底人</td>
<td colspan="4">
<div v-if="info.ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<div v-if="imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + info.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ info.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
<img v-viewer :src="config.fileUrl + imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ imgList[0].ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
<tr>
<tr v-if="info.CONSTRUCTION_USER_SIGNER_TIME">
<td colspan="4">
<div>作业负责人意见{{ info.CONSTRUCTION_CONTENT }}</div>
<div style="text-align: right">
@ -134,7 +134,7 @@
</div>
</td>
</tr>
<tr v-if="info.LEADER_USER_ID">
<tr v-if="info.LEADER_USER_SIGNER_TIME">
<td colspan="4">
<div>所在单位意见{{ info.LEADER_CONTENT }}</div>
<div style="text-align: right">
@ -144,7 +144,7 @@
</div>
</td>
</tr>
<tr v-if="info.AUDIT_USER_ID">
<tr v-if="info.AUDIT_USER_SIGNER_TIME">
<td colspan="4">
<div>审核部门意见{{ info.AUDIT_CONTENT }}</div>
<div style="text-align: right">
@ -154,7 +154,7 @@
</div>
</td>
</tr>
<tr v-if="info.APPROVE_USER_ID">
<tr v-if="info.APPROVE_USER_SIGNER_TIME">
<td colspan="4">
<div>审批部门意见{{ info.APPROVE_CONTENT }}</div>
<div style="text-align: right">
@ -198,7 +198,8 @@ export default {
info: {
OTHER_PROTECTIVE_MEASURES: []
},
measuresList: []
measuresList: [],
imgList: []
}
},
created() {
@ -223,7 +224,19 @@ export default {
).then((data) => {
this.info = data.pd
this.measuresList = data.measuresList
this.imgList = data.imgList
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 0) {
this.info.CONFIRM_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
}
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 1) {
this.info.LEADER_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
}
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 2) {
this.info.AUDIT_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
}
if (this.info.OTHER_PROTECTIVE_MEASURES.split(';_;').length > 3) {
this.info.APPROVE_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[3]
}
if (!this.info.OTHER_PROTECTIVE_MEASURES) {
this.info.OTHER_PROTECTIVE_MEASURES = []
} else {

View File

@ -42,12 +42,16 @@
<td colspan="2">
<span>{{ info.PART_WEIGHT }}t</span>
<span style="margin-left: 20px;">
{{ info.WORK_LEVEL == '1' ? '一级作业级别' : '' }}
{{ info.WORK_LEVEL == '2' ? '二级作业级别' : '' }}
{{ info.WORK_LEVEL == '3' ? '三级作业级别' : '' }}
</span>
{{ info.WORK_LEVEL == '1' ? '一级作业级别' : '' }}
{{ info.WORK_LEVEL == '2' ? '二级作业级别' : '' }}
{{ info.WORK_LEVEL == '3' ? '三级作业级别' : '' }}
</span>
</td>
</tr>
<tr>
<td class="bbg-transparent">关联的其他特殊作业及安全作业票编号</td>
<td colspan="5">{{ info.SPECIAL_WORK }}</td>
</tr>
<tr>
<td class="bbg-transparent">风险辨识结果</td>
<td colspan="5">{{ info.HAZARD_IDENTIFICATION }}</td>
@ -78,7 +82,7 @@
</tr>
<tr v-if="info.LEADER_USER_MEASURES || info.CONFIRM_USER_MEASURES || info.AUDIT_USER_MEASURES || info.APPROVE_USER_MEASURES">
<td>{{ measuresList.length + 1 }}</td>
<td colspan="2">
<td colspan="3">
<div v-if="info.LEADER_USER_MEASURES" style="display: flex;justify-content: space-between;">
<span>其他安全措施{{ info.LEADER_USER_MEASURES }}</span>
<span>编制人{{ info.LEADER_USER_NAME }}</span>
@ -110,13 +114,13 @@
</div>
</td>
</tr>
<tr>
<tr v-if="imgList.length>0">
<td class="bbg-transparent">接受交底人</td>
<td colspan="5">
<div v-if="info.ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<div v-if="imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" style="text-align: right">
<span>签字</span>
<img v-viewer :src="config.fileUrl + info.ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ info.ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
<img v-viewer :src="config.fileUrl + imgList[0].ACCEPT_CONFESS_USER_SIGNER_PATH" alt="" width="100" height="100">
<span>{{ imgList[0].ACCEPT_CONFESS_USER_SIGNER_TIME }}</span>
</div>
</td>
</tr>
@ -237,13 +241,34 @@ export default {
CRANE_DRIVER_NUMBER: []
},
measuresList: [],
oldSupplementaryMeasures: []
oldSupplementaryMeasures: [],
imgList: []
}
},
created() {
this.getData()
},
methods: {
handleStr(measuresList) {
for (let i = 0; i < measuresList.length; i++) {
//
const PROTECTIVE_MEASURES = measuresList[i].PROTECTIVE_MEASURES.split('')
for (let j = 1; j <= 3; j++) {
//
if (this.findCharIndex(PROTECTIVE_MEASURES, '', j) !== -1) {
//
PROTECTIVE_MEASURES.splice(
this.findCharIndex(PROTECTIVE_MEASURES, '', j) + 1,
0,
measuresList[i]['ANSWER' + j]
)
}
}
//
measuresList[i].PROTECTIVE_MEASURES = PROTECTIVE_MEASURES.join('')
}
return measuresList
},
formatDate(date, format) {
if (date) {
return moment(date).format(format)
@ -261,7 +286,12 @@ export default {
}
).then((data) => {
this.info = data.pd
this.measuresList = data.measuresList
this.measuresList = data.measuresList // map
this.imgList = data.imgList
this.info.LEADER_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.info.CONFIRM_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
this.info.AUDIT_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[2]
this.info.APPROVE_USER_MEASURES = this.info.OTHER_PROTECTIVE_MEASURES.split(';_;')[3]
if (!this.info.CRANE_DRIVER_ID) {
this.$set(this.info, 'CRANE_DRIVER_ID', [])
} else {

View File

@ -50,6 +50,10 @@
<peoplePositionNine v-if="type === 'peoplePositionNine'" :id="id" :type="type" :infoname="infoname"/>
<peoplePositionOne v-if="type === 'peoplePositionOne' && corpInfoId !== '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" />
<peoplePositionYGS v-if="type === 'peoplePositionOne' && corpInfoId === '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" />
<!-- 重点工程 start -->
<outSourceInfo v-if="type === 'PROJECT'" :id="id" :type="type" />
<outSourceVideoInfo v-if="type === 'VIDEO'" :id="id" :type="type" />
<!-- 重点工程 end -->
</el-dialog>
</div>
</template>
@ -91,8 +95,10 @@ import hoistingCfdD from './hoistingCfdD.vue'
import peoplePositionCfdD from './peoplePositionCfdD.vue'
import carPositionCfdD from './carPositionCfdD.vue'
import peoplePositionOne from './peoplePositionOne.vue'
import peoplePositionYGS from './peoplePositionYGS.vue'
import hotworkFirst from "./hotworkFirst";
import peoplePositionYGS from './peoplePositionYGS.vue'
import outSourceInfo from './outSourceInfo.vue'
import outSourceVideoInfo from './outSourceVideoInfo.vue'
export default {
components: {
@ -132,8 +138,11 @@ export default {
carPositionCfdD,
videoPlayBianjieruqin,
peoplePositionOne,
hotworkFirst,
peoplePositionOne,
peoplePositionYGS,
hotworkFirst
outSourceInfo,
outSourceVideoInfo
},
props: {
title: {

View File

@ -0,0 +1,178 @@
<template>
<div>
<div class="level-title">
<h1>重点工程详情</h1>
</div>
<table class="table-ui">
<tr>
<td class="bbg-transparent">重点工程名称</td>
<td colspan="3">{{ pd.OUTSOURCED_NAME }}</td>
</tr>
<tr v-if="pd.IS_CORP_TYPE == '0'">
<td class="bbg-transparent">股份主管部门</td>
<td>{{ pd.MANAGER_DEPARTMENT_NAME }}</td>
<td class="bbg-transparent">股份监管部门</td>
<td>{{ pd.DEPARTMENT_NAME }}</td>
</tr>
<tr v-if="pd.IS_CORP_TYPE == '0'">
<td class="bbg-transparent">辖区单位</td>
<td colspan="3">{{ pd.JURISDICTION_UNIT_NAME }}</td>
</tr>
<tr v-if="pd.IS_CORP_TYPE == '1'">
<td class="bbg-transparent">企业监督部门</td>
<td>{{ pd.DEPARTMENT_NAME }}</td>
<td class="bbg-transparent">企业主管部门</td>
<td>{{ pd.Q_COMPETENT_DEPT_NAME }}</td>
</tr>
<tr v-if="pd.IS_CORP_TYPE == '1'">
<td class="bbg-transparent">企业辖区部门</td>
<td colspan="4">{{ pd.INVOLVING_CORPS_DEPART_NAME }}</td>
</tr>
<tr>
<td class="bbg-transparent">集团单位</td>
<td colspan="3">{{ pd.GROUP_UNIT_NAME }}</td>
</tr>
<tr>
<td class="bbg-transparent">计划工期</td>
<td colspan="3">{{ pd.STARTTIME }} {{ pd.ENDTIME }}</td>
</tr>
<tr>
<td class="bbg-transparent">合同号</td>
<td colspan="3">{{ pd.CONTRACT_NUM }}</td>
</tr>
<tr>
<td class="bbg-transparent">施工相关方</td>
<td colspan="3">{{ pd.UNITS_NAME }}</td>
</tr>
<tr>
<td class="bbg-transparent">相关方单位工程负责人</td>
<td>{{ pd.UNITS_PIC_NAME }}</td>
<td class="bbg-transparent">相关方单位负责人手机</td>
<td>{{ pd.UNITS_PHONE }}</td>
</tr>
<tr>
<td class="bbg-transparent">监理单位名称</td>
<td colspan="3">{{ pd.MANAGE_CORPS_NAME }}</td>
</tr>
<tr>
<td class="bbg-transparent">监理单位工程负责人</td>
<td>{{ pd.MANAGE_PIC }}</td>
<td class="bbg-transparent">监理单位负责人手机</td>
<td >{{ pd.MANAGE_PHONE }}</td>
</tr>
<tr>
<td class="bbg-transparent">是否发送短信</td>
<td >
<span v-if="pd.IS_SMS === '0'"></span>
<span v-if="pd.IS_SMS === '1'"></span>
</td>
<td class="bbg-transparent">状态</td>
<td>
<span v-if="pd.STATE == 0"></span>
<span v-if="pd.STATE == 1"></span>
<span v-if="pd.STATE == 2"></span>
<span v-if="pd.STATE == -1"></span>
<span v-if="pd.STATE == -2"></span>
</td>
</tr>
<tr v-for="(item, index) in file9" :key="index">
<td class="bbg-transparent">安全管理协议{{ index + 1 }}</td>
<td colspan="2">{{ item.FILE_NAME }}</td>
<td><el-button type="primary" @click="downloadFile(item.FILEPATH)"></el-button></td>
</tr>
<div class="level-line" />
<div class="level-title">
<h1>处罚相关</h1>
</div>
<tr v-for="(item,index) in punishThePerson" :key="index">
<td class="bbg-transparent">处罚人员部门</td>
<td>{{ item.punishname }}</td>
<td class="bbg-transparent">处罚人员</td>
<td>{{ item.NAME }}</td>
</tr>
</table>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import moment from 'moment/moment'
export default {
props: {
id: {
type: String,
default() {
return ''
}
},
type: {
type: String,
default() {
return ''
}
},
gangkou: {
type: String,
default: ''
}
},
data() {
return {
config: config,
pd: {
WORK_OPERATOR_ID: [],
WORK_OPERATOR_NAME: [],
WORK_OPERATOR_NUMBER: []
},
punishThePerson: [],
file9: []
}
},
created() {
this.getData()
},
methods: {
formatDate(date, format) {
if (date) {
return moment(date).format(format)
} else {
return ''
}
},
getData() {
requestFN(
'/map/keyProject/getById',
{
id: this.id,
TYPE: this.type,
GANGKOU: this.gangkou
}
).then(data => {
this.pd = data.pd
this.punishThePerson = data.punishThePerson
this.file9 = data.file9
})
},
downloadFile(filePath) {
this.$confirm('确定要下载此文件吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = false
// window.location.href = config.httpurl + 'outsourced/download?OUTSOURCED_ID=' + OUTSOURCED_ID
window.open(config.fileUrl + filePath)
}).catch(() => {
this.listLoading = false
})
this.listLoading = false
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -0,0 +1,140 @@
<template>
<div>
<div class="level-title">
<h1>视频信息</h1>
</div>
<table class="table-ui">
<tr>
<td class="bbg-transparent">视频名称</td>
<td colspan="3">{{ pd.VIDEONAME }}</td>
</tr>
<tr>
<td class="bbg-transparent">所属重点工程</td>
<td>{{ pd.OUTSOURCED_NAME }}</td>
<td class="bbg-transparent">所属公司</td>
<td>{{ pd.CORP_NAME }}</td>
</tr>
</table>
<iframe v-if="!pd.PLATFORMVIDEOMANAGEMENT_ID" :src="VIDEOURL" width="100%" height="380" allowfullscreen allow="autoplay; fullscreen;microphone" style="position: relative;border:none"/>
<div v-if="pd.PLATFORMVIDEOMANAGEMENT_ID" id="aLiVideoPlayer" class="prism-player"/>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import moment from 'moment/moment'
export default {
props: {
id: {
type: String,
default() {
return ''
}
},
type: {
type: String,
default() {
return ''
}
},
gangkou: {
type: String,
default: ''
}
},
data() {
return {
config: config,
pd: {
WORK_OPERATOR_ID: [],
WORK_OPERATOR_NAME: [],
WORK_OPERATOR_NUMBER: []
},
VIDEOURL: ''
}
},
created() {
this.getData()
},
methods: {
//
start() {
console.log('定时器开启')
this.timer = setInterval(this.closeVideoStart, (5 * 60 * 1000)) // 5;
},
over() {
//
console.log('定时器自动关闭')
clearInterval(this.timer)
},
closeVideoStart() {
this.dialogVideo = false
this.dialogVideoHLS = false
this.dialogVideoBack = false
this.dialogVideoAll = false
this.over()
},
formatDate(date, format) {
if (date) {
return moment(date).format(format)
} else {
return ''
}
},
getData() {
this.$message.warning('单次播放最多五分钟')
this.start()
requestFN(
'/map/keyProject/getById',
{
id: this.id,
TYPE: this.type,
GANGKOU: this.gangkou
}
).then(data => {
this.pd = data.pd
console.log(this.pd)
if (!this.pd.PLATFORMVIDEOMANAGEMENT_ID) {
console.log(1)
this.VIDEOURL = this.pd.VIDEOURL
} else {
console.log(2)
requestFN(
'/platformvideomanagement/getHlsPath',
{
INDEXCODE: this.pd.INDEXCODE
}
).then((res) => {
console.log(res)
this.$nextTick(() => {
// eslint-disable-next-line no-undef
this.player = new Aliplayer({
'id': 'aLiVideoPlayer',
'source': res.data.url,
'width': '100%',
'height': '500px',
'autoplay': true,
'isLive': true,
'rePlay': false,
'playsinline': true,
'preload': true,
'controlBarVisibility': 'hover',
'useH5Prism': true
}, function(player) {
console.log('The player is created')
})
})
}).catch((e) => {
this.over()
})
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -690,7 +690,7 @@ export default {
img: require('../../assets/map/gangkou_index/img11.png'),
checkImg: require('../../assets/map/gangkou_index/img11_on.png'),
label: '边界入侵',
containAuthorization: [],
containAuthorization: ['035958e685cf4850bc40151c5e0617a6'],
eliminateAuthorization: [],
pointUrl: '/map/mapPlatformelectronic/listAllLocation',
list: [
@ -712,13 +712,13 @@ export default {
label: '重点工程',
containAuthorization: [],
eliminateAuthorization: [],
pointUrl: '/map/mapPlatformelectronic/listAllLocation',
pointUrl: '/map/keyProject/listAllLocation',
list: [
{
label: '重点工程定位',
dialog_width: '1200px',
check: false,
type: 'bianjieruqin',
type: 'PROJECT',
img: require('../../assets/map/gangkou_index/buttom/ico27.png'),
checkImg: require('../../assets/map/gangkou_index/buttom/ico27_on.png'),
containAuthorization: [],
@ -728,7 +728,7 @@ export default {
label: '视频定位',
dialog_width: '1200px',
check: false,
type: 'bianjieruqin',
type: 'VIDEO',
img: require('../../assets/map/gangkou_index/buttom/ico26.png'),
checkImg: require('../../assets/map/gangkou_index/buttom/ico26_on.png'),
containAuthorization: [],

View File

@ -43,10 +43,13 @@ const img5_0 = require('../../../assets/map/gangkou_index/point/ico26.png')
const img6_0 = require('../../../assets/map/gangkou_index/point/ico26.png')
const img7_0 = require('../../../assets/map/gangkou_index/point/ico23.png')
const img7_1 = require('../../../assets/map/gangkou_index/point/ico24.png')
const img7_2 = require('../../../assets/map/gangkou_index/point/ico25.png')
const img7_3 = require('../../../assets/map/gangkou_index/point/ico26.png')
const img7_0 = require('../../../assets/map/gangkou_index/point/ico30.png')
const img7_1 = require('../../../assets/map/gangkou_index/point/ico31.png')
const img8_0 = require('../../../assets/map/gangkou_index/point/ico23.png')
const img8_1 = require('../../../assets/map/gangkou_index/point/ico24.png')
const img8_2 = require('../../../assets/map/gangkou_index/point/ico25.png')
const img8_3 = require('../../../assets/map/gangkou_index/point/ico26.png')
const imgMap = {
img0_0, img0_1, img0_2,
@ -56,7 +59,8 @@ const imgMap = {
img4_0, img4_0_1, img4_0_2, img4_0_3, img4_1,
img5_0,
img6_0,
img7_0, img7_1, img7_2, img7_3,
img7_0, img7_1,
img8_0, img8_1, img8_2, img8_3,
cfd_img1_0, cfd_img1_0_1, cfd_img1_0_2, cfd_img1_0_3
}
export { imgMap }

View File

@ -311,48 +311,6 @@ import { upload } from '@/utils/upload'
export default {
components: { SelectTree },
data() {
/* var hasName = (rule, value, callback) => {
requestFN(
'/corpinfo/hasName',
{
RELEVANT_UNIT_NAME: value,
CORPINFO_ID: ''
}
).then((data) => {
if (data.pd) {
if (data.pd.CORPINFO_ID === this.$parent.CORPINFO_ID) {
callback()
} else {
callback(new Error('单位名称重复'))
}
}
callback()
}).catch((e) => {
callback()
})
} */
/* var hasSocialCode = (rule, value, callback) => {
requestFN(
'/corpinfo/hasSocialCode',
{
SOCIAL_CODE: value,
CORPINFO_ID: ''
}
).then((data) => {
if (data.pd) {
if (data.pd.CORPINFO_ID === this.$parent.CORPINFO_ID) {
callback()
} else {
callback(new Error('统一社会信用代码重复'))
}
}
callback()
}).catch((e) => {
callback()
})
} */
return {
dataForm: {
MAIN_DEPARTMENT: '',
@ -466,23 +424,8 @@ export default {
ecoArr: [],
ecoNameArr: [],
INDUSTRY: '',
// imgUrl: require('@/assets/images/map.png'),
rules: {
MAIN_DEPARTMENT: [{ required: true, message: '主管部门不能为空', trigger: 'blur' }],
/* RELEVANT_UNIT_NAME: [
{ required: true, message: '单位名字不能为空', trigger: 'blur' },
{ validator: hasName, trigger: 'blur' }
], */
/* SOCIAL_CODE: [
{ required: true, message: '统一社会信用代码不能为空', trigger: 'blur' },
{ validator: hasSocialCode, trigger: 'blur' },
{
pattern: /^[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/,
message: '请输入正确的统一社会信用代码'
}
], */
// POSSESSION: [{ required: true, message: '', trigger: 'blur' }],
// INDUSTRY: [{ required: true, message: ' (GB-T4754-2017)', trigger: 'blur' }],
ECONOMIC_TYPE: [{ required: true, message: '请选择经济类型', trigger: 'blur' }],
LONGITUDE: [{ required: true, message: '请选择经度', trigger: 'blur' }],
LATITUDE: [{ required: true, message: '请选择纬度', trigger: 'blur' }],
@ -645,22 +588,6 @@ export default {
this.$nextTick(() => { // 使
this.$refs.deptTree.handleNodeClick(node)
})
/* this.OLDFOURTYPE = data.pd.FOURTYPE
this.form = Object.assign(this.form, data.pd)
//
if (data.pd.industryOption && data.pd.industryOption.length > 0) {
this.hylxList = data.pd.industryOption
} else {
this.getDictByDicId('f2598ba72e864eadabf0ca4b664d26b9').then(data => {
this.hylxList = data
})
}
//
if (data.dep) {
this.mainDepartment = data.dep.MAIN_REGULATORY_DEPARTMENT_NAME
this.regulatoryDepartment = data.dep.REGULATORY_DEPARTMENT_NAME
}
console.log('this.form', this.form) */
resolve()
}).catch((e) => {
this.$message({
@ -673,9 +600,6 @@ export default {
})
},
getNextTickData() {
// this.$nextTick(() => {
// this.$refs.ecoCascader.presentText = this.censusRegisterPlaceName
// })
if (this.form.CORP_OF_TYPE2 && this.form.CORP_OF_TYPE2 != '') {
const node = {}
node.id = this.form.CORP_OF_TYPE2
@ -689,11 +613,6 @@ export default {
this.$refs.corpOfTypeRef.handleNodeClick(node)
})
}
// const nodea = {}
// nodea.id = this.form.TRAINTYPE
// this.$nextTick(() => { // 使
// this.$refs.keyHyRef.handleNodeClick(nodea)
// })
this.$forceUpdate()
},
/** 上级企业选择 Begin */
@ -709,11 +628,6 @@ export default {
this.form.CORP_GROUP = this.validStr(corp.CORP_GROUP) ? corp.CORP_GROUP : corp.CORPINFO_ID
this.form.CORP_GROUP_NAME = this.validStr(corp.CORP_GROUP_NAME) ? corp.CORP_GROUP_NAME : corp.CORP_NAME
this.form.CORP_PARENTS = (this.validStr(corp.CORP_PARENTS) ? corp.CORP_PARENTS : ',') + corp.CORPINFO_ID + ','
// console.log('this.form.CORP_PARENT', this.form.CORP_PARENT)
// console.log('this.form.CORP_PARENT_NAME', this.form.CORP_PARENT_NAME)
// console.log('this.form.CORP_GROUP', this.form.CORP_GROUP)
// console.log('this.form.CORP_GROUP_NAME', this.form.CORP_GROUP_NAME)
// console.log('this.form.CORP_PARENTS', this.form.CORP_PARENTS)
this.dialogParentCorp = false
},
/** 上级企业选择 End */
@ -752,21 +666,6 @@ export default {
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
/* if (this.dataForm.POSSESSION && this.dataForm.POSSESSION.length > 0) {
this.dataForm.PROVINCE = this.dataForm.POSSESSION[0] || ''
this.dataForm.CITY = this.dataForm.POSSESSION[1] || ''
this.dataForm.COUNTY = this.dataForm.POSSESSION[2] || ''
this.dataForm.VILLAGE = this.dataForm.POSSESSION[3] || ''
this.dataForm.STREET = this.dataForm.POSSESSION[4] || ''
this.dataForm.COMPANY_AREA = this.$refs.POSSESSION.getCheckedNodes()[0].pathLabels ? this.$refs.POSSESSION.getCheckedNodes()[0].pathLabels.join(',') : ''
}
if (_this.dataForm.INDUSTRYALL && _this.dataForm.INDUSTRYALL.length > 0) {
_this.dataForm.CORP_TYPE = _this.dataForm.INDUSTRYALL[0] || ''
_this.dataForm.CORP_TYPE2 = _this.dataForm.INDUSTRYALL[1] || ''
_this.dataForm.CORP_TYPE3 = _this.dataForm.INDUSTRYALL[2] || ''
_this.dataForm.CORP_TYPE4 = _this.dataForm.INDUSTRYALL[3] || ''
_this.dataForm.CORP_TYPE_NAME = _this.$refs.industryCascader.getCheckedNodes()[0].pathLabels ? _this.$refs.industryCascader.getCheckedNodes()[0].pathLabels.join('/') : ''
} */
const formData = new FormData()
Object.keys(this.dataForm).map(key => {

View File

@ -62,6 +62,8 @@
</template>
</el-table-column>
<el-table-column prop="fourCount" label="四色图数"/>
<el-table-column prop="threePeopleCount" label="三人以上分布图数"/>
<el-table-column prop="PeoplesCount" label="人员聚集场所分布图数"/>
<el-table-column label="操作" align="center" width="200">
<template slot-scope="{row}">
<el-button type="success" icon="el-icon-view" size="mini" @click="goDetails(row.CORPINFO_ID)"></el-button>

View File

@ -35,6 +35,11 @@
{{ row.NAME }}&nbsp;
</template>
</el-table-column>
<el-table-column label="风险类型" >
<template slot-scope="{row}">
{{ row.TYPE === '1'?'风险四色图':row.TYPE === '3'?'三人以上分布图':'人员聚集场所分布图' }}&nbsp;
</template>
</el-table-column>
<el-table-column prop="imgPatn" label="图片" >
<template slot-scope="{row}">
<viewer>

View File

@ -7,19 +7,6 @@
<el-input v-model="XGF_NAME" placeholder="相关方名称"/>
</el-form-item>
</el-col>
<!-- <el-col :span="6">-->
<!-- <el-form-item label="审核通过时间">-->
<!-- <el-date-picker-->
<!-- v-model="dates"-->
<!-- type="daterange"-->
<!-- range-separator="至"-->
<!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- style="width: 100%;"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="3">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
@ -38,7 +25,7 @@
<el-table-column prop="CREATTIME" width="150" label="申请时间" />
<el-table-column prop="SUPERVISION_DEPARTMENT_NAME" label="安全监督部" width="150" />
<el-table-column prop="SUPERVISION_USER_NAME" label="安全监督部人员" width="150" />
<el-table-column prop="MANAGER_DEPARTMENT_NAME" label="主管部门" width="150" />
<el-table-column prop="MANAGER_DEPT_NAME" label="主管部门" width="150" />
<el-table-column prop="MANAGER_USER_NAME" label="主管部门人员" width="150" />
<el-table-column prop="TERRITORIALITY_DEPARTMENT_NAME" label="属地管理部门" width="150" />
<el-table-column prop="TERRITORIALITY_USER_NAME" label="属地管理部门人员" width="150" />
@ -47,16 +34,6 @@
{{ new Date(row.CREATTIME).getFullYear() }}
</template>
</el-table-column>
<!-- <el-table-column prop="AUDIT_STATUS" label="审核状态" width="150">-->
<!-- <template slot-scope="{row}">-->
<!-- <span v-if="row.AUDIT_STATUS === 0"></span>-->
<!-- <span v-if="row.AUDIT_STATUS === 1"></span>-->
<!-- <span v-if="row.AUDIT_STATUS === 2"></span>-->
<!-- <span v-if="row.AUDIT_STATUS === 3"></span>-->
<!-- <span v-if="row.AUDIT_STATUS === -1"></span>-->
<!-- <span v-if="row.AUDIT_STATUS === -2"></span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="申请通过人数" width="120">
<template slot-scope="{row}">
<span v-if="row.PASS_COUNT">{{ row.PASS_COUNT }}</span>

View File

@ -9,12 +9,6 @@
width="60%">
<div class="level-title mt-20" style="display: flex;justify-content: space-between;">
<h1>申请信息</h1>
<!-- <span v-if="pd.AUDIT_STATUS === 0"></span>-->
<!-- <span v-if="pd.AUDIT_STATUS === 1"></span>-->
<!-- <span v-if="pd.AUDIT_STATUS === 2"></span>-->
<!-- <span v-if="pd.AUDIT_STATUS === 3"></span>-->
<!-- <span v-if="pd.AUDIT_STATUS === -1"></span>-->
<!-- <span v-if="pd.AUDIT_STATUS === -2"></span>-->
</div>
<table class="table-ui" style="margin-bottom: 20px;">
<tr>
@ -55,15 +49,6 @@
<td colspan="5">{{ pd.AUDIT_DESCR }}</td>
</tr>
<!-- <tr>-->
<!-- <th>委托审核单位</th>-->
<!-- <td>{{ pd.TRAIN_CORP_DEPT_NAME }}</td>-->
<!-- <th>审核人</th>-->
<!-- <td>{{ pd.TRAIN_CORP_LEADER_NAME }}</td>-->
<!-- <th>验证时间</th>-->
<!-- <td>{{ pd.VERIFY_TIME }}</td>-->
<!-- </tr>-->
<tr v-if="pd.CORP_AUDIT_DESCR">
<th>分公司意见</th>
<td colspan="5">{{ pd.CORP_AUDIT_DESCR }}</td>
@ -85,18 +70,10 @@
<el-tag v-else type="success">待审核</el-tag>
</template>
</el-table-column>
<!-- <el-table-column prop="STATUS" label="培训状态" >-->
<!-- <template slot-scope="{row}">-->
<!-- <span v-if="row.STATUS === 0"></span>-->
<!-- <span v-if="row.STATUS === 1"></span>-->
<!-- <span v-if="row.STATUS === 2"></span>-->
<!-- <span v-if="row.STATUS === -1"></span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="操作" align="center" width="220">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleShow(row.USER_ID)"></el-button>
<el-button v-if="row.MANAGER_STATE === 1 && row.SUPERVISION_STATE === 1 && row.TERRITORIALITY_STATE === 1" type="primary" icon="el-icon-edit" size="mini" @click="handleCardShow(row.TRAINUSERS_ID)"></el-button>
<el-button v-if="row.MANAGER_STATE === 1 && row.SUPERVISION_STATE === 1 && row.TERRITORIALITY_STATE === 1 && row.AUDIT_STATUS === 3" type="primary" icon="el-icon-edit" size="mini" @click="handleCardShow(row.TRAINUSERS_ID)"></el-button>
</template>
</el-table-column>
</el-table>
@ -167,7 +144,7 @@
<tr>
<th>民族</th>
<td>{{ userDetailForm.minzuName }}</td>
<td>{{ userDetailForm.minzuName ? userDetailForm.minzuName : '暂无信息' }}</td>
<th>婚姻状况</th>
<td>{{ userDetailForm.MARITALSTATUS === '0' ? '未婚' : '已婚' }}</td>
<th>政治面貌</th>
@ -179,48 +156,18 @@
<tr>
<th>户口所在地</th>
<td>{{ userDetailForm.HKLOCAL }}</td>
<td>{{ userDetailForm.HKLOCAL ? userDetailForm.HKLOCAL : '暂无信息' }}</td>
<th>现住址</th>
<td>{{ userDetailForm.ADDRESS }}</td>
<td>{{ userDetailForm.ADDRESS ? userDetailForm.ADDRESS : '暂无信息' }}</td>
<th>联系电话</th>
<td>{{ userDetailForm.PHONE }}</td>
</tr>
<tr>
<th>文化程度</th>
<td>{{ userDetailForm.DEGREE_OF_EDUCATION_NAME }}</td>
<!-- <th>本企业从业开始日期</th>-->
<!-- <td>{{ userDetailForm.CORP_START_DATE }}</td>-->
<th>岗位名称(工种)</th>
<td colspan="3">{{ userDetailForm.POST_ID }}</td>
</tr>
<!-- <tr>-->
<!-- <th>本岗位从业开始日期</th>-->
<!-- <td colspan="5">{{ userDetailForm.ENTRY_DATE }}</td>-->
<!-- &lt;!&ndash; <th>是否按期缴纳工伤保险</th>&ndash;&gt;-->
<!-- &lt;!&ndash; <td>{{ formatLabel(userDetailForm.IS_INJURIES_PAY) }}</td>&ndash;&gt;-->
<!-- &lt;!&ndash; <th>工种</th>&ndash;&gt;-->
<!-- &lt;!&ndash; <td>{{ userDetailForm.PERSON_WORK_TYPE }}</td>&ndash;&gt;-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <th>是否签订劳动合同</th>-->
<!-- <td :colspan="userDetailForm.IS_SIGN_LABOR === '1' ? '' : 5">-->
<!-- {{ formatLabel(userDetailForm.IS_SIGN_LABOR) }}-->
<!-- </td>-->
<!-- <th v-if="userDetailForm.IS_SIGN_LABOR === '1'"></th>-->
<!-- <td v-if="userDetailForm.IS_SIGN_LABOR === '1'" colspan="3">-->
<!-- <span>-->
<!-- <viewer>-->
<!-- <img-->
<!-- v-for="item in contractFileList"-->
<!-- :src="config.fileUrl + item.FILEPATH"-->
<!-- :key="item.IMGFILES_ID"-->
<!-- width="40"-->
<!-- height="40"-->
<!-- style="object-fit: cover;">-->
<!-- </viewer>-->
<!-- </span>-->
<!-- </td>-->
<!-- </tr>-->
<tr>
<th>是否缴纳社保</th>
<td :colspan="userDetailForm.IS_SOCIAL === '1' ? '':5">{{ formatLabel(userDetailForm.IS_SOCIAL) }}</td>
@ -246,8 +193,8 @@
<tr>
<th>是否参加三级安全培训</th>
<td >{{ formatLabel(userDetailForm.IS_LEVEL_THREE) }}</td>
<th>三级安全培训照</th>
<td v-if="photosOfLevel.length>0" colspan="3">
<th v-if="userDetailForm.IS_LEVEL_THREE == 1"></th>
<td v-if="userDetailForm.IS_LEVEL_THREE == 1 && photosOfLevel.length>0" colspan="3">
<span>
<div class="img-flex">
<viewer>
@ -263,53 +210,7 @@
</span>
</td>
</tr>
<!-- <tr>-->
<!-- <th>是否按期缴纳工伤保险</th>-->
<!-- <td :colspan="userDetailForm.IS_INJURIES_PAY === '1' ? '':5">{{ formatLabel(userDetailForm.IS_INJURIES_PAY) }}</td>-->
<!-- <th v-if="userDetailForm.IS_INJURIES_PAY === '1'"></th>-->
<!-- <td v-if="userDetailForm.IS_INJURIES_PAY === '1'">{{ userDetailForm.IS_INJURIES_PAY_TIME }}</td>-->
<!-- <th v-if="userDetailForm.IS_INJURIES_PAY === '1'"></th>-->
<!-- <td v-if="userDetailForm.IS_INJURIES_PAY === '1'">-->
<!-- <span>-->
<!-- <viewer>-->
<!-- <img-->
<!-- v-for="item in gongshangbaoxianFile"-->
<!-- :src="config.fileUrl + item.FILEPATH"-->
<!-- :key="item.IMGFILES_ID"-->
<!-- width="40"-->
<!-- height="40"-->
<!-- style="object-fit: cover;">-->
<!-- </viewer>-->
<!-- </span>-->
<!-- </td>-->
<!-- </tr>-->
<!-- <tr>-->
<!-- <th>是否缴纳商业保险</th>-->
<!-- <td :colspan="userDetailForm.ISPAY === '1' ? '' : 5">-->
<!-- {{ formatLabel(userDetailForm.ISPAY) }}-->
<!-- </td>-->
<!-- <th v-if="userDetailForm.ISPAY === '1'"></th>-->
<!-- <td v-if="userDetailForm.ISPAY === '1'">-->
<!-- <span>-->
<!-- <viewer>-->
<!-- <img-->
<!-- v-for="item in insuranceFileList"-->
<!-- :src="config.fileUrl + item.FILEPATH"-->
<!-- :key="item.IMGFILES_ID"-->
<!-- width="40"-->
<!-- height="40"-->
<!-- style="object-fit: cover;">-->
<!-- </viewer>-->
<!-- </span>-->
<!-- </td>-->
<!-- <th v-if="userDetailForm.ISPAY === '1'"></th>-->
<!-- <td v-if="userDetailForm.ISPAY === '1'">{{ userDetailForm.ISPAY_NUMBER }}</td>-->
<!-- </tr>-->
<tr>
<!-- <th>安全告知培训是否合格</th>-->
<!-- <td>{{ formatLabel(userDetailForm.IS_SAFETY_TELL) }}</td>-->
<!-- <th>安全告知培训合格日期</th>-->
<!-- <td>{{ userDetailForm.IS_SAFETY_TIME }}</td>-->
<th>是否缴纳保险</th>
<td >{{ formatLabel(userDetailForm.IS_BF) }}</td>
<th>是否特殊工种</th>
@ -317,13 +218,6 @@
<th>是否流动人员</th>
<td>{{ formatLabel(userDetailForm.ISFLOW) }}</td>
</tr>
<!-- <tr>-->
<!-- <th>流动范围</th>-->
<!-- <td colspan="3">{{ userDetailForm.TRAIN_AREA }}</td>-->
<!-- </tr>-->
<tr v-if="message != ''">
<th>打回人</th>
<td>{{ operator }}</td>
@ -354,9 +248,6 @@
<td>{{ item.REVIEW_TIME }}</td>
<th>有效期</th>
<td colspan="3">{{ item.VALIDITY_TIME_START }} {{ item.VALIDITY_TIME_END }}</td>
<!-- &lt;!&ndash; <td v-if="!userEntryForm.TRAIN_AREA"></td>&ndash;&gt;-->
<!-- &lt;!&ndash; <td v-else style="color: #04a9f5; cursor: pointer" @click="showQRCode(userEntryForm.USER_ID)"></td>&ndash;&gt;-->
</tr>
</table>
<div slot="footer" class="dialog-footer">

View File

@ -7,23 +7,6 @@
<el-input v-model="XGF_NAME" placeholder="相关方名称"/>
</el-form-item>
</el-col>
<!-- <el-col :span="6">-->
<!-- <el-form-item-->
<!-- label="培训部门"-->
<!-- >-->
<!-- <Treeselect-->
<!-- :options="treeData"-->
<!-- :normalizer="normalizer"-->
<!-- v-model="TRAIN_CORP_DEPTS"-->
<!-- :multiple="true"-->
<!-- :limit="1"-->
<!-- placeholder="请选择部门"-->
<!-- no-options-text="暂无数据"-->
<!-- no-children-text="暂无数据"-->
<!-- style="width: 100%;"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="6">
<el-form-item label="申请时间">
<el-date-picker
@ -37,13 +20,6 @@
/>
</el-form-item>
</el-col>
<!-- <el-col :span="4">-->
<!-- <el-form-item label="申请状态">-->
<!-- <el-select v-model="AUDIT_STATUS" placeholder="请选择申请状态" clearable >-->
<!-- <el-option v-for="item in statusList" :key="item.value" :label="item.label" :value="item.value" />-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col :span="3">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
@ -78,38 +54,11 @@
<span v-if="row.AUDIT_STATUS === 1"></span>
<span v-if="row.AUDIT_STATUS === 2"></span>
<span v-if="row.AUDIT_STATUS === 3"></span>
<!-- <span v-if="row.AUDIT_STATUS === 0 && row.supervisionCount != row.USER_COUNT && row.territorialityCount == row.USER_COUNT || row.managerCount == row.USER_COUNT "></span>-->
<!-- <span v-if="row.AUDIT_STATUS === 0 && (row.supervisionCount == row.USER_COUNT && row.territorialityCount != row.USER_COUNT || row.managerCount != row.USER_COUNT )"></span>-->
<!-- <span v-if="row.AUDIT_STATUS === 0 && (row.supervisionCount == row.USER_COUNT && row.territorialityCount == row.USER_COUNT && row.managerCount == row.USER_COUNT )"></span>-->
</template>
</el-table-column>
<!-- <el-table-column prop="corpTypeName" label="集团单位" />-->
<!-- <el-table-column prop="AUDIT_DEPARTMENT_NAME" label="委托部门" />-->
<!-- <el-table-column prop="ENTRUST_TIME" label="委托时间" />-->
<!-- <el-table-column prop="RELEVANT_UNIT_NAME" label="相关方单位" />-->
<!-- <el-table-column prop="MAIN_DEPARTMENT_NAME" label="股份主管部门" align="center" width="120px"/>-->
<!-- <el-table-column prop="SUPERVISE_CORPINFO_NAME" label="基层单位主管公司" align="center" width="120px"/>-->
<!-- <el-table-column prop="SUPERVISE_DEPARTMENT_NAME" label="基层单位主管部门" align="center" width="120px"/>-->
<!-- <el-table-column prop="CREATTIME" label="申请时间" />-->
<!-- <el-table-column prop="CREATOR_NAME" label="申请人员" />-->
<!-- <el-table-column prop="TRAIN_AREA_NAME" label="流动范围" />-->
<!-- -->
<!-- -->
<!-- <el-table-column prop="AUDIT_STATUS" label="申请状态" >-->
<!-- <template slot-scope="{row}">-->
<!-- <span v-if="row.AUDIT_STATUS === 0"></span>-->
<!-- <span v-if="row.AUDIT_STATUS === 1"></span>-->
<!-- <span v-if="row.AUDIT_STATUS === 2"></span>-->
<!-- <span v-if="row.AUDIT_STATUS === 3"></span>-->
<!-- <span v-if="row.AUDIT_STATUS === -1"></span>-->
<!-- <span v-if="row.AUDIT_STATUS === -2"></span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column prop="USER_COUNT" label="批次人数" />-->
<el-table-column label="操作" align="center" width="200">
<template slot-scope="{row}">
<el-button v-if="(row.AUDIT_STATUS === 0 || row.AUDIT_STATUS === -2) && (row.SUPERVISION_USER_ID == USER_ID && row.supervisionCount != row.USER_COUNT ) " type="success" icon="el-icon-edit" size="mini" @click="handleAudit(row)"></el-button>
<el-button v-if="(row.AUDIT_STATUS === 0 || row.AUDIT_STATUS === -2) && ((row.MANAGER_USER_ID === USER_ID && row.managerCount !== row.USER_COUNT ) || (row.TERRITORIALITY_USER_ID === USER_ID && row.territorialityCount !== row.USER_COUNT ) || (row.SUPERVISION_USER_ID === USER_ID && row.supervisionCount !== row.USER_COUNT )) " type="success" icon="el-icon-edit" size="mini" @click="handleAudit(row)"></el-button>
<el-button v-else type="primary" icon="el-icon-edit" size="mini" @click="handleShow(row)"></el-button>
</template>
</el-table-column>
@ -200,7 +149,6 @@ export default {
ENDTIME: this.dates[1],
TRAIN_CORP_DEPTS: this.TRAIN_CORP_DEPTS.join(','),
AUDIT_STATUS: this.AUDIT_STATUS,
TYPE: 2,
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID
}
).then((data) => {

View File

@ -9,12 +9,6 @@
width="60%">
<div class="level-title mt-20" style="display: flex;justify-content: space-between;">
<h1>申请信息</h1>
<!-- <span v-if="pd.AUDIT_STATUS === 0"></span>-->
<!-- <span v-if="pd.AUDIT_STATUS === 1"></span>-->
<!-- <span v-if="pd.AUDIT_STATUS === 2"></span>-->
<!-- <span v-if="pd.AUDIT_STATUS === 3"></span>-->
<!-- <span v-if="pd.AUDIT_STATUS === -1"></span>-->
<!-- <span v-if="pd.AUDIT_STATUS === -2"></span>-->
</div>
<table class="table-ui" style="margin-bottom: 20px;">
<tr>
@ -30,7 +24,7 @@
<th>安全监督部门</th>
<td>{{ pd.SUPERVISION_DEPT_NAME }}</td>
<th>审核人员</th>
<td>{{ pd.SUPERVISION_USER_USERNAME }}</td>
<td>{{ pd.SUPERVISION_USER_NAME }}</td>
<th>审核时间</th>
<td>{{ pd.SUPERVISION_TIME }}</td>
</tr>
@ -38,7 +32,7 @@
<th>主管部门</th>
<td>{{ pd.MANAGER_DEPT_NAME }}</td>
<th>审核人员</th>
<td>{{ pd.MANAGER_USER_USERNAME }}</td>
<td>{{ pd.MANAGER_USER_NAME }}</td>
<th>审核时间</th>
<td>{{ pd.MANAGER_TIME }}</td>
</tr>
@ -46,7 +40,7 @@
<th>管理部门</th>
<td>{{ pd.ERRITORIALITY_DEPT_NAME }}</td>
<th>审核人员</th>
<td>{{ pd.ERRITORIALITY_USER_USERNAME }}</td>
<td>{{ pd.ERRITORIALITY_USER_NAME }}</td>
<th>审核时间</th>
<td>{{ pd.TERRITORIALITY_TIME }}</td>
</tr>
@ -59,42 +53,48 @@
<div class="level-title">
<h1>申请人员列表</h1>
</div>
<el-table ref="multipleTable" :data="userList" :header-cell-style="{'font-weight': 'bold','color': '#000'}" tooltip-effect="dark" border fit highlight-current-row>
<el-table-column type="selection" width="55" align="center" />
<el-table-column type="index" label="序号" width="50" align="center" />
<el-table-column prop="USERNAME" label="用户名" />
<el-table-column prop="NAME" label="姓名" />
<el-table-column prop="DEPARTMENT_NAME" label="部门" />
<!-- <el-table-column prop="STATUS" label="培训状态" >-->
<!-- <template slot-scope="{row}">-->
<!-- <span v-if="row.STATUS === 0"></span>-->
<!-- <span v-if="row.STATUS === 1"></span>-->
<!-- <span v-if="row.STATUS === 2"></span>-->
<!-- <span v-if="row.STATUS === -1"></span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column prop="STATUS" label="评审状态" >
<el-table
ref="multipleTable"
:data="userList"
:header-cell-style="{'font-weight': 'bold','color': '#000'}"
:row-class-name="tableRowClassName"
tooltip-effect="dark"
border
fit
highlight-current-row>
<el-table-column type="selection" width="55" align="center"/>
<el-table-column type="index" label="序号" width="50" align="center"/>
<el-table-column prop="USERNAME" label="用户名"/>
<el-table-column prop="NAME" label="姓名"/>
<el-table-column prop="DEPARTMENT_NAME" label="部门"/>
<el-table-column prop="STATUS" label="评审状态">
<template slot-scope="{row}">
<span >{{ getType(row) }}</span>
<span>{{ getType(row) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="240">
<template slot-scope="{row}">
<el-button type="primary" icon="el-icon-edit" size="mini" @click="handleShow(row)"></el-button>
<el-button
v-if="row.STATUS === 2 && row.TRAIN_STATUS === '1' && row.SUPERVISION_STATE == 1 && row.MANAGER_STATE == 1 && row.TERRITORIALITY_STATE==1"
v-if="row.STATUS === 2 && row.TRAIN_STATUS === '1' && row.SUPERVISION_STATE === 1 && row.MANAGER_STATE === 1 && row.TERRITORIALITY_STATE===1"
type="success"
icon="el-icon-edit"
size="mini"
@click="getUserInfo(row)">电子合格证
</el-button>
<el-button v-if="(row.STATUS === 0 ||row.STATUS === 1 )&& viewState ==='1' && row.SUPERVISION_STATE === 9" type="success" icon="el-icon-edit" size="mini" @click="examineShow(row)"></el-button>
<el-button
v-if="(row.STATUS === 0 ||row.STATUS === 1 )&& viewState ==='1' && ((row.MANAGER_USER_ID === USER_ID && row.MANAGER_STATE === 9 && row.STEP_STATUS === '1' ) || (row.SUPERVISION_USER_ID === USER_ID && row.MANAGER_STATE === 1 && row.STEP_STATUS === '2') || (row.TERRITORIALITY_USER_ID === USER_ID && row.SUPERVISION_STATE === 9 && (row.STEP_STATUS === '0' || !row.STEP_STATUS)))"
type="success"
icon="el-icon-edit"
size="mini"
@click="examineShow(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="getUserList" />
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getUserList"/>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="closeWindow"> </el-button>
@ -159,7 +159,7 @@
<tr>
<th>民族</th>
<td>{{ userDetailForm.minzuName? userDetailForm.minzuName:'暂无信息' }}</td>
<td>{{ userDetailForm.minzuName ? userDetailForm.minzuName : '暂无信息' }}</td>
<th>婚姻状况</th>
<td>{{ userDetailForm.MARITALSTATUS === '0' ? '未婚' : '已婚' }}</td>
<th>政治面貌</th>
@ -171,17 +171,15 @@
<tr>
<th>户口所在地</th>
<td>{{ userDetailForm.HKLOCAL? userDetailForm.HKLOCAL:'暂无信息' }}</td>
<td>{{ userDetailForm.HKLOCAL ? userDetailForm.HKLOCAL : '暂无信息' }}</td>
<th>现住址</th>
<td>{{ userDetailForm.ADDRESS? userDetailForm.ADDRESS:'暂无信息' }}</td>
<td>{{ userDetailForm.ADDRESS ? userDetailForm.ADDRESS : '暂无信息' }}</td>
<th>联系电话</th>
<td>{{ userDetailForm.PHONE }}</td>
</tr>
<tr>
<th>文化程度</th>
<td>{{ userDetailForm.DEGREE_OF_EDUCATION_NAME }}</td>
<!-- <th>本企业从业开始日期</th>-->
<!-- <td>{{ userDetailForm.CORP_START_DATE }}</td>-->
<th>岗位名称(工种)</th>
<td colspan="3">{{ userDetailForm.POST_ID }}</td>
</tr>
@ -209,7 +207,7 @@
</tr>
<tr>
<th>是否参加三级安全培训</th>
<td >{{ formatLabel(userDetailForm.IS_LEVEL_THREE) }}</td>
<td>{{ formatLabel(userDetailForm.IS_LEVEL_THREE) }}</td>
<th v-if="userDetailForm.IS_LEVEL_THREE == 1"></th>
<td v-if="userDetailForm.IS_LEVEL_THREE == 1 && photosOfLevel.length>0" colspan="3">
<span>
@ -229,17 +227,17 @@
</tr>
<tr>
<th>是否缴纳保险</th>
<td >{{ formatLabelBf(userDetailForm.IS_BF) }}</td>
<td>{{ formatLabelBf(userDetailForm.IS_BF) }}</td>
<th>是否特殊工种</th>
<td >{{ formatLabel(userDetailForm.IS_SPECIAL_JOB) }}</td>
<td>{{ formatLabel(userDetailForm.IS_SPECIAL_JOB) }}</td>
<th>是否流动人员</th>
<td >{{ formatLabel(userDetailForm.ISFLOW) }}</td>
<td>{{ formatLabel(userDetailForm.ISFLOW) }}</td>
</tr>
</table>
<div v-if="userDetailForm.IS_SPECIAL_JOB == '1'" class="level-title">
<h1>特种作业人员信息</h1>
</div>
<table v-for="(item,index) in specialUsersList" :key="index" class="table-ui" style="margin-bottom: 20px;" >
<table v-for="(item,index) in specialUsersList" :key="index" class="table-ui" style="margin-bottom: 20px;">
<tr>
<th style="width: 150px">证书名称</th>
<td style="width: 150px">{{ item.CERTIFICATE }}</td>
@ -259,9 +257,6 @@
<td>{{ item.REVIEW_TIME }}</td>
<th>有效期</th>
<td colspan="3">{{ item.VALIDITY_TIME_START }} {{ item.VALIDITY_TIME_END }}</td>
<!-- &lt;!&ndash; <td v-if="!userEntryForm.TRAIN_AREA"></td>&ndash;&gt;-->
<!-- &lt;!&ndash; <td v-else style="color: #04a9f5; cursor: pointer" @click="showQRCode(userEntryForm.USER_ID)"></td>&ndash;&gt;-->
</tr>
</table>
<div slot="footer" class="dialog-footer">
@ -278,7 +273,7 @@
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.IS_STATE===0" required label="审批意见">
<el-input v-model="form.OPINION" placeholder="这里输入审批意见..." />
<el-input v-model="form.OPINION" placeholder="这里输入审批意见..."/>
</el-form-item>
</el-form>
@ -297,6 +292,7 @@ import Pagination from '@/components/Pagination' // 通过 el-pagination二次
import { requestFN } from '@/utils/request'
import user from './user.vue'
import '@riophae/vue-treeselect/dist/vue-treeselect.css'
export default {
components: {
Pagination, user
@ -304,6 +300,7 @@ export default {
data() {
return {
config: config,
USER_ID: JSON.parse(sessionStorage.getItem('user')).USER_ID,
userInfoDialog: false,
userDetailForm: {},
imgUrl: '',
@ -325,6 +322,7 @@ export default {
dialogVisible: false,
form: {
TRAINUSERS_ID: '', // id
TRAININGBATCH_ID: '',
USER_COUNT: '', //
type: '',
IS_STATE: 1,
@ -332,7 +330,8 @@ export default {
},
heirloom: {},
message: '',
operator: ''
operator: '',
photosOfLevel: []
}
},
methods: {
@ -397,6 +396,7 @@ export default {
this.userInfoDialog = true
this.heirloom = row
console.log(row)
console.log('?????')
if (row.SUPERVISION_STATE === 0 || row.MANAGER_STATE === 0 || row.TERRITORIALITY_STATE === 0) {
if (row.SUPERVISION_STATE === 0) {
this.message = row.SUPERVISION_OPINION
@ -421,6 +421,7 @@ export default {
this.form.type = '1'
this.form.USER_ID = row.USER_ID
this.dialogVisible = true
this.form.TRAININGBATCH_ID = this.TRAININGBATCH_ID
},
//
approve() {
@ -467,7 +468,7 @@ export default {
this.listLoading = false
// this.userDetailForm = Object.assign(this.userDetailForm, data.pd)
this.userPhotoFile = data.userPhotoFile
if (this.userPhotoFile.length > 0) {
if (this.userPhotoFile && this.userPhotoFile.length > 0) {
this.imgUrl = config.fileUrl + this.userPhotoFile[0].FILEPATH
}
this.insuranceFileList = data.insuranceFile
@ -519,7 +520,22 @@ export default {
!(row.SUPERVISION_STATE === 0 || row.MANAGER_STATE === 0 || row.TERRITORIALITY_STATE === 0)) {
return '评审中'
}
},
tableRowClassName({ row, rowIndex }) {
if (row.STEP_STATUS === '3') {
return 'warning-row'
}
}
}
}
</script>
<style>
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
</style>

View File

@ -1,8 +1,8 @@
const config = {
weburl: 'http://192.168.0.45:8082/', // 前台地址
httpurl: 'http://192.168.151.43:8092/', // 后台地址
httpurl: 'http://192.168.151.56:8092/', // 后台地址
qyurl: 'http://192.168.0.45:8080/', // 企业前台
fileUrl: 'http://192.168.192.201:8991/file/',// 附件服务器地址
fileUrl: 'http://192.168.192.201:8991/file/', // 附件服务器地址
publicKey: 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2zCyUYSD0pNrbtaYdvGfHfWoRV+fo/2N9O2PLLz/jZvMkigkq4eAq4JO+Ek0wDHI9WxP6iTSLYCHhIOs9CQTPvyldJFm8riZtQZlBTD8Plkb3rjrgwTqbBi3w3+HKYdkSvGFXJIdSOPbpXnj5BzN8vlVaybs24R/vpUzG9178lwIDAQAB',
weburlWaiwang: 'https://skqhdg.porthebei.com:9004/', // 附件服务器地址,
httpurlWaiwang: 'https://skqhdg.porthebei.com:9004/qa-prevention-gwj/', // 附件服务器地址,
@ -11,5 +11,6 @@ const config = {
httpurlNaiwang: 'http://192.168.192.201:8992//qa-prevention-gwj/', // 附件服务器地址,
perRealTimeLocUrl: '192.168.210.32:8084/netty/test.io',
cfdfileUrl: 'http://60.2.209.238:8991/file',
xfgUrl: 'https://skqhdg.porthebei.com:9006/static/qrcode/views/xgf_hgz/index.html'
xfgUrl: 'https://skqhdg.porthebei.com:9006/static/qrcode/views/xgf_hgz/index.html',
messageUrl: 'http://192.168.151.56:8082/static/qrcode/views/xgf_hgz/index.html'
}