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.

534 lines
20 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-form-item style="margin-left: 4px;">
<span style="font-size: 13px;color: #606266; margin-left: 4px;margin-right: 4px">时间范围:</span>
<el-date-picker v-model="queryParam.beginTime" value-format="yyyy/MM/dd" type="date" style="width: 33%;" />
<span style="font-size: 13px;color: #606266; margin-left: 4px;margin-right: 4px"></span>
<el-date-picker v-model="queryParam.endTime" value-format="yyyy/MM/dd" type="date" style="width: 33%" />
</el-form-item>
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" >
<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
:span-method="rowspanMethod"
@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'
10 months ago
import {getSygdList,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'
export default {
10 months ago
name:'SygdWH',
2 years ago
data() {
return {
queryParam: {
beginTime:'',
endTime:'',
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
{ type: 'checkbox', width: 50 ,},
2 years ago
{ type: 'seq', width: 60, title: '序号',fixed: "left"},
{ field: 'dcCh', title: '船号',width: 100,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', }},
{ field: 'dcPl', title: '批量',width: 70,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', }},
{ field: 'dcFd', title: '分段号',width: 100,
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
filterRender: { name: 'FilterCombination', }},
10 months ago
{ field: 'bs', title: '板数', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'sl', title: '上料', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'xcpw', title: '型材抛丸', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'pw', title: '抛丸', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'yklm', title: '一垮龙门板数', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'yksk', title: '一垮数控板数', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'ykpkjs', title: '坡口切割结束', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'eksk', title: '二垮数控板数', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'ekskks', title: '数控切割开始', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'ekpkjs', title: '坡口切割结束', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'sksk', title: '三垮数控板数', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'skskqgks', title: '数控切割开始', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'skpkjs', title: '坡口切割结束', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'skpt', title: '三垮平铁板数', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'ptks', title: '平铁切割开始', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'ptjs', title: '平铁切割结束', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'qptZjs', title: '曲平铁转结束', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'qptjs', title: '曲平铁结束', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'qwbjs', title: '曲外板结束', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'zl', title: '组立', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'skbs', title: '数控 板数', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'skqgks', title: '数控切割开始', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'pkqgjs', title: '坡口切割结束', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'mbjb', title: '面板挤边', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'qkxcms', title: '七垮型 材米数', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'xcmb', title: '型材 面板', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'fdxq', title: '分段需求', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'gdjs', title: '光电 结束', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
{ field: 'bz', title: '备注', width: 120,
2 years ago
filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
10 months ago
filterRender: { name: 'FilterCombination', },
},
// { field: 'zt', title: '状态', width: 120,formatter:this.formatterZt,
// filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
// filterRender: { name: 'FilterCombination', },
// },
// { field: 'id', title: '流水号(禁止修改)',width: 100,
// filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],
// filterRender: { name: 'FilterCombination', }}
2 years ago
10 months ago
],
checkedList: [],
2 years ago
}
},
computed: {
...mapGetters(['name', 'bmbm'])
},
created() {
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
},
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, // 数据源
// 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(){
getCzxx({}).then(res=>{
this.dictData = res.data
})
},
initList() {
10 months ago
if (this.queryParam.beginTime === ''||
this.queryParam.beginTime === null||
this.queryParam.beginTime === ''||
this.queryParam.endTime === null) {
this.$message.warning('选择时间范围')
2 years ago
return
}
getSygdList(this.queryParam).then((res) => {
this.list = res.data
2 years ago
if (this.$refs.xGrid) {
this.$refs.xGrid.loadData(this.list)
}
})
},
10 months ago
tj(){
tj(this.checkedList).then((res)=>{
if (res){
this.$message({ message: '提交成功', type: 'success' })
this.initList()
1 year ago
}
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>