You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

395 lines
11 KiB

<template>
<el-container>
1 year ago
<el-header style="width: 100%; height: 60px;font-size: 12px">
2 years ago
<el-form :inline="true" label-width="65px" label-position="left">
<el-row>
10 months ago
<el-col :span="15" >
<el-select v-model="queryParam.fileName" filterable placeholder="计划名称" @change="fileNameChange" >
<el-option
v-for="(item,index) in fileNameList"
:key="index"
:label="item"
:value="item">
</el-option>
</el-select>
<el-form-item label="状态:" >
<el-select
v-model="queryParam.gdZt"
clearable
disabled
>
2 years ago
<el-option
v-for="item in gdZtOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
2 years ago
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="9">
2 years ago
<el-form-item style="float: right" >
<el-button type="success" @click="initList"></el-button>
10 months ago
<el-button type="success" @click="tj"></el-button>
<el-button
class="out-item"
type="primary"
icon="el-icon-download"
@click="handleExport"
>导出</el-button>
<div style="float: right;margin-left: 5px" >
<el-upload
:action="uploadAction"
:show-file-list="false"
:before-upload="beforeAvatarUpload"
:data="uploadData"
:on-success="handleAvatarSuccess"
:disabled="filedis"
:headers="heads"
>
<el-button type="success" @click="uploadExcel" >导入</el-button>
</el-upload>
</div>
2 years ago
</el-form-item>
</el-col>
2 years ago
</el-row>
<el-row>
1 year ago
<el-col >
2 years ago
<el-form-item style="float: right" >
10 months ago
<!-- <span style="font-size: 12px;color: red; float: right;"> * 表中红色数据钢加小组结束期为休息日</span>-->
2 years ago
</el-form-item>
</el-col>
</el-row>
</el-form>
10 months ago
</el-header>
2 years ago
<el-container style="padding-top: 0px">
<el-container>
<el-main>
10 months ago
<div class="mytable">
10 months ago
<vxe-grid
id="id"
ref="xGrid"
border
resizable
keep-source
2 years ago
:align="'center'"
:height="height"
:auto-resize="true"
:columns="tableColumn"
highlight-current-row
:data="list"
:custom-config="{ storage: true }"
:scroll-y="{enabled: true}"
highlight-hover-row
show-overflow
show-header-overflow
2 years ago
>
</vxe-grid>
</div>
</el-main>
</el-container>
</el-container>
</el-container>
</template>
<script>
2 years ago
import { getCzxx} from '@/api/jhzx/qfxq'
import {getFilenameNew, getList, getSygdList, list, listByFileNameNew, sh, shNew, tj} from '@/api/jhzx/sygd'
import { mapGetters } from 'vuex'
2 years ago
import XEUtils from 'xe-utils'
import { getToken } from '@/utils/auth'
import { startLoading, endLoading } from '@/utils'
import { Message } from 'element-ui'
export default {
10 months ago
name:'SygdWH',
data() {
return {
fileNameList:[],
2 years ago
queryParam: {
fileName:'',
gdZt:'1'
},
gdZtOptions:[
{
value: "0",
label: "编辑",
},
{
value: "1",
label: "提交",
},
{
value: "2",
label: "审核",
},
],
list: [],
1 year ago
gcrl: [],
2 years ago
isupload:'02',
filedis:false,
uploadData:{},
heads: { token: getToken() },
uploadAction: process.env.VUE_APP_BASE_API + '/dmSygd/upload',
dictData:[],
height: '500px',
tableColumn:[],
checkedList: [],
}
},
computed: {
...mapGetters(['name', 'bmbm'])
},
created() {
window.addEventListener('resize', this.getHeight)
this.getHeight()
2 years ago
this.initBase()
this.queryParam.beginTime = XEUtils.toDateString(XEUtils.getWhatMonth(new Date(), 0, 'first'),'yyyy/MM/dd')
},
2 years ago
watch: {
'queryParam.beginTime'(newValue, Value){
this.queryParam.endTime=XEUtils.toDateString(XEUtils.getWhatMonth(newValue, 0, 'last'),'yyyy/MM/dd')
},
2 years ago
'$route'(){
this.getParams();
10 months ago
},
2 years ago
},
methods: {
2 years ago
getParams(){
var a=[]
a= this.$route.params.list
if (a===undefined){
return;
}
this.list=a
if (this.$refs.xGrid) {
this.$refs.xGrid.loadData(this.list)
}
},
10 months ago
formatterZt({cellValue}) {
if (cellValue === "0") {
return '编辑'
}
if (cellValue === "1") {
return '提交'
}
if (cellValue === "2") {
return '审核'
}
return cellValue
},
rowspanMethod({row, _rowIndex, column, visibleData}) {
//不要忘记在vxe-grid上配置 :scroll-y="{enabled: false}" 防止下拉时样式变化
// 需要合并的列字段
let fields = ['dcCh','dcPl'];// 需要合并的列
const cellValue = row[column.property];// 合并行的相同的唯一标识
if (cellValue && fields.includes(column.property)) {
const prevRow = visibleData[_rowIndex - 1];
let nextRow = visibleData[_rowIndex + 1];
if(_rowIndex%2==0){
return {rowspan: 2, colspan: 1};
}else {
return {rowspan: 0, colspan: 0};
}
}
},
handleExport() {
this.$refs.xGrid.exportData({
filename: '三月滚动计划',// 文件名字
sheetName: 'Sheet1',
type: 'xlsx',//导出文件类型 xlsx 和 csv
data: this.data, // 数据源
10 months ago
// sheetMethod: this.sheetMethod,
// useStyle: true,
// 过滤那个字段导出
10 months ago
columnFilterMethod: function(column, $columnIndex) {
return !(column.$columnIndex === 0 )
// 0是复选框 不导出
}
})
},
sheetMethod({ options, worksheet }){
const data = options.data
const columns = options.columns
let fields = ['dcCh','dcPl'];// 需要合并的列
// 获取当前添加样式的列的key
const key = columns.find((f) => f.field === 'dcCh').id
data.forEach((item, i) => {
const row = worksheet.getRow(i + 1)
const cells = row._cells
const address = cells.find((f) => f._column._key == key).address
//截取单元格列序号(英文字母)
const chartAt = address.replace(/[^a-zA-Z]/g, '')
if (i%2==0){
// 通过worksheet操作表格样式这里只是填充了背景色还可以操作其它表格的功能
//(i+2)过滤表头例如表头A1i=0所以从A2开始添加样式
worksheet.getCell(chartAt + (i + 2))
.fill = {
type: "pattern",
pattern: "solid",
fgColor: { argb: "ef7d7d" }
}
}else {
worksheet.getCell(chartAt + (i + 2))
.fill = {
type: "pattern",
pattern: "solid",
fgColor: { argb: "ef7d7d" }
}
}
})
},
2 years ago
uploadExcel() {
this.uploadData.isupload = this.isupload
},
beforeAvatarUpload(file) {
// 文件类型
const isType = file.type === 'application/vnd.ms-excel'
const isTypeComputer = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
const fileType = isType || isTypeComputer
// if (!fileType) {
// this.$message.error('上传文件只能是xls/xlsx格式')
// return
// }
2 years ago
startLoading()
return fileType
},
2 years ago
handleAvatarSuccess(res, file) {
endLoading()
if (res.success) {
this.$message({ message: '导入成功', type: 'success' })
this.list = res.data
if (this.$refs.xGrid) {
this.$refs.xGrid.loadData(this.list)
}
2 years ago
} else {
Message({
message: res.message || 'Error',
type: 'error',
duration: 5 * 1000
})
}
},
initBase(){
getFilenameNew().then(res=>{
this.fileNameList=res.data
})
2 years ago
getCzxx({}).then(res=>{
this.dictData = res.data
})
},
initList() {
const fileName=this.queryParam.fileName
if (!fileName){
this.$message.warning('请先选择文件名')
2 years ago
return
}
listByFileNameNew({fileName,zt:this.queryParam.gdZt}).then((res) => {
this.list = res.data
2 years ago
})
},
tj(){
const fileName=this.queryParam.fileName
if (!fileName){
this.$message.warning('请先选择文件名')
return
}
shNew({fileName}).then((res)=>{
if (res){
10 months ago
this.$message({ message: '提交成功', type: 'success' })
this.initList()
}
})
},
2 years ago
formatDate ({ cellValue }) {
return XEUtils.toDateString(cellValue, 'yyyy/MM/dd')
},
getHeight() {
10 months ago
this.height = window.innerHeight - 150
},
// 全选
selectAllEvent() {
const records = this.$refs.xGrid.getCheckboxRecords();
this.checkedList = records;
},
// 单选
selectChangeEvent() {
const records = this.$refs.xGrid.getCheckboxRecords();
this.checkedList = records;
},
}
}
</script>
<style lang="scss" scoped >
2 years ago
.el-header{margin:0;padding: 5px;height:auto;
.el-input{
width: 140px;
}
.el-select{
width: 140px;
}
}
2 years ago
.el-container{padding: 0;margin:0;}
.el-main{padding: 0;}
.el-col{padding: 0;height: 32px;}
.el-aside{background: #fff;padding: 0}
.el-container{padding: 0}
.el-row {}
.el-row:last-child {margin-bottom: 0; }
.tableStyles{
background: #0a76a4;
}
2 years ago
.my-dropdown {
width: 400px;
height: 400px;
background-color: #fff;
border: 1px solid #dcdfe6;
box-shadow: 0 0 6px 2px rgba(0, 0, 0, 0.1);
font-size: 12px;
}
2 years ago
.mytable1{
}
2 years ago
.borderClass{
}
2 years ago
.vxe-input {
display: inline-block !important;
position: relative !important;
width: auto;
}
2 years ago
.el-input {
display: inline-block !important;
position: relative !important;
width: auto;
}
2 years ago
.keyword-lighten {
color: #000;
background-color: #FFFF00;
}
2 years ago
.vxe-textarea--inner {
line-height: inherit;
}
2 years ago
.el-form-item__label-wrap {
margin-left: 0px !important;
float: left;
}
.fontClass{
font-size: 12px;
2 years ago
font-weight: bold;
}
2 years ago
</style>