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.

377 lines
9.8 KiB

2 years ago
<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>
10 months ago
<el-form-item label="状态:" >
<el-select
v-model="queryParam.gdZt"
10 months ago
clearable
>
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>
10 months ago
<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
class="out-item"
type="primary"
icon="el-icon-download"
@click="handleExport"
>导出</el-button>
<!-- <div style="float: right;margin-left: 5px" >
10 months ago
<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>
</el-row>
<el-row>
1 year ago
<el-col >
<el-form-item style="float: right" >
10 months ago
<!-- <span style="font-size: 12px;color: red; float: right;"> * 表中红色数据钢加小组结束期为休息日</span>-->
1 year ago
</el-form-item>
2 years ago
</el-col>
</el-row>
</el-form>
10 months ago
2 years ago
</el-header>
<el-container style="padding-top: 0px">
<el-container>
<el-main>
10 months ago
2 years ago
<div class="mytable">
10 months ago
2 years ago
<vxe-grid
id="id"
ref="xGrid"
border
resizable
keep-source
10 months ago
show-overflow
2 years ago
:align="'center'"
:height="height"
:auto-resize="true"
:columns="tableColumn"
:data="list"
:custom-config="{ storage: true }"
1 year ago
highlight-current-row
2 years ago
highlight-hover-row
10 months ago
@checkbox-all="selectAllEvent"
@checkbox-change="selectChangeEvent"
:scroll-y="{ enabled: true }"
2 years ago
>
</vxe-grid>
</div>
</el-main>
</el-container>
</el-container>
</el-container>
</template>
<script>
import { getCzxx} from '@/api/jhzx/qfxq'
import {getFilenameNew, getSygdList, listByFileNameNew, tj} from '@/api/jhzx/sygd'
2 years ago
import { mapGetters } from 'vuex'
import XEUtils from 'xe-utils'
import { getToken } from '@/utils/auth'
import { startLoading, endLoading } from '@/utils'
import { Message } from 'element-ui'
import ydjhNewTable from "@/views/jhzx/js/ydjhNewTable";
2 years ago
export default {
10 months ago
name:'SygdWH',
2 years ago
data() {
return {
fileNameList:[],
2 years ago
queryParam: {
fileName:'',
10 months ago
gdZt:'0'
2 years ago
},
gdZtOptions:[
{
value: "0",
label: "编辑",
},
{
value: "1",
label: "提交",
},
{
value: "2",
label: "审核",
},
],
2 years ago
list: [],
1 year ago
gcrl: [],
10 months ago
isupload:'02',
2 years ago
filedis:false,
uploadData:{},
10 months ago
heads: { token: getToken() },
uploadAction: process.env.VUE_APP_BASE_API + '/dmSygd/upload',
2 years ago
dictData:[],
height: '500px',
tableColumn:[],
10 months ago
checkedList: [],
2 years ago
}
},
computed: {
...mapGetters(['name', 'bmbm'])
},
created() {
const {tableColumn}=ydjhNewTable()
this.tableColumn = tableColumn
2 years ago
window.addEventListener('resize', this.getHeight)
this.getHeight()
this.initBase()
this.queryParam.beginTime=XEUtils.toDateString(new Date(),'yyyy/MM/dd')
2 years ago
},
watch: {
'queryParam.beginTime'(newValue, Value){
this.queryParam.endTime= XEUtils.toDateString(XEUtils.getWhatMonth(newValue, 3),'yyyy/MM/dd')
},
10 months ago
'$route'(){
this.getParams();
},
},
2 years ago
methods: {
10 months 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)
}
},
formatterZt({cellValue}) {
if (cellValue === "0") {
return '编辑'
}
if (cellValue === "1") {
return '提交'
}
if (cellValue === "2") {
return '审核'
}
return cellValue
},
handleExport() {
this.$refs.xGrid.exportData({
filename: '三月滚动计划',// 文件名字
sheetName: 'Sheet1',
type: 'xlsx',//导出文件类型 xlsx 和 csv
data: this.data, // 数据源
// sheetMethod: this.sheetMethod,
// useStyle: true,
// 过滤那个字段导出
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" }
}
}
})
},
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
// }
10 months ago
startLoading()
return fileType
},
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)
}
} else {
Message({
message: res.message || 'Error',
type: 'error',
duration: 5 * 1000
})
}
},
cellStyle2({row}) {
if (this.gcrl.includes(row.gjjsXz)) {
return {
color: 'red',
cursor: 'pointer'
}
}
2 years ago
},
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
10 months ago
})
1 year ago
},
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;
2 years ago
},
}
}
</script>
<style lang="scss" scoped >
.el-header{margin:0;padding: 5px;height:auto;
.el-input{
width: 140px;
}
.el-select{
width: 140px;
}
}
.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;
}
.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;
}
.mytable1{
}
.borderClass{
}
.vxe-input {
display: inline-block !important;
position: relative !important;
width: auto;
}
.el-input {
display: inline-block !important;
position: relative !important;
width: auto;
}
.keyword-lighten {
color: #000;
background-color: #FFFF00;
}
.vxe-textarea--inner {
line-height: inherit;
}
.el-form-item__label-wrap {
margin-left: 0px !important;
float: left;
}
.fontClass{
font-size: 12px;
font-weight: bold;
}
</style>