548 lines
18 KiB
Vue
548 lines
18 KiB
Vue
<template>
|
|
<div class="app-container">
|
|
<el-form label-width="100px">
|
|
<el-row>
|
|
<el-col :span="8">
|
|
<el-form-item label="关键字搜索">
|
|
<el-input v-model="KEYWORDS" placeholder="搜索关键字" style="width: 100%;" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="创建单位">
|
|
<el-input v-model="CORP_NAME" placeholder="创建单位" style="width: 100%;" />
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="施工相关方">
|
|
<el-select v-model="UNITS_ID" placeholder="请选择施工相关方" style="width: 100%;">
|
|
<el-option v-for="item in unitsList" :key="item.UNITS_ID" :label="item.UNITS_NAME" :value="item.UNITS_ID" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="8">
|
|
<el-form-item label="主管部门">
|
|
<SelectTree
|
|
ref="deptTree"
|
|
:clearable="false"
|
|
:options="treeDataInspectDept"
|
|
:props="defaultProps"
|
|
v-model="COMPETENT_DEPT_ID"
|
|
placeholder="请选择企业主管部门"
|
|
style="width: 100%"/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="监管部门">
|
|
<SelectTree
|
|
ref="deptTree1"
|
|
:clearable="false"
|
|
:options="treeDataInspectDept"
|
|
:props="defaultProps"
|
|
v-model="DEPARTMENT_ID"
|
|
placeholder="请选择股份监管部门"
|
|
style="width: 100%"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="合同起止时间">
|
|
<el-date-picker
|
|
v-model="CONTRACTTIME"
|
|
type="daterange"
|
|
unlink-panels
|
|
value-format="yyyy-MM-dd"
|
|
range-separator="至"
|
|
start-placeholder="开始日期"
|
|
end-placeholder="结束日期"
|
|
format="yyyy-MM-dd"
|
|
style="width: 100%;" />
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="8">
|
|
<el-form-item label="集团单位">
|
|
<el-select v-model="GROUP_UNIT" placeholder="请选择集团单位" style="width: 100%;">
|
|
<el-option v-for="item in groupCorpList" :key="item.CORPINFO_ID" :label="item.CORP_NAME" :value="item.CORPINFO_ID" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="状态">
|
|
<el-select ref="SELECT_STATE" v-model="STATE" style="width: 100%;">
|
|
<el-option v-for="item in stateList" :key="item.ID" :label="item.NAME" :value="item.ID" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label-width="10px">
|
|
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
|
|
搜索
|
|
</el-button>
|
|
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @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"
|
|
:header-cell-style="{
|
|
'font-weight': 'bold',
|
|
'color': '#000'
|
|
}"
|
|
tooltip-effect="dark"
|
|
border
|
|
fit
|
|
highlight-current-row
|
|
>
|
|
<el-table-column
|
|
:reserve-selection="true"
|
|
type="selection"
|
|
width="55"
|
|
align="center"/>
|
|
<el-table-column type="index" label="序号" width="50" align="center" />
|
|
<el-table-column prop="CORP_NAME" label="创建单位" show-overflow-tooltip />
|
|
<el-table-column prop="OUTSOURCED_NAME" label="重点工程名称" show-overflow-tooltip />
|
|
<el-table-column prop="UNITS_NAME" label="施工相关方" width="250" show-overflow-tooltip />
|
|
<el-table-column label="辖区单位" show-overflow-tooltip >
|
|
<template slot-scope="{row}">
|
|
<span v-if="row.JURISDICTION_UNIT_NAME"> {{ row.JURISDICTION_UNIT_NAME }} </span>
|
|
<span v-else>{{ row.INVOLVING_CORPS_DEPART_NAME }}</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="主管部门" show-overflow-tooltip >
|
|
<template slot-scope="{row}">
|
|
<span v-if="row.Q_COMPETENT_DEPT_NAME"> {{ row.Q_COMPETENT_DEPT_NAME }} </span>
|
|
<span v-else>{{ row.MANAGER_DEPARTMENT_NAME }}</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="DEPARTMENT_NAME" label="监管部门" show-overflow-tooltip >
|
|
<template slot-scope="{row}">
|
|
<span v-if="row.Q_DEPARTMENT_NAME"> {{ row.Q_DEPARTMENT_NAME }} </span>
|
|
<span v-else>{{ row.DEPARTMENT_NAME }}</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="监理单位" show-overflow-tooltip>
|
|
<template slot-scope="{row}">
|
|
<span v-if="row.MANAGE_CORPS_NAME"> {{ row.MANAGE_CORPS_NAME }} </span>
|
|
<span v-else>无</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="STATE" label="状态" width="100" >
|
|
<template slot-scope="{row}">
|
|
<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="操作" 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 v-if="loginUserId == row.CREATOR" type="success" icon="el-icon-view" size="mini" @click="handleJie(row.OUTSOURCED_ID)">结束</el-button>
|
|
<el-button v-show="edit" v-if="loginUserId == row.CREATOR" type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.OUTSOURCED_ID)">编辑</el-button>
|
|
<el-button v-show="del" v-if="loginUserId == row.CREATOR" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.OUTSOURCED_ID)">删除</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<div class="page-btn-group">
|
|
<div>
|
|
<el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button>
|
|
<!-- <el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="batchDel">删除</el-button> -->
|
|
<!-- <el-button type="primary" plain @click="erweiCode">重点项目登录页</el-button>-->
|
|
</div>
|
|
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
|
</div>
|
|
<el-dialog :visible.sync="dialogFormShow" title="查看二维码" width="680px" class="top-dialog">
|
|
<div id="printTest" style="border: 1px solid #fff;">
|
|
<div class="table-qrcode">
|
|
<vue-qr :text="qrcodeStr" :margin="0" :size="300" color-dark="#000" color-light="#fff" />
|
|
</div>
|
|
</div>
|
|
<div slot="footer" class="dialog-footer">
|
|
<el-button @click="dialogFormShow = false">关 闭</el-button>
|
|
<el-button v-print="'#printTest'" type="primary">打 印</el-button>
|
|
</div>
|
|
</el-dialog>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
|
import { requestFN } from '@/utils/request'
|
|
import waves from '@/directive/waves' // waves directive
|
|
import SelectTree from '@/components/SelectTree'
|
|
import vueQr from 'vue-qr'
|
|
export default {
|
|
components: { Pagination, SelectTree, vueQr },
|
|
directives: { waves },
|
|
data() {
|
|
return {
|
|
qrcodeStr: '',
|
|
listLoading: true,
|
|
add: false,
|
|
del: false,
|
|
edit: false,
|
|
listQuery: {
|
|
page: 1,
|
|
limit: 20
|
|
},
|
|
total: 0,
|
|
KEYWORDS: '',
|
|
UNITS_ID: '',
|
|
INVOLVING_CORP: '',
|
|
DEPARTMENT_ID: '',
|
|
COMPETENT_DEPT_ID: '',
|
|
GROUP_UNIT: '',
|
|
CORP_NAME: '',
|
|
CONTRACTTIME: ['', ''], // 区间条件
|
|
CONTRACT_STIME: '',
|
|
CONTRACT_ETIME: '',
|
|
STATE: '',
|
|
varList: [],
|
|
dialogFormShow: false,
|
|
pd: [],
|
|
unitsList: [],
|
|
corpList: [],
|
|
mangeList: [],
|
|
groupCorpList: [],
|
|
treeDataInspectDept: [],
|
|
treeDeptOptions: [],
|
|
defaultProps: {
|
|
value: 'id',
|
|
children: 'nodes',
|
|
label: 'name'
|
|
},
|
|
form: {
|
|
OUTSOURCED_NAME: '', // 重点工程名称
|
|
CONTRACT_STIME: '', // 合同起止时间
|
|
CONTRACT_ETIME: '',
|
|
UNITS_ID: '', // 相关方单位名称
|
|
UNITS_PIC: '', // 相关方单位本项目负责人
|
|
APPLICANT: '', // 申请人
|
|
STATE: ''// 状态
|
|
},
|
|
multipleSelectionAll: [], // 所有选中的数据包含跨页数据
|
|
multipleSelection: [], // 当前页选中的数据
|
|
dialogFormEdit: false,
|
|
dialogType: 'add',
|
|
loginUserId: JSON.parse(sessionStorage.getItem('user')).USER_ID,
|
|
stateList: [
|
|
{ ID: '1', NAME: '进行中' },
|
|
{ ID: '2', NAME: '已结束' }
|
|
]
|
|
}
|
|
},
|
|
watch: {
|
|
CONTRACTTIME: function(newData, oldData) {
|
|
if (!newData) {
|
|
this.CONTRACTTIME = ['', '']
|
|
this.getQuery()
|
|
}
|
|
}
|
|
},
|
|
created() {
|
|
this.getList()
|
|
this.getUnitsList()
|
|
this.getCorpList()
|
|
this.selectDeptOption()
|
|
},
|
|
methods: {
|
|
getRowKey(row) {
|
|
return row.OUTSOURCED_ID
|
|
},
|
|
// 搜索
|
|
getQuery() {
|
|
this.$refs.multipleTable.clearSelection()
|
|
this.getList()
|
|
},
|
|
goKeyReset() {
|
|
this.KEYWORDS = ''
|
|
this.UNITS_ID = ''
|
|
this.STATE = ''
|
|
this.CONTRACT_STIME = ''
|
|
this.CONTRACT_ETIME = ''
|
|
this.CONTRACTTIME = ['', '']
|
|
this.INVOLVING_CORP = ''
|
|
this.DEPARTMENT_ID = ''
|
|
this.$refs.deptTree.clearHandle()
|
|
this.$refs.deptTree1.clearHandle()
|
|
this.COMPETENT_DEPT_ID = ''
|
|
this.GROUP_UNIT = ''
|
|
this.CORP_NAME = ''
|
|
this.getQuery()
|
|
},
|
|
erweiCode() {
|
|
this.dialogFormShow = true
|
|
// https://qgjg.qhdsafety.com/xgf/#/login
|
|
this.qrcodeStr = 'https://skqhdg.porthebei.com:9005/xgf/#/login'
|
|
console.info(this.qrcodeStr)
|
|
},
|
|
// 获取列表
|
|
getList() {
|
|
this.listLoading = true
|
|
requestFN(
|
|
'/outsourced/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
|
{
|
|
KEYWORDS: this.KEYWORDS,
|
|
UNITS_ID: this.UNITS_ID,
|
|
CONTRACT_STIME: this.CONTRACTTIME[0],
|
|
CONTRACT_ETIME: this.CONTRACTTIME[1],
|
|
STATE: this.STATE,
|
|
INVOLVING_CORP: this.INVOLVING_CORP,
|
|
DEPARTMENT_ID: this.DEPARTMENT_ID,
|
|
COMPETENT_DEPT_ID: this.COMPETENT_DEPT_ID,
|
|
GROUP_UNIT: this.GROUP_UNIT,
|
|
CORP_NAME: this.CORP_NAME
|
|
}
|
|
).then((data) => {
|
|
this.listLoading = false
|
|
this.varList = data.varList
|
|
this.total = data.page.totalResult
|
|
this.hasButton()
|
|
this.pd = data.pd
|
|
}).catch((e) => {
|
|
this.listLoading = false
|
|
})
|
|
},
|
|
// 添加
|
|
handleAdd() {
|
|
this.$parent.activeName = 'Edit'
|
|
this.$parent.OUTSOURCED_ID = ''
|
|
},
|
|
// 查看
|
|
goDetail(ID) {
|
|
this.$parent.OUTSOURCED_ID = ID
|
|
this.$parent.activeName = 'Info'
|
|
},
|
|
// 修改
|
|
handleEdit(ID) {
|
|
this.$parent.activeName = 'Edit'
|
|
this.$parent.OUTSOURCED_ID = ID
|
|
},
|
|
|
|
handleJie(id) {
|
|
this.$confirm('确定要结束吗?', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then((data) => {
|
|
this.listLoading = true
|
|
requestFN(
|
|
'/outsourced/jie',
|
|
{
|
|
OUTSOURCED_ID: id
|
|
}
|
|
).then((data) => {
|
|
if (data.code == '500') {
|
|
this.listLoading = false
|
|
this.$message({
|
|
message: data.msg,
|
|
type: 'error'
|
|
})
|
|
return
|
|
}
|
|
this.$message({
|
|
message: '已结束',
|
|
type: 'success'
|
|
})
|
|
this.listLoading = false
|
|
this.varList = []
|
|
this.listQuery.page = 1
|
|
this.getList()
|
|
}).catch((e) => {
|
|
this.listLoading = false
|
|
})
|
|
}).catch(() => {
|
|
})
|
|
},
|
|
handleDelete(id) {
|
|
this.$confirm('确定要删除吗?', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(() => {
|
|
this.listLoading = true
|
|
requestFN(
|
|
'/outsourced/delete',
|
|
{
|
|
OUTSOURCED_ID: id
|
|
}
|
|
).then(() => {
|
|
this.$message({
|
|
message: '删除成功',
|
|
type: 'success'
|
|
})
|
|
this.listLoading = false
|
|
this.varList = []
|
|
this.listQuery.page = 1
|
|
this.getList()
|
|
}).catch((e) => {
|
|
this.listLoading = false
|
|
})
|
|
}).catch(() => {
|
|
})
|
|
},
|
|
getUnitsList() {
|
|
requestFN(
|
|
'/units/listAll',
|
|
{ UNITS_ID: this.form.UNITS_ID }
|
|
).then((data) => {
|
|
this.unitsList = data.varList
|
|
}).catch((e) => {
|
|
})
|
|
},
|
|
getCorpList() {
|
|
requestFN(
|
|
'/corpinfo/listAll',
|
|
{}
|
|
).then((data) => {
|
|
this.corpList = data.varList
|
|
this.mangeList = data.varList
|
|
if (!this.$parent.OUTSOURCED_ID) {
|
|
this.form.MANAGE_NAME = ['133a982a3e93464a9b1de25fe6dd4948']
|
|
}
|
|
for (let i = 0; i < data.varList.length; i++) {
|
|
const corpId = data.varList[i].CORPINFO_ID
|
|
if (corpId === '1e6dbbe16004402f8d2c0e52afd9a676' ||
|
|
corpId === '3a854eefa7894e06aaa1a2611bca80f6' || corpId === '020578a4c1f04bc692ee25145c2efbe5' || corpId === '90966974de3c4b83aca6f8fd6432d5c2') {
|
|
this.groupCorpList.push(data.varList[i])
|
|
}
|
|
}
|
|
}).catch((e) => {
|
|
})
|
|
},
|
|
selectDeptOption() {
|
|
// 合并
|
|
return new Promise((resolve) => {
|
|
requestFN(
|
|
'/department/listTree',
|
|
).then((data) => {
|
|
this.treeDeptOptions = JSON.parse(data.zTreeNodes)
|
|
this.treeDataInspectDept = JSON.parse(data.zTreeNodes)
|
|
resolve()
|
|
}).catch((e) => {
|
|
})
|
|
})
|
|
},
|
|
batchDel() {
|
|
const _selectData = this.$refs.multipleTable.selection
|
|
if (_selectData == null || _selectData.length == 0) {
|
|
this.$message({
|
|
message: '请选中要删除的项...',
|
|
type: 'error'
|
|
})
|
|
return false
|
|
}
|
|
const ids = _selectData.map((item, index) => {
|
|
return item.OUTSOURCED_ID
|
|
}).join(',')
|
|
|
|
this.$confirm('确定要删除选中的数据吗?', {
|
|
confirmButtonText: '确定',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
}).then(() => {
|
|
this.listLoading = true
|
|
requestFN(
|
|
'/outsourced/deleteAll',
|
|
{
|
|
DATA_IDS: ids
|
|
}
|
|
).then(() => {
|
|
this.$message({
|
|
message: '删除成功',
|
|
type: 'success'
|
|
})
|
|
this.listLoading = false
|
|
this.varList = []
|
|
this.listQuery.page = 1
|
|
this.$refs.multipleTable.clearSelection()
|
|
this.getList()
|
|
}).catch((e) => {
|
|
this.listLoading = false
|
|
})
|
|
}).catch(() => {
|
|
})
|
|
},
|
|
// 判断按钮权限,用于是否显示按钮
|
|
hasButton: function() {
|
|
var keys = 'outsourced:add,outsourced:del,outsourced:edit,toExcel'
|
|
requestFN(
|
|
'/head/hasButton',
|
|
{
|
|
keys: keys
|
|
}
|
|
).then((data) => {
|
|
this.add = data.outsourcedfhadminadd // 新增权限
|
|
this.del = data.outsourcedfhadmindel // 删除权限
|
|
this.edit = data.outsourcedfhadminedit // 修改权限
|
|
}).catch((e) => {
|
|
this.listLoading = false
|
|
})
|
|
},
|
|
// 获取数据字典数据
|
|
getDict: function() {
|
|
},
|
|
resetForm() {
|
|
this.form = {
|
|
DEPARTMENT_ID: '', // 发包部门
|
|
CONTRACT_PIC: '', // 发包部门负责人
|
|
OUTSOURCED_NAME: '', // 重点工程名称
|
|
STARTTIME: '', // 计划工期开始时间
|
|
ENDTIME: '', // 计划工期结束时间
|
|
CONTRACT_STIME: '', // 合同起止时间
|
|
CONTRACT_ETIME: '',
|
|
UNITS_ID: '', // 相关方单位名称
|
|
CONTRACT_NUM: '', // 合同号
|
|
UNITS_APTITUDE: '', // 相关方单位资质
|
|
UNITS_PIC: '', // 相关方单位本项目负责人
|
|
UNITS_PHONE: '', // 相关方单位本项目负责人手机
|
|
MANAGE_NAME: '', // 监理单位名称
|
|
MANAGE_APTITUDE: '', // 监理单位资质
|
|
MANAGE_PIC: '', // 监理单位本项目负责人姓名
|
|
MANAGE_PHONE: '', // 监理单位本项目负责人手机
|
|
MEASURES: '', // 安全技术措施
|
|
ATTACHMENTS: '', // 附件
|
|
REMARKS: '', // 备注
|
|
TRAINING_NAME: '', // 培训管理单位
|
|
TRAINING_PIC: '', // 培训管理负责人
|
|
TRAINING_STIME: '', // 培训时间
|
|
TRAINING_ETIME: '', // 培训时间
|
|
RECORDS: '', // 安全培训记录
|
|
SHEET: '', // 培训签名表
|
|
EXAMINATION: '', // 重点工程考试题
|
|
OATTACHMENTS: '', // 其他附件
|
|
APPLICANT: '', // 申请人
|
|
STATE: ''// 状态
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
</script>
|
|
<style lang="sass" scoped>
|
|
.table-qrcode
|
|
text-align: center
|
|
padding-top: 20px
|
|
width: 100%
|
|
.filter-container
|
|
position: relative
|
|
.filter-flot
|
|
position: absolute
|
|
right: 0
|
|
top: 0
|
|
.uploader
|
|
width: 570px
|
|
display: flex
|
|
align-items: center
|
|
.el-form-item__content
|
|
line-height: 1
|
|
</style>
|
|
|