218 lines
6.6 KiB
Vue
218 lines
6.6 KiB
Vue
|
|
<template>
|
|||
|
|
<div>
|
|||
|
|
<el-button type="primary" size="small" icon="el-icon-check" @click="preserve">保存</el-button>
|
|||
|
|
<el-button type="primary" size="small" icon="el-icon-date" @click="dialogVisible = true">
|
|||
|
|
配置保存年限
|
|||
|
|
</el-button>
|
|||
|
|
<vxe-table
|
|||
|
|
resizable
|
|||
|
|
ref="xTable"
|
|||
|
|
size="mini"
|
|||
|
|
border
|
|||
|
|
:height="height"
|
|||
|
|
show-overflow
|
|||
|
|
:tree-config="{ children: 'children' }"
|
|||
|
|
:data="tableData1"
|
|||
|
|
:edit-config="{ trigger: 'click', mode: 'cell' }"
|
|||
|
|
header-cell-class-name="table_header"
|
|||
|
|
class="mt10"
|
|||
|
|
>
|
|||
|
|
<vxe-table-column field="name" title="部门" tree-node></vxe-table-column>
|
|||
|
|
<!-- <vxe-table-column
|
|||
|
|
field="size"
|
|||
|
|
align="center"
|
|||
|
|
title="Size"
|
|||
|
|
></vxe-table-column>
|
|||
|
|
<vxe-table-column
|
|||
|
|
field="type"
|
|||
|
|
align="center"
|
|||
|
|
title="Type"
|
|||
|
|
></vxe-table-column> -->
|
|||
|
|
<vxe-table-column
|
|||
|
|
field="proportion"
|
|||
|
|
align="center"
|
|||
|
|
title="占比(%)"
|
|||
|
|
:edit-render="{
|
|||
|
|
name: '$input',
|
|||
|
|
props: { type: 'float', digits: 2, max: 100, min: 0 }
|
|||
|
|
}"
|
|||
|
|
></vxe-table-column>
|
|||
|
|
</vxe-table>
|
|||
|
|
<el-dialog
|
|||
|
|
:close-on-click-modal="false"
|
|||
|
|
title="年限设置"
|
|||
|
|
:visible.sync="dialogVisible"
|
|||
|
|
width="300px"
|
|||
|
|
:before-close="handleClose"
|
|||
|
|
>
|
|||
|
|
<el-input
|
|||
|
|
v-model="value"
|
|||
|
|
placeholder="请输入年限"
|
|||
|
|
style="width: 240px"
|
|||
|
|
@input="handleEdit"
|
|||
|
|
class="mr10"
|
|||
|
|
></el-input>
|
|||
|
|
<span slot="footer" class="dialog-footer">
|
|||
|
|
<el-button type="primary" size="small" @click="handleClose">取 消</el-button>
|
|||
|
|
<el-button type="primary" size="small" @click="define">确 定</el-button>
|
|||
|
|
</span>
|
|||
|
|
</el-dialog>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
<script>
|
|||
|
|
import { deptTree } from '@/api/admin/dept'
|
|||
|
|
import {
|
|||
|
|
queryPlanConfig,
|
|||
|
|
addPlanConfig,
|
|||
|
|
addPlanCycle
|
|||
|
|
} from '@/api/Process-supervision/tiaoHarmonicmanagement/harmonicmanagement'
|
|||
|
|
export default {
|
|||
|
|
components: {},
|
|||
|
|
props: {},
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
dialogVisible: false,
|
|||
|
|
value: '',
|
|||
|
|
tableData1: [],
|
|||
|
|
height: null,
|
|||
|
|
list: [],
|
|||
|
|
treeList: []
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
created() {},
|
|||
|
|
mounted() {
|
|||
|
|
this.setHeight()
|
|||
|
|
window.addEventListener('resize', this.setHeight)
|
|||
|
|
this.info()
|
|||
|
|
},
|
|||
|
|
beforeDestroy() {
|
|||
|
|
window.removeEventListener('resize', this.setHeight)
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
setHeight() {
|
|||
|
|
this.height = window.sessionStorage.getItem('appheight') - 126
|
|||
|
|
},
|
|||
|
|
async info() {
|
|||
|
|
await queryPlanConfig().then(res => {
|
|||
|
|
this.list = res.data
|
|||
|
|
})
|
|||
|
|
await deptTree().then(res => {
|
|||
|
|
this.tableData1 = this.circulationTreeData(res.data)
|
|||
|
|
//console.log(`123`, this.circulationTreeData(this.tableData1));
|
|||
|
|
setTimeout(() => {
|
|||
|
|
this.$refs.xTable.setAllTreeExpand(true)
|
|||
|
|
}, 0)
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
handleClose() {
|
|||
|
|
this.dialogVisible = false
|
|||
|
|
this.value = ''
|
|||
|
|
},
|
|||
|
|
define() {
|
|||
|
|
if (this.value.length > 0) {
|
|||
|
|
addPlanCycle({
|
|||
|
|
cycleNum: this.value
|
|||
|
|
}).then(res => {
|
|||
|
|
if (res.data.flag == true) {
|
|||
|
|
this.$message({
|
|||
|
|
message: '年限设置成功!',
|
|||
|
|
type: 'success'
|
|||
|
|
})
|
|||
|
|
this.handleClose()
|
|||
|
|
} else {
|
|||
|
|
this.$message({
|
|||
|
|
message: `本次普测计划周期还未结束,请在 ${res.data.endYear} 后设置!`,
|
|||
|
|
type: 'warning'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
this.$message({
|
|||
|
|
message: '请输入年限!',
|
|||
|
|
type: 'warning'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
//树递归
|
|||
|
|
|
|||
|
|
circulationTreeData(rows) {
|
|||
|
|
let children = []
|
|||
|
|
|
|||
|
|
rows.forEach((item, index) => {
|
|||
|
|
let proportion = 0
|
|||
|
|
this.list.forEach(val => {
|
|||
|
|
if (val.orgId == item.id) {
|
|||
|
|
proportion = val.proportion
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
if (item.children && item.children.length > 0) {
|
|||
|
|
children.push({
|
|||
|
|
name: item.name,
|
|||
|
|
id: item.id,
|
|||
|
|
proportion: proportion,
|
|||
|
|
children: this.circulationTreeData(item.children)
|
|||
|
|
})
|
|||
|
|
} else {
|
|||
|
|
children.push({
|
|||
|
|
name: item.name,
|
|||
|
|
id: item.id,
|
|||
|
|
proportion: proportion
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
return children
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
preserve() {
|
|||
|
|
this.treeList = []
|
|||
|
|
this.circulation(this.tableData1)
|
|||
|
|
setTimeout(() => {
|
|||
|
|
addPlanConfig(this.treeList).then(res => {
|
|||
|
|
if (res.code == 'A0000') {
|
|||
|
|
this.$message({
|
|||
|
|
message: '保持成功!',
|
|||
|
|
type: 'success'
|
|||
|
|
})
|
|||
|
|
this.info()
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
}, 0)
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
circulation(rows) {
|
|||
|
|
let children = []
|
|||
|
|
|
|||
|
|
rows.forEach((item, index) => {
|
|||
|
|
this.treeList.push({
|
|||
|
|
orgName: item.name,
|
|||
|
|
orgId: item.id,
|
|||
|
|
proportion: item.proportion
|
|||
|
|
})
|
|||
|
|
if (item.children && item.children.length > 0) {
|
|||
|
|
this.circulation(item.children)
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
return children
|
|||
|
|
},
|
|||
|
|
// 在 Input 值改变时触发
|
|||
|
|
handleEdit(e) {
|
|||
|
|
let value = e.replace(/^(0+)|[^\d]+/g, '') // 以0开头或者输入非数字,会被替换成空
|
|||
|
|
value = value.replace(/(\d{15})\d*/, '$1') // 最多保留15位整数
|
|||
|
|
this.value = value
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
computed: {},
|
|||
|
|
|
|||
|
|
watch: {}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
<style lang="less" scoped>
|
|||
|
|
@import url('../../../../styles/comStyle.less');
|
|||
|
|
</style>
|