Files
foton-laws-system-front/src/pages/regulatoryRepository/enterpriseStandardPlan/index.vue
T
2021-12-17 17:31:05 +08:00

763 lines
38 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div id="enterpriseStandardPlan">
<div class="search-area">
<div class="content-top">
<el-form :modal="form" inline class="label-input-form">
<el-form-item label="计划状态" class="search-item">
<el-select v-model="form.planStatus" placeholder="请选择计划状态">
<el-option label="制定" value="制定"></el-option>
<el-option label="修订" value="修订"></el-option>
<el-option label="完成" value="完成"></el-option>
</el-select>
</el-form-item>
<el-form-item label="制修订状态" class="search-item">
<el-select v-model="form.reviseStatus" placeholder="请选择制修订状态">
<el-option label="制定完成" value="制定完成"></el-option>
<el-option label="制定中" value="制定中"></el-option>
<el-option label="未制定" value="未制定"></el-option>
</el-select>
</el-form-item>
<el-form-item label="企标名称" class="search-item">
<el-input v-model="form.esName"
placeholder="请输入企标名称"
clearable
:maxlength="100"></el-input>
</el-form-item>
<el-form-item label="起草责任部门" class="search-item">
<el-input v-model="form.unit"
placeholder="请输入起草责任部门"
clearable
:maxlength="100"></el-input>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button
type="primary"
class="common-button-primary"
size="mini"
@click="searchData">
查询
</el-button>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button
class="common-button-default"
size="mini"
@click="clearData">
清空
</el-button>
</el-form-item>
</el-form>
</div>
</div>
<div class="content-center">
<el-button type="primary"
class="common-button-primary add-button"
size="mini"
@click="addData"><i class="el-icon-plus"></i>新增
</el-button>
<!-- <el-button class="common-button-default in-button"-->
<!-- size="mini"-->
<!-- @click=""><i class="iconfont">&#xe6de;</i>导入-->
<!-- </el-button>-->
<!-- <el-button class="common-button-default export-button"-->
<!-- size="mini"-->
<!-- @click=""><i class="iconfont">&#xe6e9;</i>导出-->
<!-- </el-button>-->
<!-- <el-button class="common-button-default"-->
<!-- size="mini" @click=""><i class="iconfont">&#xe669;</i>下载-->
<!-- </el-button>-->
<el-button class="common-button-default"
size="mini"
@click="deleteList"><i class="iconfont">&#xe611;</i>删除
</el-button>
</div>
<div class="container">
<div class="table-wrap">
<div class="inner-wrap">
<el-table
ref="multipleTable"
:data="data"
tooltip-effect="dark"
border
style="width: 100%; flex: auto;"
class="drag-table"
height="100%"
@selection-change="dataSelectChange"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}">
<el-table-column
type="selection"
align="center"
width="55">
</el-table-column>
<el-table-column
prop="esName"
label="企标名称"
align="center"
width="120">
</el-table-column>
<el-table-column
prop="planStatus"
label="计划状态"
align="center"
width="150">
<template slot-scope="scope">
<div>{{ scope.row.planStatus === '0'? '完成' : (scope.row.planStatus === '1'? '修订' : '制定') }}</div>
</template>
</el-table-column>
<el-table-column
prop="reviseStatus"
width="150"
align="center"
label="制修订状态">
<template slot-scope="scope">
<div>{{ scope.row.reviseStatus === '0'? '制定完成' : (scope.row.reviseStatus === '1'? '制定中' : '未制定') }}</div>
</template>
</el-table-column>
<el-table-column
prop="drafterName"
width="120"
align="center"
label="起草人">
</el-table-column>
<el-table-column
prop="resPersonName"
width="120"
align="center"
label="评审责任人">
</el-table-column>
<el-table-column
prop="wgLeaderName"
width="120"
align="center"
label="工作组组长">
</el-table-column>
<el-table-column
prop="draftTime"
width="200"
align="center"
label="计划标准初稿完成时间">
<template slot-scope="scope">
<span>{{ scope.row.draftTime ? $moment(scope.row.draftTime).format("YYYY-MM-DD") : "" }}</span>
</template>
</el-table-column>
<el-table-column
width="200"
prop="releaseTime"
align="center"
label="计划标准发布时间">
<template slot-scope="scope">
<span>{{ scope.row.releaseTime ? $moment(scope.row.releaseTime).format("YYYY-MM-DD") : "" }}</span>
</template>
</el-table-column>
<el-table-column
align="center"
prop="unitName"
label="起草责任单位">
</el-table-column>
<!-- <el-table-column fixed="right" v-if="isPermission('f9745194958bc9ed3ee5127459795dbc,e8d690904ee1895dd0d17d9c794fbcd7,b299fa5edb3f3f35badb2adb6bda9f2e')>0" label="操作" align="center" width="100">-->
<el-table-column fixed="right" label="操作" align="center" width="60">
<template slot-scope="scope">
<div @click.stop style="display: inline-block">
<el-dropdown trigger="click" @command="handleCommand">
<i class="iconfont">&#xe61e;</i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="[scope.row, '查看']">
查看
</el-dropdown-item>
<el-dropdown-item :command="[scope.row, '编辑']">
编辑
</el-dropdown-item>
<el-dropdown-item :command="[scope.row, '删除']">
删除
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</template>
</el-table-column>
</el-table>
<loading :loading="loading">加载中...</loading>
</div>
</div>
<div class="footer">
<pagination :page="form.page" :total="total"
@pageChange="pageChange" @pageSizeChange="pageSizeChange"></pagination>
</div>
<el-drawer
ref="standard"
size="700px"
:title="addDrawerTitle"
:visible.sync="addDrawer"
:before-close="addDrawerClose">
<div class="demo-drawer-content" v-if="addDrawer">
<div class="content">
<div class="standard-table-search">
<el-row :gutter="24">
<el-col :span="24">
<el-form :model="addForm" inline class="label-input-form" label-width="180px" :rules="addFormRules" ref="addForm">
<el-form-item prop="esName" label="企标名称" style="width: 100%; margin-right:10px" class="add-form-item" :class="DrawerType === 'see' ? 'form-item-disabled' : ''">
<el-input
:disabled="DrawerType === 'see'"
v-model="addForm.esName"
placeholder="请输入企标名称"
:maxlength="500"/>
</el-form-item>
<el-form-item prop="planStatus" label="计划状态" style="width: 100%; margin-right:10px" class="add-form-item" :class="DrawerType === 'see' ? 'form-item-disabled' : ''">
<el-select :disabled="DrawerType === 'see'" v-model="addForm.planStatus" placeholder="请选择计划状态">
<el-option label="制定" value="2"></el-option>
<el-option label="修订" value="1"></el-option>
<el-option label="完成" value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="reviseStatus" label="制修订状态" style="width: 100%; margin-right:10px" class="add-form-item" :class="DrawerType === 'see' ? 'form-item-disabled' : ''">
<el-select :disabled="DrawerType === 'see'" v-model="addForm.reviseStatus" placeholder="请选择制修订状态">
<el-option label="制定完成" value="0"></el-option>
<el-option label="制定中" value="1"></el-option>
<el-option label="未制定" value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="drafter" label="起草人" style="width: 100%; margin-right:10px" class="add-form-item" :class="DrawerType === 'see' ? 'form-item-disabled' : ''">
<el-input
style="display: none;"
v-model="addForm.drafter"
:maxlength="500"/>
<el-input :disabled="DrawerType === 'see'" v-model="addForm.drafterName" placeholder="请选择起草人" readonly="readonly" @click.native="choiceZRRS('drafter', '选择起草人', addForm.drafter)"></el-input>
</el-form-item>
<el-form-item prop="resPerson" label="评审责任人" style="width: 100%; margin-right:10px" class="add-form-item" :class="DrawerType === 'see' ? 'form-item-disabled' : ''">
<el-input
style="display: none;"
v-model="addForm.resPerson"
:maxlength="500"/>
<el-input :disabled="DrawerType === 'see'" v-model="addForm.resPersonName" placeholder="请选择评审责任人" readonly="readonly" @click.native="choiceZRRS('resPerson', '选择评审责任人', addForm.resPerson)"></el-input>
</el-form-item>
<el-form-item prop="wgLeader" label="工作组组长" style="width: 100%; margin-right:10px" class="add-form-item" :class="DrawerType === 'see' ? 'form-item-disabled' : ''">
<el-input
style="display: none;"
v-model="addForm.wgLeader"
:maxlength="500"/>
<el-input :disabled="DrawerType === 'see'" v-model="addForm.wgLeaderName" placeholder="请选择工作组组长" readonly="readonly" @click.native="choiceZRR('wgLeader', '选择工作组组长', addForm.wgLeader)"></el-input>
</el-form-item>
<el-form-item label="计划标准初稿完成时间" style="width: 100%; margin-right:10px" prop="draftTime" class="add-form-item" :class="DrawerType === 'see' ? 'form-item-disabled' : ''">
<el-date-picker
v-model="addForm.draftTime"
:disabled="DrawerType === 'see'"
value-format="yyyy-MM-dd"
type="date"
placeholder="请选择计划标准初稿完成时间">
</el-date-picker>
</el-form-item>
<el-form-item label="计划标准发布时间" style="width: 100%; margin-right:10px" prop="releaseTime" class="add-form-item" :class="DrawerType === 'see' ? 'form-item-disabled' : ''">
<el-date-picker
v-model="addForm.releaseTime"
:disabled="DrawerType === 'see'"
value-format="yyyy-MM-dd"
type="date"
placeholder="请选择计划标准发布时间">
</el-date-picker>
</el-form-item>
<el-form-item label="起草责任单位" style="width: 100%; margin-right:10px" class="add-form-item" prop="unit" :class="DrawerType === 'see' ? 'form-item-disabled' : ''">
<div style="display: flex;justify-content: space-between;align-items: center;">
<el-input
style="display: none;"
v-model="addForm.unit">
</el-input>
<el-input
:key="addForm.unit"
:config="addForm"
clearable
v-model="addForm.unitName"
placeholder="请选择起草责任单位"
@click.native="choiceZRBM(addForm.unit)">
</el-input>
<!-- <el-tooltip v-if="addForm.unit" class="item" effect="dark" :content="addForm.unit" placement="top-start">-->
<!-- <el-input-->
<!-- :disabled="DrawerType === 'see'"-->
<!-- clearable-->
<!-- v-model="addForm.unit"-->
<!-- placeholder="选择或输入起草单位">-->
<!-- </el-input>-->
<!-- </el-tooltip>-->
<!-- <div v-else>-->
<!-- <el-input-->
<!-- :disabled="DrawerType === 'see'"-->
<!-- clearable-->
<!-- v-model="addForm.unit"-->
<!-- placeholder="选择或输入起草单位">-->
<!-- </el-input>-->
<!-- </div>-->
<!-- <div>-->
<!-- <el-button-->
<!-- :disabled="DrawerType === 'see'"-->
<!-- size="mini"-->
<!-- type="primary"-->
<!-- @click="QCDWClick"-->
<!-- class="common-button-primary">手动查找</el-button>-->
<!-- </div>-->
</div>
</el-form-item>
</el-form>
</el-col>
</el-row>
</div>
</div>
</div>
<div class="demo-drawer-footer" v-if="DrawerType !== 'see'">
<el-button
size="mini"
class="common-button-primary"
icon="el-icon-check"
type="primary"
:loading="submitLoading"
@click="addDrawerSubmit">提交
</el-button>
<el-button
size="mini"
class="common-button-default"
icon="el-icon-close"
@click="addDrawerClose">取消</el-button>
</div>
</el-drawer>
<Role-tree
:is-title="drawerTitle"
:is-visible.sync="modalshowflag2"
@checkedRole="checkedRole2"
:nodeList="nodeList2"
></Role-tree>
<Role-tree
check-box
:is-title="drawerTitle"
:is-visible.sync="modalshowflag"
@checkedRole="checkedRole"
:nodeList="nodeList"
></Role-tree>
<el-dialog
:visible.sync="QCDWmodal"
width="500px"
title="选择起草部门"
destroy-on-close
:close-on-click-modal="false"
@closed="QCDWmodal = false">
<el-select v-model="QCDWValue" multiple filterable placeholder="请选择" style="width: 100%;">
<el-option
v-for="item in QCDWList"
:key="item.value"
:label="item.label"
:value="item.label">
</el-option>
</el-select>
<div slot="footer" class="demo-drawer-footer">
<el-button size="mini" type="primary" class="common-button-default" icon="el-icon-check"
@click="QCDWOK">确认
</el-button>
</div>
</el-dialog>
<Mechanism-tree
is-title="选择起草责任部门"
:is-visible.sync="modalshowflagZRBM"
:nodeList="nodeListZRBM"
@checkedRole="drawerCheckZRBM"
/>
</div>
</div>
</template>
<script>
export default {
name: "enterpriseStandardPlan",
components: {},
data() {
return {
modalshowflagZRBM: false,
nodeListZRBM: [],
QCDWmodal: false,
QCDWValue: [],
QCDWList: [],
type: '',
drawerTitle: '',
modalshowflag2: false,
modalshowflag: false,
nodeList: [],
nodeList2: [],
loading: false,
submitLoading: false,
addDrawerTitle: '',
addDrawer: false,
DrawerType: '',
ids: [],
addForm: {
unit: '', // 单位
unitName: '',
esName: '', // 企标名称
planStatus: '', // 计划状态
reviseStatus: '', // 制修订状态
resPerson: '', // 评审责任人
resPersonName: '',
wgLeader: '', // 工作组组长
wgLeaderName: '',
draftTime: '', // 计划标准初稿完成时间
releaseTime: '', // 计划标准发布时间
drafter: '', // 起草人
drafterName: '',
// remarks: '', // 备注
},
addFormRules: {
unit: [
{required: true, message: '请输入单位', trigger: 'change'},
],
esName: [
{required: true, message: '请输入企标名称', trigger: 'blur'},
],
planStatus: [
{required: true, message: '请选择计划状态', trigger: 'change'},
],
reviseStatus: [
{required: true, message: '请选择制修订状态', trigger: 'change'},
],
resPerson: [
{required: true, message: '请选择评审责任人', trigger: 'change'},
],
wgLeader: [
{required: true, message: '请选择工作组组长', trigger: 'change'},
],
draftTime: [
{required: true, message: '请输入计划标准初稿完成时间', trigger: 'change'},
],
releaseTime: [
{required: true, message: '请输入计划标准发布时间', trigger: 'blur'},
],
drafter: [
{required: true, message: '请选择起草人', trigger: 'change'},
],
},
form: {
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
unit: '',
esName: '',
planStatus: '',
reviseStatus: '',
},
total: 0,
data: [],
}
},
props: {},
watch: {},
methods: {
drawerCheckZRBM (data) {
let list = ''
let listName = ''
for (let a = 0; a < data.length; a++) {
if (list.length > 0) {
list += ','
list += data[a].id
listName += ','
listName += data[a].name
} else {
list = data[a].id
listName = data[a].name
}
}
this.addForm.unit = list
this.addForm.unitName = listName
this.modalshowflagZRBM = false
},
choiceZRBM(id) {
this.nodeListZRBM = []
if (id) {
this.nodeListZRBM = id.split(',')
}
this.modalshowflagZRBM = true
},
QCDWOK () {
let arr1 = []
if (this.addForm.unit) {
let str = this.addForm.unit.replace(//g, ',')
arr1 = str.split(',')
}
let arr2 = arr1.concat(this.QCDWValue)
this.addForm.unit = Array.from(new Set(arr2)).join(',')
this.QCDWmodal = false
},
QCDWClick () {
this.QCDWValue = []
this.QCDWmodal = true
},
choiceZRR (type, title, id) {
this.nodeList = []
this.nodeList.push(id)
this.type = type
this.drawerTitle = title
this.modalshowflag = true
},
checkedRole (data) {
this.addForm.wgLeader = data[0].id
this.addForm.wgLeaderName = data[0].name
},
choiceZRRS (type, title, id) {
this.type = type
this.drawerTitle = title
this.nodeList2 = []
if (id) {
this.nodeList2 = id.split(',')
}
this.modalshowflag2 = true
},
checkedRole2 (data) {
var idList = ''
var nameList = ''
data.forEach( item => {
if (nameList.length > 0) {
nameList += ','
idList += ','
}
idList += item.id
nameList += item.name
})
if (this.type === 'resPerson') {
this.addForm.resPerson = idList
this.addForm.resPersonName = nameList
} else if (this.type === 'drafter') {
this.addForm.drafter = idList
this.addForm.drafterName = nameList
}
},
addDrawerSubmit () {
this.$refs['addForm'].validate((valid) => {
if (valid) {
this.submitLoading = true
let url = ''
let tips = ''
if (this.DrawerType === 'edit') {
url = 'esRevisePlan/es-revise-plan/modPlan'
tips = '编辑'
}else if (this.DrawerType === 'add') {
url = 'esRevisePlan/es-revise-plan/addPlan'
tips = '添加'
}
this.$http.post(url, this.addForm, {
_this: this
}, res => {
this.submitLoading = false
if (res.ok) {
if (res.data === '操作成功') {
this.addDrawer = false
this.$message.success(tips + '成功')
this.getData()
} else {
this.addDrawer = false
this.$message.warning(res.data)
this.getData()
}
} else {
this.$message.warning(tips + '失败')
}
})
} else {
this.$message.warning('请检查表单是否填写正确')
}
})
},
addDrawerClose () {
this.addDrawer = false
},
addData () {
this.addDrawerTitle = '新增'
this.addForm = {}
this.DrawerType = 'add'
this.addDrawer = true
}, // 新增数据
deleteList () {
if (this.ids.length) {
this.$confirm('您是否确认删除选中数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
confirmButtonClass: 'common-button-primary',
roundButton: true
}).then(() => {
let ids = ''
this.ids.forEach(item => {
if (ids.length > 0) {
ids += ','
ids += item
} else {
ids = item
}
})
this.$http.get('esRevisePlan/es-revise-plan/delPlans', {
ids: ids
}, {
_this: this
}, res => {
if (res.ok) {
this.$message.success('删除成功')
this.form.page = 1
this.getData()
} else {
this.$message.warning('删除失败')
}
})
}).catch(() => {})
} else {
this.$message.warning('请选择要移除的数据')
}
},
dataSelectChange (val) {
this.ids = []
val.forEach(item =>{
this.ids.push(item.id)
})
},
searchData () {
this.form.page = 1
this.getData()
},
clearData () {
this.form.page = 1
this.form.unit = ''
this.form.esName = ''
this.form.planStatus = ''
this.form.reviseStatus = ''
this.getData()
},
pageChange (page) {
this.form.page = page
this.getData()
},
pageSizeChange (pageSize) {
this.form.pageSize = pageSize
this.getData()
},
handleCommand (command) {
switch (command[1]) {
case '编辑':
this.addDrawerTitle = '编辑'
this.DrawerType = 'edit'
this.addDrawer = true
this.addForm = {
unitName:command[0].unitName,
id: command[0].id,
unit: command[0].unit, // 单位
esName: command[0].esName, // 企标名称
planStatus: command[0].planStatus, // 计划状态
reviseStatus: command[0].reviseStatus, // 制修订状态
resPerson: command[0].resPerson, // 评审责任人
wgLeader: command[0].wgLeader, // 工作组组长
resPersonName: command[0].resPersonName, // 评审责任人
wgLeaderName: command[0].wgLeaderName, // 工作组组长
draftTime: command[0].draftTime, // 计划标准初稿完成时间
releaseTime: command[0].releaseTime, // 计划标准发布时间
drafterName: command[0].drafterName, // 起草人
drafter: command[0].drafter,
}
break
case '删除':
this.$confirm('您是否确认删除选中数据?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
confirmButtonClass: 'common-button-primary',
roundButton: true
}).then(() => {
this.$http.get('esRevisePlan/es-revise-plan/delPlans', {
ids: command[0].id
}, {
_this: this
}, res => {
if (res.ok) {
this.$message.success('删除成功')
this.form.page = 1
this.getData()
} else {
this.$message.warning('删除失败')
}
})
}).catch(() => {})
break
case '查看':
this.addDrawerTitle = '查看'
this.DrawerType = 'see'
this.addDrawer = true
this.addForm = command[0]
break
}
},
getData () {
this.loading = true
this.$http.post('esRevisePlan/es-revise-plan/queryAllPlans', this.form, {
_this: this
}, res => {
this.loading = false
if (res.ok) {
this.data = res.data.list
this.total = res.data.count
}
})
},
},
computed: {},
mounted() {
this.getData()
this.$http.get('sys/dictype/getDicTypeListCode', '', {
_this: this
}, res => {
this.QCDWList = res.data.QCDW // 起草单位
}, e => {
})
},
}
</script>
<style lang="less" scoped>
@import '~@/assets/styles/mixins';
@import '~@/assets/styles/style';
#enterpriseStandardPlan {
height: 100%;
background: #fff;
/deep/.table-wrap {
.el-table__fixed {
height: calc(~'100% - 20px') !important;
}
}
.add-form-item {
/deep/.el-form-item__content {
width: calc(~'100% - 180px');
}
}
display: flex;
flex-direction: column;
.content-center {
padding: 10px;
}
.container {
flex: 1;
overflow: hidden;
display: flex;
flex-direction: column;
.table-wrap {
flex: 1;
overflow: hidden;
position: relative;
.inner-wrap {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}
.footer {
/deep/ .pagination {
position: static;
}
}
}
}
</style>